[magics] 01/01: Magics-2.22.7

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Jun 12 11:09:58 UTC 2015


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

mckinstry pushed a commit to tag upstream_2.18.15
in repository magics.

commit da095e9c7197b51c976557e86abf090d16ef4619
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Fri Aug 1 11:22:37 2014 +0100

    Magics-2.22.7
---
 .cproject                                          |    61 +
 .gitignore                                         |    19 +
 .project                                           |    27 +
 AUTHORS                                            |     6 +-
 CMakeFiles/2.8.10.2/CMakeCCompiler.cmake           |    55 +
 CMakeFiles/2.8.10.2/CMakeCXXCompiler.cmake         |    56 +
 .../2.8.10.2/CMakeDetermineCompilerABI_C.bin       |   Bin 0 -> 7045 bytes
 .../2.8.10.2/CMakeDetermineCompilerABI_CXX.bin     |   Bin 0 -> 7331 bytes
 .../2.8.10.2/CMakeDetermineCompilerABI_Fortran.bin |   Bin 0 -> 8541 bytes
 CMakeFiles/2.8.10.2/CMakeFortranCompiler.cmake     |    54 +
 CMakeFiles/2.8.10.2/CMakeSystem.cmake              |    15 +
 CMakeFiles/2.8.10.2/CompilerIdC/CMakeCCompilerId.c |   393 +
 .../2.8.10.2/CompilerIdCXX/CMakeCXXCompilerId.cpp  |   375 +
 .../CompilerIdFortran/CMakeFortranCompilerId.F     |   123 +
 CMakeFiles/2.8.11.2/CMakeCCompiler.cmake           |    56 +
 CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake         |    57 +
 .../2.8.11.2/CMakeDetermineCompilerABI_C.bin       |   Bin 0 -> 11885 bytes
 .../2.8.11.2/CMakeDetermineCompilerABI_CXX.bin     |   Bin 0 -> 11955 bytes
 .../2.8.11.2/CMakeDetermineCompilerABI_Fortran.bin |   Bin 0 -> 19652 bytes
 CMakeFiles/2.8.11.2/CMakeFortranCompiler.cmake     |    55 +
 CMakeFiles/2.8.11.2/CMakeSystem.cmake              |    15 +
 CMakeFiles/2.8.11.2/CompilerIdC/CMakeCCompilerId.c |   390 +
 .../2.8.11.2/CompilerIdCXX/CMakeCXXCompilerId.cpp  |   372 +
 .../CompilerIdFortran/CMakeFortranCompilerId.F     |   119 +
 .../CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.bin  |   Bin 0 -> 6983 bytes
 .../CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.c    |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.bin        |   Bin 0 -> 6970 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.c          |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.bin      |   Bin 0 -> 6972 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.c        |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.bin       |   Bin 0 -> 6971 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.c         |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.bin         |   Bin 0 -> 6969 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.c           |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.bin        |   Bin 0 -> 6970 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.c          |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.bin |   Bin 0 -> 6977 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.c   |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.bin   |   Bin 0 -> 6975 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.c     |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.bin         |   Bin 0 -> 6969 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.c           |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.bin       |   Bin 0 -> 6971 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.c         |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.bin      |   Bin 0 -> 6972 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.c        |    40 +
 CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.bin     |   Bin 0 -> 6973 bytes
 CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.c       |    40 +
 CMakeFiles/FortranCInterface/CMakeCache.txt        |   250 +
 .../CMakeFiles/CMakeDirectoryInformation.cmake     |    16 +
 .../FortranCInterface.dir/DependInfo.cmake         |    24 +
 .../CMakeFiles/FortranCInterface.dir/build.make    |   135 +
 .../FortranCInterface.dir/cmake_clean.cmake        |    12 +
 .../FortranCInterface.dir/depend.internal          |     9 +
 .../CMakeFiles/FortranCInterface.dir/depend.make   |     8 +
 .../CMakeFiles/FortranCInterface.dir/flags.make    |    10 +
 .../FortranCInterface.dir/fortran.internal         |     2 +
 .../CMakeFiles/FortranCInterface.dir/link.txt      |     1 +
 .../CMakeFiles/FortranCInterface.dir/progress.make |     4 +
 .../FortranCInterface/CMakeFiles/Makefile.cmake    |    50 +
 CMakeFiles/FortranCInterface/CMakeFiles/Makefile2  |   174 +
 .../CMakeFiles/TargetDirectories.txt               |     3 +
 .../FortranCInterface/CMakeFiles/cmake.check_cache |     1 +
 .../CMakeFiles/myfort.dir/DependInfo.cmake         |    23 +
 .../CMakeFiles/myfort.dir/build.make               |   152 +
 .../CMakeFiles/myfort.dir/cmake_clean.cmake        |    13 +
 .../myfort.dir/cmake_clean_Fortran.cmake           |    10 +
 .../CMakeFiles/myfort.dir/cmake_clean_target.cmake |     3 +
 .../CMakeFiles/myfort.dir/depend.internal          |    11 +
 .../CMakeFiles/myfort.dir/depend.make              |    17 +
 .../CMakeFiles/myfort.dir/flags.make               |     8 +
 .../CMakeFiles/myfort.dir/fortran.internal         |     4 +
 .../CMakeFiles/myfort.dir/link.txt                 |     2 +
 .../myfort.dir/my_module.f90.o.provides.build      |     0
 .../CMakeFiles/myfort.dir/my_module.mod.stamp      |    23 +
 .../myfort.dir/mymodule.f90.o.provides.build       |     0
 .../CMakeFiles/myfort.dir/mymodule.mod.stamp       |    23 +
 .../CMakeFiles/myfort.dir/progress.make            |     5 +
 .../FortranCInterface/CMakeFiles/progress.marks    |     1 +
 .../CMakeFiles/symbols.dir/C.includecache          |    58 +
 .../CMakeFiles/symbols.dir/DependInfo.cmake        |    45 +
 .../CMakeFiles/symbols.dir/build.make              |   730 +
 .../CMakeFiles/symbols.dir/cmake_clean.cmake       |    34 +
 .../symbols.dir/cmake_clean_target.cmake           |     3 +
 .../CMakeFiles/symbols.dir/depend.internal         |    53 +
 .../CMakeFiles/symbols.dir/depend.make             |    53 +
 .../CMakeFiles/symbols.dir/flags.make              |     8 +
 .../CMakeFiles/symbols.dir/link.txt                |     2 +
 .../CMakeFiles/symbols.dir/progress.make           |    26 +
 CMakeFiles/FortranCInterface/FortranCInterface     |   Bin 0 -> 8970 bytes
 CMakeFiles/FortranCInterface/Input.cmake           |     3 +
 CMakeFiles/FortranCInterface/Makefile              |   905 +
 CMakeFiles/FortranCInterface/Output.cmake          |    34 +
 CMakeFiles/FortranCInterface/cmake_install.cmake   |    44 +
 CMakeFiles/FortranCInterface/libmyfort.a           |   Bin 0 -> 5340 bytes
 CMakeFiles/FortranCInterface/libsymbols.a          |   Bin 0 -> 38910 bytes
 CMakeFiles/FortranCInterface/my_module.mod         |    23 +
 CMakeFiles/FortranCInterface/mymodule.mod          |    23 +
 .../symbols/MYMODULE_mp_MYSUB-UPPER.c              |     4 +
 CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c |     4 +
 .../symbols/MY_MODULE_mp_MY_SUB-UPPER.c            |     4 +
 .../FortranCInterface/symbols/MY_SUB-UPPER.c       |     4 +
 .../symbols/__my_module_MOD_my_sub.c               |     4 +
 .../symbols/__my_module_NMOD_my_sub.c              |     4 +
 .../symbols/__my_module__my_sub.c                  |     4 +
 .../symbols/__mymodule_MOD_mysub.c                 |     4 +
 .../symbols/__mymodule_NMOD_mysub.c                |     4 +
 .../FortranCInterface/symbols/__mymodule__mysub.c  |     4 +
 .../FortranCInterface/symbols/my_moduleSmy_sub.c   |     4 +
 .../symbols/my_module_MP_my_sub.c                  |     4 +
 .../symbols/my_module_mp_my_sub_.c                 |     4 +
 .../FortranCInterface/symbols/my_module_my_sub_.c  |     4 +
 CMakeFiles/FortranCInterface/symbols/my_sub.c      |     4 +
 CMakeFiles/FortranCInterface/symbols/my_sub_.c     |     4 +
 CMakeFiles/FortranCInterface/symbols/my_sub__.c    |     4 +
 .../FortranCInterface/symbols/mymoduleSmysub.c     |     4 +
 .../FortranCInterface/symbols/mymodule_MP_mysub.c  |     4 +
 .../FortranCInterface/symbols/mymodule_mp_mysub_.c |     4 +
 .../FortranCInterface/symbols/mymodule_mysub_.c    |     4 +
 CMakeFiles/FortranCInterface/symbols/mysub.c       |     4 +
 CMakeFiles/FortranCInterface/symbols/mysub_.c      |     4 +
 CMakeFiles/TestEndianess.bin                       |   Bin 0 -> 7108 bytes
 CMakeFiles/cmake.check_cache                       |     1 +
 CMakeLists.txt                                     |   378 +
 COPYING                                            |   202 +-
 LICENSE_for_source_files                           |    14 +
 Makefile.am                                        |    82 -
 Makefile.in                                        |   948 -
 VERSION.cmake                                      |     9 +
 aclocal.m4                                         |  1374 --
 apps/CMakeLists.txt                                |     4 +
 apps/MagMLInterpretor/CMakeLists.txt               |    32 +
 apps/MagMLInterpretor/Makefile.am                  |    27 -
 apps/MagMLInterpretor/Makefile.in                  |   633 -
 apps/MagMLInterpretor/grib.template                |    37 +
 apps/MagMLInterpretor/gribview                     |    77 +
 apps/MagMLInterpretor/json.cc                      |    48 +-
 apps/MagMLInterpretor/magjson-script.in            |    11 +
 apps/MagMLInterpretor/magml-script.in              |    11 +
 apps/MagMLInterpretor/magml.cc                     |     2 +-
 apps/MagMLInterpretor/test.magml                   |    17 +
 apps/MagMLInterpretor/web.magml                    |    39 +
 apps/Makefile.am                                   |     5 -
 apps/Makefile.in                                   |   644 -
 apps/metgram/10_days_epsgram.xml                   |   166 -
 apps/metgram/10_days_metgram_a3.xml                |   161 +
 apps/metgram/10_days_wave_epsgram_a3.xml           |   206 +
 apps/metgram/15_days_epsgram.xml                   |   182 -
 apps/metgram/CMakeLists.txt                        |    24 +
 apps/metgram/Makefile.am                           |    43 -
 apps/metgram/Makefile.in                           |   724 -
 apps/metgram/anna.pl                               |   577 +
 apps/metgram/efiserver.pl                          |   579 +
 apps/metgram/eps.xml                               |   154 +
 apps/metgram/epsserver.pl                          |   577 +
 apps/metgram/epswind.xml                           |     9 +
 apps/metgram/magplusserver.pl                      |   610 +
 apps/metgram/metgram                               |     2 +-
 apps/metgram/metgram-script.in                     |    10 +
 apps/metgram/metgram.xml                           |     2 +
 apps/metgram/metview_metgramserver.pl              |   606 +
 apps/metgram/multi_metgrams.xml                    |  1510 ++
 apps/metgram/multi_metgrams_page1.xml              |  1511 ++
 apps/metgram/multi_metgrams_page2.xml              |  1510 ++
 apps/metgram/multi_metgrams_page3.xml              |  1510 ++
 apps/metgram/multi_metgrams_page4.xml              |  1518 ++
 apps/metgram/templates/10_days_epsgram.xml         |   170 +
 .../metgram/{ => templates}/10_days_epsgram_a3.xml |     0
 apps/metgram/{ => templates}/10_days_metgram.xml   |     0
 .../{ => templates}/10_days_wave_epsgram.xml       |     0
 apps/metgram/templates/15_days_epsgram.xml         |   184 +
 .../metgram/{ => templates}/15_days_epsgram_a3.xml |     0
 .../{ => templates}/15_days_with_clim_epsgram.xml  |     0
 apps/metgram/{ => templates}/classic_plumes.json   |     0
 apps/metgram/{ => templates}/efi_distribution.xml  |     0
 .../{ => templates}/new_efi_distribution.xml       |     0
 apps/metgram/tigge_epsgram.xml                     |   163 +
 apps/metgram/wave10.xml                            |     9 +
 apps/metgram/wave10_a3.xml                         |     9 +
 bufr.f90                                           |    31 +
 cmake/2.8/CMakePushCheckState.cmake                |    61 +
 cmake/CMakeLists.txt                               |     5 +
 cmake/CheckFortranCompilerFlag.cmake               |    37 +
 cmake/CheckFortranSourceCompiles.cmake             |    94 +
 cmake/FindADSM.cmake                               |    43 +
 cmake/FindAIO.cmake                                |    66 +
 cmake/FindArmadillo.cmake                          |    33 +
 cmake/FindCMath.cmake                              |    20 +
 cmake/FindCairo.cmake                              |    58 +
 cmake/FindDl.cmake                                 |    20 +
 cmake/FindEMOS.cmake                               |    37 +
 cmake/FindEcLib.cmake                              |    49 +
 cmake/FindEcregrid.cmake                           |    48 +
 cmake/FindFDB.cmake                                |    35 +
 cmake/FindGeoTIFF.cmake                            |    37 +
 cmake/FindHPSS.cmake                               |    39 +
 cmake/FindLEX.cmake                                |   129 +
 cmake/FindLegacyFDB.cmake                          |    35 +
 cmake/FindLibGFortran.cmake                        |    52 +
 cmake/FindNDBM.cmake                               |    34 +
 cmake/FindNetCDF.cmake                             |    88 +
 cmake/FindNetCDF3.cmake                            |    85 +
 cmake/FindODB.cmake                                |    53 +
 cmake/FindOpenJPEG.cmake                           |    43 +
 cmake/FindPGIFortran.cmake                         |    44 +
 cmake/FindPango.cmake                              |    33 +
 cmake/FindPangoCairo.cmake                         |    98 +
 cmake/FindProj4.cmake                              |    67 +
 cmake/FindREADLINE.cmake                           |    87 +
 cmake/FindRPCGEN.cmake                             |    20 +
 cmake/FindRealtime.cmake                           |    22 +
 cmake/FindSZip.cmake                               |    32 +
 cmake/FindScin.cmake                               |    48 +
 cmake/FindTrilinos.cmake                           |    52 +
 cmake/FindXLFortranLibs.cmake                      |    49 +
 cmake/FindYACC.cmake                               |   157 +
 cmake/Findgrib_api.cmake                           |   131 +
 cmake/Findodb_api.cmake                            |    99 +
 cmake/Findspot.cmake                               |    67 +
 cmake/contrib/CheckFortranCompilerFlag.cmake       |    25 +
 cmake/contrib/CheckFortranSourceCompiles.cmake     |    61 +
 cmake/contrib/FindEigen3.cmake                     |    88 +
 cmake/contrib/FindNetCDF4.cmake                    |   289 +
 cmake/contrib/FindNumPy.cmake                      |   101 +
 cmake/contrib/GetGitRevisionDescription.cmake      |   123 +
 cmake/contrib/GetGitRevisionDescription.cmake.in   |    38 +
 cmake/contrib/GreatCMakeCookOff/.gitattributes     |    22 +
 cmake/contrib/GreatCMakeCookOff/.gitignore         |     6 +
 .../contrib/GreatCMakeCookOff/AddCPP11Flags.cmake  |    61 +
 cmake/contrib/GreatCMakeCookOff/AddGTest.cmake     |    72 +
 .../GreatCMakeCookOff/CheckCXX11Features.cmake     |   199 +
 cmake/contrib/GreatCMakeCookOff/CheckIsNaN.cmake   |    53 +
 cmake/contrib/GreatCMakeCookOff/FindEigen.cmake    |   131 +
 cmake/contrib/GreatCMakeCookOff/LICENSE            |    20 +
 cmake/contrib/GreatCMakeCookOff/README.md          |   176 +
 cmake/contrib/GreatCMakeCookOff/TestCMake.cmake    |    58 +
 .../GreatCMakeCookOff/cpp11/__func__-N2340.cpp     |     8 +
 .../contrib/GreatCMakeCookOff/cpp11/auto-N2546.cpp |    12 +
 .../GreatCMakeCookOff/cpp11/begin_function.cc      |    12 +
 .../GreatCMakeCookOff/cpp11/constexpr-N2235.cpp    |    19 +
 .../cpp11/constructor_delegate.cpp                 |    32 +
 cmake/contrib/GreatCMakeCookOff/cpp11/cstdint.cpp  |    10 +
 .../GreatCMakeCookOff/cpp11/decltype-N2343.cpp     |    11 +
 .../cpp11/deleted_constructor.cpp                  |    10 +
 .../cpp11/deleted_constructor_fail_compile.cpp     |    11 +
 .../contrib/GreatCMakeCookOff/cpp11/enable_if.cpp  |     8 +
 .../GreatCMakeCookOff/cpp11/explicit_cast.cpp      |    13 +
 .../GreatCMakeCookOff/cpp11/initialization.cpp     |     7 +
 .../GreatCMakeCookOff/cpp11/lambda-N2927.cpp       |     5 +
 .../GreatCMakeCookOff/cpp11/long_double.cpp        |     4 +
 .../GreatCMakeCookOff/cpp11/long_long-N1811.cpp    |     7 +
 cmake/contrib/GreatCMakeCookOff/cpp11/noexcept.cpp |     9 +
 .../GreatCMakeCookOff/cpp11/nullptr-N2431.cpp      |     5 +
 .../cpp11/nullptr-N2431_fail_compile.cpp           |     5 +
 cmake/contrib/GreatCMakeCookOff/cpp11/override.cpp |    22 +
 .../cpp11/override_fail_compile.cpp                |    22 +
 .../GreatCMakeCookOff/cpp11/random_device.cpp      |    13 +
 .../cpp11/rvalue_references-N2118.cpp              |    15 +
 .../contrib/GreatCMakeCookOff/cpp11/shared_ptr.cpp |     6 +
 .../cpp11/sizeof_member-N2253.cpp                  |    14 +
 .../cpp11/static_assert-N1720.cpp                  |     5 +
 .../cpp11/static_assert-N1720_fail_compile.cpp     |     5 +
 .../GreatCMakeCookOff/cpp11/template_alias.cpp     |     8 +
 .../cpp11/trivial_type_traits.cpp                  |     7 +
 .../GreatCMakeCookOff/cpp11/type_traits.cpp        |     7 +
 .../contrib/GreatCMakeCookOff/cpp11/unique_ptr.cpp |     6 +
 .../cpp11/variadic_templates-N2555.cpp             |    23 +
 .../contrib/GreatCMakeCookOff/tests/CMakeLists.txt |    12 +
 .../contrib/GreatCMakeCookOff/tests/addgtest.cmake |    20 +
 .../GreatCMakeCookOff/tests/checkcpp11flags.cmake  |     1 +
 .../GreatCMakeCookOff/tests/checkisnan.cmake       |    19 +
 .../GreatCMakeCookOff/tests/cpp11/CMakeLists.txt   |     3 +
 .../tests/cpp11/allfeatures.cmake                  |     7 +
 .../tests/cpp11/check_features.cmake               |     9 +
 .../tests/cpp11/parse_input_features.cmake         |    68 +
 cmake/ecbuild_add_cxx11_flags.cmake                |    25 +
 cmake/ecbuild_add_executable.cmake                 |   197 +
 cmake/ecbuild_add_extra_search_paths.cmake         |    27 +
 cmake/ecbuild_add_library.cmake                    |   327 +
 cmake/ecbuild_add_option.cmake                     |   149 +
 cmake/ecbuild_add_persistent.cmake                 |    61 +
 cmake/ecbuild_add_resources.cmake                  |   158 +
 cmake/ecbuild_add_test.cmake                       |   305 +
 cmake/ecbuild_append_to_rpath.cmake                |    73 +
 cmake/ecbuild_check_c_source.cmake                 |   146 +
 cmake/ecbuild_check_compiler.cmake                 |   123 +
 cmake/ecbuild_check_cxx11.cmake                    |    67 +
 cmake/ecbuild_check_cxx_source.cmake               |   154 +
 cmake/ecbuild_check_fortran_source.cmake           |   148 +
 cmake/ecbuild_check_functions.cmake                |   124 +
 cmake/ecbuild_check_os.cmake                       |   353 +
 cmake/ecbuild_config.h.in                          |   168 +
 cmake/ecbuild_debug_var.cmake                      |    35 +
 cmake/ecbuild_declare_project.cmake                |   134 +
 cmake/ecbuild_define_build_types.cmake             |   110 +
 cmake/ecbuild_define_options.cmake                 |    29 +
 cmake/ecbuild_define_paths.cmake                   |    49 +
 cmake/ecbuild_enable_fortran.cmake                 |    53 +
 cmake/ecbuild_find_fortranlibs.cmake               |   130 +
 cmake/ecbuild_find_lexyacc.cmake                   |    60 +
 cmake/ecbuild_find_mpi.cmake                       |   117 +
 cmake/ecbuild_find_package.cmake                   |   173 +
 cmake/ecbuild_find_perl.cmake                      |    45 +
 cmake/ecbuild_find_python.cmake                    |   131 +
 cmake/ecbuild_generate_config_headers.cmake        |    47 +
 cmake/ecbuild_generate_rpc.cmake                   |    73 +
 cmake/ecbuild_generate_yy.cmake                    |   113 +
 cmake/ecbuild_get_date.cmake                       |    32 +
 cmake/ecbuild_get_resources.cmake                  |    52 +
 cmake/ecbuild_get_test_data.cmake                  |   163 +
 cmake/ecbuild_install_package.cmake                |   265 +
 cmake/ecbuild_links_target.cmake                   |    74 +
 cmake/ecbuild_list_extra_search_paths.cmake        |    86 +
 cmake/ecbuild_list_macros.cmake                    |    26 +
 cmake/ecbuild_print_summary.cmake                  |   109 +
 cmake/ecbuild_project_files.cmake                  |    73 +
 cmake/ecbuild_requires_macro_version.cmake         |    15 +
 cmake/ecbuild_separate_sources.cmake               |    63 +
 cmake/ecbuild_setup_test_framework.cmake           |    40 +
 cmake/ecbuild_system.cmake                         |   192 +
 cmake/ecbuild_use_package.cmake                    |   202 +
 cmake/ecbuild_version.h.in                         |    20 +
 cmake/ecbuild_warn_unused_files.cmake              |    58 +
 cmake/include/ecbuild/boost_test_framework.h       |    16 +
 cmake/md5.in                                       |     1 +
 cmake/project-config-version.cmake.in              |    12 +
 cmake/project-config.cmake.in                      |    68 +
 cmake/sg.pl                                        |   573 +
 cmake/sha1.in                                      |     1 +
 compile.sh                                         |   321 +
 config/README                                      |     1 -
 config/config.guess                                |  1511 --
 config/config.sub                                  |  1705 --
 config/depcomp                                     |   630 -
 config/install-sh                                  |   520 -
 config/ltmain.sh                                   |  8406 -------
 config/missing                                     |   376 -
 config/py-compile                                  |   146 -
 configure                                          | 24673 -------------------
 configure.ac                                       |  1152 -
 configure.debug                                    |   163 +
 configure.example                                  |   125 +
 configure.loxp                                     |   142 +
 docs/Magics.dox.in                                 |  1531 --
 ecbuild_config.h                                   |    52 +
 ecbuild_platform.h                                 |   131 +
 m4/autotroll.m4                                    |   563 -
 m4/autotroll.mk                                    |   108 -
 m4/ax_boost_base.m4                                |   258 -
 m4/libtool.m4                                      |  7356 ------
 m4/ltoptions.m4                                    |   368 -
 m4/ltsugar.m4                                      |   123 -
 m4/ltversion.m4                                    |    23 -
 m4/lt~obsolete.m4                                  |    92 -
 m4/magics.m4                                       |    38 -
 magics-config.in                                   |    63 +-
 magics-targets.cmake                               |    30 +
 project_summary.cmake                              |    53 +
 python/CMakeLists.txt                              |     1 +
 python/Magics/CMakeLists.txt                       |    42 +
 python/Magics/Magics.i                             |    66 -
 python/Magics/Magics.i.in                          |    69 +
 python/Magics/Magics_interface.cc                  |     6 +
 python/Magics/Makefile.am                          |    35 -
 python/Magics/Makefile.in                          |   527 -
 python/Magics/import                               |     2 +
 python/Magics/macro.py                             |    37 +-
 rpms/Magics_OBS.spec                               |   195 +
 rpms/Makefile.am                                   |    26 -
 rpms/Makefile.in                                   |   467 -
 share/CMakeLists.txt                               |     3 +
 share/magics/10m/10m_populated_places_simple.dbf   |   Bin 32124176 -> 0 bytes
 share/magics/10m/10m_populated_places_simple.prj   |     1 -
 share/magics/10m/10m_populated_places_simple.shp   |   Bin 204752 -> 0 bytes
 share/magics/10m/10m_populated_places_simple.shx   |   Bin 58572 -> 0 bytes
 share/magics/bufr_80.xml                           |   140 +
 share/magics/contour_ids.json                      |     1 +
 share/magics/contours.json                         |     1 +
 share/magics/default.json                          |     1 +
 share/magics/epsg.json                             |    88 +-
 share/magics/layer_contours.json                   |     1 +
 share/magics/layer_ids.json                        |     1 +
 share/magics/layers.json                           |     1 +
 share/magics/level.json                            |     1 +
 share/magics/marsClass.json                        |     1 +
 share/magics/marsStream.json                       |     1 +
 share/magics/marsType.json                         |     1 +
 share/magics/natural_earth.ksh                     |    16 +
 share/magics/number.json                           |     1 +
 share/magics/obs.xml                               |    37 +-
 share/magics/paramId.json                          |     1 +
 share/magics/shortName.json                        |     1 +
 share/magics/stepRange.json                        |     1 +
 share/magics/symbols.svg                           |   137 +-
 share/magics/title_template.xml                    |    12 +-
 share/magics/typeOfLevel.json                      |     1 +
 share/magics/units.json                            |     1 +
 share/magics/web/magics.js                         |   662 +
 src/CMakeLists.txt                                 |   217 +
 src/Makefile.am                                    |   228 -
 src/Makefile.in                                    |  1284 -
 src/MvObs/Makefile.am                              |    14 -
 src/MvObs/Makefile.in                              |   666 -
 src/MvObs/MvBufr.h                                 |   444 -
 src/MvObs/MvBufrObs.h                              |   599 -
 src/MvObs/MvObs.cc                                 |  3297 ---
 src/MvObs/MvObsSet.cc                              |  1011 -
 src/MvObs/MvObsSet.h                               |   337 -
 src/basic/BasicGraphicsObject.cc                   |     4 +-
 src/basic/BasicSceneObject.cc                      |     7 +
 src/basic/BasicSceneObject.h                       |     2 +
 src/basic/CMakeLists.txt                           |    71 +
 src/basic/DataConverter.cc                         |    54 +
 src/basic/DataConverter.h                          |    59 +
 src/basic/DisplayManager.cc                        |   300 +
 src/basic/FortranMagics.cc                         |   392 +-
 src/basic/FortranMagics.h                          |     5 +-
 src/basic/Layer.h                                  |    11 -
 src/basic/LegendVisitor.cc                         |   345 +-
 src/basic/LegendVisitor.h                          |    25 +-
 src/basic/LegendVisitorAttributes.h                |   129 -
 src/basic/MagnifierVisitorAttributes.h             |    91 -
 src/basic/Makefile.am                              |    46 -
 src/basic/Makefile.in                              |   724 -
 src/basic/RootSceneNode.cc                         |    56 +-
 src/basic/RootSceneNode.h                          |    11 +
 src/basic/SceneNode.cc                             |    13 +-
 src/basic/SceneVisitor.cc                          |    12 +-
 src/basic/SceneVisitor.h                           |    14 +-
 src/basic/TagHandler.cc                            |    37 +-
 src/basic/TextVisitor.cc                           |    37 +-
 src/basic/ThreadNode.h                             |    44 -
 src/basic/ViewNode.cc                              |    56 +-
 src/basic/Visdef.h                                 |     5 +-
 src/basic/VisualAction.cc                          |    62 +-
 src/basic/VisualAction.h                           |     3 +
 src/basic/WebFormat.cc                             |    13 +-
 src/basic/WrepRootNodeAttributes.h                 |    83 -
 src/basic/XmlBasicNodeAttributes.h                 |   110 -
 src/basic/XmlMagics.cc                             |    52 +-
 src/basic/XmlMagics.h                              |     4 +-
 src/basic/XmlRootNodeAttributes.h                  |    90 -
 src/basic/XmlSceneNodeAttributes.h                 |   106 -
 src/basic/XmlViewNodeAttributes.h                  |    83 -
 src/common/ArrowProperties.cc                      |     1 +
 src/common/ArrowProperties.h                       |     6 +
 src/common/AutoLocker.cc                           |    10 +-
 src/common/AutomaticPlotManager.cc                 |   161 +
 src/common/AutomaticPlotManager.h                  |    81 +
 src/common/BaseParameter.cc                        |     2 +-
 src/common/BaseParameter.h                         |     8 +-
 src/common/BasePointsHandler.h                     |     1 +
 src/common/BinaryObject.h                          |     8 +-
 src/common/CMakeLists.txt                          |   144 +
 src/common/CartesianTransformation.cc              |    16 +-
 src/common/CartesianTransformation.h               |    44 +-
 src/common/Colour.cc                               |    28 +-
 src/common/ColourTableDefinitionList.cc            |    11 +-
 src/common/ColourTableDefinitionList.h             |     1 +
 src/common/Coordinate.cc                           |     4 +-
 src/common/Coordinate.h                            |   539 +-
 src/common/Data.cc                                 |    32 +
 src/common/Data.h                                  |    24 +-
 src/common/Factory.cc                              |     3 +
 src/common/FortranRootSceneNodeAttributes.h        |    91 -
 src/common/FortranSceneNodeAttributes.h            |    94 -
 src/common/FortranViewNodeAttributes.h             |   109 -
 src/common/Frame.cc                                |    94 +
 src/common/FrameLoop.cc                            |   232 +
 src/common/FrameLoop.h                             |   164 +
 src/common/GeoRectangularProjection.cc             |    60 +-
 src/common/GeoRectangularProjection.h              |     3 +-
 src/common/GeoRectangularProjectionAttributes.h    |    85 -
 src/common/InteractiveSet.cc                       |   116 +
 src/common/InteractiveSet.h                        |   144 +
 src/common/Label.h                                 |    10 +
 src/common/Layout.cc                               |     7 +-
 src/common/Layout.h                                |     2 +-
 src/common/LogoPlottingAttributes.h                |    80 -
 src/common/MagException.h                          |     2 +
 src/common/MagExceptions.cc                        |     2 +-
 src/common/MagFont.cc                              |     5 +-
 src/common/MagLog.cc                               |    18 +-
 src/common/MagLog.h                                |    16 +-
 src/common/MagTranslator.h                         |    54 +-
 src/common/MagicsCalls.cc                          |    65 +-
 src/common/MagicsThreads.cc                        |   151 +
 src/common/MagicsThreads.h                         |    93 +
 src/common/Makefile.am                             |   119 -
 src/common/Makefile.in                             |   934 -
 src/common/Matrix.cc                               |    20 +-
 src/common/Matrix.h                                |    24 +-
 src/common/MatrixHandler.h                         |   110 +-
 src/common/MetaData.cc                             |    20 +-
 src/common/MetaData.h                              |     4 +
 src/common/Node.cc                                 |   247 +
 src/common/OutputHandler.cc                        |    18 +
 src/common/OutputHandler.h                         |     5 +
 src/common/OutputHandlerAttributes.h               |    82 -
 src/common/PageIDAttributes.h                      |    93 -
 src/common/PageIDBase.h                            |   102 +
 src/common/PlotManager.cc                          |   121 +
 src/common/PolarStereographicProjection.cc         |   124 +-
 src/common/PolarStereographicProjection.h          |    27 +-
 src/common/Polyline.h                              |    19 +-
 src/common/ProgressObject.cc                       |    45 +
 src/common/ProgressObject.h                        |    11 +
 src/common/ProgressTask.cc                         |    43 +
 src/common/Proj4Projection.cc                      |     6 +-
 src/common/Proj4Projection.h                       |    47 +-
 src/common/RasterData.cc                           |    59 +
 src/common/SatelliteProjection.cc                  |   366 +
 src/common/SciMethods.cc                           |    10 +-
 src/common/SciMethods.h                            |     2 +-
 src/common/Seconds.cc                              |     2 +-
 src/common/Symbol.cc                               |     5 +-
 src/common/Tephigram.cc                            |   634 +
 src/common/Tephigram.h                             |   295 +
 src/common/Thread.h                                |     5 +-
 src/common/ThreadControler.cc                      |    11 +
 src/common/ThreadControler.h                       |     4 +
 src/common/Timer.cc                                |    25 +-
 src/common/Timer.h                                 |     7 +-
 src/common/Transformation.cc                       |   516 +-
 src/common/Transformation.h                        |    61 +-
 src/common/UserLogoPlottingAttributes.h            |    89 -
 src/common/XmlReader.cc                            |     5 +-
 src/common/linux.h                                 |     4 +-
 src/common/machine.h                               |     0
 src/common/magics_api.h                            |     3 +
 src/decoders/BinningObject.cc                      |   150 +-
 src/decoders/BinningObject.h                       |    77 +-
 src/decoders/BinningObjectAttributes.h             |    94 -
 src/decoders/CMakeLists.txt                        |   146 +
 src/decoders/ClassicMtgDecoder.cc                  |     6 +-
 src/decoders/DateGribLoopStepAttributes.h          |    83 -
 src/decoders/EfiDataDecoder.h                      |    82 -
 src/decoders/EpsBufr.cc                            |     6 +-
 src/decoders/EpsXmlInput.cc                        |    11 +-
 src/decoders/EpsgramDecoder.cc                     |   148 +-
 src/decoders/GeoPointsDecoder.cc                   |    15 +
 src/decoders/GeoPointsDecoderAttributes.h          |    81 -
 src/decoders/Grib                                  |     0
 src/decoders/GribAddressMode.h                     |    23 +-
 src/decoders/GribDecoder.cc                        |   674 +-
 src/decoders/GribDecoder.h                         |    46 +-
 src/decoders/GribDecoderAttributes.h               |    97 -
 src/decoders/GribInterpretor.h                     |     4 +-
 src/decoders/GribLoopAttributes.h                  |    96 -
 src/decoders/GribLoopStep.h                        |     2 +-
 src/decoders/GribRegularInterpretor.cc             |   567 +-
 src/decoders/GribRegularInterpretor.h              |    24 +-
 src/decoders/ImportActionAttributes.h              |    85 -
 src/decoders/InputData.cc                          |    61 +-
 src/decoders/InputData.h                           |     2 +-
 src/decoders/InputMatrix.cc                        |     6 +-
 src/decoders/InputMatrix.h                         |     2 +-
 src/decoders/InputMatrixInterpretor.cc             |     2 +-
 src/decoders/LandgramDecoder.cc                    |     4 +-
 src/decoders/Makefile.am                           |   113 -
 src/decoders/Makefile.in                           |   963 -
 src/decoders/Netcdf.cc                             |    72 +-
 src/decoders/Netcdf.h                              |    31 +-
 src/decoders/NetcdfDecoder.cc                      |     2 +-
 src/decoders/NetcdfDecoder.h                       |     2 +-
 src/decoders/NetcdfDecoderAttributes.h             |    82 -
 src/decoders/NetcdfGeoMatrixInterpretor.cc         |    19 +-
 src/decoders/NetcdfGeoMatrixInterpretor.h          |     4 +-
 .../NetcdfGeoMatrixInterpretorAttributes.h         |    85 -
 .../NetcdfGeoPolarMatrixInterpretorAttributes.h    |    84 -
 .../NetcdfGeoVectorInterpretorAttributes.h         |    84 -
 src/decoders/NetcdfGeopointsInterpretor.cc         |   135 +-
 src/decoders/NetcdfGeopointsInterpretor.h          |    14 +-
 .../NetcdfGeopointsInterpretorAttributes.h         |    82 -
 src/decoders/NetcdfInterpretor.cc                  |   119 +-
 src/decoders/NetcdfInterpretor.h                   |    55 +-
 src/decoders/NetcdfInterpretorAttributes.h         |    89 -
 src/decoders/NetcdfMatrixInterpretor.cc            |   230 +-
 src/decoders/NetcdfMatrixInterpretor.h             |    21 +-
 src/decoders/NetcdfMatrixInterpretorAttributes.h   |    85 -
 src/decoders/NetcdfOrcaInterpretor.cc              |    55 +-
 src/decoders/NetcdfOrcaInterpretor.h               |     4 +-
 src/decoders/NetcdfVectorInterpretor.cc            |     4 +-
 src/decoders/NetcdfVectorInterpretorAttributes.h   |    84 -
 src/decoders/ObsDecoder.cc                         |    16 +-
 src/decoders/ObsDecoderAttributes.h                |    85 -
 src/decoders/ObsStatDecoderAttributes.h            |    81 -
 src/decoders/TableDecoder.cc                       |    18 +-
 src/decoders/ThinningMethod.cc                     |    48 +-
 src/decoders/ThinningMethod.h                      |    11 +-
 src/decoders/WindMode.cc                           |     2 +-
 src/decoders/WindMode.h                            |     4 +-
 src/decoders/XYList.cc                             |    48 +-
 src/drivers/BaseDriver.cc                          |   505 +-
 src/drivers/BaseDriver.h                           |     3 +-
 src/drivers/BaseDriverBinaryReader.cc              |   513 -
 src/drivers/BaseDriverImages.h                     |     2 +-
 src/drivers/BaseDriverSymbols.h                    |    47 +-
 src/drivers/BinaryDriver.cc                        |     8 +-
 src/drivers/CMakeLists.txt                         |    88 +
 src/drivers/CairoDriver.cc                         |    25 +-
 src/drivers/KMLDriver.cc                           |   209 +-
 src/drivers/KMLDriver.h                            |     3 +-
 src/drivers/Makefile.am                            |   107 -
 src/drivers/Makefile.in                            |  1187 -
 src/drivers/MgQ/MgQLayoutItem.h                    |     2 +-
 src/drivers/MgQ/MgQPlotScene.cc                    |     2 +-
 src/drivers/MgQ/MgQScene.cc                        |    13 +-
 src/drivers/MgQ/MgQSceneItem.h                     |     2 +-
 src/drivers/MingDriver.cc                          |   568 +
 src/drivers/MingDriver.h                           |   132 +
 src/drivers/PostScriptDriver.cc                    |    28 +-
 src/drivers/QtDriver.cc                            |     3 +-
 src/drivers/SVGDriver.cc                           |    23 +-
 src/drivers/SelectionMode.cc                       |    55 +
 src/drivers/SelectionMode.h                        |    66 +
 src/eckit_readers/CMakeLists.txt                   |    38 +
 src/eckit_readers/MvBufr.h                         |   444 +
 src/eckit_readers/MvBufrObs.h                      |   599 +
 src/{MvObs => eckit_readers}/MvLocation.cc         |     0
 src/{MvObs => eckit_readers}/MvLocation.h          |     0
 src/eckit_readers/MvObs.cc                         |  3297 +++
 src/{MvObs => eckit_readers}/MvObs.h               |     0
 src/eckit_readers/MvObsSet.cc                      |  1011 +
 src/eckit_readers/MvObsSet.h                       |   337 +
 src/{MvObs => eckit_readers}/MvPrepBufrPrep.cc     |     0
 src/{MvObs => eckit_readers}/MvPrepBufrPrep.h      |     0
 src/{libTable => eckit_readers}/TableReader.cc     |     0
 src/{libTable => eckit_readers}/TableReader.h      |     0
 src/{MvObs => eckit_readers}/fdyntime.cc           |     0
 src/{MvObs => eckit_readers}/fdyntime.h            |     0
 src/{MvObs => eckit_readers}/fmettim.cc            |     0
 src/{MvObs => eckit_readers}/fmettim.h             |     0
 src/{MvObs => eckit_readers}/fobject.cc            |     0
 src/{MvObs => eckit_readers}/fobject.h             |     0
 src/{MvObs => eckit_readers}/fsortabl.cc           |     0
 src/{MvObs => eckit_readers}/fsortabl.h            |     0
 src/{MvObs => eckit_readers}/fstatime.cc           |     0
 src/{MvObs => eckit_readers}/fstatime.h            |     0
 src/{MvObs => eckit_readers}/inc_iostream.h        |     0
 src/libMagWrapper/CMakeLists.txt                   |    14 +
 src/libMagWrapper/MagPlus.cc                       |   482 +-
 src/libMagWrapper/MagPlus.h                        |    29 +-
 src/libMagWrapper/MagRequest.h                     |     1 +
 src/libMagWrapper/Makefile.am                      |   132 -
 src/libMagWrapper/Makefile.in                      |  1082 -
 src/libTable/Makefile.am                           |    17 -
 src/libTable/Makefile.in                           |   631 -
 src/magics.h                                       |    15 +-
 src/magics.pc.in                                   |    14 +-
 src/magics_config.h                                |   218 -
 src/magics_config.h.in                             |   165 +-
 src/magics_ecmwf_log.h                             |     3 +-
 src/oda/CMakeLists.txt                             |    15 +
 src/oda/Makefile.am                                |    24 -
 src/oda/Makefile.in                                |   675 -
 src/oda/OdaDecoder.cc                              |    27 +-
 src/params/Akima474Method.xml                      |    19 +
 src/params/Akima760Method.xml                      |    23 +
 src/params/Akima761Method.xml                      |    20 +
 src/params/ArrowPlotting.xml                       |    84 +
 src/params/AutomaticContourMethod.xml              |     2 +
 src/params/AutomaticPlotManager.xml                |    29 +
 src/params/Axis.xml                                |   248 +
 src/params/AxisMethod.xml                          |     2 +
 src/params/Bar.xml                                 |    52 +
 src/params/BaseDriver.xml                          |    73 +
 src/params/BinaryDriver.xml                        |     7 +
 src/params/BinaryObject.xml                        |    30 +
 src/params/BinningObject.xml                       |    65 +
 src/params/BothValuePlotMethod.xml                 |    25 +
 src/params/Boundaries.xml                          |    70 +
 src/params/BoxPlotBox.xml                          |    24 +
 src/params/BoxPlotBoxBorder.xml                    |    15 +
 src/params/BoxPlotDecoder.xml                      |    33 +
 src/params/BoxPlotMedian.xml                       |    17 +
 src/params/BoxPlotVisualiser.xml                   |    22 +
 src/params/BoxPlotWhiskerBorder.xml                |    15 +
 src/params/BoxPlotWhiskerBox.xml                   |    16 +
 src/params/BoxPlotWhiskerLine.xml                  |    14 +
 src/params/CMakeLists.txt                          |   321 +
 src/params/CairoDriver.xml                         |    19 +
 src/params/CalculateColourTechnique.xml            |    19 +
 src/params/CalculateHeightTechnique.xml            |     2 +
 src/params/CalmIndicator.xml                       |     2 +
 src/params/CartesianTransformation.xml             |    22 +
 src/params/CdfGraph.xml                            |    27 +
 src/params/CellShading.xml                         |    13 +
 src/params/CircleOriginMarker.xml                  |     2 +
 src/params/Cities.xml                              |    41 +
 src/params/ClassicMtgDecoder.xml                   |    75 +
 src/params/CoastPlotting.xml                       |    17 +
 src/params/Coastlines.xml                          |    35 +
 src/params/ColourTechnique.xml                     |     2 +
 src/params/ContinuousLegendMethod.xml              |     8 +
 src/params/Contour.xml                             |   110 +
 src/params/ContourMethod.xml                       |     2 +
 src/params/CountSelectionType.xml                  |    28 +
 src/params/Curve.xml                               |   101 +
 src/params/CurveArea.xml                           |     8 +
 src/params/DateAxisMethod.xml                      |   116 +
 src/params/DateGribLoopStep.xml                    |    23 +
 src/params/DotGraphShadeStyle.xml                  |    10 +
 src/params/DotOriginMarker.xml                     |     2 +
 src/params/DotPolyShadingMethod.xml                |    20 +
 src/params/DumpShading.xml                         |     4 +
 src/params/DumpShadingWrapper.xml                  |    13 +
 src/params/EfiDataDecoder.xml                      |    12 +
 src/params/EfiGraph.xml                            |    37 +
 src/params/EfiJSon.xml                             |    36 +
 src/params/EfigramDecoder.xml                      |    81 +
 src/params/EpsBufr.xml                             |    57 +
 src/params/EpsCloud.xml                            |    13 +
 src/params/EpsDirection.xml                        |    19 +
 src/params/EpsGraph.xml                            |    81 +
 src/params/EpsPlume.xml                            |    72 +
 src/params/EpsShade.xml                            |    18 +
 src/params/EpsWave.xml                             |     9 +
 src/params/EpsWind.xml                             |    20 +
 src/params/EpsXmlInput.xml                         |    17 +
 src/params/EpsgramDecoder.xml                      |   117 +
 src/params/EquidistantTableMode.xml                |     4 +
 src/params/FixedTableMode.xml                      |    10 +
 src/params/FlagPlotting.xml                        |    75 +
 src/params/FortranRootSceneNode.xml                |    51 +
 src/params/FortranSceneNode.xml                    |    81 +
 src/params/FortranViewNode.xml                     |   151 +
 src/params/GDDriver.xml                            |    26 +
 src/params/GenericSQLDecoder.xml                   |    35 +
 src/params/GeoPointsDecoder.xml                    |     7 +
 src/params/GeoRectangularProjection.xml            |    29 +
 src/params/Graph.xml                               |     3 +
 src/params/GraphArrow.xml                          |     9 +
 src/params/GraphFlag.xml                           |     9 +
 src/params/GraphPlotting.xml                       |    25 +
 src/params/GraphShade.xml                          |    10 +
 src/params/GraphShadeStyle.xml                     |     6 +
 src/params/GribAddressByteMode.xml                 |     2 +
 src/params/GribAddressMode.xml                     |     2 +
 src/params/GribAddressRecordMode.xml               |     2 +
 src/params/GribDecoder.xml                         |   102 +
 src/params/GribLoop.xml                            |    61 +
 src/params/GribLoopStep.xml                        |     2 +
 src/params/GridPlotting.xml                        |    27 +
 src/params/GridShading.xml                         |     8 +
 src/params/HatchGraphShadeStyle.xml                |     6 +
 src/params/HatchPolyShadingMethod.xml              |    18 +
 src/params/HeightTechnique.xml                     |     2 +
 src/params/HiLo.xml                                |    82 +
 src/params/HiLoBase.xml                            |     2 +
 src/params/HiLoBoth.xml                            |     2 +
 src/params/HiLoMarker.xml                          |    22 +
 src/params/HiLoMarkerBase.xml                      |     2 +
 src/params/HiLoNumber.xml                          |    12 +
 src/params/HiLoTechnique.xml                       |    24 +
 src/params/HiLoText.xml                            |    19 +
 src/params/HighHiLo.xml                            |     2 +
 src/params/Histogram.xml                           |    62 +
 src/params/HistogramLegendMethod.xml               |    40 +
 src/params/HyperAxisMethod.xml                     |     2 +
 src/params/ImageCalculateColourTechnique.xml       |    19 +
 src/params/ImageListColourTechnique.xml            |     7 +
 src/params/ImagePlotting.xml                       |    39 +
 src/params/ImportAction.xml                        |    23 +
 src/params/ImportObjectHandler.xml                 |    26 +
 src/params/ImportPlot.xml                          |    49 +
 src/params/InputData.xml                           |    88 +
 src/params/InputMatrix.xml                         |    49 +
 src/params/InputMatrixIrregularInterpretor.xml     |    19 +
 src/params/InputMatrixRegularInterpretor.xml       |    79 +
 src/params/IntervalSelectionType.xml               |    17 +
 src/params/IsoHighlight.xml                        |    31 +
 src/params/IsoLabel.xml                            |    72 +
 src/params/IsoPlot.xml                             |   129 +
 src/params/IsoShading.xml                          |    40 +
 src/params/KMLDriver.xml                           |    56 +
 src/params/LabelPlotting.xml                       |    61 +
 src/params/LandgramBox.xml                         |    32 +
 src/params/LandgramDecoder.xml                     |    17 +
 src/params/LegendMethod.xml                        |     2 +
 src/params/LegendVisitor.xml                       |   235 +
 src/params/LevelListSelectionType.xml              |    13 +
 src/params/LevelSelection.xml                      |    24 +
 src/params/ListColourTechnique.xml                 |     8 +
 src/params/ListHeightTechnique.xml                 |     2 +
 src/params/LogarithmicAxisMethod.xml               |     2 +
 src/params/LogoPlotting.xml                        |     2 +
 src/params/LookupTableMode.xml                     |    19 +
 src/params/LowHiLo.xml                             |     2 +
 src/params/MagnifierVisitor.xml                    |    53 +
 src/params/MapGenDecoder.xml                       |    11 +
 src/params/MarkerShadingTechnique.xml              |    17 +
 src/params/MarkerValuePlotMethod.xml               |    25 +
 src/params/MercatorProjection.xml                  |     2 +
 src/params/MetaData.xml                            |    27 +
 src/params/MetgramCurve.xml                        |    24 +
 src/params/MetgramFlags.xml                        |    15 +
 src/params/MetgramGraph.xml                        |    12 +
 src/params/MingDriver.xml                          |     7 +
 src/params/MvRootSceneNode.xml                     |    52 +
 src/params/NetcdfDecoder.xml                       |    26 +
 src/params/NetcdfGeoMatrixInterpretor.xml          |    27 +
 src/params/NetcdfGeoPolarMatrixInterpretor.xml     |    19 +
 src/params/NetcdfGeoVectorInterpretor.xml          |    20 +
 src/params/NetcdfGeopointsInterpretor.xml          |    11 +
 src/params/NetcdfInterpretor.xml                   |    51 +
 src/params/NetcdfMatrixInterpretor.xml             |    32 +
 src/params/NetcdfOrcaInterpretor.xml               |    27 +
 src/params/NetcdfVectorInterpretor.xml             |    20 +
 src/params/NetcdfXYpointsInterpretor.xml           |    21 +
 src/params/NoBinningObject.xml                     |     2 +
 src/params/NoBoundaries.xml                        |     4 +
 src/params/NoBoxPlotBoxBorder.xml                  |     4 +
 src/params/NoBoxPlotMedian.xml                     |     4 +
 src/params/NoCalmIndicator.xml                     |     2 +
 src/params/NoCities.xml                            |     4 +
 src/params/NoCoastPlotting.xml                     |    81 +
 src/params/NoGraphShade.xml                        |     2 +
 src/params/NoGridPlotting.xml                      |    30 +
 src/params/NoHiLo.xml                              |     4 +
 src/params/NoHiLoMarker.xml                        |     6 +
 src/params/NoIsoHighlight.xml                      |     2 +
 src/params/NoIsoLabel.xml                          |     2 +
 src/params/NoIsoPlot.xml                           |     2 +
 src/params/NoIsoShading.xml                        |     2 +
 src/params/NoLabelPlotting.xml                     |     6 +
 src/params/NoLegendNode.xml                        |     2 +
 src/params/NoLegendVisitor.xml                     |     2 +
 src/params/NoLogoPloting.xml                       |     3 +
 src/params/NoLogoPlotting.xml                      |     3 +
 src/params/NoMagnifierVisitor.xml                  |     2 +
 src/params/NoOriginMarker.xml                      |     2 +
 src/params/NoOutLayerTechnique.xml                 |     2 +
 src/params/NoPageID.xml                            |     4 +
 src/params/NoPreviewVisitor.xml                    |     2 +
 src/params/NoTitle.xml                             |     2 +
 src/params/NoValuePlot.xml                         |     4 +
 src/params/ObsCloud.xml                            |     6 +
 src/params/ObsDecoder.xml                          |    23 +
 src/params/ObsDemoItem2.xml                        |     9 +
 src/params/ObsDewPoint.xml                         |     4 +
 src/params/ObsJSon.xml                             |     9 +
 src/params/ObsPlotting.xml                         |   183 +
 src/params/ObsStatDecoder.xml                      |    13 +
 src/params/ObsTable.xml                            |     9 +
 src/params/OdaGeoDecoder.xml                       |    40 +
 src/params/OdaXYDecoder.xml                        |    39 +
 src/params/OdbDecoder.xml                          |    54 +
 src/params/OriginMarker.xml                        |     2 +
 src/params/OutputHandler.xml                       |    14 +
 src/params/PageID.xml                              |    60 +
 src/params/ParamGribLoopStep.xml                   |     4 +
 src/params/PolarStereographicProjection.xml        |    76 +
 src/params/PolyShadingMethod.xml                   |     2 +
 src/params/PolyShadingTechnique.xml                |    10 +
 src/params/PositionListAxisMethod.xml              |     2 +
 src/params/PostScriptDriver.xml                    |    20 +
 src/params/PpmDecoder.xml                          |    26 +
 src/params/PreviewVisitor.xml                      |     2 +
 src/params/Proj4Bonne.xml                          |     2 +
 src/params/Proj4Collignon.xml                      |     2 +
 src/params/Proj4EPSG32661.xml                      |     2 +
 src/params/Proj4EPSG3857.xml                       |     2 +
 src/params/Proj4EPSG4326.xml                       |     2 +
 src/params/Proj4Efas.xml                           |     2 +
 src/params/Proj4Geos.xml                           |     2 +
 src/params/Proj4Geose.xml                          |     2 +
 src/params/Proj4Geosw.xml                          |     2 +
 src/params/Proj4Goode.xml                          |     2 +
 src/params/Proj4Google.xml                         |     2 +
 src/params/Proj4Lambert.xml                        |     2 +
 src/params/Proj4LambertNorthAtlantic.xml           |     2 +
 src/params/Proj4Meteosat0.xml                      |     2 +
 src/params/Proj4Meteosat145.xml                    |     2 +
 src/params/Proj4Meteosat57.xml                     |     2 +
 src/params/Proj4Mollweide.xml                      |     2 +
 src/params/Proj4PolarNorth.xml                     |     2 +
 src/params/Proj4Projection.xml                     |    40 +
 src/params/Proj4Robinson.xml                       |     2 +
 src/params/QtDriver.xml                            |    16 +
 src/params/SDWindMode.xml                          |     2 +
 src/params/SVGDriver.xml                           |    31 +
 src/params/SampleContourMethod.xml                 |    12 +
 src/params/SelectionMode.xml                       |    27 +
 src/params/ShadingTechnique.xml                    |     2 +
 src/params/ShapeDecoder.xml                        |     8 +
 src/params/SimpleOutLayerTechnique.xml             |     2 +
 src/params/SimplePolyline.xml                      |    98 +
 src/params/SimplePolylineInput.xml                 |    28 +
 src/params/Streamlines.xml                         |    40 +
 src/params/SymbolAdvancedTableMode.xml             |   197 +
 src/params/SymbolIndividualMode.xml                |    83 +
 src/params/SymbolInput.xml                         |    40 +
 src/params/SymbolMode.xml                          |     3 +
 src/params/SymbolPlotting.xml                      |   164 +
 src/params/SymbolTableMode.xml                     |    30 +
 src/params/TableDecoder.xml                        |    83 +
 src/params/TaylorGrid.xml                          |   161 +
 src/params/TaylorProjection.xml                    |    18 +
 src/params/TephiGrid.xml                           |   420 +
 src/params/TephiInfo.xml                           |     2 +
 src/params/Tephigram.xml                           |    20 +
 src/params/TextVisitor.xml                         |   374 +
 src/params/Title.xml                               |    42 +
 src/params/TitleBase.xml                           |     2 +
 src/params/TitleTemplate.xml                       |    11 +
 src/params/Transformation.xml                      |     2 +
 src/params/UVWindMode.xml                          |     2 +
 src/params/UserLogoPlotting.xml                    |    49 +
 src/params/VDWindMode.xml                          |     2 +
 src/params/ValuePlot.xml                           |    17 +
 src/params/ValuePlotBase.xml                       |     2 +
 src/params/ValuePlotMethod.xml                     |    45 +
 src/params/Wind.xml                                |    26 +
 src/params/WindMode.xml                            |     2 +
 src/params/WindPlotting.xml                        |   131 +
 src/params/WrepJSon.xml                            |    82 +
 src/params/WrepRootNode.xml                        |    23 +
 src/params/XCoordinate.xml                         |     2 +
 src/params/XDateCoordinate.xml                     |    24 +
 src/params/XHyperCoordinate.xml                    |    32 +
 src/params/XLogarithmicCoordinate.xml              |    26 +
 src/params/XRegularCoordinate.xml                  |    27 +
 src/params/XYList.xml                              |   126 +
 src/params/XmlBasicNode.xml                        |   147 +
 src/params/XmlBox.xml                              |    45 +
 src/params/XmlLegendNode.xml                       |     2 +
 src/params/XmlPage.xml                             |    25 +
 src/params/XmlRootNode.xml                         |    47 +
 src/params/XmlSceneNode.xml                        |   122 +
 src/params/XmlSubPage.xml                          |    36 +
 src/params/XmlViewNode.xml                         |    23 +
 src/params/YCoordinate.xml                         |     2 +
 src/params/YDateCoordinate.xml                     |    29 +
 src/params/YHyperCoordinate.xml                    |    38 +
 src/params/YLogarithmicCoordinate.xml              |    29 +
 src/params/YRegularCoordinate.xml                  |    27 +
 src/params/todo.xml                                |   106 +
 src/params/xx.xml                                  |    84 +
 src/terralib/CMakeLists.txt                        |   132 +
 src/terralib/Makefile.am                           |   138 -
 src/terralib/Makefile.in                           |  1706 --
 src/terralib/jpeg/ijl.h                            |  1513 ++
 src/terralib/jpeg/jpeg.h                           |    95 +
 src/terralib/kernel/TeAkimaInterpolator.cpp        |  1067 +
 src/terralib/kernel/TeBlockLoader.cpp              |   171 +
 src/terralib/kernel/TeBlockLoader.h                |    95 +
 src/terralib/kernel/TeCommunicator.h               |   413 +
 src/terralib/kernel/TeConsoleErrorMessage.cpp      |    29 +
 src/terralib/kernel/TeConsoleErrorMessage.h        |    62 +
 src/terralib/kernel/TeDecoderDatabase.cpp          |     8 +-
 src/terralib/kernel/TeDecoderJPEG.cpp              |   233 +
 src/terralib/kernel/TeDecoderJPEG.h                |    81 +
 src/terralib/kernel/TeDecoderTIFF.cpp              |  1214 +
 src/terralib/kernel/TeDecoderTIFF.h                |   185 +
 src/terralib/kernel/TeExternalTheme.cpp            |     2 +-
 src/terralib/kernel/TeGeometryAlgorithms.cpp       |     4 +-
 src/terralib/kernel/TeInitRasterDecoders.cpp       |     3 +
 .../kernel/TeProxMatrixConstructionStrategy.cpp    |     6 +-
 src/terralib/kernel/TeProxMatrixImplementation.h   |     2 +-
 src/terralib/kernel/TeRedBlackTree.h               |   763 +
 src/terralib/kernel/TeSTEvent.cpp                  |     2 +-
 src/terralib/kernel/TeSparseMatrix.h               |   274 +
 src/terralib/kernel/TeSpatialOperations.cpp        |     6 +-
 src/terralib/kernel/TeStatistics.h                 |     6 +-
 src/terralib/kernel/TeTheme.cpp                    |     2 +-
 src/terralib/kernel/dynpq.h                        |     3 +-
 src/terralib/kernel/graph.h                        |    14 +-
 src/terralib/utils/TeColorUtils.cpp                |   780 +
 src/terralib/utils/TeColorUtils.h                  |    92 +
 src/terralib/utils/TeDatabaseUtils.cpp             |   582 +
 src/terralib/utils/TeUpdateDBVersion.cpp           |  1504 ++
 src/terralib/utils/TeUpdateDBVersion.h             |    60 +
 src/terralib/utils/mtrand.cpp                      |    50 +
 src/terralib/utils/mtrand.h                        |   153 +
 src/visualisers/Akima474MethodAttributes.h         |    82 -
 src/visualisers/Akima760.cc                        |    77 +-
 src/visualisers/Akima760Method.cc                  |    52 +
 src/visualisers/Akima760MethodAttributes.h         |    82 -
 src/visualisers/Akima761.cc                        |  3408 +++
 src/visualisers/Akima761Method.cc                  |    52 +
 src/visualisers/ArrowPlotting.cc                   |    42 +-
 src/visualisers/ArrowPlotting.h                    |    10 +-
 src/visualisers/Axis.cc                            |     5 +-
 src/visualisers/AxisAttributes.cc                  |   463 -
 src/visualisers/AxisAttributes.h                   |   133 -
 src/visualisers/AxisControl.cc                     |    77 +
 src/visualisers/AxisControl.h                      |   115 +
 src/visualisers/AxisGrid.cc                        |   125 +
 src/visualisers/AxisGrid.h                         |   125 +
 src/visualisers/AxisItem.cc                        |    41 +-
 src/visualisers/AxisItem.h                         |    18 +-
 src/visualisers/AxisLine.cc                        |   119 +
 src/visualisers/AxisLine.h                         |   129 +
 src/visualisers/AxisMethod.cc                      |    10 +-
 src/visualisers/AxisMethod.h                       |     8 +-
 src/visualisers/AxisMethodAttributes.cc            |    91 -
 src/visualisers/AxisMinorTick.cc                   |   101 +
 src/visualisers/AxisMinorTick.h                    |   117 +
 src/visualisers/AxisTick.cc                        |   116 +
 src/visualisers/AxisTick.h                         |   118 +
 src/visualisers/AxisTickLabelType.cc               |   107 +
 src/visualisers/AxisTickLabelType.h                |   131 +
 src/visualisers/AxisTip.cc                         |    98 +
 src/visualisers/AxisTip.h                          |   116 +
 src/visualisers/AxisType.cc                        |    54 +
 src/visualisers/AxisType.h                         |    86 +
 src/visualisers/BothValuePlotMethodAttributes.cc   |   125 -
 src/visualisers/BoundariesAttributes.h             |    93 -
 src/visualisers/BoxPlotBoxAttributes.cc            |   146 -
 src/visualisers/BoxPlotBoxBorderAttributes.cc      |   117 -
 src/visualisers/BoxPlotItem.cc                     |    45 +-
 src/visualisers/BoxPlotMedianAttributes.cc         |   117 -
 src/visualisers/BoxPlotVisualiser.cc               |    18 +-
 src/visualisers/BoxPlotVisualiserAttributes.cc     |   132 -
 src/visualisers/BoxPlotWhiskerBorderAttributes.cc  |   119 -
 src/visualisers/BoxPlotWhiskerBoxAttributes.cc     |   129 -
 src/visualisers/BoxPlotWhiskerLineAttributes.cc    |   118 -
 src/visualisers/CMakeLists.txt                     |   207 +
 src/visualisers/CalcStreamlines.cc                 |   861 +
 src/visualisers/CalcStreamlines.h                  |    85 +
 .../CalculateColourTechniqueAttributes.h           |    85 -
 src/visualisers/CdfGraphAttributes.cc              |   137 -
 src/visualisers/CellShading.cc                     |    54 +
 src/visualisers/CellShading.h                      |    20 +
 src/visualisers/CellShadingAttributes.h            |    82 -
 src/visualisers/CoastPlottingAttributes.h          |    84 -
 src/visualisers/CoastlinesAttributes.h             |    86 -
 src/visualisers/ColourSelection.cc                 |    53 +
 src/visualisers/ColourSelectionCount.cc            |    61 +
 src/visualisers/ColourSelectionList.cc             |    59 +
 src/visualisers/ColourTechnique.cc                 |     4 +-
 src/visualisers/ColourTechnique.h                  |    10 +-
 src/visualisers/ContinuousLegendMethodAttributes.h |    81 -
 src/visualisers/Contour.cc                         |    38 +-
 src/visualisers/Contour.h                          |     1 +
 src/visualisers/ContourAttributes.cc               |   206 -
 src/visualisers/ContourAttributes.h                |    93 -
 src/visualisers/ContourLibrary.cc                  |   168 +
 src/visualisers/ContourLibrary.h                   |   131 +-
 src/visualisers/CountSelectionType.cc              |     4 +-
 src/visualisers/CountSelectionTypeAttributes.h     |    83 -
 src/visualisers/Curve.cc                           |    93 +-
 src/visualisers/Curve.h                            |     5 +
 src/visualisers/DateAxis.cc                        |    35 +-
 src/visualisers/DefinitionTable.h                  |     2 +-
 .../{DefinitionTable.cc => DefinitionTable.hcc}    |     0
 src/visualisers/DotPolyShadingMethodAttributes.h   |    84 -
 src/visualisers/EfiGraphAttributes.cc              |   172 -
 src/visualisers/EpsCloudAttributes.cc              |   110 -
 src/visualisers/EpsGraph.cc                        |   269 +-
 src/visualisers/EpsGraph.h                         |     2 +-
 src/visualisers/EpsGraphAttributes.cc              |   312 -
 src/visualisers/EpsPlumeAttributes.cc              |   166 -
 src/visualisers/EpsShadeAttributes.cc              |   123 -
 src/visualisers/EpsWindAttributes.cc               |   117 -
 src/visualisers/FixedTableModeAttributes.h         |    82 -
 src/visualisers/FlagPlotting.cc                    |    78 +-
 src/visualisers/FlagPlotting.h                     |     6 +-
 src/visualisers/FloatSelection.cc                  |    74 +
 src/visualisers/GraphShadeStyle.cc                 |     8 +
 src/visualisers/GridPlottingAttributes.h           |    84 -
 src/visualisers/GridShadingAttributes.h            |    81 -
 src/visualisers/HatchPolyShadingMethodAttributes.h |    83 -
 src/visualisers/HeightSelection.cc                 |    53 +
 src/visualisers/HiLoAttributes.cc                  |   187 -
 src/visualisers/HiLoAttributes.h                   |    92 -
 src/visualisers/HiLoMarkerAttributes.h             |    84 -
 src/visualisers/HiLoNumber.h                       |     4 +-
 src/visualisers/HiLoNumberAttributes.h             |    82 -
 src/visualisers/HiLoTechnique.cc                   |    52 -
 src/visualisers/HiLoTechniqueAttributes.h          |    85 -
 src/visualisers/HiLoTextAttributes.h               |    83 -
 src/visualisers/Histogram.cc                       |    10 +-
 src/visualisers/HistogramAttributes.cc             |   175 -
 src/visualisers/HistogramLegendMethodAttributes.h  |    92 -
 src/visualisers/ImageListColourTechnique.h         |     2 +-
 src/visualisers/ImagePlottingAttributes.h          |    86 -
 src/visualisers/ImportPlotAttributes.h             |    91 -
 src/visualisers/IntervalSelectionTypeAttributes.h  |    82 -
 src/visualisers/IsoHelper.cc                       |     6 +-
 src/visualisers/IsoHelper.h                        |     2 +-
 src/visualisers/IsoHighlightAttributes.h           |    86 -
 src/visualisers/IsoLabelAttributes.h               |    89 -
 src/visualisers/IsoPlot.cc                         |    54 +-
 src/visualisers/IsoPlot.h                          |    20 +-
 src/visualisers/IsoPlotAttributes.cc               |   222 -
 src/visualisers/IsoPlotAttributes.h                |    97 -
 src/visualisers/IsoShading.cc                      |    34 +
 src/visualisers/IsoShadingAttributes.cc            |   149 -
 src/visualisers/IsoShadingAttributes.h             |    86 -
 src/visualisers/LabelPlottingAttributes.h          |    90 -
 src/visualisers/LabelPlottingBase.h                |   106 +
 src/visualisers/LandgramBox.cc                     |   144 -
 src/visualisers/LandgramBox.h                      |    87 -
 src/visualisers/LegendBoxAttributes.h              |    80 -
 src/visualisers/LevelListSelectionTypeAttributes.h |    81 -
 src/visualisers/LevelSelection.cc                  |     2 +-
 src/visualisers/LevelSelectionAttributes.h         |    84 -
 src/visualisers/ListColourTechnique.cc             |     2 +
 src/visualisers/ListColourTechnique.h              |     2 +-
 src/visualisers/ListColourTechniqueAttributes.h    |    82 -
 src/visualisers/LookupTableModeAttributes.h        |    83 -
 src/visualisers/Makefile.am                        |   192 -
 src/visualisers/Makefile.in                        |  1194 -
 src/visualisers/MarkerShadingTechniqueAttributes.h |    83 -
 src/visualisers/MetgramCurveAttributes.cc          |   137 -
 src/visualisers/MetgramFlagsAttributes.cc          |   116 -
 src/visualisers/MetgramGraphAttributes.cc          |   111 -
 src/visualisers/NoGridPlottingAttributes.h         |    84 -
 src/visualisers/ObsItem.h                          |    15 +-
 src/visualisers/ObsItemFamily.cc                   |   355 +-
 src/visualisers/ObsItemFamily.h                    |   139 +-
 src/visualisers/ObsPlotting.cc                     |    27 +-
 src/visualisers/ObsPlottingAttributes.h            |    81 -
 src/visualisers/ObsStatGraph.h                     |    90 -
 src/visualisers/ObsTable.cc                        |     5 +-
 src/visualisers/ObsTable.h                         |    11 +-
 src/visualisers/PolyShadingMethod.cc               |     1 -
 src/visualisers/PolyShadingTechniqueAttributes.cc  |   117 -
 src/visualisers/PolyShadingTechniqueAttributes.h   |    82 -
 src/visualisers/SampleContourMethodAttributes.h    |    82 -
 src/visualisers/SegmentJoiner.cc                   |    16 +-
 src/visualisers/ShadingTechnique.h                 |     6 +-
 src/visualisers/SimplePolylineVisualiser.h         |     1 +
 src/visualisers/Streamlines.cc                     |   111 +
 src/visualisers/Streamlines.h                      |    83 +
 src/visualisers/SymbolAdvancedTableMode.h          |     1 +
 src/visualisers/SymbolIndividualModeAttributes.h   |    98 -
 src/visualisers/SymbolMode.cc                      |     6 +
 src/visualisers/SymbolTableModeAttributes.h        |    86 -
 src/visualisers/TephiGrid.cc                       |   404 +
 src/visualisers/TephiGrid.h                        |    82 +
 src/visualisers/Title.h                            |   123 -
 src/visualisers/TitleBase.h                        |   130 -
 src/visualisers/UserDate.cc                        |    62 +
 src/visualisers/UserDate.h                         |    93 +
 src/visualisers/VisDefInfo.cc                      |     2 +-
 src/visualisers/Wind.cc                            |    23 +-
 src/visualisers/Wind.h                             |     1 +
 src/visualisers/WindPlotting.cc                    |    81 +-
 src/visualisers/WindPlotting.h                     |    13 +-
 src/web/CMakeLists.txt                             |    11 +
 src/web/MagConfig.cc                               |    20 +-
 src/web/MagConfig.h                                |     3 +
 src/web/MagJSon.cc                                 |     4 +-
 src/web/Makefile.am                                |    24 -
 src/web/Makefile.in                                |   679 -
 src/web/ObsJSon.cc                                 |    59 +-
 src/web/ObsJSon.h                                  |     4 +-
 src/web/ObsJSonAttributes.cc                       |   102 -
 src/web/WrepJSon.cc                                |   234 +-
 src/web/WrepJSon.h                                 |     9 +-
 src/web/WrepJSonAttributes.cc                      |   228 -
 src/web/json_spirit_reader.cpp                     |    92 +-
 src/xml/ActionRoutines.xml                         |   167 -
 src/xml/Akima.xml                                  |    69 -
 src/xml/Axis.xml                                   |   372 -
 src/xml/BaseDriver.xml                             |    79 -
 src/xml/BinaryDriver.xml                           |    35 -
 src/xml/BinningObject.xml                          |    75 -
 src/xml/BoxPlot.xml                                |   193 -
 src/xml/CairoDriver.xml                            |    22 -
 src/xml/CoastPlotting.xml                          |   233 -
 src/xml/Coastlines.xml                             |    40 -
 src/xml/Contour.xml                                |    94 -
 src/xml/Drivers.xml                                |    26 -
 src/xml/EpsJSon.xml                                |   141 -
 src/xml/Epsgram.xml                                |   812 -
 src/xml/Frame.xml                                  |    45 -
 src/xml/GDDriver.xml                               |    33 -
 src/xml/GeoRectangularProjection.xml               |    63 -
 src/xml/Geopoints.xml                              |   186 -
 src/xml/Grib.xml                                   |   232 -
 src/xml/GridPlotting.xml                           |    71 -
 src/xml/HiLo.xml                                   |   186 -
 src/xml/HiLoMarker.xml                             |    41 -
 src/xml/HiLoNumber.xml                             |    15 -
 src/xml/HiLoTechnique.xml                          |    32 -
 src/xml/HiLoText.xml                               |    23 -
 src/xml/Histogram.xml                              |    79 -
 src/xml/ImagePlotting.xml                          |   264 -
 src/xml/Import.xml                                 |   119 -
 src/xml/InputData.xml                              |    94 -
 src/xml/InputMatrix.xml                            |   151 -
 src/xml/IsoHighlight.xml                           |    43 -
 src/xml/IsoLabel.xml                               |    85 -
 src/xml/IsoPlot.xml                                |    86 -
 src/xml/IsoShading.xml                             |   177 -
 src/xml/KMLDriver.xml                              |    58 -
 src/xml/LabelPlotting.xml                          |    84 -
 src/xml/Landgram.xml                               |    63 -
 src/xml/Layout.xml                                 |    54 -
 src/xml/Legend.xml                                 |   269 -
 src/xml/LevelSelection.xml                         |   107 -
 src/xml/Makefile.am                                |   134 -
 src/xml/Makefile.in                                |   526 -
 src/xml/MetaData.xml                               |    37 -
 src/xml/NetcdfDecoder.xml                          |    47 -
 src/xml/NetcdfInterpretor.xml                      |   249 -
 src/xml/Obs.xml                                    |    26 -
 src/xml/ObsJSon.xml                                |    11 -
 src/xml/ObsPlotting.xml                            |   233 -
 src/xml/ObsStat.xml                                |    32 -
 src/xml/OdaDecoder.xml                             |   100 -
 src/xml/Page.xml                                   |   103 -
 src/xml/PageID.xml                                 |   124 -
 src/xml/PolarStereographicProjection.xml           |   116 -
 src/xml/PostScriptDriver.xml                       |    29 -
 src/xml/Proj4Projection.xml                        |    73 -
 src/xml/QtDriver.xml                               |    39 -
 src/xml/SVGDriver.xml                              |    38 -
 src/xml/SatelliteProjection.xml                    |    19 -
 src/xml/SelectionMode.xml                          |    39 -
 src/xml/SubPage.xml                                |   214 -
 src/xml/SubPageProj4.xml                           |   212 -
 src/xml/SuperPage.xml                              |   183 -
 src/xml/SymbolInput.xml                            |    43 -
 src/xml/SymbolPlotting.xml                         |   441 -
 src/xml/TableDecoder.xml                           |    93 -
 src/xml/Taylor.xml                                 |   193 -
 src/xml/TextVisitor.xml                            |   405 -
 src/xml/Title.xml                                  |    54 -
 src/xml/TitleTemplate.xml                          |    16 -
 src/xml/ValuePlot.xml                              |   130 -
 src/xml/View.xml                                   |   348 -
 src/xml/Wind.xml                                   |   343 -
 src/xml/XYList.xml                                 |   154 -
 src/xml/XYTransformation.xml                       |   267 -
 src/xml/XmlBox.xml                                 |    57 -
 src/xml/XmlPage.xml                                |    39 -
 src/xml/XmlSubPage.xml                             |    46 -
 src/xml/graph_params.xml                           |   233 -
 src/xml/magml.xml                                  |   114 -
 src/xml/output.xml                                 |    16 -
 test/C/Makefile.am                                 |    25 -
 test/C/Makefile.in                                 |   724 -
 test/C/cairo.c                                     |    52 -
 test/C/contours.c                                  |    68 -
 test/C/drivers.c                                   |    40 -
 test/C/land_sea_shade.c                            |    72 -
 test/C/large_area.c                                |    61 -
 test/CMakeLists.txt                                |    95 +
 test/MagML/Makefile.am                             |     7 -
 test/MagML/Makefile.in                             |   541 -
 test/MagML/drivers.magml                           |   123 -
 test/Makefile.am                                   |    18 -
 test/Makefile.in                                   |   656 -
 test/bufr.f90                                      |    31 +
 test/bufr.py                                       |    53 +
 test/cairo.f90                                     |    26 +
 test/cairo.py                                      |    61 +
 test/coast.f90                                     |    22 +
 test/coast.py                                      |    40 +
 test/data.bufr                                     |   Bin 0 -> 1070184 bytes
 test/data/cloudcover.grib                          |   Bin 1557480 -> 0 bytes
 test/data/t2m_fc12.grib                            |   Bin 82680 -> 0 bytes
 test/data/t850_fc_12.grib                          |   Bin 9840 -> 0 bytes
 test/data/uv500.grb                                |   Bin 116400 -> 0 bytes
 test/data/wind30m_fc12.grib                        |   Bin 166800 -> 0 bytes
 test/data/z500.grb                                 |   Bin 58200 -> 0 bytes
 test/data/z500_fc_12.grib                          |   Bin 9840 -> 0 bytes
 test/fortran/Makefile.am                           |    15 -
 test/fortran/Makefile.in                           |   692 -
 test/fortran/boxplot.f                             |   168 -
 test/fortran/coast_only.f                          |    52 -
 test/fortran/layout_test.f                         |   572 -
 test/fortran/shaded_isolines.f                     |   131 -
 test/fortran/wind.f                                |    69 -
 test/grib.f90                                      |    37 +
 test/grib.py                                       |    70 +
 test/odb.py                                        |    32 +
 test/python/Makefile.am                            |     7 -
 test/python/Makefile.in                            |   541 -
 test/python/magmacro_example.py                    |    35 -
 test/python/simple.py                              |    33 -
 test/synop.bufr                                    |   Bin 0 -> 1070184 bytes
 test/test.odb                                      |   Bin 0 -> 235010 bytes
 tools/CMakeLists.txt                               |    27 +
 tools/Makefile.am                                  |     9 -
 tools/Makefile.in                                  |   510 -
 tools/RPM_build_specs/EmosLib.spec                 |   118 +
 tools/RPM_build_specs/emoslib/EmosLib.spec         |   155 +
 tools/RPM_build_specs/emoslib/generateRPM.sh       |    47 +
 tools/RPM_build_specs/grib_api/rpms/grib_api.spec  |    96 +
 tools/axis2doc.py                                  |   285 +
 tools/beau.py                                      |    10 +
 tools/beautify-xml.py                              |    14 +
 tools/generateDebugLibs.sh                         |    27 +
 tools/magml2json.pl                                |   153 +
 tools/make_wrappers                                |    79 +
 tools/newbase.pl                                   |   111 +
 tools/newclass.pl                                  |   117 +
 tools/newdriver.pl                                 |    34 +-
 tools/newfactory.pl                                |   147 +
 tools/newprojection.pl                             |   435 +
 tools/newtemplate.pl                               |   118 +
 tools/shp_process.ksh                              |   293 +
 tools/x                                            |   376 +
 tools/xml2cc.pl                                    |     0
 tools/xml2cc.pl.workshop                           |   742 +
 tools/xml2cc_list.pl                               |   140 +
 tools/xml2cc_new.pl                                |     1 +
 tools/xml2doc.pl                                   |   147 +
 tools/xml2doc.py                                   |   203 +
 tools/xml2dtd.pl                                   |     0
 tools/xml2html.py                                  |   197 +
 tools/xml2icon.pl                                  |   149 +
 tools/xml2mv.pl                                    |     2 +
 tools/xml2mv.py                                    |   855 +
 tools/xml2odt.py                                   |    87 +
 tools/xml2odt.sh                                   |    40 +
 tools/xml2split.py                                 |    70 +
 version.sh                                         |     2 +-
 1314 files changed, 80654 insertions(+), 106055 deletions(-)

diff --git a/.cproject b/.cproject
new file mode 100644
index 0000000..4601e49
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="0.2045049205">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.2045049205" moduleId="org.eclipse.cdt.core.settings" name="Default">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration buildProperties="" description="" id="0.2045049205" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
+					<folderInfo id="0.2045049205." name="/" resourcePath="">
+						<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.1652894498" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
+							<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.1652894498.1207494383" name=""/>
+							<builder id="org.eclipse.cdt.build.core.settings.default.builder.1614246132" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.libs.137110236" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.1356436689" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
+								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1044918392" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+							</tool>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.1801718527" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
+								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.454761574" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+							</tool>
+							<tool id="org.eclipse.cdt.build.core.settings.holder.1854013772" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
+								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1921095571" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="magics.null.1496790569" name="magics"/>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1924742151;cdt.managedbuild.config.gnu.cross.exe.debug.1924742151.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.1672276157;cdt.managedbuild.tool.gnu.cpp.compiler.input.793637961">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1818963538;cdt.managedbuild.config.gnu.cross.exe.release.1818963538.;cdt.managedbuild.tool.gnu.cross.c.compiler.1528488409;cdt.managedbuild.tool.gnu.c.compiler.input.1157382515">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="0.2045049205">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.debug.1924742151;cdt.managedbuild.config.gnu.cross.exe.debug.1924742151.;cdt.managedbuild.tool.gnu.cross.c.compiler.82021771;cdt.managedbuild.tool.gnu.c.compiler.input.483704788">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+		</scannerConfigBuildInfo>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.cross.exe.release.1818963538;cdt.managedbuild.config.gnu.cross.exe.release.1818963538.;cdt.managedbuild.tool.gnu.cross.cpp.compiler.995973704;cdt.managedbuild.tool.gnu.cpp.compiler.input.1978593122">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+</cproject>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ba12fa2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,19 @@
+*~
+*.o
+*.ps
+*.png
+*.grib
+*.grb
+*.out
+*.keep
+docs
+Debug
+CMakeLists.txt.user*
+*.nc
+*.err
+*.usa
+*.pyc
+*.log
+*.html
+
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..7a9dcd0
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>home</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
diff --git a/AUTHORS b/AUTHORS
index c247cf4..39e765b 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -19,9 +19,13 @@ Stephan Siemen
 Fernando Ii
 Iain Russell
 Sandor Kertesz
-Vesa Karhila
 Peter Bispham
 
+Past developers
+===============
+
+Vesa Karhila
+
 
 Thanks for contributions from:
 ==============================
diff --git a/CMakeFiles/2.8.10.2/CMakeCCompiler.cmake b/CMakeFiles/2.8.10.2/CMakeCCompiler.cmake
new file mode 100644
index 0000000..a972516
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CMakeCCompiler.cmake
@@ -0,0 +1,55 @@
+set(CMAKE_C_COMPILER "/usr/bin/cc")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "GNU")
+set(CMAKE_C_COMPILER_VERSION "4.4.7")
+set(CMAKE_C_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCC 1)
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+
+
+
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-redhat-linux/4.4.7;/usr/lib64;/lib64;/usr/lib")
+
+
+
diff --git a/CMakeFiles/2.8.10.2/CMakeCXXCompiler.cmake b/CMakeFiles/2.8.10.2/CMakeCXXCompiler.cmake
new file mode 100644
index 0000000..09a4653
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CMakeCXXCompiler.cmake
@@ -0,0 +1,56 @@
+set(CMAKE_CXX_COMPILER "/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "GNU")
+set(CMAKE_CXX_COMPILER_VERSION "4.4.7")
+set(CMAKE_CXX_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCXX 1)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "ELF")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-redhat-linux/4.4.7;/usr/lib64;/lib64;/usr/lib")
+
+
+
diff --git a/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_C.bin b/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..9a91ed2
Binary files /dev/null and b/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_C.bin differ
diff --git a/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_CXX.bin b/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_CXX.bin
new file mode 100755
index 0000000..be1e6e2
Binary files /dev/null and b/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_CXX.bin differ
diff --git a/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_Fortran.bin b/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_Fortran.bin
new file mode 100755
index 0000000..16ea4d2
Binary files /dev/null and b/CMakeFiles/2.8.10.2/CMakeDetermineCompilerABI_Fortran.bin differ
diff --git a/CMakeFiles/2.8.10.2/CMakeFortranCompiler.cmake b/CMakeFiles/2.8.10.2/CMakeFortranCompiler.cmake
new file mode 100644
index 0000000..d55e5aa
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CMakeFortranCompiler.cmake
@@ -0,0 +1,54 @@
+set(CMAKE_Fortran_COMPILER "/usr/bin/gfortran")
+set(CMAKE_Fortran_COMPILER_ARG1 "")
+set(CMAKE_Fortran_COMPILER_ID "GNU")
+set(CMAKE_Fortran_PLATFORM_ID "")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_COMPILER_IS_GNUG77 1)
+set(CMAKE_Fortran_COMPILER_LOADED 1)
+set(CMAKE_Fortran_COMPILER_WORKS TRUE)
+set(CMAKE_Fortran_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
+
+set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1)
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_Fortran_COMPILER_ID_RUN 1)
+set(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;f77;F77;f90;F90;for;For;FOR;f95;F95)
+set(CMAKE_Fortran_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_Fortran_LINKER_PREFERENCE 20)
+if(UNIX)
+  set(CMAKE_Fortran_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_Fortran_OUTPUT_EXTENSION .obj)
+endif()
+
+# Save compiler ABI information.
+set(CMAKE_Fortran_SIZEOF_DATA_PTR "8")
+set(CMAKE_Fortran_COMPILER_ABI "")
+set(CMAKE_Fortran_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_Fortran_SIZEOF_DATA_PTR AND NOT CMAKE_SIZEOF_VOID_P)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_Fortran_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_Fortran_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_Fortran_COMPILER_ABI}")
+endif()
+
+if(CMAKE_Fortran_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "gfortranbegin;gfortran;m;c")
+set(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-redhat-linux/4.4.7;/usr/lib64;/lib64;/usr/lib")
diff --git a/CMakeFiles/2.8.10.2/CMakeSystem.cmake b/CMakeFiles/2.8.10.2/CMakeSystem.cmake
new file mode 100644
index 0000000..1f32d10
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+
+
+set(CMAKE_SYSTEM "Linux-2.6.32-358.2.1.el6.x86_64")
+set(CMAKE_SYSTEM_NAME "Linux")
+set(CMAKE_SYSTEM_VERSION "2.6.32-358.2.1.el6.x86_64")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_HOST_SYSTEM "Linux-2.6.32-358.2.1.el6.x86_64")
+set(CMAKE_HOST_SYSTEM_NAME "Linux")
+set(CMAKE_HOST_SYSTEM_VERSION "2.6.32-358.2.1.el6.x86_64")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/CMakeFiles/2.8.10.2/CompilerIdC/CMakeCCompilerId.c b/CMakeFiles/2.8.10.2/CompilerIdC/CMakeCCompilerId.c
new file mode 100644
index 0000000..699d25d
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CompilerIdC/CMakeCCompilerId.c
@@ -0,0 +1,393 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+  /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+   /* __SUNPRO_C = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# else
+   /* __SUNPRO_C = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+  /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc     % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+  /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER         % 10000)
+
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# else
+#  if __IBMC__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+   /* __IBMC__ = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI_DSP"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+/* Analog VisualDSP++ >= 4.5.6 */
+#elif defined(__VISUALDSPVERSION__)
+# define COMPILER_ID "ADSP"
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+
+/* Analog VisualDSP++ < 4.5.6 */
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+
+/* IAR Systems compiler for embedded systems.
+   http://www.iar.com
+   Not supported yet by CMake
+#elif defined(__IAR_SYSTEMS_ICC__)
+# define COMPILER_ID "IAR" */
+
+/* sdcc, the small devices C compiler for embedded systems,
+   http://sdcc.sourceforge.net  */
+#elif defined(SDCC)
+# define COMPILER_ID "SDCC"
+  /* SDCC = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+#  define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(SDCC    % 10)
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
+# define PLATFORM_ID "Haiku"
+/* Haiku also defines __BEOS__ so we must
+   put it prior to the check for __BEOS__
+*/
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+  (void)argv;
+  return require;
+}
+#endif
diff --git a/CMakeFiles/2.8.10.2/CompilerIdCXX/CMakeCXXCompilerId.cpp b/CMakeFiles/2.8.10.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100644
index 0000000..0d13d64
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,375 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+  /* __COMO_VERSION__ = VRR */
+# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+  /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+   /* __SUNPRO_CC = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+  /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC     % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+  /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER         % 10000)
+
+#elif defined(__IBMCPP__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# else
+#  if __IBMCPP__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+   /* __IBMCPP__ = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI_DSP"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+/* Analog VisualDSP++ >= 4.5.6 */
+#elif defined(__VISUALDSPVERSION__)
+# define COMPILER_ID "ADSP"
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+
+/* Analog VisualDSP++ < 4.5.6 */
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
+# define PLATFORM_ID "Haiku"
+/* Haiku also defines __BEOS__ so we must
+   put it prior to the check for __BEOS__
+*/
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/2.8.10.2/CompilerIdFortran/CMakeFortranCompilerId.F b/CMakeFiles/2.8.10.2/CompilerIdFortran/CMakeFortranCompilerId.F
new file mode 100644
index 0000000..4d25de0
--- /dev/null
+++ b/CMakeFiles/2.8.10.2/CompilerIdFortran/CMakeFortranCompilerId.F
@@ -0,0 +1,123 @@
+      PROGRAM CMakeFortranCompilerId
+#if 0
+! Identify the compiler
+#endif
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+        PRINT *, 'INFO:compiler[Intel]'
+#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
+        PRINT *, 'INFO:compiler[SunPro]'
+#elif defined(_CRAYFTN)
+        PRINT *, 'INFO:compiler[Cray]'
+#elif defined(__G95__)
+        PRINT *, 'INFO:compiler[G95]'
+#elif defined(__PATHSCALE__)
+        PRINT *, 'INFO:compiler[PathScale]'
+#elif defined(__ABSOFT__)
+        PRINT *, 'INFO:compiler[Absoft]'
+#elif defined(__GNUC__)
+        PRINT *, 'INFO:compiler[GNU]'
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+        PRINT *, 'INFO:compiler[zOS]'
+# elif __IBMC__ >= 800
+        PRINT *, 'INFO:compiler[XL]'
+# else
+        PRINT *, 'INFO:compiler[VisualAge]'
+# endif
+#elif defined(__PGI)
+        PRINT *, 'INFO:compiler[PGI]'
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+        PRINT *, 'INFO:compiler[MIPSpro]'
+#       if 0
+!       This compiler is either not known or is too old to define an
+!       identification macro.  Try to identify the platform and guess that
+!       it is the native compiler.
+#       endif
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:compiler[VisualAge]'
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+        PRINT *, 'INFO:compiler[MIPSpro]'
+#elif defined(__hpux) || defined(__hpux__)
+        PRINT *, 'INFO:compiler[HP]'
+#elif 1
+#       if 0
+!       The above 'elif 1' instead of 'else' is to work around a bug in the
+!       SGI preprocessor which produces both the __sgi and else blocks.
+#       endif
+        PRINT *, 'INFO:compiler[]'
+#endif
+
+#if 0
+! Identify the platform
+#endif
+#if defined(__linux) || defined(__linux__) || defined(linux)
+        PRINT *, 'INFO:platform[Linux]'
+#elif defined(__CYGWIN__)
+        PRINT *, 'INFO:platform[Cygwin]'
+#elif defined(__MINGW32__)
+        PRINT *, 'INFO:platform[MinGW]'
+#elif defined(__APPLE__)
+        PRINT *, 'INFO:platform[Darwin]'
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+        PRINT *, 'INFO:platform[Windows]'
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+        PRINT *, 'INFO:platform[FreeBSD]'
+#elif defined(__NetBSD__) || defined(__NetBSD)
+        PRINT *, 'INFO:platform[NetBSD]'
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+        PRINT *, 'INFO:platform[OpenBSD]'
+#elif defined(__sun) || defined(sun)
+        PRINT *, 'INFO:platform[SunOS]'
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:platform[AIX]'
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+        PRINT *, 'INFO:platform[IRIX]'
+#elif defined(__hpux) || defined(__hpux__)
+        PRINT *, 'INFO:platform[HP-UX]'
+#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
+        PRINT *, 'INFO:platform[Haiku]'
+#       if 0
+!       Haiku also defines __BEOS__ so we must
+!       put it prior to the check for __BEOS__
+#       endif
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+        PRINT *, 'INFO:platform[BeOS]'
+#elif defined(__QNX__) || defined(__QNXNTO__)
+        PRINT *, 'INFO:platform[QNX]'
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+        PRINT *, 'INFO:platform[Tru64]'
+#elif defined(__riscos) || defined(__riscos__)
+        PRINT *, 'INFO:platform[RISCos]'
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+        PRINT *, 'INFO:platform[SINIX]'
+#elif defined(__UNIX_SV__)
+        PRINT *, 'INFO:platform[UNIX_SV]'
+#elif defined(__bsdos__)
+        PRINT *, 'INFO:platform[BSDOS]'
+#elif defined(_MPRAS) || defined(MPRAS)
+        PRINT *, 'INFO:platform[MP-RAS]'
+#elif defined(__osf) || defined(__osf__)
+        PRINT *, 'INFO:platform[OSF1]'
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+        PRINT *, 'INFO:platform[SCO_SV]'
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+        PRINT *, 'INFO:platform[ULTRIX]'
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+        PRINT *, 'INFO:platform[Xenix]'
+#elif 1
+#       if 0
+!       The above 'elif 1' instead of 'else' is to work around a bug in the
+!       SGI preprocessor which produces both the __sgi and else blocks.
+#       endif
+        PRINT *, 'INFO:platform[]'
+#endif
+#if defined(_WIN32) && (defined(__INTEL_COMPILER) || defined(__ICC))
+# if defined(_M_IA64)
+        PRINT *, 'INFO:arch[IA64]'
+# elif defined(_M_X64) || defined(_M_AMD64)
+        PRINT *, 'INFO:arch[x64]'
+# elif defined(_M_IX86)
+        PRINT *, 'INFO:arch[X86]'
+# endif
+#endif
+      END
diff --git a/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake b/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake
new file mode 100644
index 0000000..a4ea959
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake
@@ -0,0 +1,56 @@
+set(CMAKE_C_COMPILER "/usr/bin/cc")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "GNU")
+set(CMAKE_C_COMPILER_VERSION "4.3.4")
+set(CMAKE_C_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCC 1)
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+
+
+
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib64/gcc/x86_64-suse-linux/4.3;/usr/lib64;/lib64;/usr/x86_64-suse-linux/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
+
+
+
diff --git a/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake b/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake
new file mode 100644
index 0000000..14bf571
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake
@@ -0,0 +1,57 @@
+set(CMAKE_CXX_COMPILER "/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "GNU")
+set(CMAKE_CXX_COMPILER_VERSION "4.3.4")
+set(CMAKE_CXX_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCXX 1)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "ELF")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib64/gcc/x86_64-suse-linux/4.3;/usr/lib64;/lib64;/usr/x86_64-suse-linux/lib")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
+
+
+
diff --git a/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_C.bin b/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..8109d82
Binary files /dev/null and b/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_C.bin differ
diff --git a/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_CXX.bin b/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_CXX.bin
new file mode 100755
index 0000000..2e078ce
Binary files /dev/null and b/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_CXX.bin differ
diff --git a/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_Fortran.bin b/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_Fortran.bin
new file mode 100755
index 0000000..f75cf65
Binary files /dev/null and b/CMakeFiles/2.8.11.2/CMakeDetermineCompilerABI_Fortran.bin differ
diff --git a/CMakeFiles/2.8.11.2/CMakeFortranCompiler.cmake b/CMakeFiles/2.8.11.2/CMakeFortranCompiler.cmake
new file mode 100644
index 0000000..397d155
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CMakeFortranCompiler.cmake
@@ -0,0 +1,55 @@
+set(CMAKE_Fortran_COMPILER "/usr/bin/gfortran")
+set(CMAKE_Fortran_COMPILER_ARG1 "")
+set(CMAKE_Fortran_COMPILER_ID "GNU")
+set(CMAKE_Fortran_PLATFORM_ID "Linux")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_COMPILER_IS_GNUG77 1)
+set(CMAKE_Fortran_COMPILER_LOADED 1)
+set(CMAKE_Fortran_COMPILER_WORKS TRUE)
+set(CMAKE_Fortran_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
+
+set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 1)
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_Fortran_COMPILER_ID_RUN 1)
+set(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;f77;F77;f90;F90;for;For;FOR;f95;F95)
+set(CMAKE_Fortran_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_Fortran_LINKER_PREFERENCE 20)
+if(UNIX)
+  set(CMAKE_Fortran_OUTPUT_EXTENSION .o)
+else()
+  set(CMAKE_Fortran_OUTPUT_EXTENSION .obj)
+endif()
+
+# Save compiler ABI information.
+set(CMAKE_Fortran_SIZEOF_DATA_PTR "8")
+set(CMAKE_Fortran_COMPILER_ABI "ELF")
+set(CMAKE_Fortran_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_Fortran_SIZEOF_DATA_PTR AND NOT CMAKE_SIZEOF_VOID_P)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_Fortran_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_Fortran_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_Fortran_COMPILER_ABI}")
+endif()
+
+if(CMAKE_Fortran_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "gfortranbegin;gfortran;m;c")
+set(CMAKE_Fortran_IMPLICIT_LINK_DIRECTORIES "/usr/lib64/gcc/x86_64-suse-linux/4.3;/usr/lib64;/lib64;/usr/x86_64-suse-linux/lib")
+set(CMAKE_Fortran_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/CMakeFiles/2.8.11.2/CMakeSystem.cmake b/CMakeFiles/2.8.11.2/CMakeSystem.cmake
new file mode 100644
index 0000000..77f4db6
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+
+
+set(CMAKE_SYSTEM "Linux-3.0.76-0.11-default")
+set(CMAKE_SYSTEM_NAME "Linux")
+set(CMAKE_SYSTEM_VERSION "3.0.76-0.11-default")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_HOST_SYSTEM "Linux-3.0.76-0.11-default")
+set(CMAKE_HOST_SYSTEM_NAME "Linux")
+set(CMAKE_HOST_SYSTEM_VERSION "3.0.76-0.11-default")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/CMakeFiles/2.8.11.2/CompilerIdC/CMakeCCompilerId.c b/CMakeFiles/2.8.11.2/CompilerIdC/CMakeCCompilerId.c
new file mode 100644
index 0000000..458affc
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CompilerIdC/CMakeCCompilerId.c
@@ -0,0 +1,390 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+  /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+   /* __SUNPRO_C = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# else
+   /* __SUNPRO_C = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+  /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc     % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+  /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER         % 10000)
+
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# else
+#  if __IBMC__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+   /* __IBMC__ = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+/* Analog VisualDSP++ >= 4.5.6 */
+#elif defined(__VISUALDSPVERSION__)
+# define COMPILER_ID "ADSP"
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+
+/* Analog VisualDSP++ < 4.5.6 */
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+
+/* IAR Systems compiler for embedded systems.
+   http://www.iar.com
+   Not supported yet by CMake
+#elif defined(__IAR_SYSTEMS_ICC__)
+# define COMPILER_ID "IAR" */
+
+/* sdcc, the small devices C compiler for embedded systems,
+   http://sdcc.sourceforge.net  */
+#elif defined(SDCC)
+# define COMPILER_ID "SDCC"
+  /* SDCC = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+#  define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(SDCC    % 10)
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+  (void)argv;
+  return require;
+}
+#endif
diff --git a/CMakeFiles/2.8.11.2/CompilerIdCXX/CMakeCXXCompilerId.cpp b/CMakeFiles/2.8.11.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100644
index 0000000..17c8fd9
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,372 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+  /* __COMO_VERSION__ = VRR */
+# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER    % 10)
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH HEX(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "Watcom"
+  /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__WATCOMC__ % 100)
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+   /* __SUNPRO_CC = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+  /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC     % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+  /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER         % 10000)
+
+#elif defined(__IBMCPP__)
+# if defined(__COMPILER_VER__)
+#  define COMPILER_ID "zOS"
+# else
+#  if __IBMCPP__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+   /* __IBMCPP__ = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+# endif
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+/* Analog VisualDSP++ >= 4.5.6 */
+#elif defined(__VISUALDSPVERSION__)
+# define COMPILER_ID "ADSP"
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+
+/* Analog VisualDSP++ < 4.5.6 */
+#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+/* This compiler is either not known or is too old to define an
+   identification macro.  Try to identify the platform and guess that
+   it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  define ARCHITECTURE_ID "ARM"
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/2.8.11.2/CompilerIdFortran/CMakeFortranCompilerId.F b/CMakeFiles/2.8.11.2/CompilerIdFortran/CMakeFortranCompilerId.F
new file mode 100644
index 0000000..f84852a
--- /dev/null
+++ b/CMakeFiles/2.8.11.2/CompilerIdFortran/CMakeFortranCompilerId.F
@@ -0,0 +1,119 @@
+      PROGRAM CMakeFortranCompilerId
+#if 0
+! Identify the compiler
+#endif
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+        PRINT *, 'INFO:compiler[Intel]'
+#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
+        PRINT *, 'INFO:compiler[SunPro]'
+#elif defined(_CRAYFTN)
+        PRINT *, 'INFO:compiler[Cray]'
+#elif defined(__G95__)
+        PRINT *, 'INFO:compiler[G95]'
+#elif defined(__PATHSCALE__)
+        PRINT *, 'INFO:compiler[PathScale]'
+#elif defined(__ABSOFT__)
+        PRINT *, 'INFO:compiler[Absoft]'
+#elif defined(__GNUC__)
+        PRINT *, 'INFO:compiler[GNU]'
+#elif defined(__IBMC__)
+# if defined(__COMPILER_VER__)
+        PRINT *, 'INFO:compiler[zOS]'
+# elif __IBMC__ >= 800
+        PRINT *, 'INFO:compiler[XL]'
+# else
+        PRINT *, 'INFO:compiler[VisualAge]'
+# endif
+#elif defined(__PGI)
+        PRINT *, 'INFO:compiler[PGI]'
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+        PRINT *, 'INFO:compiler[MIPSpro]'
+#       if 0
+!       This compiler is either not known or is too old to define an
+!       identification macro.  Try to identify the platform and guess that
+!       it is the native compiler.
+#       endif
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:compiler[VisualAge]'
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+        PRINT *, 'INFO:compiler[MIPSpro]'
+#elif defined(__hpux) || defined(__hpux__)
+        PRINT *, 'INFO:compiler[HP]'
+#elif 1
+#       if 0
+!       The above 'elif 1' instead of 'else' is to work around a bug in the
+!       SGI preprocessor which produces both the __sgi and else blocks.
+#       endif
+        PRINT *, 'INFO:compiler[]'
+#endif
+
+#if 0
+! Identify the platform
+#endif
+#if defined(__linux) || defined(__linux__) || defined(linux)
+        PRINT *, 'INFO:platform[Linux]'
+#elif defined(__CYGWIN__)
+        PRINT *, 'INFO:platform[Cygwin]'
+#elif defined(__MINGW32__)
+        PRINT *, 'INFO:platform[MinGW]'
+#elif defined(__APPLE__)
+        PRINT *, 'INFO:platform[Darwin]'
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+        PRINT *, 'INFO:platform[Windows]'
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+        PRINT *, 'INFO:platform[FreeBSD]'
+#elif defined(__NetBSD__) || defined(__NetBSD)
+        PRINT *, 'INFO:platform[NetBSD]'
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+        PRINT *, 'INFO:platform[OpenBSD]'
+#elif defined(__sun) || defined(sun)
+        PRINT *, 'INFO:platform[SunOS]'
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+        PRINT *, 'INFO:platform[AIX]'
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+        PRINT *, 'INFO:platform[IRIX]'
+#elif defined(__hpux) || defined(__hpux__)
+        PRINT *, 'INFO:platform[HP-UX]'
+#elif defined(__HAIKU__)
+        PRINT *, 'INFO:platform[Haiku]'
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+        PRINT *, 'INFO:platform[BeOS]'
+#elif defined(__QNX__) || defined(__QNXNTO__)
+        PRINT *, 'INFO:platform[QNX]'
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+        PRINT *, 'INFO:platform[Tru64]'
+#elif defined(__riscos) || defined(__riscos__)
+        PRINT *, 'INFO:platform[RISCos]'
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+        PRINT *, 'INFO:platform[SINIX]'
+#elif defined(__UNIX_SV__)
+        PRINT *, 'INFO:platform[UNIX_SV]'
+#elif defined(__bsdos__)
+        PRINT *, 'INFO:platform[BSDOS]'
+#elif defined(_MPRAS) || defined(MPRAS)
+        PRINT *, 'INFO:platform[MP-RAS]'
+#elif defined(__osf) || defined(__osf__)
+        PRINT *, 'INFO:platform[OSF1]'
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+        PRINT *, 'INFO:platform[SCO_SV]'
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+        PRINT *, 'INFO:platform[ULTRIX]'
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+        PRINT *, 'INFO:platform[Xenix]'
+#elif 1
+#       if 0
+!       The above 'elif 1' instead of 'else' is to work around a bug in the
+!       SGI preprocessor which produces both the __sgi and else blocks.
+#       endif
+        PRINT *, 'INFO:platform[]'
+#endif
+#if defined(_WIN32) && (defined(__INTEL_COMPILER) || defined(__ICC))
+# if defined(_M_IA64)
+        PRINT *, 'INFO:arch[IA64]'
+# elif defined(_M_X64) || defined(_M_AMD64)
+        PRINT *, 'INFO:arch[x64]'
+# elif defined(_M_IX86)
+        PRINT *, 'INFO:arch[X86]'
+# endif
+#endif
+      END
diff --git a/CMakeFiles/CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.bin b/CMakeFiles/CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.bin
new file mode 100755
index 0000000..aecbc90
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.bin differ
diff --git a/CMakeFiles/CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.c b/CMakeFiles/CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.c
new file mode 100644
index 0000000..a192656
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/CMAKE_SIZEOF_UNSIGNED_SHORT.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(unsigned short))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.bin
new file mode 100755
index 0000000..b3354fd
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.c
new file mode 100644
index 0000000..af96950
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_CHAR.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(char))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.bin
new file mode 100755
index 0000000..6b375aa
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.c
new file mode 100644
index 0000000..8ec3d43
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_DOUBLE.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(double))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.bin
new file mode 100755
index 0000000..5286143
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.c
new file mode 100644
index 0000000..076a87c
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_FLOAT.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(float))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.bin
new file mode 100755
index 0000000..1c96cdc
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.c
new file mode 100644
index 0000000..e91c9b2
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_INT.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(int))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.bin
new file mode 100755
index 0000000..f391fab
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.c
new file mode 100644
index 0000000..44d4458
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(long))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.bin
new file mode 100755
index 0000000..553f7f2
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.c
new file mode 100644
index 0000000..796bd13
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_DOUBLE.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(long double))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.bin
new file mode 100755
index 0000000..146ecd6
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.c
new file mode 100644
index 0000000..0623da0
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_LONG_LONG.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(long long))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.bin
new file mode 100755
index 0000000..670ef02
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.c
new file mode 100644
index 0000000..f7de2f8
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_PTR.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(void *))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.bin
new file mode 100755
index 0000000..e566cbb
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.c
new file mode 100644
index 0000000..8197c01
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SHORT.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(short))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.bin
new file mode 100755
index 0000000..7df35df
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.c
new file mode 100644
index 0000000..dbaf85b
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SIZE_T.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(size_t))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.bin b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.bin
new file mode 100755
index 0000000..7b041d4
Binary files /dev/null and b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.bin differ
diff --git a/CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.c b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.c
new file mode 100644
index 0000000..920c5ef
--- /dev/null
+++ b/CMakeFiles/CheckTypeSize/EC_SIZEOF_SSIZE_T.c
@@ -0,0 +1,40 @@
+#include <sys/types.h>
+#include <stdint.h>
+#include <stddef.h>
+
+
+#undef KEY
+#if defined(__i386)
+# define KEY '_','_','i','3','8','6'
+#elif defined(__x86_64)
+# define KEY '_','_','x','8','6','_','6','4'
+#elif defined(__ppc__)
+# define KEY '_','_','p','p','c','_','_'
+#elif defined(__ppc64__)
+# define KEY '_','_','p','p','c','6','4','_','_'
+#endif
+
+#define SIZE (sizeof(ssize_t))
+char info_size[] =  {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',
+  ('0' + ((SIZE / 10000)%10)),
+  ('0' + ((SIZE / 1000)%10)),
+  ('0' + ((SIZE / 100)%10)),
+  ('0' + ((SIZE / 10)%10)),
+  ('0' +  (SIZE    % 10)),
+  ']',
+#ifdef KEY
+  ' ','k','e','y','[', KEY, ']',
+#endif
+  '\0'};
+
+#ifdef __CLASSIC_C__
+int main(argc, argv) int argc; char *argv[];
+#else
+int main(int argc, char *argv[])
+#endif
+{
+  int require = 0;
+  require += info_size[argc];
+  (void)argv;
+  return require;
+}
diff --git a/CMakeFiles/FortranCInterface/CMakeCache.txt b/CMakeFiles/FortranCInterface/CMakeCache.txt
new file mode 100644
index 0000000..10231bb
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeCache.txt
@@ -0,0 +1,250 @@
+# This is the CMakeCache file.
+# For build in directory: /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+# It was generated by CMake: /usr/local/apps/cmake/2.8.10/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUI's for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//C compiler.
+CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
+
+//No help, variable specified on the command line.
+CMAKE_C_FLAGS:STRING= -pipe
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release minsize builds.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during Release with Debug Info builds.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//Fortran compiler.
+CMAKE_Fortran_COMPILER:FILEPATH=/usr/bin/gfortran
+
+//No help, variable specified on the command line.
+CMAKE_Fortran_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_Fortran_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release minsize builds.
+CMAKE_Fortran_FLAGS_MINSIZEREL:STRING=-Os
+
+//Flags used by the compiler during release builds (/MD /Ob1 /Oi
+// /Ot /Oy /Gs will produce slightly less optimized but smaller
+// files).
+CMAKE_Fortran_FLAGS_RELEASE:STRING=-O3
+
+//Flags used by the compiler during Release with Debug Info builds.
+CMAKE_Fortran_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//make program
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=FortranCInterface
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=' '
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//If true, cmake will use relative paths in makefiles and projects.
+CMAKE_USE_RELATIVE_PATHS:BOOL=OFF
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make.  This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Value Computed by CMake
+FortranCInterface_BINARY_DIR:STATIC=/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+
+//Value Computed by CMake
+FortranCInterface_SOURCE_DIR:STATIC=/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+//Dependencies for target
+myfort_LIB_DEPENDS:STATIC=
+
+//Dependencies for the target
+symbols_LIB_DEPENDS:STATIC=general;myfort;
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_BUILD_TOOL
+CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1
+//What is the target build tool cmake is generating for.
+CMAKE_BUILD_TOOL:INTERNAL=/usr/bin/gmake
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=10
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/local/apps/cmake/2.8.10/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/apps/cmake/2.8.10/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/apps/cmake/2.8.10/bin/ctest
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Path to cache edit program executable.
+CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/apps/cmake/2.8.10/bin/ccmake
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_Fortran_FLAGS
+CMAKE_Fortran_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_Fortran_FLAGS_DEBUG
+CMAKE_Fortran_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_Fortran_FLAGS_MINSIZEREL
+CMAKE_Fortran_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_Fortran_FLAGS_RELEASE
+CMAKE_Fortran_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_Fortran_FLAGS_RELWITHDEBINFO
+CMAKE_Fortran_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Start directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/local/apps/cmake/2.8.10/share/cmake-2.8
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+CMAKE_SUPPRESS_DEVELOPER_WARNINGS:INTERNAL=FALSE
+//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS
+CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+//Test C_SUPPORTS_DOLLAR
+C_SUPPORTS_DOLLAR:INTERNAL=1
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/CMakeDirectoryInformation.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 0000000..e2f91b2
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Relative path conversion top directories.
+SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface")
+SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface")
+
+# Force unix paths in dependencies.
+SET(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/DependInfo.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/DependInfo.cmake
new file mode 100644
index 0000000..b0a884f
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/DependInfo.cmake
@@ -0,0 +1,24 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "Fortran"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_Fortran
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_mod.f90" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/call_mod.f90.o"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_sub.f" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/call_sub.f.o"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/main.F" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/main.F.o"
+  )
+SET(CMAKE_Fortran_COMPILER_ID "GNU")
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/DependInfo.cmake"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/DependInfo.cmake"
+  )
+
+# The include file search paths:
+SET(CMAKE_C_TARGET_INCLUDE_PATH
+  )
+SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/build.make b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/build.make
new file mode 100644
index 0000000..fd041f6
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/build.make
@@ -0,0 +1,135 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/local/apps/cmake/2.8.10/bin/cmake
+
+# The command to remove a file.
+RM = /usr/local/apps/cmake/2.8.10/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/local/apps/cmake/2.8.10/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+
+# Include any dependencies generated for this target.
+include CMakeFiles/FortranCInterface.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/FortranCInterface.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/FortranCInterface.dir/flags.make
+
+CMakeFiles/FortranCInterface.dir/main.F.o: CMakeFiles/FortranCInterface.dir/flags.make
+CMakeFiles/FortranCInterface.dir/main.F.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/main.F
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_1)
+	@echo "Building Fortran object CMakeFiles/FortranCInterface.dir/main.F.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) -DCALL_MOD $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/main.F -o CMakeFiles/FortranCInterface.dir/main.F.o
+
+CMakeFiles/FortranCInterface.dir/main.F.o.requires:
+.PHONY : CMakeFiles/FortranCInterface.dir/main.F.o.requires
+
+CMakeFiles/FortranCInterface.dir/main.F.o.provides: CMakeFiles/FortranCInterface.dir/main.F.o.requires
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/main.F.o.provides.build
+.PHONY : CMakeFiles/FortranCInterface.dir/main.F.o.provides
+
+CMakeFiles/FortranCInterface.dir/main.F.o.provides.build: CMakeFiles/FortranCInterface.dir/main.F.o
+
+CMakeFiles/FortranCInterface.dir/call_sub.f.o: CMakeFiles/FortranCInterface.dir/flags.make
+CMakeFiles/FortranCInterface.dir/call_sub.f.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_sub.f
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_2)
+	@echo "Building Fortran object CMakeFiles/FortranCInterface.dir/call_sub.f.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_sub.f -o CMakeFiles/FortranCInterface.dir/call_sub.f.o
+
+CMakeFiles/FortranCInterface.dir/call_sub.f.o.requires:
+.PHONY : CMakeFiles/FortranCInterface.dir/call_sub.f.o.requires
+
+CMakeFiles/FortranCInterface.dir/call_sub.f.o.provides: CMakeFiles/FortranCInterface.dir/call_sub.f.o.requires
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/call_sub.f.o.provides.build
+.PHONY : CMakeFiles/FortranCInterface.dir/call_sub.f.o.provides
+
+CMakeFiles/FortranCInterface.dir/call_sub.f.o.provides.build: CMakeFiles/FortranCInterface.dir/call_sub.f.o
+
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o: CMakeFiles/FortranCInterface.dir/flags.make
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_mod.f90
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_3)
+	@echo "Building Fortran object CMakeFiles/FortranCInterface.dir/call_mod.f90.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_mod.f90 -o CMakeFiles/FortranCInterface.dir/call_mod.f90.o
+
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o.requires:
+.PHONY : CMakeFiles/FortranCInterface.dir/call_mod.f90.o.requires
+
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o.provides: CMakeFiles/FortranCInterface.dir/call_mod.f90.o.requires
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/call_mod.f90.o.provides.build
+.PHONY : CMakeFiles/FortranCInterface.dir/call_mod.f90.o.provides
+
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o.provides.build: CMakeFiles/FortranCInterface.dir/call_mod.f90.o
+
+# Object files for target FortranCInterface
+FortranCInterface_OBJECTS = \
+"CMakeFiles/FortranCInterface.dir/main.F.o" \
+"CMakeFiles/FortranCInterface.dir/call_sub.f.o" \
+"CMakeFiles/FortranCInterface.dir/call_mod.f90.o"
+
+# External object files for target FortranCInterface
+FortranCInterface_EXTERNAL_OBJECTS =
+
+FortranCInterface: CMakeFiles/FortranCInterface.dir/main.F.o
+FortranCInterface: CMakeFiles/FortranCInterface.dir/call_sub.f.o
+FortranCInterface: CMakeFiles/FortranCInterface.dir/call_mod.f90.o
+FortranCInterface: CMakeFiles/FortranCInterface.dir/build.make
+FortranCInterface: libsymbols.a
+FortranCInterface: libmyfort.a
+FortranCInterface: CMakeFiles/FortranCInterface.dir/link.txt
+	@echo "Linking Fortran executable FortranCInterface"
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/FortranCInterface.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/FortranCInterface.dir/build: FortranCInterface
+.PHONY : CMakeFiles/FortranCInterface.dir/build
+
+CMakeFiles/FortranCInterface.dir/requires: CMakeFiles/FortranCInterface.dir/main.F.o.requires
+CMakeFiles/FortranCInterface.dir/requires: CMakeFiles/FortranCInterface.dir/call_sub.f.o.requires
+CMakeFiles/FortranCInterface.dir/requires: CMakeFiles/FortranCInterface.dir/call_mod.f90.o.requires
+.PHONY : CMakeFiles/FortranCInterface.dir/requires
+
+CMakeFiles/FortranCInterface.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/FortranCInterface.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/FortranCInterface.dir/clean
+
+CMakeFiles/FortranCInterface.dir/depend:
+	cd /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/DependInfo.cmake
+.PHONY : CMakeFiles/FortranCInterface.dir/depend
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/cmake_clean.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/cmake_clean.cmake
new file mode 100644
index 0000000..5af146e
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/cmake_clean.cmake
@@ -0,0 +1,12 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/FortranCInterface.dir/main.F.o"
+  "CMakeFiles/FortranCInterface.dir/call_sub.f.o"
+  "CMakeFiles/FortranCInterface.dir/call_mod.f90.o"
+  "FortranCInterface.pdb"
+  "FortranCInterface"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang Fortran)
+  INCLUDE(CMakeFiles/FortranCInterface.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/depend.internal b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/depend.internal
new file mode 100644
index 0000000..248b5e7
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/depend.internal
@@ -0,0 +1,9 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_mod.f90
+CMakeFiles/FortranCInterface.dir/call_sub.f.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/call_sub.f
+CMakeFiles/FortranCInterface.dir/main.F.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/main.F
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/depend.make b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/depend.make
new file mode 100644
index 0000000..9ab8a82
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/depend.make
@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o: CMakeFiles/myfort.dir/my_module.mod.stamp
+CMakeFiles/FortranCInterface.dir/call_mod.f90.o: CMakeFiles/myfort.dir/mymodule.mod.stamp
+
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/flags.make b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/flags.make
new file mode 100644
index 0000000..c1100d4
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile Fortran with /usr/bin/gfortran
+Fortran_FLAGS =  
+
+Fortran_DEFINES = 
+
+# Custom defines: CMakeFiles/FortranCInterface.dir/main.F.o_DEFINES = CALL_MOD
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/fortran.internal b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/fortran.internal
new file mode 100644
index 0000000..1b732d3
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/fortran.internal
@@ -0,0 +1,2 @@
+# The fortran modules provided by this target.
+provides
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/link.txt b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/link.txt
new file mode 100644
index 0000000..d1c3388
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/link.txt
@@ -0,0 +1 @@
+/usr/bin/gfortran      CMakeFiles/FortranCInterface.dir/main.F.o CMakeFiles/FortranCInterface.dir/call_sub.f.o CMakeFiles/FortranCInterface.dir/call_mod.f90.o  -o FortranCInterface -rdynamic libsymbols.a libmyfort.a 
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/progress.make b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/progress.make
new file mode 100644
index 0000000..6a9dc74
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir/progress.make
@@ -0,0 +1,4 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/Makefile.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/Makefile.cmake
new file mode 100644
index 0000000..253c472
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/Makefile.cmake
@@ -0,0 +1,50 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# The generator used is:
+SET(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
+
+# The top level Makefile was generated from the following files:
+SET(CMAKE_MAKEFILE_DEPENDS
+  "CMakeCache.txt"
+  "/home/graphics/cgs/git/magics/CMakeFiles/2.8.10.2/CMakeCCompiler.cmake"
+  "/home/graphics/cgs/git/magics/CMakeFiles/2.8.10.2/CMakeFortranCompiler.cmake"
+  "/home/graphics/cgs/git/magics/CMakeFiles/2.8.10.2/CMakeSystem.cmake"
+  "Input.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeCInformation.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeCommonLanguageInclude.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeExpandImportedTargets.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeFortranInformation.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeGenericSystem.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeParseArguments.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CMakeSystemSpecificInformation.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/CheckCSourceCompiles.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Compiler/GNU-C.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Compiler/GNU-Fortran.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Compiler/GNU.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/CMakeLists.txt"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/symbol.c.in"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Platform/Linux-GNU-C.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Platform/Linux-GNU-Fortran.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Platform/Linux-GNU.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Platform/Linux.cmake"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/Platform/UnixPaths.cmake"
+  )
+
+# The corresponding makefile is:
+SET(CMAKE_MAKEFILE_OUTPUTS
+  "Makefile"
+  "CMakeFiles/cmake.check_cache"
+  )
+
+# Byproducts of CMake generate step:
+SET(CMAKE_MAKEFILE_PRODUCTS
+  "CMakeFiles/CMakeDirectoryInformation.cmake"
+  )
+
+# Dependency information for all targets:
+SET(CMAKE_DEPEND_INFO_FILES
+  "CMakeFiles/FortranCInterface.dir/DependInfo.cmake"
+  "CMakeFiles/myfort.dir/DependInfo.cmake"
+  "CMakeFiles/symbols.dir/DependInfo.cmake"
+  )
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/Makefile2 b/CMakeFiles/FortranCInterface/CMakeFiles/Makefile2
new file mode 100644
index 0000000..eeeba5d
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/Makefile2
@@ -0,0 +1,174 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# The main recursive all target
+all:
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+.PHONY : preinstall
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/local/apps/cmake/2.8.10/bin/cmake
+
+# The command to remove a file.
+RM = /usr/local/apps/cmake/2.8.10/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/local/apps/cmake/2.8.10/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+
+#=============================================================================
+# Target rules for target CMakeFiles/FortranCInterface.dir
+
+# All Build rule for target.
+CMakeFiles/FortranCInterface.dir/all: CMakeFiles/symbols.dir/all
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/depend
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/requires
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles  1 2 3
+	@echo "Built target FortranCInterface"
+.PHONY : CMakeFiles/FortranCInterface.dir/all
+
+# Include target in all.
+all: CMakeFiles/FortranCInterface.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/FortranCInterface.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 32
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/FortranCInterface.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 0
+.PHONY : CMakeFiles/FortranCInterface.dir/rule
+
+# Convenience name for target.
+FortranCInterface: CMakeFiles/FortranCInterface.dir/rule
+.PHONY : FortranCInterface
+
+# clean rule for target.
+CMakeFiles/FortranCInterface.dir/clean:
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/clean
+.PHONY : CMakeFiles/FortranCInterface.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/FortranCInterface.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target CMakeFiles/myfort.dir
+
+# All Build rule for target.
+CMakeFiles/myfort.dir/all:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/depend
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/requires
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles  4 5 6 7
+	@echo "Built target myfort"
+.PHONY : CMakeFiles/myfort.dir/all
+
+# Include target in all.
+all: CMakeFiles/myfort.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/myfort.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 4
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/myfort.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 0
+.PHONY : CMakeFiles/myfort.dir/rule
+
+# Convenience name for target.
+myfort: CMakeFiles/myfort.dir/rule
+.PHONY : myfort
+
+# clean rule for target.
+CMakeFiles/myfort.dir/clean:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/clean
+.PHONY : CMakeFiles/myfort.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/myfort.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Target rules for target CMakeFiles/symbols.dir
+
+# All Build rule for target.
+CMakeFiles/symbols.dir/all: CMakeFiles/myfort.dir/all
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/depend
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/build
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles  8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
+	@echo "Built target symbols"
+.PHONY : CMakeFiles/symbols.dir/all
+
+# Include target in all.
+all: CMakeFiles/symbols.dir/all
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/symbols.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 29
+	$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/symbols.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 0
+.PHONY : CMakeFiles/symbols.dir/rule
+
+# Convenience name for target.
+symbols: CMakeFiles/symbols.dir/rule
+.PHONY : symbols
+
+# clean rule for target.
+CMakeFiles/symbols.dir/clean:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/clean
+.PHONY : CMakeFiles/symbols.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/symbols.dir/clean
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/TargetDirectories.txt b/CMakeFiles/FortranCInterface/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000..692cd49
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/FortranCInterface.dir
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/cmake.check_cache b/CMakeFiles/FortranCInterface/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/DependInfo.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/DependInfo.cmake
new file mode 100644
index 0000000..b237eeb
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/DependInfo.cmake
@@ -0,0 +1,23 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "Fortran"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_Fortran
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module.f90" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_module.f90.o"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_sub.f" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_sub.f.o"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule.f90" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mymodule.f90.o"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mysub.f" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mysub.f.o"
+  )
+SET(CMAKE_Fortran_COMPILER_ID "GNU")
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  )
+
+# The include file search paths:
+SET(CMAKE_C_TARGET_INCLUDE_PATH
+  )
+SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/build.make b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/build.make
new file mode 100644
index 0000000..7439aba
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/build.make
@@ -0,0 +1,152 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/local/apps/cmake/2.8.10/bin/cmake
+
+# The command to remove a file.
+RM = /usr/local/apps/cmake/2.8.10/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/local/apps/cmake/2.8.10/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+
+# Include any dependencies generated for this target.
+include CMakeFiles/myfort.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/myfort.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/myfort.dir/flags.make
+
+CMakeFiles/myfort.dir/mysub.f.o: CMakeFiles/myfort.dir/flags.make
+CMakeFiles/myfort.dir/mysub.f.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mysub.f
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_1)
+	@echo "Building Fortran object CMakeFiles/myfort.dir/mysub.f.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mysub.f -o CMakeFiles/myfort.dir/mysub.f.o
+
+CMakeFiles/myfort.dir/mysub.f.o.requires:
+.PHONY : CMakeFiles/myfort.dir/mysub.f.o.requires
+
+CMakeFiles/myfort.dir/mysub.f.o.provides: CMakeFiles/myfort.dir/mysub.f.o.requires
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/mysub.f.o.provides.build
+.PHONY : CMakeFiles/myfort.dir/mysub.f.o.provides
+
+CMakeFiles/myfort.dir/mysub.f.o.provides.build: CMakeFiles/myfort.dir/mysub.f.o
+
+CMakeFiles/myfort.dir/my_sub.f.o: CMakeFiles/myfort.dir/flags.make
+CMakeFiles/myfort.dir/my_sub.f.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_sub.f
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_2)
+	@echo "Building Fortran object CMakeFiles/myfort.dir/my_sub.f.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_sub.f -o CMakeFiles/myfort.dir/my_sub.f.o
+
+CMakeFiles/myfort.dir/my_sub.f.o.requires:
+.PHONY : CMakeFiles/myfort.dir/my_sub.f.o.requires
+
+CMakeFiles/myfort.dir/my_sub.f.o.provides: CMakeFiles/myfort.dir/my_sub.f.o.requires
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/my_sub.f.o.provides.build
+.PHONY : CMakeFiles/myfort.dir/my_sub.f.o.provides
+
+CMakeFiles/myfort.dir/my_sub.f.o.provides.build: CMakeFiles/myfort.dir/my_sub.f.o
+
+CMakeFiles/myfort.dir/mymodule.f90.o: CMakeFiles/myfort.dir/flags.make
+CMakeFiles/myfort.dir/mymodule.f90.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule.f90
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_3)
+	@echo "Building Fortran object CMakeFiles/myfort.dir/mymodule.f90.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule.f90 -o CMakeFiles/myfort.dir/mymodule.f90.o
+
+CMakeFiles/myfort.dir/mymodule.f90.o.requires:
+.PHONY : CMakeFiles/myfort.dir/mymodule.f90.o.requires
+
+CMakeFiles/myfort.dir/mymodule.f90.o.provides: CMakeFiles/myfort.dir/mymodule.f90.o.requires
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/mymodule.f90.o.provides.build
+.PHONY : CMakeFiles/myfort.dir/mymodule.f90.o.provides
+
+CMakeFiles/myfort.dir/mymodule.f90.o.provides.build: CMakeFiles/myfort.dir/mymodule.f90.o
+
+CMakeFiles/myfort.dir/my_module.f90.o: CMakeFiles/myfort.dir/flags.make
+CMakeFiles/myfort.dir/my_module.f90.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module.f90
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_4)
+	@echo "Building Fortran object CMakeFiles/myfort.dir/my_module.f90.o"
+	/usr/bin/gfortran  $(Fortran_DEFINES) $(Fortran_FLAGS) -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module.f90 -o CMakeFiles/myfort.dir/my_module.f90.o
+
+CMakeFiles/myfort.dir/my_module.f90.o.requires:
+.PHONY : CMakeFiles/myfort.dir/my_module.f90.o.requires
+
+CMakeFiles/myfort.dir/my_module.f90.o.provides: CMakeFiles/myfort.dir/my_module.f90.o.requires
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/my_module.f90.o.provides.build
+.PHONY : CMakeFiles/myfort.dir/my_module.f90.o.provides
+
+CMakeFiles/myfort.dir/my_module.f90.o.provides.build: CMakeFiles/myfort.dir/my_module.f90.o
+
+# Object files for target myfort
+myfort_OBJECTS = \
+"CMakeFiles/myfort.dir/mysub.f.o" \
+"CMakeFiles/myfort.dir/my_sub.f.o" \
+"CMakeFiles/myfort.dir/mymodule.f90.o" \
+"CMakeFiles/myfort.dir/my_module.f90.o"
+
+# External object files for target myfort
+myfort_EXTERNAL_OBJECTS =
+
+libmyfort.a: CMakeFiles/myfort.dir/mysub.f.o
+libmyfort.a: CMakeFiles/myfort.dir/my_sub.f.o
+libmyfort.a: CMakeFiles/myfort.dir/mymodule.f90.o
+libmyfort.a: CMakeFiles/myfort.dir/my_module.f90.o
+libmyfort.a: CMakeFiles/myfort.dir/build.make
+libmyfort.a: CMakeFiles/myfort.dir/link.txt
+	@echo "Linking Fortran static library libmyfort.a"
+	$(CMAKE_COMMAND) -P CMakeFiles/myfort.dir/cmake_clean_target.cmake
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/myfort.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/myfort.dir/build: libmyfort.a
+.PHONY : CMakeFiles/myfort.dir/build
+
+CMakeFiles/myfort.dir/requires: CMakeFiles/myfort.dir/mysub.f.o.requires
+CMakeFiles/myfort.dir/requires: CMakeFiles/myfort.dir/my_sub.f.o.requires
+CMakeFiles/myfort.dir/requires: CMakeFiles/myfort.dir/mymodule.f90.o.requires
+CMakeFiles/myfort.dir/requires: CMakeFiles/myfort.dir/my_module.f90.o.requires
+.PHONY : CMakeFiles/myfort.dir/requires
+
+CMakeFiles/myfort.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/myfort.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/myfort.dir/clean
+
+CMakeFiles/myfort.dir/depend:
+	cd /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/DependInfo.cmake
+.PHONY : CMakeFiles/myfort.dir/depend
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean.cmake
new file mode 100644
index 0000000..a954a05
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean.cmake
@@ -0,0 +1,13 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/myfort.dir/mysub.f.o"
+  "CMakeFiles/myfort.dir/my_sub.f.o"
+  "CMakeFiles/myfort.dir/mymodule.f90.o"
+  "CMakeFiles/myfort.dir/my_module.f90.o"
+  "libmyfort.pdb"
+  "libmyfort.a"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang Fortran)
+  INCLUDE(CMakeFiles/myfort.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean_Fortran.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean_Fortran.cmake
new file mode 100644
index 0000000..884a249
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean_Fortran.cmake
@@ -0,0 +1,10 @@
+# Remove fortran modules provided by this target.
+FILE(REMOVE
+  "my_module.mod"
+  "MY_MODULE.mod"
+  "CMakeFiles/myfort.dir/my_module.mod.stamp"
+
+  "mymodule.mod"
+  "MYMODULE.mod"
+  "CMakeFiles/myfort.dir/mymodule.mod.stamp"
+  )
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean_target.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean_target.cmake
new file mode 100644
index 0000000..2de6587
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/cmake_clean_target.cmake
@@ -0,0 +1,3 @@
+FILE(REMOVE_RECURSE
+  "libmyfort.a"
+)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/depend.internal b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/depend.internal
new file mode 100644
index 0000000..cc0b855
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/depend.internal
@@ -0,0 +1,11 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/myfort.dir/my_module.f90.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module.f90
+CMakeFiles/myfort.dir/my_sub.f.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_sub.f
+CMakeFiles/myfort.dir/mymodule.f90.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule.f90
+CMakeFiles/myfort.dir/mysub.f.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mysub.f
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/depend.make b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/depend.make
new file mode 100644
index 0000000..5911141
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/depend.make
@@ -0,0 +1,17 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+
+CMakeFiles/myfort.dir/my_module.mod.proxy: CMakeFiles/myfort.dir/my_module.f90.o.provides
+CMakeFiles/myfort.dir/my_module.f90.o.provides.build:
+	$(CMAKE_COMMAND) -E cmake_copy_f90_mod my_module CMakeFiles/myfort.dir/my_module.mod.stamp GNU
+	$(CMAKE_COMMAND) -E touch CMakeFiles/myfort.dir/my_module.f90.o.provides.build
+CMakeFiles/myfort.dir/build: CMakeFiles/myfort.dir/my_module.f90.o.provides.build
+
+
+CMakeFiles/myfort.dir/mymodule.mod.proxy: CMakeFiles/myfort.dir/mymodule.f90.o.provides
+CMakeFiles/myfort.dir/mymodule.f90.o.provides.build:
+	$(CMAKE_COMMAND) -E cmake_copy_f90_mod mymodule CMakeFiles/myfort.dir/mymodule.mod.stamp GNU
+	$(CMAKE_COMMAND) -E touch CMakeFiles/myfort.dir/mymodule.f90.o.provides.build
+CMakeFiles/myfort.dir/build: CMakeFiles/myfort.dir/mymodule.f90.o.provides.build
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/flags.make b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/flags.make
new file mode 100644
index 0000000..d4f4830
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/flags.make
@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile Fortran with /usr/bin/gfortran
+Fortran_FLAGS =  
+
+Fortran_DEFINES = 
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/fortran.internal b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/fortran.internal
new file mode 100644
index 0000000..2bd82e1
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/fortran.internal
@@ -0,0 +1,4 @@
+# The fortran modules provided by this target.
+provides
+ my_module
+ mymodule
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/link.txt b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/link.txt
new file mode 100644
index 0000000..f71bd23
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/link.txt
@@ -0,0 +1,2 @@
+/usr/bin/ar cr libmyfort.a  CMakeFiles/myfort.dir/mysub.f.o CMakeFiles/myfort.dir/my_sub.f.o CMakeFiles/myfort.dir/mymodule.f90.o CMakeFiles/myfort.dir/my_module.f90.o
+/usr/bin/ranlib libmyfort.a
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_module.f90.o.provides.build b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_module.f90.o.provides.build
new file mode 100644
index 0000000..e69de29
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_module.mod.stamp b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_module.mod.stamp
new file mode 100644
index 0000000..df1ccc6
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/my_module.mod.stamp
@@ -0,0 +1,23 @@
+GFORTRAN module version '0' created from /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module.f90 on Tue Apr  8 16:55:52 2014
+MD5:92c3f619b10bf01d10a98744d3beb007 -- If you edit this, you'll get what you deserve.
+
+(() () () () () () () () () () () () () () () () () () () () () () () ()
+() () ())
+
+()
+
+(('my_interface' 'my_module' 2))
+
+()
+
+()
+
+(3 'my_module' 'my_module' 'my_module' 1 ((MODULE UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ()
+() () 0 0)
+2 'my_sub' 'my_module' 'my_sub' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+DECL UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () ()
+0 0)
+)
+
+('my_module' 0 3 'my_sub' 0 2)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mymodule.f90.o.provides.build b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mymodule.f90.o.provides.build
new file mode 100644
index 0000000..e69de29
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mymodule.mod.stamp b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mymodule.mod.stamp
new file mode 100644
index 0000000..cd3bf4f
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/mymodule.mod.stamp
@@ -0,0 +1,23 @@
+GFORTRAN module version '0' created from /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule.f90 on Tue Apr  8 16:55:52 2014
+MD5:3826198b66b6b987f94c147eb4e0ec65 -- If you edit this, you'll get what you deserve.
+
+(() () () () () () () () () () () () () () () () () () () () () () () ()
+() () ())
+
+()
+
+(('myinterface' 'mymodule' 2))
+
+()
+
+()
+
+(3 'mymodule' 'mymodule' 'mymodule' 1 ((MODULE UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ()
+() () 0 0)
+2 'mysub' 'mymodule' 'mysub' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+DECL UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () ()
+0 0)
+)
+
+('mymodule' 0 3 'mysub' 0 2)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/progress.make b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/progress.make
new file mode 100644
index 0000000..b78c197
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/progress.make
@@ -0,0 +1,5 @@
+CMAKE_PROGRESS_1 = 4
+CMAKE_PROGRESS_2 = 5
+CMAKE_PROGRESS_3 = 6
+CMAKE_PROGRESS_4 = 7
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/progress.marks b/CMakeFiles/FortranCInterface/CMakeFiles/progress.marks
new file mode 100644
index 0000000..f5c8955
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+32
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/C.includecache b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/C.includecache
new file mode 100644
index 0000000..41428ee
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/C.includecache
@@ -0,0 +1,58 @@
+#IncludeRegexLine: ^[ 	]*#[ 	]*(include|import)[ 	]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform: 
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub_.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub__.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub.c
+
+/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub_.c
+
+/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c
+
+/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/DependInfo.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/DependInfo.cmake
new file mode 100644
index 0000000..b81129d
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/DependInfo.cmake
@@ -0,0 +1,45 @@
+# The set of languages for which implicit dependencies are needed:
+SET(CMAKE_DEPENDS_LANGUAGES
+  "C"
+  )
+# The set of files for implicit dependencies of each language:
+SET(CMAKE_DEPENDS_CHECK_C
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/my_module_.c.o"
+  "/usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/mymodule_.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_sub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_sub_.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub__.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/my_sub__.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/mysub.c.o"
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub_.c" "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/symbols/mysub_.c.o"
+  )
+SET(CMAKE_C_COMPILER_ID "GNU")
+
+# Targets to which this target links.
+SET(CMAKE_TARGET_LINKED_INFO_FILES
+  "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/myfort.dir/DependInfo.cmake"
+  )
+
+# The include file search paths:
+SET(CMAKE_C_TARGET_INCLUDE_PATH
+  )
+SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
+SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/build.make b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/build.make
new file mode 100644
index 0000000..c7ecdd4
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/build.make
@@ -0,0 +1,730 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/local/apps/cmake/2.8.10/bin/cmake
+
+# The command to remove a file.
+RM = /usr/local/apps/cmake/2.8.10/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/local/apps/cmake/2.8.10/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+
+# Include any dependencies generated for this target.
+include CMakeFiles/symbols.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/symbols.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/symbols.dir/flags.make
+
+CMakeFiles/symbols.dir/mymodule_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/mymodule_.c.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_1)
+	@echo "Building C object CMakeFiles/symbols.dir/mymodule_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/mymodule_.c.o   -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c
+
+CMakeFiles/symbols.dir/mymodule_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/mymodule_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c > CMakeFiles/symbols.dir/mymodule_.c.i
+
+CMakeFiles/symbols.dir/mymodule_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/mymodule_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c -o CMakeFiles/symbols.dir/mymodule_.c.s
+
+CMakeFiles/symbols.dir/mymodule_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/mymodule_.c.o.requires
+
+CMakeFiles/symbols.dir/mymodule_.c.o.provides: CMakeFiles/symbols.dir/mymodule_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/mymodule_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/mymodule_.c.o.provides
+
+CMakeFiles/symbols.dir/mymodule_.c.o.provides.build: CMakeFiles/symbols.dir/mymodule_.c.o
+
+CMakeFiles/symbols.dir/my_module_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/my_module_.c.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_2)
+	@echo "Building C object CMakeFiles/symbols.dir/my_module_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/my_module_.c.o   -c /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c
+
+CMakeFiles/symbols.dir/my_module_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/my_module_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c > CMakeFiles/symbols.dir/my_module_.c.i
+
+CMakeFiles/symbols.dir/my_module_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/my_module_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c -o CMakeFiles/symbols.dir/my_module_.c.s
+
+CMakeFiles/symbols.dir/my_module_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/my_module_.c.o.requires
+
+CMakeFiles/symbols.dir/my_module_.c.o.provides: CMakeFiles/symbols.dir/my_module_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/my_module_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/my_module_.c.o.provides
+
+CMakeFiles/symbols.dir/my_module_.c.o.provides.build: CMakeFiles/symbols.dir/my_module_.c.o
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_sub.c.o: symbols/my_sub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_3)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_sub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_sub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub.c
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_sub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub.c > CMakeFiles/symbols.dir/symbols/my_sub.c.i
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_sub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub.c -o CMakeFiles/symbols.dir/symbols/my_sub.c.s
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_sub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.o.provides: CMakeFiles/symbols.dir/symbols/my_sub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_sub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_sub.c.o
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o: symbols/my_sub_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_4)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_sub_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_sub_.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub_.c
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_sub_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub_.c > CMakeFiles/symbols.dir/symbols/my_sub_.c.i
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_sub_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub_.c -o CMakeFiles/symbols.dir/symbols/my_sub_.c.s
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_sub_.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o.provides: CMakeFiles/symbols.dir/symbols/my_sub_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_sub_.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_sub_.c.o
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o: symbols/my_sub__.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_5)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_sub__.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_sub__.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub__.c
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_sub__.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub__.c > CMakeFiles/symbols.dir/symbols/my_sub__.c.i
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_sub__.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub__.c -o CMakeFiles/symbols.dir/symbols/my_sub__.c.s
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_sub__.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o.provides: CMakeFiles/symbols.dir/symbols/my_sub__.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub__.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_sub__.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_sub__.c.o
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o: symbols/MY_SUB-UPPER.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_6)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c > CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.i
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c -o CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.s
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.provides: CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.provides.build: CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o
+
+CMakeFiles/symbols.dir/symbols/mysub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/mysub.c.o: symbols/mysub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_7)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/mysub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/mysub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub.c
+
+CMakeFiles/symbols.dir/symbols/mysub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/mysub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub.c > CMakeFiles/symbols.dir/symbols/mysub.c.i
+
+CMakeFiles/symbols.dir/symbols/mysub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/mysub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub.c -o CMakeFiles/symbols.dir/symbols/mysub.c.s
+
+CMakeFiles/symbols.dir/symbols/mysub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/mysub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/mysub.c.o.provides: CMakeFiles/symbols.dir/symbols/mysub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/mysub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/mysub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/mysub.c.o
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/mysub_.c.o: symbols/mysub_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_8)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/mysub_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/mysub_.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub_.c
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/mysub_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub_.c > CMakeFiles/symbols.dir/symbols/mysub_.c.i
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/mysub_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub_.c -o CMakeFiles/symbols.dir/symbols/mysub_.c.s
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/mysub_.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.o.provides: CMakeFiles/symbols.dir/symbols/mysub_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/mysub_.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.o.provides.build: CMakeFiles/symbols.dir/symbols/mysub_.c.o
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o: symbols/MYSUB-UPPER.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_9)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c > CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.i
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c -o CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.s
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.provides: CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.provides.build: CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o: symbols/__my_module_MOD_my_sub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_10)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c > CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.i
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c -o CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.s
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.provides: CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o: symbols/__my_module_NMOD_my_sub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_11)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c > CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.i
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c -o CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.s
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.provides: CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o: symbols/__my_module__my_sub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_12)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c > CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.i
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c -o CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.s
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.provides: CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o: symbols/__mymodule_MOD_mysub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_13)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c > CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.i
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c -o CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.s
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.provides: CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o: symbols/__mymodule_NMOD_mysub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_14)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c > CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.i
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c -o CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.s
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.provides: CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o: symbols/__mymodule__mysub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_15)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c > CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.i
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c -o CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.s
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.provides: CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o: symbols/my_moduleSmy_sub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_16)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c > CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.i
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c -o CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.s
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.provides: CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o: symbols/my_module_mp_my_sub_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_17)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c > CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.i
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c -o CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.s
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.provides: CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o: symbols/MY_MODULE_mp_MY_SUB-UPPER.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_18)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c > CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c -o CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.provides: CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.provides.build: CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o: symbols/my_module_my_sub_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_19)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c > CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.i
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c -o CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.s
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.provides: CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o: symbols/my_module_MP_my_sub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_20)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c > CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.i
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c -o CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.s
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.provides: CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o: symbols/mymoduleSmysub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_21)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c > CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.i
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c -o CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.s
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.provides: CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o: symbols/mymodule_mp_mysub_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_22)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c > CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.i
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c -o CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.s
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.provides: CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.provides.build: CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o: symbols/MYMODULE_mp_MYSUB-UPPER.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_23)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c > CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.i
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c -o CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.s
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.provides: CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.provides.build: CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o: symbols/mymodule_mysub_.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_24)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c > CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.i
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c -o CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.s
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.provides: CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.provides.build: CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o: CMakeFiles/symbols.dir/flags.make
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o: symbols/mymodule_MP_mysub.c
+	$(CMAKE_COMMAND) -E cmake_progress_report /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles $(CMAKE_PROGRESS_25)
+	@echo "Building C object CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -o CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o   -c /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.i: cmake_force
+	@echo "Preprocessing C source to CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.i"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -E /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c > CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.i
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.s: cmake_force
+	@echo "Compiling C source to assembly CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.s"
+	/usr/bin/cc  $(C_DEFINES) $(C_FLAGS) -S /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c -o CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.s
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.requires:
+.PHONY : CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.requires
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.provides: CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.requires
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.provides.build
+.PHONY : CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.provides
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.provides.build: CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o
+
+# Object files for target symbols
+symbols_OBJECTS = \
+"CMakeFiles/symbols.dir/mymodule_.c.o" \
+"CMakeFiles/symbols.dir/my_module_.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_sub.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_sub_.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_sub__.c.o" \
+"CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o" \
+"CMakeFiles/symbols.dir/symbols/mysub.c.o" \
+"CMakeFiles/symbols.dir/symbols/mysub_.c.o" \
+"CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o" \
+"CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o" \
+"CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o" \
+"CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o" \
+"CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o" \
+"CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o" \
+"CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o" \
+"CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o" \
+"CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o" \
+"CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o" \
+"CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o" \
+"CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o" \
+"CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o" \
+"CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o"
+
+# External object files for target symbols
+symbols_EXTERNAL_OBJECTS =
+
+libsymbols.a: CMakeFiles/symbols.dir/mymodule_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/my_module_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_sub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_sub_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_sub__.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/mysub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/mysub_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o
+libsymbols.a: CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o
+libsymbols.a: CMakeFiles/symbols.dir/build.make
+libsymbols.a: CMakeFiles/symbols.dir/link.txt
+	@echo "Linking C static library libsymbols.a"
+	$(CMAKE_COMMAND) -P CMakeFiles/symbols.dir/cmake_clean_target.cmake
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/symbols.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/symbols.dir/build: libsymbols.a
+.PHONY : CMakeFiles/symbols.dir/build
+
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/mymodule_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/my_module_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_sub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_sub_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_sub__.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/mysub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/mysub_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o.requires
+CMakeFiles/symbols.dir/requires: CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o.requires
+.PHONY : CMakeFiles/symbols.dir/requires
+
+CMakeFiles/symbols.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles/symbols.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/symbols.dir/clean
+
+CMakeFiles/symbols.dir/depend:
+	cd /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/DependInfo.cmake
+.PHONY : CMakeFiles/symbols.dir/depend
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/cmake_clean.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/cmake_clean.cmake
new file mode 100644
index 0000000..6e9497f
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/cmake_clean.cmake
@@ -0,0 +1,34 @@
+FILE(REMOVE_RECURSE
+  "CMakeFiles/symbols.dir/mymodule_.c.o"
+  "CMakeFiles/symbols.dir/my_module_.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_sub.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_sub_.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_sub__.c.o"
+  "CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o"
+  "CMakeFiles/symbols.dir/symbols/mysub.c.o"
+  "CMakeFiles/symbols.dir/symbols/mysub_.c.o"
+  "CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o"
+  "CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o"
+  "CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o"
+  "CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o"
+  "CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o"
+  "CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o"
+  "CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o"
+  "CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o"
+  "CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o"
+  "CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o"
+  "CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o"
+  "CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o"
+  "CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o"
+  "CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o"
+  "libsymbols.pdb"
+  "libsymbols.a"
+)
+
+# Per-language clean rules from dependency scanning.
+FOREACH(lang C)
+  INCLUDE(CMakeFiles/symbols.dir/cmake_clean_${lang}.cmake OPTIONAL)
+ENDFOREACH(lang)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/cmake_clean_target.cmake b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/cmake_clean_target.cmake
new file mode 100644
index 0000000..365289f
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/cmake_clean_target.cmake
@@ -0,0 +1,3 @@
+FILE(REMOVE_RECURSE
+  "libsymbols.a"
+)
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/depend.internal b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/depend.internal
new file mode 100644
index 0000000..e05e92f
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/depend.internal
@@ -0,0 +1,53 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/symbols.dir/my_module_.c.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c
+CMakeFiles/symbols.dir/mymodule_.c.o
+ /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c
+CMakeFiles/symbols.dir/symbols/my_sub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub.c
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub_.c
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/my_sub__.c
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c
+CMakeFiles/symbols.dir/symbols/mysub.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub.c
+CMakeFiles/symbols.dir/symbols/mysub_.c.o
+ /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/symbols/mysub_.c
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/depend.make b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/depend.make
new file mode 100644
index 0000000..c7efdf3
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/depend.make
@@ -0,0 +1,53 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+CMakeFiles/symbols.dir/my_module_.c.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module_.c
+
+CMakeFiles/symbols.dir/mymodule_.c.o: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule_.c
+
+CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o: symbols/MYMODULE_mp_MYSUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o: symbols/MYSUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o: symbols/MY_MODULE_mp_MY_SUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o: symbols/MY_SUB-UPPER.c
+
+CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o: symbols/__my_module_MOD_my_sub.c
+
+CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o: symbols/__my_module_NMOD_my_sub.c
+
+CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o: symbols/__my_module__my_sub.c
+
+CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o: symbols/__mymodule_MOD_mysub.c
+
+CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o: symbols/__mymodule_NMOD_mysub.c
+
+CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o: symbols/__mymodule__mysub.c
+
+CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o: symbols/my_moduleSmy_sub.c
+
+CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o: symbols/my_module_MP_my_sub.c
+
+CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o: symbols/my_module_mp_my_sub_.c
+
+CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o: symbols/my_module_my_sub_.c
+
+CMakeFiles/symbols.dir/symbols/my_sub.c.o: symbols/my_sub.c
+
+CMakeFiles/symbols.dir/symbols/my_sub_.c.o: symbols/my_sub_.c
+
+CMakeFiles/symbols.dir/symbols/my_sub__.c.o: symbols/my_sub__.c
+
+CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o: symbols/mymoduleSmysub.c
+
+CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o: symbols/mymodule_MP_mysub.c
+
+CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o: symbols/mymodule_mp_mysub_.c
+
+CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o: symbols/mymodule_mysub_.c
+
+CMakeFiles/symbols.dir/symbols/mysub.c.o: symbols/mysub.c
+
+CMakeFiles/symbols.dir/symbols/mysub_.c.o: symbols/mysub_.c
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/flags.make b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/flags.make
new file mode 100644
index 0000000..1a9eee2
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/flags.make
@@ -0,0 +1,8 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# compile C with /usr/bin/cc
+C_FLAGS =  -pipe  
+
+C_DEFINES = 
+
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/link.txt b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/link.txt
new file mode 100644
index 0000000..30cac76
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/link.txt
@@ -0,0 +1,2 @@
+/usr/bin/ar cr libsymbols.a  CMakeFiles/symbols.dir/mymodule_.c.o CMakeFiles/symbols.dir/my_module_.c.o CMakeFiles/symbols.dir/symbols/my_sub.c.o CMakeFiles/symbols.dir/symbols/my_sub_.c.o CMakeFiles/symbols.dir/symbols/my_sub__.c.o CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o CMakeFiles/symbols.dir/symbols/mysub.c.o CMakeFiles/symbols.dir/symbols/mysub_.c.o CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o CMakeFiles/symbols.dir/ [...]
+/usr/bin/ranlib libsymbols.a
diff --git a/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/progress.make b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/progress.make
new file mode 100644
index 0000000..813c8c9
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/CMakeFiles/symbols.dir/progress.make
@@ -0,0 +1,26 @@
+CMAKE_PROGRESS_1 = 8
+CMAKE_PROGRESS_2 = 9
+CMAKE_PROGRESS_3 = 10
+CMAKE_PROGRESS_4 = 11
+CMAKE_PROGRESS_5 = 12
+CMAKE_PROGRESS_6 = 13
+CMAKE_PROGRESS_7 = 14
+CMAKE_PROGRESS_8 = 15
+CMAKE_PROGRESS_9 = 16
+CMAKE_PROGRESS_10 = 17
+CMAKE_PROGRESS_11 = 18
+CMAKE_PROGRESS_12 = 19
+CMAKE_PROGRESS_13 = 20
+CMAKE_PROGRESS_14 = 21
+CMAKE_PROGRESS_15 = 22
+CMAKE_PROGRESS_16 = 23
+CMAKE_PROGRESS_17 = 24
+CMAKE_PROGRESS_18 = 25
+CMAKE_PROGRESS_19 = 26
+CMAKE_PROGRESS_20 = 27
+CMAKE_PROGRESS_21 = 28
+CMAKE_PROGRESS_22 = 29
+CMAKE_PROGRESS_23 = 30
+CMAKE_PROGRESS_24 = 31
+CMAKE_PROGRESS_25 = 32
+
diff --git a/CMakeFiles/FortranCInterface/FortranCInterface b/CMakeFiles/FortranCInterface/FortranCInterface
new file mode 100755
index 0000000..b952dde
Binary files /dev/null and b/CMakeFiles/FortranCInterface/FortranCInterface differ
diff --git a/CMakeFiles/FortranCInterface/Input.cmake b/CMakeFiles/FortranCInterface/Input.cmake
new file mode 100644
index 0000000..d56b465
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/Input.cmake
@@ -0,0 +1,3 @@
+set(CMAKE_Fortran_COMPILER_ID "GNU")
+set(FortranCInterface_GLOBAL_SYMBOLS "")
+set(FortranCInterface_MODULE_SYMBOLS "")
diff --git a/CMakeFiles/FortranCInterface/Makefile b/CMakeFiles/FortranCInterface/Makefile
new file mode 100644
index 0000000..ec7790c
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/Makefile
@@ -0,0 +1,905 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 2.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/local/apps/cmake/2.8.10/bin/cmake
+
+# The command to remove a file.
+RM = /usr/local/apps/cmake/2.8.10/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The program to use to edit the cache.
+CMAKE_EDIT_COMMAND = /usr/local/apps/cmake/2.8.10/bin/ccmake
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+	@echo "Running CMake cache editor..."
+	/usr/local/apps/cmake/2.8.10/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@echo "Running CMake to regenerate build system..."
+	/usr/local/apps/cmake/2.8.10/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles/progress.marks
+	$(MAKE) -f CMakeFiles/Makefile2 all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+	$(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+	$(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+	$(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named FortranCInterface
+
+# Build rule for target.
+FortranCInterface: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 FortranCInterface
+.PHONY : FortranCInterface
+
+# fast build rule for target.
+FortranCInterface/fast:
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/build
+.PHONY : FortranCInterface/fast
+
+#=============================================================================
+# Target rules for targets named myfort
+
+# Build rule for target.
+myfort: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 myfort
+.PHONY : myfort
+
+# fast build rule for target.
+myfort/fast:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/build
+.PHONY : myfort/fast
+
+#=============================================================================
+# Target rules for targets named symbols
+
+# Build rule for target.
+symbols: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 symbols
+.PHONY : symbols
+
+# fast build rule for target.
+symbols/fast:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/build
+.PHONY : symbols/fast
+
+call_mod.o: call_mod.f90.o
+.PHONY : call_mod.o
+
+# target to build an object file
+call_mod.f90.o:
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/call_mod.f90.o
+.PHONY : call_mod.f90.o
+
+call_sub.o: call_sub.f.o
+.PHONY : call_sub.o
+
+# target to build an object file
+call_sub.f.o:
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/call_sub.f.o
+.PHONY : call_sub.f.o
+
+main.o: main.F.o
+.PHONY : main.o
+
+# target to build an object file
+main.F.o:
+	$(MAKE) -f CMakeFiles/FortranCInterface.dir/build.make CMakeFiles/FortranCInterface.dir/main.F.o
+.PHONY : main.F.o
+
+my_module.o: my_module.f90.o
+.PHONY : my_module.o
+
+# target to build an object file
+my_module.f90.o:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/my_module.f90.o
+.PHONY : my_module.f90.o
+
+my_module_.o: my_module_.c.o
+.PHONY : my_module_.o
+
+# target to build an object file
+my_module_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/my_module_.c.o
+.PHONY : my_module_.c.o
+
+my_module_.i: my_module_.c.i
+.PHONY : my_module_.i
+
+# target to preprocess a source file
+my_module_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/my_module_.c.i
+.PHONY : my_module_.c.i
+
+my_module_.s: my_module_.c.s
+.PHONY : my_module_.s
+
+# target to generate assembly for a file
+my_module_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/my_module_.c.s
+.PHONY : my_module_.c.s
+
+my_sub.o: my_sub.f.o
+.PHONY : my_sub.o
+
+# target to build an object file
+my_sub.f.o:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/my_sub.f.o
+.PHONY : my_sub.f.o
+
+mymodule.o: mymodule.f90.o
+.PHONY : mymodule.o
+
+# target to build an object file
+mymodule.f90.o:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/mymodule.f90.o
+.PHONY : mymodule.f90.o
+
+mymodule_.o: mymodule_.c.o
+.PHONY : mymodule_.o
+
+# target to build an object file
+mymodule_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/mymodule_.c.o
+.PHONY : mymodule_.c.o
+
+mymodule_.i: mymodule_.c.i
+.PHONY : mymodule_.i
+
+# target to preprocess a source file
+mymodule_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/mymodule_.c.i
+.PHONY : mymodule_.c.i
+
+mymodule_.s: mymodule_.c.s
+.PHONY : mymodule_.s
+
+# target to generate assembly for a file
+mymodule_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/mymodule_.c.s
+.PHONY : mymodule_.c.s
+
+mysub.o: mysub.f.o
+.PHONY : mysub.o
+
+# target to build an object file
+mysub.f.o:
+	$(MAKE) -f CMakeFiles/myfort.dir/build.make CMakeFiles/myfort.dir/mysub.f.o
+.PHONY : mysub.f.o
+
+symbols/MYMODULE_mp_MYSUB-UPPER.o: symbols/MYMODULE_mp_MYSUB-UPPER.c.o
+.PHONY : symbols/MYMODULE_mp_MYSUB-UPPER.o
+
+# target to build an object file
+symbols/MYMODULE_mp_MYSUB-UPPER.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.o
+.PHONY : symbols/MYMODULE_mp_MYSUB-UPPER.c.o
+
+symbols/MYMODULE_mp_MYSUB-UPPER.i: symbols/MYMODULE_mp_MYSUB-UPPER.c.i
+.PHONY : symbols/MYMODULE_mp_MYSUB-UPPER.i
+
+# target to preprocess a source file
+symbols/MYMODULE_mp_MYSUB-UPPER.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.i
+.PHONY : symbols/MYMODULE_mp_MYSUB-UPPER.c.i
+
+symbols/MYMODULE_mp_MYSUB-UPPER.s: symbols/MYMODULE_mp_MYSUB-UPPER.c.s
+.PHONY : symbols/MYMODULE_mp_MYSUB-UPPER.s
+
+# target to generate assembly for a file
+symbols/MYMODULE_mp_MYSUB-UPPER.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYMODULE_mp_MYSUB-UPPER.c.s
+.PHONY : symbols/MYMODULE_mp_MYSUB-UPPER.c.s
+
+symbols/MYSUB-UPPER.o: symbols/MYSUB-UPPER.c.o
+.PHONY : symbols/MYSUB-UPPER.o
+
+# target to build an object file
+symbols/MYSUB-UPPER.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.o
+.PHONY : symbols/MYSUB-UPPER.c.o
+
+symbols/MYSUB-UPPER.i: symbols/MYSUB-UPPER.c.i
+.PHONY : symbols/MYSUB-UPPER.i
+
+# target to preprocess a source file
+symbols/MYSUB-UPPER.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.i
+.PHONY : symbols/MYSUB-UPPER.c.i
+
+symbols/MYSUB-UPPER.s: symbols/MYSUB-UPPER.c.s
+.PHONY : symbols/MYSUB-UPPER.s
+
+# target to generate assembly for a file
+symbols/MYSUB-UPPER.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MYSUB-UPPER.c.s
+.PHONY : symbols/MYSUB-UPPER.c.s
+
+symbols/MY_MODULE_mp_MY_SUB-UPPER.o: symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o
+.PHONY : symbols/MY_MODULE_mp_MY_SUB-UPPER.o
+
+# target to build an object file
+symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o
+.PHONY : symbols/MY_MODULE_mp_MY_SUB-UPPER.c.o
+
+symbols/MY_MODULE_mp_MY_SUB-UPPER.i: symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i
+.PHONY : symbols/MY_MODULE_mp_MY_SUB-UPPER.i
+
+# target to preprocess a source file
+symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i
+.PHONY : symbols/MY_MODULE_mp_MY_SUB-UPPER.c.i
+
+symbols/MY_MODULE_mp_MY_SUB-UPPER.s: symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s
+.PHONY : symbols/MY_MODULE_mp_MY_SUB-UPPER.s
+
+# target to generate assembly for a file
+symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s
+.PHONY : symbols/MY_MODULE_mp_MY_SUB-UPPER.c.s
+
+symbols/MY_SUB-UPPER.o: symbols/MY_SUB-UPPER.c.o
+.PHONY : symbols/MY_SUB-UPPER.o
+
+# target to build an object file
+symbols/MY_SUB-UPPER.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.o
+.PHONY : symbols/MY_SUB-UPPER.c.o
+
+symbols/MY_SUB-UPPER.i: symbols/MY_SUB-UPPER.c.i
+.PHONY : symbols/MY_SUB-UPPER.i
+
+# target to preprocess a source file
+symbols/MY_SUB-UPPER.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.i
+.PHONY : symbols/MY_SUB-UPPER.c.i
+
+symbols/MY_SUB-UPPER.s: symbols/MY_SUB-UPPER.c.s
+.PHONY : symbols/MY_SUB-UPPER.s
+
+# target to generate assembly for a file
+symbols/MY_SUB-UPPER.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/MY_SUB-UPPER.c.s
+.PHONY : symbols/MY_SUB-UPPER.c.s
+
+symbols/__my_module_MOD_my_sub.o: symbols/__my_module_MOD_my_sub.c.o
+.PHONY : symbols/__my_module_MOD_my_sub.o
+
+# target to build an object file
+symbols/__my_module_MOD_my_sub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.o
+.PHONY : symbols/__my_module_MOD_my_sub.c.o
+
+symbols/__my_module_MOD_my_sub.i: symbols/__my_module_MOD_my_sub.c.i
+.PHONY : symbols/__my_module_MOD_my_sub.i
+
+# target to preprocess a source file
+symbols/__my_module_MOD_my_sub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.i
+.PHONY : symbols/__my_module_MOD_my_sub.c.i
+
+symbols/__my_module_MOD_my_sub.s: symbols/__my_module_MOD_my_sub.c.s
+.PHONY : symbols/__my_module_MOD_my_sub.s
+
+# target to generate assembly for a file
+symbols/__my_module_MOD_my_sub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_MOD_my_sub.c.s
+.PHONY : symbols/__my_module_MOD_my_sub.c.s
+
+symbols/__my_module_NMOD_my_sub.o: symbols/__my_module_NMOD_my_sub.c.o
+.PHONY : symbols/__my_module_NMOD_my_sub.o
+
+# target to build an object file
+symbols/__my_module_NMOD_my_sub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.o
+.PHONY : symbols/__my_module_NMOD_my_sub.c.o
+
+symbols/__my_module_NMOD_my_sub.i: symbols/__my_module_NMOD_my_sub.c.i
+.PHONY : symbols/__my_module_NMOD_my_sub.i
+
+# target to preprocess a source file
+symbols/__my_module_NMOD_my_sub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.i
+.PHONY : symbols/__my_module_NMOD_my_sub.c.i
+
+symbols/__my_module_NMOD_my_sub.s: symbols/__my_module_NMOD_my_sub.c.s
+.PHONY : symbols/__my_module_NMOD_my_sub.s
+
+# target to generate assembly for a file
+symbols/__my_module_NMOD_my_sub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module_NMOD_my_sub.c.s
+.PHONY : symbols/__my_module_NMOD_my_sub.c.s
+
+symbols/__my_module__my_sub.o: symbols/__my_module__my_sub.c.o
+.PHONY : symbols/__my_module__my_sub.o
+
+# target to build an object file
+symbols/__my_module__my_sub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.o
+.PHONY : symbols/__my_module__my_sub.c.o
+
+symbols/__my_module__my_sub.i: symbols/__my_module__my_sub.c.i
+.PHONY : symbols/__my_module__my_sub.i
+
+# target to preprocess a source file
+symbols/__my_module__my_sub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.i
+.PHONY : symbols/__my_module__my_sub.c.i
+
+symbols/__my_module__my_sub.s: symbols/__my_module__my_sub.c.s
+.PHONY : symbols/__my_module__my_sub.s
+
+# target to generate assembly for a file
+symbols/__my_module__my_sub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__my_module__my_sub.c.s
+.PHONY : symbols/__my_module__my_sub.c.s
+
+symbols/__mymodule_MOD_mysub.o: symbols/__mymodule_MOD_mysub.c.o
+.PHONY : symbols/__mymodule_MOD_mysub.o
+
+# target to build an object file
+symbols/__mymodule_MOD_mysub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.o
+.PHONY : symbols/__mymodule_MOD_mysub.c.o
+
+symbols/__mymodule_MOD_mysub.i: symbols/__mymodule_MOD_mysub.c.i
+.PHONY : symbols/__mymodule_MOD_mysub.i
+
+# target to preprocess a source file
+symbols/__mymodule_MOD_mysub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.i
+.PHONY : symbols/__mymodule_MOD_mysub.c.i
+
+symbols/__mymodule_MOD_mysub.s: symbols/__mymodule_MOD_mysub.c.s
+.PHONY : symbols/__mymodule_MOD_mysub.s
+
+# target to generate assembly for a file
+symbols/__mymodule_MOD_mysub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_MOD_mysub.c.s
+.PHONY : symbols/__mymodule_MOD_mysub.c.s
+
+symbols/__mymodule_NMOD_mysub.o: symbols/__mymodule_NMOD_mysub.c.o
+.PHONY : symbols/__mymodule_NMOD_mysub.o
+
+# target to build an object file
+symbols/__mymodule_NMOD_mysub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.o
+.PHONY : symbols/__mymodule_NMOD_mysub.c.o
+
+symbols/__mymodule_NMOD_mysub.i: symbols/__mymodule_NMOD_mysub.c.i
+.PHONY : symbols/__mymodule_NMOD_mysub.i
+
+# target to preprocess a source file
+symbols/__mymodule_NMOD_mysub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.i
+.PHONY : symbols/__mymodule_NMOD_mysub.c.i
+
+symbols/__mymodule_NMOD_mysub.s: symbols/__mymodule_NMOD_mysub.c.s
+.PHONY : symbols/__mymodule_NMOD_mysub.s
+
+# target to generate assembly for a file
+symbols/__mymodule_NMOD_mysub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule_NMOD_mysub.c.s
+.PHONY : symbols/__mymodule_NMOD_mysub.c.s
+
+symbols/__mymodule__mysub.o: symbols/__mymodule__mysub.c.o
+.PHONY : symbols/__mymodule__mysub.o
+
+# target to build an object file
+symbols/__mymodule__mysub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.o
+.PHONY : symbols/__mymodule__mysub.c.o
+
+symbols/__mymodule__mysub.i: symbols/__mymodule__mysub.c.i
+.PHONY : symbols/__mymodule__mysub.i
+
+# target to preprocess a source file
+symbols/__mymodule__mysub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.i
+.PHONY : symbols/__mymodule__mysub.c.i
+
+symbols/__mymodule__mysub.s: symbols/__mymodule__mysub.c.s
+.PHONY : symbols/__mymodule__mysub.s
+
+# target to generate assembly for a file
+symbols/__mymodule__mysub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/__mymodule__mysub.c.s
+.PHONY : symbols/__mymodule__mysub.c.s
+
+symbols/my_moduleSmy_sub.o: symbols/my_moduleSmy_sub.c.o
+.PHONY : symbols/my_moduleSmy_sub.o
+
+# target to build an object file
+symbols/my_moduleSmy_sub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.o
+.PHONY : symbols/my_moduleSmy_sub.c.o
+
+symbols/my_moduleSmy_sub.i: symbols/my_moduleSmy_sub.c.i
+.PHONY : symbols/my_moduleSmy_sub.i
+
+# target to preprocess a source file
+symbols/my_moduleSmy_sub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.i
+.PHONY : symbols/my_moduleSmy_sub.c.i
+
+symbols/my_moduleSmy_sub.s: symbols/my_moduleSmy_sub.c.s
+.PHONY : symbols/my_moduleSmy_sub.s
+
+# target to generate assembly for a file
+symbols/my_moduleSmy_sub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_moduleSmy_sub.c.s
+.PHONY : symbols/my_moduleSmy_sub.c.s
+
+symbols/my_module_MP_my_sub.o: symbols/my_module_MP_my_sub.c.o
+.PHONY : symbols/my_module_MP_my_sub.o
+
+# target to build an object file
+symbols/my_module_MP_my_sub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.o
+.PHONY : symbols/my_module_MP_my_sub.c.o
+
+symbols/my_module_MP_my_sub.i: symbols/my_module_MP_my_sub.c.i
+.PHONY : symbols/my_module_MP_my_sub.i
+
+# target to preprocess a source file
+symbols/my_module_MP_my_sub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.i
+.PHONY : symbols/my_module_MP_my_sub.c.i
+
+symbols/my_module_MP_my_sub.s: symbols/my_module_MP_my_sub.c.s
+.PHONY : symbols/my_module_MP_my_sub.s
+
+# target to generate assembly for a file
+symbols/my_module_MP_my_sub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_MP_my_sub.c.s
+.PHONY : symbols/my_module_MP_my_sub.c.s
+
+symbols/my_module_mp_my_sub_.o: symbols/my_module_mp_my_sub_.c.o
+.PHONY : symbols/my_module_mp_my_sub_.o
+
+# target to build an object file
+symbols/my_module_mp_my_sub_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.o
+.PHONY : symbols/my_module_mp_my_sub_.c.o
+
+symbols/my_module_mp_my_sub_.i: symbols/my_module_mp_my_sub_.c.i
+.PHONY : symbols/my_module_mp_my_sub_.i
+
+# target to preprocess a source file
+symbols/my_module_mp_my_sub_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.i
+.PHONY : symbols/my_module_mp_my_sub_.c.i
+
+symbols/my_module_mp_my_sub_.s: symbols/my_module_mp_my_sub_.c.s
+.PHONY : symbols/my_module_mp_my_sub_.s
+
+# target to generate assembly for a file
+symbols/my_module_mp_my_sub_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_mp_my_sub_.c.s
+.PHONY : symbols/my_module_mp_my_sub_.c.s
+
+symbols/my_module_my_sub_.o: symbols/my_module_my_sub_.c.o
+.PHONY : symbols/my_module_my_sub_.o
+
+# target to build an object file
+symbols/my_module_my_sub_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.o
+.PHONY : symbols/my_module_my_sub_.c.o
+
+symbols/my_module_my_sub_.i: symbols/my_module_my_sub_.c.i
+.PHONY : symbols/my_module_my_sub_.i
+
+# target to preprocess a source file
+symbols/my_module_my_sub_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.i
+.PHONY : symbols/my_module_my_sub_.c.i
+
+symbols/my_module_my_sub_.s: symbols/my_module_my_sub_.c.s
+.PHONY : symbols/my_module_my_sub_.s
+
+# target to generate assembly for a file
+symbols/my_module_my_sub_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_module_my_sub_.c.s
+.PHONY : symbols/my_module_my_sub_.c.s
+
+symbols/my_sub.o: symbols/my_sub.c.o
+.PHONY : symbols/my_sub.o
+
+# target to build an object file
+symbols/my_sub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub.c.o
+.PHONY : symbols/my_sub.c.o
+
+symbols/my_sub.i: symbols/my_sub.c.i
+.PHONY : symbols/my_sub.i
+
+# target to preprocess a source file
+symbols/my_sub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub.c.i
+.PHONY : symbols/my_sub.c.i
+
+symbols/my_sub.s: symbols/my_sub.c.s
+.PHONY : symbols/my_sub.s
+
+# target to generate assembly for a file
+symbols/my_sub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub.c.s
+.PHONY : symbols/my_sub.c.s
+
+symbols/my_sub_.o: symbols/my_sub_.c.o
+.PHONY : symbols/my_sub_.o
+
+# target to build an object file
+symbols/my_sub_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub_.c.o
+.PHONY : symbols/my_sub_.c.o
+
+symbols/my_sub_.i: symbols/my_sub_.c.i
+.PHONY : symbols/my_sub_.i
+
+# target to preprocess a source file
+symbols/my_sub_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub_.c.i
+.PHONY : symbols/my_sub_.c.i
+
+symbols/my_sub_.s: symbols/my_sub_.c.s
+.PHONY : symbols/my_sub_.s
+
+# target to generate assembly for a file
+symbols/my_sub_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub_.c.s
+.PHONY : symbols/my_sub_.c.s
+
+symbols/my_sub__.o: symbols/my_sub__.c.o
+.PHONY : symbols/my_sub__.o
+
+# target to build an object file
+symbols/my_sub__.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub__.c.o
+.PHONY : symbols/my_sub__.c.o
+
+symbols/my_sub__.i: symbols/my_sub__.c.i
+.PHONY : symbols/my_sub__.i
+
+# target to preprocess a source file
+symbols/my_sub__.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub__.c.i
+.PHONY : symbols/my_sub__.c.i
+
+symbols/my_sub__.s: symbols/my_sub__.c.s
+.PHONY : symbols/my_sub__.s
+
+# target to generate assembly for a file
+symbols/my_sub__.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/my_sub__.c.s
+.PHONY : symbols/my_sub__.c.s
+
+symbols/mymoduleSmysub.o: symbols/mymoduleSmysub.c.o
+.PHONY : symbols/mymoduleSmysub.o
+
+# target to build an object file
+symbols/mymoduleSmysub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.o
+.PHONY : symbols/mymoduleSmysub.c.o
+
+symbols/mymoduleSmysub.i: symbols/mymoduleSmysub.c.i
+.PHONY : symbols/mymoduleSmysub.i
+
+# target to preprocess a source file
+symbols/mymoduleSmysub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.i
+.PHONY : symbols/mymoduleSmysub.c.i
+
+symbols/mymoduleSmysub.s: symbols/mymoduleSmysub.c.s
+.PHONY : symbols/mymoduleSmysub.s
+
+# target to generate assembly for a file
+symbols/mymoduleSmysub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymoduleSmysub.c.s
+.PHONY : symbols/mymoduleSmysub.c.s
+
+symbols/mymodule_MP_mysub.o: symbols/mymodule_MP_mysub.c.o
+.PHONY : symbols/mymodule_MP_mysub.o
+
+# target to build an object file
+symbols/mymodule_MP_mysub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.o
+.PHONY : symbols/mymodule_MP_mysub.c.o
+
+symbols/mymodule_MP_mysub.i: symbols/mymodule_MP_mysub.c.i
+.PHONY : symbols/mymodule_MP_mysub.i
+
+# target to preprocess a source file
+symbols/mymodule_MP_mysub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.i
+.PHONY : symbols/mymodule_MP_mysub.c.i
+
+symbols/mymodule_MP_mysub.s: symbols/mymodule_MP_mysub.c.s
+.PHONY : symbols/mymodule_MP_mysub.s
+
+# target to generate assembly for a file
+symbols/mymodule_MP_mysub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_MP_mysub.c.s
+.PHONY : symbols/mymodule_MP_mysub.c.s
+
+symbols/mymodule_mp_mysub_.o: symbols/mymodule_mp_mysub_.c.o
+.PHONY : symbols/mymodule_mp_mysub_.o
+
+# target to build an object file
+symbols/mymodule_mp_mysub_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.o
+.PHONY : symbols/mymodule_mp_mysub_.c.o
+
+symbols/mymodule_mp_mysub_.i: symbols/mymodule_mp_mysub_.c.i
+.PHONY : symbols/mymodule_mp_mysub_.i
+
+# target to preprocess a source file
+symbols/mymodule_mp_mysub_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.i
+.PHONY : symbols/mymodule_mp_mysub_.c.i
+
+symbols/mymodule_mp_mysub_.s: symbols/mymodule_mp_mysub_.c.s
+.PHONY : symbols/mymodule_mp_mysub_.s
+
+# target to generate assembly for a file
+symbols/mymodule_mp_mysub_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mp_mysub_.c.s
+.PHONY : symbols/mymodule_mp_mysub_.c.s
+
+symbols/mymodule_mysub_.o: symbols/mymodule_mysub_.c.o
+.PHONY : symbols/mymodule_mysub_.o
+
+# target to build an object file
+symbols/mymodule_mysub_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.o
+.PHONY : symbols/mymodule_mysub_.c.o
+
+symbols/mymodule_mysub_.i: symbols/mymodule_mysub_.c.i
+.PHONY : symbols/mymodule_mysub_.i
+
+# target to preprocess a source file
+symbols/mymodule_mysub_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.i
+.PHONY : symbols/mymodule_mysub_.c.i
+
+symbols/mymodule_mysub_.s: symbols/mymodule_mysub_.c.s
+.PHONY : symbols/mymodule_mysub_.s
+
+# target to generate assembly for a file
+symbols/mymodule_mysub_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mymodule_mysub_.c.s
+.PHONY : symbols/mymodule_mysub_.c.s
+
+symbols/mysub.o: symbols/mysub.c.o
+.PHONY : symbols/mysub.o
+
+# target to build an object file
+symbols/mysub.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub.c.o
+.PHONY : symbols/mysub.c.o
+
+symbols/mysub.i: symbols/mysub.c.i
+.PHONY : symbols/mysub.i
+
+# target to preprocess a source file
+symbols/mysub.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub.c.i
+.PHONY : symbols/mysub.c.i
+
+symbols/mysub.s: symbols/mysub.c.s
+.PHONY : symbols/mysub.s
+
+# target to generate assembly for a file
+symbols/mysub.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub.c.s
+.PHONY : symbols/mysub.c.s
+
+symbols/mysub_.o: symbols/mysub_.c.o
+.PHONY : symbols/mysub_.o
+
+# target to build an object file
+symbols/mysub_.c.o:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub_.c.o
+.PHONY : symbols/mysub_.c.o
+
+symbols/mysub_.i: symbols/mysub_.c.i
+.PHONY : symbols/mysub_.i
+
+# target to preprocess a source file
+symbols/mysub_.c.i:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub_.c.i
+.PHONY : symbols/mysub_.c.i
+
+symbols/mysub_.s: symbols/mysub_.c.s
+.PHONY : symbols/mysub_.s
+
+# target to generate assembly for a file
+symbols/mysub_.c.s:
+	$(MAKE) -f CMakeFiles/symbols.dir/build.make CMakeFiles/symbols.dir/symbols/mysub_.c.s
+.PHONY : symbols/mysub_.c.s
+
+# Help Target
+help:
+	@echo "The following are some of the valid targets for this Makefile:"
+	@echo "... all (the default if no target is provided)"
+	@echo "... clean"
+	@echo "... depend"
+	@echo "... FortranCInterface"
+	@echo "... edit_cache"
+	@echo "... myfort"
+	@echo "... rebuild_cache"
+	@echo "... symbols"
+	@echo "... call_mod.o"
+	@echo "... call_sub.o"
+	@echo "... main.o"
+	@echo "... my_module.o"
+	@echo "... my_module_.o"
+	@echo "... my_module_.i"
+	@echo "... my_module_.s"
+	@echo "... my_sub.o"
+	@echo "... mymodule.o"
+	@echo "... mymodule_.o"
+	@echo "... mymodule_.i"
+	@echo "... mymodule_.s"
+	@echo "... mysub.o"
+	@echo "... symbols/MYMODULE_mp_MYSUB-UPPER.o"
+	@echo "... symbols/MYMODULE_mp_MYSUB-UPPER.i"
+	@echo "... symbols/MYMODULE_mp_MYSUB-UPPER.s"
+	@echo "... symbols/MYSUB-UPPER.o"
+	@echo "... symbols/MYSUB-UPPER.i"
+	@echo "... symbols/MYSUB-UPPER.s"
+	@echo "... symbols/MY_MODULE_mp_MY_SUB-UPPER.o"
+	@echo "... symbols/MY_MODULE_mp_MY_SUB-UPPER.i"
+	@echo "... symbols/MY_MODULE_mp_MY_SUB-UPPER.s"
+	@echo "... symbols/MY_SUB-UPPER.o"
+	@echo "... symbols/MY_SUB-UPPER.i"
+	@echo "... symbols/MY_SUB-UPPER.s"
+	@echo "... symbols/__my_module_MOD_my_sub.o"
+	@echo "... symbols/__my_module_MOD_my_sub.i"
+	@echo "... symbols/__my_module_MOD_my_sub.s"
+	@echo "... symbols/__my_module_NMOD_my_sub.o"
+	@echo "... symbols/__my_module_NMOD_my_sub.i"
+	@echo "... symbols/__my_module_NMOD_my_sub.s"
+	@echo "... symbols/__my_module__my_sub.o"
+	@echo "... symbols/__my_module__my_sub.i"
+	@echo "... symbols/__my_module__my_sub.s"
+	@echo "... symbols/__mymodule_MOD_mysub.o"
+	@echo "... symbols/__mymodule_MOD_mysub.i"
+	@echo "... symbols/__mymodule_MOD_mysub.s"
+	@echo "... symbols/__mymodule_NMOD_mysub.o"
+	@echo "... symbols/__mymodule_NMOD_mysub.i"
+	@echo "... symbols/__mymodule_NMOD_mysub.s"
+	@echo "... symbols/__mymodule__mysub.o"
+	@echo "... symbols/__mymodule__mysub.i"
+	@echo "... symbols/__mymodule__mysub.s"
+	@echo "... symbols/my_moduleSmy_sub.o"
+	@echo "... symbols/my_moduleSmy_sub.i"
+	@echo "... symbols/my_moduleSmy_sub.s"
+	@echo "... symbols/my_module_MP_my_sub.o"
+	@echo "... symbols/my_module_MP_my_sub.i"
+	@echo "... symbols/my_module_MP_my_sub.s"
+	@echo "... symbols/my_module_mp_my_sub_.o"
+	@echo "... symbols/my_module_mp_my_sub_.i"
+	@echo "... symbols/my_module_mp_my_sub_.s"
+	@echo "... symbols/my_module_my_sub_.o"
+	@echo "... symbols/my_module_my_sub_.i"
+	@echo "... symbols/my_module_my_sub_.s"
+	@echo "... symbols/my_sub.o"
+	@echo "... symbols/my_sub.i"
+	@echo "... symbols/my_sub.s"
+	@echo "... symbols/my_sub_.o"
+	@echo "... symbols/my_sub_.i"
+	@echo "... symbols/my_sub_.s"
+	@echo "... symbols/my_sub__.o"
+	@echo "... symbols/my_sub__.i"
+	@echo "... symbols/my_sub__.s"
+	@echo "... symbols/mymoduleSmysub.o"
+	@echo "... symbols/mymoduleSmysub.i"
+	@echo "... symbols/mymoduleSmysub.s"
+	@echo "... symbols/mymodule_MP_mysub.o"
+	@echo "... symbols/mymodule_MP_mysub.i"
+	@echo "... symbols/mymodule_MP_mysub.s"
+	@echo "... symbols/mymodule_mp_mysub_.o"
+	@echo "... symbols/mymodule_mp_mysub_.i"
+	@echo "... symbols/mymodule_mp_mysub_.s"
+	@echo "... symbols/mymodule_mysub_.o"
+	@echo "... symbols/mymodule_mysub_.i"
+	@echo "... symbols/mymodule_mysub_.s"
+	@echo "... symbols/mysub.o"
+	@echo "... symbols/mysub.i"
+	@echo "... symbols/mysub.s"
+	@echo "... symbols/mysub_.o"
+	@echo "... symbols/mysub_.i"
+	@echo "... symbols/mysub_.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/CMakeFiles/FortranCInterface/Output.cmake b/CMakeFiles/FortranCInterface/Output.cmake
new file mode 100644
index 0000000..1382ed6
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/Output.cmake
@@ -0,0 +1,34 @@
+# Global symbol without underscore.
+set(FortranCInterface_GLOBAL_SYMBOL  "mysub_")
+set(FortranCInterface_GLOBAL_PREFIX  "")
+set(FortranCInterface_GLOBAL_SUFFIX  "_")
+set(FortranCInterface_GLOBAL_CASE    "LOWER")
+set(FortranCInterface_GLOBAL_MACRO   "(name,NAME) name##_")
+
+# Global symbol with underscore.
+set(FortranCInterface_GLOBAL__SYMBOL "my_sub_")
+set(FortranCInterface_GLOBAL__PREFIX "")
+set(FortranCInterface_GLOBAL__SUFFIX "_")
+set(FortranCInterface_GLOBAL__CASE   "LOWER")
+set(FortranCInterface_GLOBAL__MACRO  "(name,NAME) name##_")
+
+# Module symbol without underscore.
+set(FortranCInterface_MODULE_SYMBOL  "__mymodule_MOD_mysub")
+set(FortranCInterface_MODULE_PREFIX  "__")
+set(FortranCInterface_MODULE_MIDDLE  "_MOD_")
+set(FortranCInterface_MODULE_SUFFIX  "")
+set(FortranCInterface_MODULE_CASE    "LOWER")
+set(FortranCInterface_MODULE_MACRO   "(mod_name,name, mod_NAME,NAME) __##mod_name##_MOD_##name")
+
+# Module symbol with underscore.
+set(FortranCInterface_MODULE__SYMBOL "__my_module_MOD_my_sub")
+set(FortranCInterface_MODULE__PREFIX "__")
+set(FortranCInterface_MODULE__MIDDLE "_MOD_")
+set(FortranCInterface_MODULE__SUFFIX "")
+set(FortranCInterface_MODULE__CASE   "LOWER")
+set(FortranCInterface_MODULE__MACRO  "(mod_name,name, mod_NAME,NAME) __##mod_name##_MOD_##name")
+
+# Summarize what was found.
+set(FortranCInterface_GLOBAL_FOUND 1)
+set(FortranCInterface_MODULE_FOUND 1)
+
diff --git a/CMakeFiles/FortranCInterface/cmake_install.cmake b/CMakeFiles/FortranCInterface/cmake_install.cmake
new file mode 100644
index 0000000..b9022d0
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/cmake_install.cmake
@@ -0,0 +1,44 @@
+# Install script for directory: /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface
+
+# Set the install prefix
+IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
+  SET(CMAKE_INSTALL_PREFIX "/usr/local")
+ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
+STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+  IF(BUILD_TYPE)
+    STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+  ELSE(BUILD_TYPE)
+    SET(CMAKE_INSTALL_CONFIG_NAME "")
+  ENDIF(BUILD_TYPE)
+  MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+
+# Set the component getting installed.
+IF(NOT CMAKE_INSTALL_COMPONENT)
+  IF(COMPONENT)
+    MESSAGE(STATUS "Install component: \"${COMPONENT}\"")
+    SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+  ELSE(COMPONENT)
+    SET(CMAKE_INSTALL_COMPONENT)
+  ENDIF(COMPONENT)
+ENDIF(NOT CMAKE_INSTALL_COMPONENT)
+
+# Install shared libraries without execute permission?
+IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+  SET(CMAKE_INSTALL_SO_NO_EXE "0")
+ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+
+IF(CMAKE_INSTALL_COMPONENT)
+  SET(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+ELSE(CMAKE_INSTALL_COMPONENT)
+  SET(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+ENDIF(CMAKE_INSTALL_COMPONENT)
+
+FILE(WRITE "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/${CMAKE_INSTALL_MANIFEST}" "")
+FOREACH(file ${CMAKE_INSTALL_MANIFEST_FILES})
+  FILE(APPEND "/home/graphics/cgs/git/magics/CMakeFiles/FortranCInterface/${CMAKE_INSTALL_MANIFEST}" "${file}\n")
+ENDFOREACH(file)
diff --git a/CMakeFiles/FortranCInterface/libmyfort.a b/CMakeFiles/FortranCInterface/libmyfort.a
new file mode 100644
index 0000000..9cbc8bf
Binary files /dev/null and b/CMakeFiles/FortranCInterface/libmyfort.a differ
diff --git a/CMakeFiles/FortranCInterface/libsymbols.a b/CMakeFiles/FortranCInterface/libsymbols.a
new file mode 100644
index 0000000..9600898
Binary files /dev/null and b/CMakeFiles/FortranCInterface/libsymbols.a differ
diff --git a/CMakeFiles/FortranCInterface/my_module.mod b/CMakeFiles/FortranCInterface/my_module.mod
new file mode 100644
index 0000000..df1ccc6
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/my_module.mod
@@ -0,0 +1,23 @@
+GFORTRAN module version '0' created from /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/my_module.f90 on Tue Apr  8 16:55:52 2014
+MD5:92c3f619b10bf01d10a98744d3beb007 -- If you edit this, you'll get what you deserve.
+
+(() () () () () () () () () () () () () () () () () () () () () () () ()
+() () ())
+
+()
+
+(('my_interface' 'my_module' 2))
+
+()
+
+()
+
+(3 'my_module' 'my_module' 'my_module' 1 ((MODULE UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ()
+() () 0 0)
+2 'my_sub' 'my_module' 'my_sub' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+DECL UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () ()
+0 0)
+)
+
+('my_module' 0 3 'my_sub' 0 2)
diff --git a/CMakeFiles/FortranCInterface/mymodule.mod b/CMakeFiles/FortranCInterface/mymodule.mod
new file mode 100644
index 0000000..cd3bf4f
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/mymodule.mod
@@ -0,0 +1,23 @@
+GFORTRAN module version '0' created from /usr/local/apps/cmake/2.8.10/share/cmake-2.8/Modules/FortranCInterface/mymodule.f90 on Tue Apr  8 16:55:52 2014
+MD5:3826198b66b6b987f94c147eb4e0ec65 -- If you edit this, you'll get what you deserve.
+
+(() () () () () () () () () () () () () () () () () () () () () () () ()
+() () ())
+
+()
+
+(('myinterface' 'mymodule' 2))
+
+()
+
+()
+
+(3 'mymodule' 'mymodule' 'mymodule' 1 ((MODULE UNKNOWN-INTENT
+UNKNOWN-PROC UNKNOWN UNKNOWN) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 ()
+() () 0 0)
+2 'mysub' 'mymodule' 'mysub' 1 ((PROCEDURE UNKNOWN-INTENT MODULE-PROC
+DECL UNKNOWN SUBROUTINE) (UNKNOWN 0 0 0 UNKNOWN ()) 0 0 () () 0 () () ()
+0 0)
+)
+
+('mymodule' 0 3 'mysub' 0 2)
diff --git a/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c b/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c
new file mode 100644
index 0000000..bc17697
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/MYMODULE_mp_MYSUB-UPPER.c
@@ -0,0 +1,4 @@
+const char* MYMODULE_mp_MYSUB(void)
+{
+  return "INFO:symbol[MYMODULE_mp_MYSUB]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c b/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c
new file mode 100644
index 0000000..3ec16d0
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/MYSUB-UPPER.c
@@ -0,0 +1,4 @@
+const char* MYSUB(void)
+{
+  return "INFO:symbol[MYSUB]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c b/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c
new file mode 100644
index 0000000..d74980d
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/MY_MODULE_mp_MY_SUB-UPPER.c
@@ -0,0 +1,4 @@
+const char* MY_MODULE_mp_MY_SUB(void)
+{
+  return "INFO:symbol[MY_MODULE_mp_MY_SUB]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c b/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c
new file mode 100644
index 0000000..c9de0bf
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/MY_SUB-UPPER.c
@@ -0,0 +1,4 @@
+const char* MY_SUB(void)
+{
+  return "INFO:symbol[MY_SUB]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c b/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c
new file mode 100644
index 0000000..bab5b8a
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/__my_module_MOD_my_sub.c
@@ -0,0 +1,4 @@
+const char* __my_module_MOD_my_sub(void)
+{
+  return "INFO:symbol[__my_module_MOD_my_sub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c b/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c
new file mode 100644
index 0000000..44bc79b
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/__my_module_NMOD_my_sub.c
@@ -0,0 +1,4 @@
+const char* __my_module_NMOD_my_sub(void)
+{
+  return "INFO:symbol[__my_module_NMOD_my_sub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c b/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c
new file mode 100644
index 0000000..2a315ed
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/__my_module__my_sub.c
@@ -0,0 +1,4 @@
+const char* __my_module__my_sub(void)
+{
+  return "INFO:symbol[__my_module__my_sub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c b/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c
new file mode 100644
index 0000000..c412a98
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/__mymodule_MOD_mysub.c
@@ -0,0 +1,4 @@
+const char* __mymodule_MOD_mysub(void)
+{
+  return "INFO:symbol[__mymodule_MOD_mysub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c b/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c
new file mode 100644
index 0000000..fe22ef0
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/__mymodule_NMOD_mysub.c
@@ -0,0 +1,4 @@
+const char* __mymodule_NMOD_mysub(void)
+{
+  return "INFO:symbol[__mymodule_NMOD_mysub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c b/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c
new file mode 100644
index 0000000..42ede0e
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/__mymodule__mysub.c
@@ -0,0 +1,4 @@
+const char* __mymodule__mysub(void)
+{
+  return "INFO:symbol[__mymodule__mysub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c b/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c
new file mode 100644
index 0000000..3aaa979
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_moduleSmy_sub.c
@@ -0,0 +1,4 @@
+const char* my_module$my_sub(void)
+{
+  return "INFO:symbol[my_module$my_sub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c b/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c
new file mode 100644
index 0000000..79e7ece
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_module_MP_my_sub.c
@@ -0,0 +1,4 @@
+const char* my_module_MP_my_sub(void)
+{
+  return "INFO:symbol[my_module_MP_my_sub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c b/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c
new file mode 100644
index 0000000..f36fa76
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_module_mp_my_sub_.c
@@ -0,0 +1,4 @@
+const char* my_module_mp_my_sub_(void)
+{
+  return "INFO:symbol[my_module_mp_my_sub_]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c b/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c
new file mode 100644
index 0000000..ec85c53
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_module_my_sub_.c
@@ -0,0 +1,4 @@
+const char* my_module_my_sub_(void)
+{
+  return "INFO:symbol[my_module_my_sub_]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_sub.c b/CMakeFiles/FortranCInterface/symbols/my_sub.c
new file mode 100644
index 0000000..ce80fd8
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_sub.c
@@ -0,0 +1,4 @@
+const char* my_sub(void)
+{
+  return "INFO:symbol[my_sub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_sub_.c b/CMakeFiles/FortranCInterface/symbols/my_sub_.c
new file mode 100644
index 0000000..693daeb
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_sub_.c
@@ -0,0 +1,4 @@
+const char* my_sub_(void)
+{
+  return "INFO:symbol[my_sub_]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/my_sub__.c b/CMakeFiles/FortranCInterface/symbols/my_sub__.c
new file mode 100644
index 0000000..deddc23
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/my_sub__.c
@@ -0,0 +1,4 @@
+const char* my_sub__(void)
+{
+  return "INFO:symbol[my_sub__]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c b/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c
new file mode 100644
index 0000000..6528fb5
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/mymoduleSmysub.c
@@ -0,0 +1,4 @@
+const char* mymodule$mysub(void)
+{
+  return "INFO:symbol[mymodule$mysub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c b/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c
new file mode 100644
index 0000000..2f394a2
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/mymodule_MP_mysub.c
@@ -0,0 +1,4 @@
+const char* mymodule_MP_mysub(void)
+{
+  return "INFO:symbol[mymodule_MP_mysub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c b/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c
new file mode 100644
index 0000000..e308e51
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/mymodule_mp_mysub_.c
@@ -0,0 +1,4 @@
+const char* mymodule_mp_mysub_(void)
+{
+  return "INFO:symbol[mymodule_mp_mysub_]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c b/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c
new file mode 100644
index 0000000..1fb0777
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/mymodule_mysub_.c
@@ -0,0 +1,4 @@
+const char* mymodule_mysub_(void)
+{
+  return "INFO:symbol[mymodule_mysub_]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/mysub.c b/CMakeFiles/FortranCInterface/symbols/mysub.c
new file mode 100644
index 0000000..fa32bd7
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/mysub.c
@@ -0,0 +1,4 @@
+const char* mysub(void)
+{
+  return "INFO:symbol[mysub]";
+}
diff --git a/CMakeFiles/FortranCInterface/symbols/mysub_.c b/CMakeFiles/FortranCInterface/symbols/mysub_.c
new file mode 100644
index 0000000..5d98d30
--- /dev/null
+++ b/CMakeFiles/FortranCInterface/symbols/mysub_.c
@@ -0,0 +1,4 @@
+const char* mysub_(void)
+{
+  return "INFO:symbol[mysub_]";
+}
diff --git a/CMakeFiles/TestEndianess.bin b/CMakeFiles/TestEndianess.bin
new file mode 100755
index 0000000..30b361e
Binary files /dev/null and b/CMakeFiles/TestEndianess.bin differ
diff --git a/CMakeFiles/cmake.check_cache b/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000..3dccd73
--- /dev/null
+++ b/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..346990e
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,378 @@
+############################################################################################
+# cmake options:
+#
+#       -DCMAKE_BUILD_TYPE=Debug|RelWithDebInfo|Release|Production
+#
+#       -DCMAKE_MODULE_PATH=/path/to/ecbuild/cmake
+#
+#       -DCMAKE_C_COMPILER=gcc
+#       -DCMAKE_C_COMPILER=g++
+#
+#       -DCMAKE_PREFIX_PATH=/path/to/jasper:/path/to/any/package/out/of/place
+#       -DBUILD_SHARED_LIBS=OFF
+
+# TODO:
+#  * fix python module generation Magics.py to __init__.py
+#  * cpack ecbuild/cmake macros into tar.gz
+#  * unit tests check that certain files are produced and not empty
+#  * pkg-config needed for metview
+
+# Missing dependencies:
+#   * ghostscript ( is it really needed? -- to confirm )
+
+cmake_minimum_required( VERSION 2.8.4 FATAL_ERROR )
+
+project( magics CXX )
+
+# make sure that the header files are installed into include/magics
+# note that this needs to be done before ecbuild_declare_project()
+# to ensure that the ecbuild header files are also put there
+# note also that we need to CACHE this so that ecbuild_declare_project() does not overwrite it
+set(MAGICS_INSTALL_INCLUDE_DIR include/magics CACHE PATH "Magics installation directory for header files")
+
+set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild/cmake")
+
+include( ecbuild_system )
+
+ecbuild_requires_macro_version( 1.2 )
+
+###############################################################################
+# some variables of this project
+
+option( ENABLE_GRIB           "enable grib support"               ON  )
+option( ENABLE_NETCDF         "enable netcdf support"             ON  )
+
+option( ENABLE_ODB            "enable odb"                        OFF )
+option( ENABLE_BUFR           "enable bufr support"               OFF )
+option( ENABLE_SPOT           "enable spot support"               OFF )
+option( ENABLE_CAIRO          "enable cairo support[png/jpeg]"   OFF )
+
+option( ENABLE_PYTHON         "enable python interface"   ON  )
+option( ENABLE_FORTRAN        "enable fortran interface"  ON  )
+
+option( ENABLE_METVIEW        "enable Metview interface"  OFF  )
+option( ENABLE_METVIEW_NO_QT  "enable Metview interface without Qt"    OFF )
+
+option( ENABLE_STATIC_LIBRARY  "Internal Build static Library"    OFF  )
+option( ENABLE_REGRESSION     "Internal use only: enable regression test"  OFF  )
+option( ENABLE_REGRESSION_UPLOAD     "Internal use only : enable upload of reference image"  OFF  )
+
+set( MAGICS_NAME          "Magics" )
+set( MAGICS_EXCEPTION     "ON" )
+set( MAGICS_SITE          "ecmwf" )
+set( MAGICS_INSTALL_PATH  ${CMAKE_INSTALL_PREFIX} )
+
+# Regression definitions
+set( MAGICS_REFERENCE_VERSIONS            "2.22.6" )
+#list( APPEND MAGICS_REFERENCE_VERSIONS    "2.18.14" )
+set( MAGICS_HTML_ROOT        "${CMAKE_BINARY_DIR}/regression/html")
+file(MAKE_DIRECTORY ${MAGICS_HTML_ROOT} )
+
+set( MAG_PYTHON_PATH ${CMAKE_BINARY_DIR}/python )
+
+###############################################################################
+# projects
+
+# ecbuild_use_package( PROJECT eckit VERSION 0.3 REQUIRED )
+
+### fortran
+
+if( ENABLE_FORTRAN )
+	ecbuild_enable_fortran( REQUIRED )
+endif()
+
+### python
+
+if( ENABLE_PYTHON )
+	ecbuild_find_python( REQUIRED )
+	find_package( SWIG REQUIRED )
+	find_package( NumPy REQUIRED )
+endif()
+if( SWIG_FOUND )
+   include(UseSWIG)
+endif()
+
+### grib
+
+set( grib no )
+if( ENABLE_GRIB )
+  ecbuild_use_package( PROJECT grib_api VERSION 1.9 REQUIRED)
+endif()
+if( GRIB_API_FOUND )
+   set( MAGICS_GRIB 1 )
+   set( grib yes )
+endif()
+
+### netcdf
+
+set( netcdf no )
+set( PREFER_NETCDF4 1)
+set( NETCDF_CXX 1 )
+if ( ENABLE_NETCDF )
+  find_package( NetCDF REQUIRED)
+endif()
+if ( NETCDF_FOUND )
+    list( APPEND MAGICS_TPLS  NetCDF )
+    set(MAGICS_NETCDF 1)
+	set( netcdf no)
+endif()
+
+### odb
+
+set( odb no )
+if( ENABLE_ODB )
+  ecbuild_use_package( PROJECT odb_api  VERSION 0.9.31 REQUIRED)
+endif()
+if( ODB_API_FOUND )
+      set( MAGICS_ODB 1 )
+	  set( odb yes)
+endif()
+
+### spot
+
+set( spot no )
+if( ENABLE_SPOT )
+    ecbuild_use_package( PROJECT spot  REQUIRED)
+    if( SPOT_FOUND )
+        set (MAGICS_SPOT 1)
+        set ( spot yes)
+    endif()
+else() 
+endif()
+
+### bufr
+
+debug_var (ENABLE_BUFR )
+set( bufr no )
+if( ENABLE_BUFR )
+  find_package( EMOS REQUIRED )
+endif()
+if( EMOS_FOUND )
+   set( MAGICS_BUFR 1 )
+   set( bufr yes)
+endif()
+
+debug_var ( EMOS_FOUND )
+
+### cairo
+
+set( cairo no )
+if( ENABLE_CAIRO )
+	find_package( PangoCairo REQUIRED )
+endif()
+    
+if( PANGOCAIRO_FOUND )
+   	set( MAGICS_CAIRO 1 )
+	set( cairo yes )
+endif()
+
+
+### Metview and Qt
+
+if(ENABLE_METVIEW AND ENABLE_METVIEW_NO_QT)
+    message(FATAL_ERROR "Do not set both ENABLE_METVIEW and ENABLE_METVIEW_NO_QT - only set one. You may have to remove your CMakeCache.txt to clear these settings.")
+endif()
+
+set( qt no )
+set( qtlib no )
+set( metview no )
+
+if( ENABLE_METVIEW_NO_QT )
+	set( metview yes )
+	unset(MAGICS_ONLY)
+endif()
+
+if( ENABLE_METVIEW )
+    set ( metview yes)
+    unset(MAGICS_ONLY)
+    find_package(Qt4 4.4.3 REQUIRED QtCore QtGui QtXml )
+    if( QT_FOUND )
+		  include( ${QT_USE_FILE} )
+		  set( MAGICS_QT 1)
+		  set( qt yes)
+    endif()
+endif()
+
+ecbuild_declare_project()
+
+###############################################################################
+# find extra packages
+
+set( CMAKE_THREAD_PREFER_PTHREAD 1 )
+find_package( Threads ) 
+
+# set(Boost_USE_STATIC_LIBS        ON)
+# set(Boost_NO_SYSTEM_PATHS        ON)
+# set(Boost_USE_MULTITHREADED      ON)
+ecbuild_add_extra_search_paths( boost )
+
+find_package( Boost 1.49.0 )
+find_package( Proj4  )
+find_package( EXPAT  )
+
+
+install( FILES ${CMAKE_CURRENT_BINARY_DIR}/magics-config
+			DESTINATION ${INSTALL_BIN_DIR} 
+			PERMISSIONS OWNER_READ GROUP_READ WORLD_READ 
+				        OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
+
+
+###############################################################################
+# contents
+
+set( MAGICS_TPLS grib_api spot odb_api EXPAT NetCDF PangoCairo Proj4 EMOS)
+set( MAGICS_INCLUDE_DIRS 
+	    ${CMAKE_CURRENT_SOURCE_DIR}/src 
+        ${CMAKE_BINARY_SOURCE_DIR}/src 
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/common 
+        ${CMAKE_CURRENT_BINARY_DIR}/src/params 
+        ${CMAKE_CURRENT_BINARY_DIR}/src 
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/common  
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/basic
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/web
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/visualisers
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/drivers
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/drivers/MgQ
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/eckit_readers
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/decoders
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/terralib
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/terralib/kernel
+        ${CMAKE_CURRENT_SOURCE_DIR}/src/terralib/utils
+	    ${Boost_INCLUDE_DIRS} )
+	    
+if( MAGICS_ODB )
+    list( APPEND MAGICS_INCLUDE_DIRS
+			${CMAKE_CURRENT_SOURCE_DIR}/src/oda 
+			${ODB_API_INCLUDE_DIRS}/../eclib 
+		)
+endif()
+
+set( MAGICS_LIBRARIES    MagPlus )
+
+foreach( _tpl ${MAGICS_TPLS} )
+    string( TOUPPER ${_tpl} TPL )
+    list( APPEND MAGICS_EXTRA_DEFINITIONS   ${${TPL}_DEFINITIONS}  )
+    list( APPEND MAGICS_EXTRA_INCLUDE_DIRS  ${${TPL}_INCLUDE_DIRS} )
+    list( APPEND MAGICS_EXTRA_LIBRARIES     ${${TPL}_LIBRARIES} )
+endforeach()
+
+# message(STATUS "MAGICS_EXTRA_DEFINITIONS  => ${MAGICS_EXTRA_DEFINITIONS}")
+# message(STATUS "MAGICS_EXTRA_INCLUDE_DIRS => ${MAGICS_EXTRA_INCLUDE_DIRS}")
+# message(STATUS "MAGICS_EXTRA_LIBRARIES    => ${MAGICS_EXTRA_LIBRARIES}")
+
+if( MAGICS_BUFR )
+	list( APPEND MAGICS_EXTRA_DEFINITIONS   fortfloat=double fortint=int )
+endif()
+if( WITH_QT_DEBUG )
+	list( APPEND MAGICS_EXTRA_DEFINITIONS QT_NO_DEBUG_OUTPUT )
+endif()
+
+if( MAGICS_QT )
+	list( APPEND MAGICS_EXTRA_INCLUDE_DIRS  ${QT_INCLUDE_DIR} )
+	list( APPEND MAGICS_EXTRA_LIBRARIES     ${QT_LIBRARIES} )
+endif()
+
+list( APPEND MAGICS_EXTRA_LIBRARIES     ${CMAKE_THREAD_LIBS_INIT} )
+
+# set_directory_properties( PROPERTIES COMPILE_DEFINITIONS ${ECKIT_DEFINITIONS} )
+get_directory_property( MAGICS_DEFINITIONS COMPILE_DEFINITIONS )
+
+include_directories( ${MAGICS_INCLUDE_DIRS} ${MAGICS_EXTRA_INCLUDE_DIRS} )
+
+set(  __magics_inc_tmp ${MAGICS_EXTRA_INCLUDE_DIRS} )
+set(MAGICS_EXTRA_INCLUDES "")
+
+foreach( inc ${__magics_inc_tmp} ) 
+  set(MAGICS_EXTRA_INCLUDES "${MAGICS_EXTRA_INCLUDES} -I${inc}" )
+endforeach()
+
+# scripts
+add_subdirectory( tools )
+
+# source files
+add_subdirectory( src )
+
+# shared files
+add_subdirectory( share )
+
+# python interface 
+add_subdirectory( python )
+
+# apps directory
+add_subdirectory( apps )
+
+# Test directory
+add_subdirectory( test )
+if( ENABLE_REGRESSION )
+    add_subdirectory( regression )
+endif()
+
+# Directories not need in the distribution tar ball!
+ecbuild_add_resources( TARGET old_src DONT_PACK_DIRS src/MvObs src/libTable src/xml src/terralib/functions)
+ecbuild_add_resources( TARGET bamboo DONT_PACK_DIRS bamboo)
+ecbuild_add_resources( TARGET old_ressources 
+		DONT_PACK_DIRS tools/versioncmp 
+					tools/regression 
+                    regression
+                    docs
+                    toolsjs
+                    test/old
+					tools/xml 
+					tools/use_scripts
+					tools/versioncmp_folders)
+
+ecbuild_add_resources( TARGET internal 
+		DONT_PACK configure.lxab
+                    configure.local
+                    configure.ecgb
+                    configure.ecmwf
+					)
+
+
+set(  __magics_tmp ${MAGICS_EXTRA_LIBRARIES} )
+
+list(REMOVE_ITEM __magics_tmp debug )
+list(REMOVE_ITEM __magics_tmp optimized )
+
+set(MAGICS_EXTRA_LIBS "")
+
+foreach( lib ${__magics_tmp} )
+  if( lib MATCHES "^/.*" )
+# Need to split -L/path and -l libd
+	
+	 get_filename_component(ext ${lib} EXT)
+	  if ( ${ext} MATCHES ${CMAKE_SHARED_LIBRARY_SUFFIX} )
+		
+		get_filename_component(path ${lib} PATH)
+		
+		list( APPEND RPATH "-Wl,-rpath,${path}")
+	  endif()
+	 #set(MAGICS_EXTRA_LIBS "${MAGICS_EXTRA_LIBS} ${lib}" )
+  else()
+    if( NOT lib MATCHES "^-l.*" )
+		set( lib "-l${lib}" )
+	endif()
+  endif()
+  
+  set(MAGICS_EXTRA_LIBS "${MAGICS_EXTRA_LIBS} ${lib}" )
+endforeach()
+
+set(MAGICS_EXTRA_LIBS "${MAGICS_EXTRA_LIBS} -Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib" )
+
+
+list(REMOVE_DUPLICATES RPATH)
+		
+foreach( lib ${RPATH} )
+	set(MAGICS_EXTRA_LIBS "${MAGICS_EXTRA_LIBS} ${lib}" )
+endforeach()
+	
+
+configure_file( magics-config.in  magics-config @ONLY )					
+# ecbuild/cmake is needed in the the distribution tar ball!
+					
+############################################################################################
+# finalize
+
+ecbuild_install_project( NAME Magics )
+
+ecbuild_print_summary()
diff --git a/COPYING b/COPYING
deleted file mode 100644
index 457b4a0..0000000
--- a/COPYING
+++ /dev/null
@@ -1,201 +0,0 @@
-                                Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2007-2013 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/COPYING b/COPYING
new file mode 120000
index 0000000..7a694c9
--- /dev/null
+++ b/COPYING
@@ -0,0 +1 @@
+LICENSE
\ No newline at end of file
diff --git a/LICENSE_for_source_files b/LICENSE_for_source_files
new file mode 100644
index 0000000..67b44cc
--- /dev/null
+++ b/LICENSE_for_source_files
@@ -0,0 +1,14 @@
+
+Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+Licensed under the Apache License, Version 2.0 (the "License"); 
+you may not use this file except in compliance with the License. 
+You may obtain a copy of the License at 
+
+	http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software 
+distributed under the License is distributed on an "AS IS" BASIS, 
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+See the License for the specific language governing permissions and 
+limitations under the License.
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 46fa43c..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,82 +0,0 @@
-
-SUBDIRS       = src apps python/Magics test tools 
-DIST_SUBDIRS  = src apps test tools python/Magics rpms
-
- 
-EXTRA_DIST    = LICENSE NOTICE config share version.sh m4/magics.m4
-
-
-bin_SCRIPTS   = magics-config
-
-
-ACLOCAL_AMFLAGS = -I m4
-m4datadir       = $(datadir)/aclocal
-m4data_DATA     = m4/magics.m4
-
-
-quiet:
-	make --quiet install
-
-
-#
-#  DOCS
-#
-docs: clean-docs
-	cd docs && \
-	doxygen Magics.dox
-	echo ""
-	echo " Warnings and errors are written in /docs/Magics.dox.error.out"
-	echo ""
-	echo " Now open file://${PWD}/docs/api/html/index.html in your browser."
-	echo ""
-
-manual:
-	cd docs/manual/ && \
-	./make_plots  && \
-	./make_all_docs -targets -pdf && \
-	./make_all_docs -pdf 
-	echo ""
-	echo " Manual (PDF) are in docs/manual/publish/pdf/*.pdf"
-	echo ""
-
-#
-#  CLEAN-UP
-#  
-clean-docs:
-	-rm -rf docs/api
-
-clean-output:
-	-rm -f test/*/*.svg test/*/*.ps test/*/*.eps test/*/*.pdf test/*/*.png test/*/*.gif test/*/*.kml
-
-clean-all: clean clean-coast clean-output
-	-rm -rf docs/api/html docs/api/xml
-	-rm -rf docs/www/html/test/*
-	-rm -rf test/*/*.o
-	-rm -f src/*/*Attributes.*
-
-
-#
-#  TEST SUITE
-#
-test-suite:
-	PATH=$(prefix)/bin:${PATH} ; cd docs/www/testsuite/progs/ ; ./setbin -shared ; ./cleanmpponly ; \
-	./make_testsuite -nomag69 -shared ; \
-	./make_c_testsuite ; \
-	./make_magml_testsuite
-
-test-suite-static:
-	cd docs/www/testsuite/progs/ ; ./setbin -static ; ./cleanmpponly
-	./make_testsuite -static
-
-
-RPM = rpm
-
-rpms srcrpm: dist
-	(cd rpms && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
-	rpmarch=`$(RPM) --showrc | grep "^build arch" | \
-	sed 's/\(.*: \)\(.*\)/\2/'`; \
-	test -z "rpms/$$rpmarch" || \
-	 ( mv rpms/$$rpmarch/* rpms/. && rm -rf rpms/$$rpmarch )
-	rm -rf rpms/$(distdir)
-
-.PHONY: srcrpm rpms
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 734b4cd..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,948 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/magics-config.in \
-	$(top_srcdir)/configure $(top_srcdir)/docs/Magics.dox.in \
-	AUTHORS COPYING ChangeLog INSTALL NEWS config/README \
-	config/config.guess config/config.sub config/depcomp \
-	config/install-sh config/ltmain.sh config/missing \
-	config/py-compile
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES = magics-config docs/Magics.dox
-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__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)"
-SCRIPTS = $(bin_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-DATA = $(m4data_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(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
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = src apps python/Magics test tools 
-DIST_SUBDIRS = src apps test tools python/Magics rpms
-EXTRA_DIST = LICENSE NOTICE config share version.sh m4/magics.m4
-bin_SCRIPTS = magics-config
-ACLOCAL_AMFLAGS = -I m4
-m4datadir = $(datadir)/aclocal
-m4data_DATA = m4/magics.m4
-RPM = rpm
-all: all-recursive
-
-.SUFFIXES:
-am--refresh:
-	@:
-$(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
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-magics-config: $(top_builddir)/config.status $(srcdir)/magics-config.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-docs/Magics.dox: $(top_builddir)/config.status $(top_srcdir)/docs/Magics.dox.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-install-binSCRIPTS: $(bin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
-	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-binSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool config.lt
-install-m4dataDATA: $(m4data_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(m4datadir)" || $(MKDIR_P) "$(DESTDIR)$(m4datadir)"
-	@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
-	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)$(m4datadir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \
-	done
-
-uninstall-m4dataDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(m4datadir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(m4datadir)" && rm -f $$files
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-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 \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    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__remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__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.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(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 a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(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" \
-	    $(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__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:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-	   || { 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 $(SCRIPTS) $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)"; 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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-m4dataDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-binSCRIPTS
-
-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-binSCRIPTS uninstall-m4dataDATA
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-	distcheck distclean distclean-generic distclean-libtool \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binSCRIPTS 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-m4dataDATA install-man install-pdf install-pdf-am \
-	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-recursive \
-	uninstall uninstall-am uninstall-binSCRIPTS \
-	uninstall-m4dataDATA
-
-
-quiet:
-	make --quiet install
-
-#
-#  DOCS
-#
-docs: clean-docs
-	cd docs && \
-	doxygen Magics.dox
-	echo ""
-	echo " Warnings and errors are written in /docs/Magics.dox.error.out"
-	echo ""
-	echo " Now open file://${PWD}/docs/api/html/index.html in your browser."
-	echo ""
-
-manual:
-	cd docs/manual/ && \
-	./make_plots  && \
-	./make_all_docs -targets -pdf && \
-	./make_all_docs -pdf 
-	echo ""
-	echo " Manual (PDF) are in docs/manual/publish/pdf/*.pdf"
-	echo ""
-
-#
-#  CLEAN-UP
-#  
-clean-docs:
-	-rm -rf docs/api
-
-clean-output:
-	-rm -f test/*/*.svg test/*/*.ps test/*/*.eps test/*/*.pdf test/*/*.png test/*/*.gif test/*/*.kml
-
-clean-all: clean clean-coast clean-output
-	-rm -rf docs/api/html docs/api/xml
-	-rm -rf docs/www/html/test/*
-	-rm -rf test/*/*.o
-	-rm -f src/*/*Attributes.*
-
-#
-#  TEST SUITE
-#
-test-suite:
-	PATH=$(prefix)/bin:${PATH} ; cd docs/www/testsuite/progs/ ; ./setbin -shared ; ./cleanmpponly ; \
-	./make_testsuite -nomag69 -shared ; \
-	./make_c_testsuite ; \
-	./make_magml_testsuite
-
-test-suite-static:
-	cd docs/www/testsuite/progs/ ; ./setbin -static ; ./cleanmpponly
-	./make_testsuite -static
-
-rpms srcrpm: dist
-	(cd rpms && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
-	rpmarch=`$(RPM) --showrc | grep "^build arch" | \
-	sed 's/\(.*: \)\(.*\)/\2/'`; \
-	test -z "rpms/$$rpmarch" || \
-	 ( mv rpms/$$rpmarch/* rpms/. && rm -rf rpms/$$rpmarch )
-	rm -rf rpms/$(distdir)
-
-.PHONY: srcrpm rpms
-
-# 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/VERSION.cmake b/VERSION.cmake
new file mode 100644
index 0000000..a36106f
--- /dev/null
+++ b/VERSION.cmake
@@ -0,0 +1,9 @@
+
+set ( _version 2.22.7 )
+if ( MAGICS_BUILD )
+    set( ${PROJECT_NAME}_VERSION_STR  "${_version}-${MAGICS_BUILD}" )   
+else ()
+    set( ${PROJECT_NAME}_VERSION_STR  ${_version})
+endif()
+
+set( BRANCH_NAME  ${${PROJECT_NAME}_VERSION_STR} )
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index be0f718..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,1374 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  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_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
-[m4_warning([this file was generated for autoconf 2.65.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# 
-# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
-#
-# 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 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# 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.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=m4_default([$1], [0.9.0])
-	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-		PKG_CONFIG=""
-	fi
-		
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists.  Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-#
-# Similar to PKG_CHECK_MODULES, make sure that the first instance of
-# this or PKG_CHECK_MODULES is called, or make sure to call
-# PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_ifval([$2], [$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
-
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
-		     [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
-        else 
-	        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
-	ifelse([$4], , [AC_MSG_ERROR(dnl
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT
-])],
-		[AC_MSG_RESULT([no])
-                $4])
-elif test $pkg_failed = untried; then
-	ifelse([$4], , [AC_MSG_FAILURE(dnl
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
-		[$4])
-else
-	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-	ifelse([$3], , :, [$3])
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  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.11'
-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.11.1], [],
-      [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.11.1])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, 2003, 2005  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, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# 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.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$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, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# 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.
-
-# serial 10
-
-# 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", "GCJ", or "OBJC".
-# 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
-
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" 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'.
-  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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# 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.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Autoconf 2.62 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"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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"])
-])
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# 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.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 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.
-
-# serial 16
-
-# 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.62])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],
-[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], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-  [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([AM_PROG_MKDIR_P])dnl
-# 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)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl 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, 2003, 2005, 2008  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, 2005  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.
-
-# serial 2
-
-# 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, 2002, 2003, 2005, 2009  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.
-
-# serial 4
-
-# 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, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# 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.
-
-# serial 6
-
-# 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 supports --run.
-# If it does, 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 --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006  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_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  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.
-
-# serial 4
-
-# _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, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009
-# 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.0 python2.5 python2.4 python2.3 python2.2 dnl
-python2.1 python2.0])
-
-  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 >= $1])
-      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-			      [AC_MSG_RESULT(yes)],
-			      [AC_MSG_ERROR(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])
-
-
-  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.  distutils does not exist in
-  dnl Python 1.5, so we fall back to the hardcoded directory if it
-  dnl doesn't work.
-  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 "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
-     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.  distutils does not exist in
-  dnl Python 1.5, so we fall back to the hardcoded directory if it
-  dnl doesn't work.
-  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 "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
-     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, 2003, 2005  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, 1997, 2000, 2001, 2003, 2005, 2008
-# 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.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# 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 (
-   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
-   rm -f conftest.file
-   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
-
-   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)])
-
-# Copyright (C) 2009  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.
-
-# serial 1
-
-# 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],
-[  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')])
-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
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001, 2003, 2005  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, 2008  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.
-
-# serial 2
-
-# _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, 2005  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.
-
-# serial 2
-
-# _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.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-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])
-    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_boost_base.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])
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
new file mode 100644
index 0000000..794fe42
--- /dev/null
+++ b/apps/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+add_subdirectory( metgram )
+add_subdirectory( MagMLInterpretor )
+
diff --git a/apps/MagMLInterpretor/CMakeLists.txt b/apps/MagMLInterpretor/CMakeLists.txt
new file mode 100644
index 0000000..1b97e35
--- /dev/null
+++ b/apps/MagMLInterpretor/CMakeLists.txt
@@ -0,0 +1,32 @@
+
+
+configure_file( magjson-script.in  magjson @ONLY )
+configure_file( magml-script.in  magml @ONLY )
+
+install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/magjson 
+			DESTINATION ${INSTALL_BIN_DIR} 
+			PERMISSIONS OWNER_READ GROUP_READ WORLD_READ 
+				        OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
+
+install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/magml 
+			DESTINATION ${INSTALL_BIN_DIR} 
+			PERMISSIONS OWNER_READ GROUP_READ WORLD_READ 
+				        OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
+
+ecbuild_add_executable( TARGET    magjsonx
+                     SOURCES
+                        json.cc
+                     DEFINITIONS
+                        ${MAGICS_EXTRA_DEFINITIONS}
+                    LIBS
+                        MagPlusShared ${MAGICS_EXTRA_LIBRARIES}
+                    )
+                    
+ecbuild_add_executable( TARGET    magmlx
+                     SOURCES
+                        magml.cc
+                     DEFINITIONS
+                        ${MAGICS_EXTRA_DEFINITIONS}
+					 LIBS
+                        MagPlusShared ${MAGICS_EXTRA_LIBRARIES}
+                    )
diff --git a/apps/MagMLInterpretor/Makefile.am b/apps/MagMLInterpretor/Makefile.am
deleted file mode 100644
index 6a8f249..0000000
--- a/apps/MagMLInterpretor/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-if MAGICS_BUFR
-FORTRAN_LIBS = $(FLIBS)
-endif
-
-if MAGICS_JSON
-JSON_PROG = magjson
-JSON_CODE = json.cc
-endif
-
-AM_LDFLAGS  = -L$(top_builddir)/src
-LIBS        = -lMagPlus ${MAGICS_3RDPARTY_LIBS} $(FORTRAN_LIBS) 
-
-#AM_LDFLAGS="-Wl,-rpath,$(libdir)"
-
-AM_CPPFLAGS	= -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/web
-
-if MAGICS_QT
-AM_CPPFLAGS += -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-AM_LDFLAGS  += $(QT_LIBS)
-endif
-
-
-bin_PROGRAMS	= magmlx ${JSON_PROG}
-magmlx_SOURCES	= magml.cc 
-magjson_SOURCES	= ${JSON_CODE}
diff --git a/apps/MagMLInterpretor/Makefile.in b/apps/MagMLInterpretor/Makefile.in
deleted file mode 100644
index eab5ba7..0000000
--- a/apps/MagMLInterpretor/Makefile.in
+++ /dev/null
@@ -1,633 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_QT_TRUE@am__append_1 = -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
- at MAGICS_QT_TRUE@am__append_2 = $(QT_LIBS)
-bin_PROGRAMS = magmlx$(EXEEXT) $(am__EXEEXT_1)
-subdir = apps/MagMLInterpretor
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
- at MAGICS_JSON_TRUE@am__EXEEXT_1 = magjson$(EXEEXT)
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
-am__magjson_SOURCES_DIST = json.cc
- at MAGICS_JSON_TRUE@am__objects_1 = json.$(OBJEXT)
-am_magjson_OBJECTS = $(am__objects_1)
-magjson_OBJECTS = $(am_magjson_OBJECTS)
-magjson_LDADD = $(LDADD)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am_magmlx_OBJECTS = magml.$(OBJEXT)
-magmlx_OBJECTS = $(am_magmlx_OBJECTS)
-magmlx_LDADD = $(LDADD)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(magjson_SOURCES) $(magmlx_SOURCES)
-DIST_SOURCES = $(am__magjson_SOURCES_DIST) $(magmlx_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = -lMagPlus ${MAGICS_3RDPARTY_LIBS} $(FORTRAN_LIBS) 
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
- at MAGICS_BUFR_TRUE@FORTRAN_LIBS = $(FLIBS)
- at MAGICS_JSON_TRUE@JSON_PROG = magjson
- at MAGICS_JSON_TRUE@JSON_CODE = json.cc
-AM_LDFLAGS = -L$(top_builddir)/src $(am__append_2)
-
-#AM_LDFLAGS="-Wl,-rpath,$(libdir)"
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel \
-	-I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common \
-	-I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers \
-	-I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/web \
-	$(am__append_1)
-magmlx_SOURCES = magml.cc 
-magjson_SOURCES = ${JSON_CODE}
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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) --foreign apps/MagMLInterpretor/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign apps/MagMLInterpretor/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)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	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
-magjson$(EXEEXT): $(magjson_OBJECTS) $(magjson_DEPENDENCIES) 
-	@rm -f magjson$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(magjson_OBJECTS) $(magjson_LDADD) $(LIBS)
-magmlx$(EXEEXT): $(magmlx_OBJECTS) $(magmlx_DEPENDENCIES) 
-	@rm -f magmlx$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(magmlx_OBJECTS) $(magmlx_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/json.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/magml.Po at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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 all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags 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 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/apps/MagMLInterpretor/grib.template b/apps/MagMLInterpretor/grib.template
new file mode 100644
index 0000000..3a3eec0
--- /dev/null
+++ b/apps/MagMLInterpretor/grib.template
@@ -0,0 +1,37 @@
+<magics version="1.0">
+  <definition>
+     <corners id="globe"/>      
+     <corners id="europe" 
+                     min_longitude = '-27'
+                     min_latitude  = '33'
+                     max_longitude = '45'
+                     max_latitude  = '73.5' />
+          
+  </definition>
+  
+  <page format='a4'>
+    <subpage>		
+		<mapview>		
+            <cylindrical> 
+                <corners use_id='${area=globe}' />
+            </cylindrical>
+        </mapview>
+			<coastlines>
+				<coast>
+					<colour>tan</colour>
+                    <landshading colour = 'cream'/>
+				</coast>
+				<grid>
+					<colour>tan</colour>
+				</grid>
+			</coastlines>
+			<layer>
+				<grib path='${grib=toto}'/>    
+				<geocontour> </geocontour>			
+			</layer>		
+		<text>  
+            <font colour='black'><magics_title/></font>
+        </text>
+	</subpage>
+   </page>   
+</magics>    
diff --git a/apps/MagMLInterpretor/gribview b/apps/MagMLInterpretor/gribview
new file mode 100755
index 0000000..cc722d9
--- /dev/null
+++ b/apps/MagMLInterpretor/gribview
@@ -0,0 +1,77 @@
+#!/bin/sh
+#set -x
+
+usage() {
+    echo "Usage: gribview [OPTIONS] grib_path"
+    echo "    -o name of the postscript file"
+    echo "    -e european plot"
+    echo "    -g global plot"
+    echo "    -n use new magics++"
+    echo "    -d turn on the debug messages"
+    exit 1
+}
+
+use magics++ > /dev/null
+
+# set default values
+output='magics.ps'
+dev='off'
+debug='off'
+area='globe'
+
+
+while getopts :p:o:degnxh options 
+do
+	case $options in
+	p)
+		echo "Grib to visualise->" $OPTARG
+		grib=$OPTARG
+		;;
+	o)
+		echo "Plot in file->" $OPTARG
+		output=$OPTARG
+		;;
+	d) 
+		echo "Turn on debug messages"
+		dev='on'
+		debug='on'
+		;;
+	e) 
+		echo "Europe Selected" 
+		area="europe"
+		;;
+	g) 
+		echo "globe Selected" 
+		area="globe"
+		;;  
+	n) 
+		use newmagics++ > /dev/null
+		echo "use new magics"
+		;;
+	x) 
+		use magicsX++ > /dev/null
+		echo "use test magics"
+		;;
+	h)
+		echo "help"
+		usage
+		;;
+	'?')
+		echo ""
+		echo "ERROR: No grib file was defined!"
+		echo ""
+		usage
+		;;
+	esac
+done
+
+shift `expr $OPTIND - 1`
+
+MAGPLUS_DEV=$dev
+MAGPLUS_DEBUG=$debug
+
+#tv7 $MAGPLUS_HOME/bin/magml -a grib.template -grib=$1 -area=$area -o $output
+
+magml $MAGPLUS_HOME/share/templates/grib.template -grib=$1 -area=$area -o $output
+
+gv $output
diff --git a/apps/MagMLInterpretor/json.cc b/apps/MagMLInterpretor/json.cc
index cd9604d..5f06943 100644
--- a/apps/MagMLInterpretor/json.cc
+++ b/apps/MagMLInterpretor/json.cc
@@ -1,4 +1,5 @@
 #include "WebFormat.h"
+#include "MetaData.h"
 
 using namespace magics;
 
@@ -25,14 +26,14 @@ pair<string, string> cut(const string& in)
 		}
 		c++;
 	}
-	return make_pair(var, current);
+	return std::make_pair(var, current);
 }
 
 void setVariable(const string& in, map<string, string>& variables)
 {
 	if(in[0] != '-')
 	{
-		MagLog::warning() << "argument " << in << " ignored."<<endl;
+		MagLog::warning() << "argument " << in << " ignored."<< std::endl;
 		return;
 	}
 	variables.insert(magml::cut(in.substr(1, in.size())));
@@ -40,13 +41,14 @@ void setVariable(const string& in, map<string, string>& variables)
 
 } //end of namespace magml
 
-int main(int argc, char **argv)
+int normal_main(int argc, char **argv)
 {
   try
     {
+	MetaDataVisitor::start();
 	if(argc<2)
 	{
-		cout << " Usage: " << argv[0] << " file.json [-varname=varvalue]"<< endl;
+		std::cout << " Usage: " << argv[0] << " file.json [-varname=varvalue]"<< endl;
 		exit (1);
 	}
 
@@ -61,14 +63,48 @@ int main(int argc, char **argv)
 			WebInterpretor::json(argv[1]);
 		}
 		catch (...) {
-			cout << argv[0] << " FAILED to dispatch JSON file!"<< endl;
+			std::cout << argv[0] << " FAILED to dispatch JSON file!"<< endl;
 			exit(1);
 		}
 	}
     }
     catch (MagicsException& e)
     {
-		cout << "MagJson: Catch Exception " << e << endl;
+		std::cout << "MagJson: Catch Exception " << e << endl;
 		exit(1);
     }
 }
+
+int server_main(int argc, char **argv)
+{
+    char line[10240];
+    cout << "MAGJSON_SERVER_MODE Ready" << endl;
+    for(;;) 
+    {
+        cin.getline(line, sizeof(line));
+        cout << "Running " << line << endl;
+		try {
+            MetaDataVisitor::start();
+            WebInterpretor::json(line);
+        }
+		catch (...) {
+			std::cout << argv[0] << " FAILED to dispatch JSON file!"<< endl;
+            cout << "CODE 1" << endl << flush;
+			exit(1);
+		}
+        cout << "CODE 0" << endl << flush;
+    }
+}
+
+int main(int argc, char **argv)
+{
+    if(getenv("MAGJSON_SERVER_MODE"))
+    {
+        server_main(argc,argv);
+    }
+    else
+    {
+        normal_main(argc,argv);
+    }
+    exit(0);
+}
diff --git a/apps/MagMLInterpretor/magjson-script.in b/apps/MagMLInterpretor/magjson-script.in
new file mode 100644
index 0000000..88515dc
--- /dev/null
+++ b/apps/MagMLInterpretor/magjson-script.in
@@ -0,0 +1,11 @@
+#!/bin/ksh
+#set -x
+
+# Platform dependent variables
+export MAGPLUS_HOME=@MAGICS_INSTALL_PATH@
+export LD_LIBRARY_PATH=$MAGPLUS_HOME/lib/:$2:$LD_LIBRARY_PATH
+echo $LD_LIBRARY_PATH
+
+# Call the real mars script
+exec $MAGPLUS_HOME/bin/magjsonx "$@"
+
diff --git a/apps/MagMLInterpretor/magml-script.in b/apps/MagMLInterpretor/magml-script.in
new file mode 100644
index 0000000..eb1c097
--- /dev/null
+++ b/apps/MagMLInterpretor/magml-script.in
@@ -0,0 +1,11 @@
+#!/bin/ksh
+#set -x
+
+# Platform dependent variables
+export MAGPLUS_HOME=@MAGICS_INSTALL_PATH@
+export LD_LIBRARY_PATH=$MAGPLUS_HOME/lib/:$2:$LD_LIBRARY_PATH
+echo $LD_LIBRARY_PATH
+
+# Call the real mars script
+exec $MAGPLUS_HOME/bin/magmlx "\$@"
+
diff --git a/apps/MagMLInterpretor/magml.cc b/apps/MagMLInterpretor/magml.cc
index 153abf4..1ab1e7d 100644
--- a/apps/MagMLInterpretor/magml.cc
+++ b/apps/MagMLInterpretor/magml.cc
@@ -49,7 +49,7 @@ pair<string, string> cut(const string& in)
 		}
 		c++;
 	}
-	return make_pair(var, current);
+	return std::make_pair(var, current);
 }
 
 void setVariable(const string& in, map<string, string>& variables)
diff --git a/apps/MagMLInterpretor/test.magml b/apps/MagMLInterpretor/test.magml
new file mode 100644
index 0000000..d37f7c3
--- /dev/null
+++ b/apps/MagMLInterpretor/test.magml
@@ -0,0 +1,17 @@
+<magics version='3.0'>
+    <drivers>
+        <ps fullname='${ps=myps.ps}' /> 
+    </drivers>
+    <page>
+        <map>
+            <coastlines/>
+            <plot>
+                <grib input_file_name='t850.grib'/>
+                <contour/>
+            </plot>
+        
+        </map>
+    
+    </page>
+
+</magics>
diff --git a/apps/MagMLInterpretor/web.magml b/apps/MagMLInterpretor/web.magml
new file mode 100644
index 0000000..61a45a3
--- /dev/null
+++ b/apps/MagMLInterpretor/web.magml
@@ -0,0 +1,39 @@
+<magics version='2.0' >
+  <drivers>    
+     <gif fullname='${gif=magics.gif}' output_name_first_page_number='off' />   
+  </drivers>
+  <definition>
+       <contour id='tempe'>
+         <noisoline colour='black'>
+            <shading>
+                <polygon><area_fill/></polygon>
+                <list colour_list='BLUE_PURPLE/BLUE_PURPLE/BLUE_PURPLE/BLUE_PURPLE/GREENISH_BLUE/BLUE_GREEN/BLUISH_GREEN/YELLOW_GREEN/GREENISH_YELLOW/YELLOW/ORANGISH_YELLOW/ORANGE_YELLOW/YELLOWISH_ORANGE/ORANGE/REDDISH_ORANGE/RED_ORANGE/ORANGISH_RED/RED/MAGENTA/MAGENTA' />
+            </shading>          
+                <interval  interval='5'/>
+              <nolabel/>
+              <nohighlight/>
+          </noisoline>
+          <nohilo/>
+      </contour>     
+  </definition> 
+  <page>
+  
+   <nopageid/>
+     <map >
+       <meta/>
+        <cylindrical >
+        </cylindrical>
+        
+        <layer>
+           <grib path='./t850.grib'/>
+           <contour use_id='tempe'/>            
+        </layer>            
+        <coastlines/>
+     
+       </map>
+  
+  </page>     
+  
+  
+  
+</magics>
diff --git a/apps/Makefile.am b/apps/Makefile.am
deleted file mode 100644
index f1f8d44..0000000
--- a/apps/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-AUTOMAKE_OPTIONS	= foreign
-
-if MAGICS_APPS
-SUBDIRS			= MagMLInterpretor metgram
-endif
diff --git a/apps/Makefile.in b/apps/Makefile.in
deleted file mode 100644
index 8559888..0000000
--- a/apps/Makefile.in
+++ /dev/null
@@ -1,644 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = apps
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = MagMLInterpretor metgram
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-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"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
- at MAGICS_APPS_TRUE@SUBDIRS = MagMLInterpretor metgram
-all: all-recursive
-
-.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) --foreign apps/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign apps/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
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    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
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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 Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-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 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:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	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/apps/metgram/10_days_epsgram.xml b/apps/metgram/10_days_epsgram.xml
deleted file mode 100644
index 4362af4..0000000
--- a/apps/metgram/10_days_epsgram.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0"?>
-<magics version="3.0" format="a4" orientation="portrait">
-	<definition>
-		
-		<epsgram id="station" 
-                station_name='$station' date='' time=''
-                latitude="$latitude" longitude="$longitude" station_height='$height'
-                eps_database='$database/epsdb'> 
-                <none/>
-        </epsgram>
-	
-        <text id="title" font='sansserif' colour='navy' font_size='0.4'
-               justification='left' display='absolute'>	
-		</text>
-		<horizontal_axis  axis_grid= "on"
-                    axis_grid_colour= "Rgb(0.5, 0.5, 0.5)"
-                    axis_grid_line_style= "dash"
-                    axis_line_colour= "navy"
-                    axis_minor_tick= "on"
-                    axis_minor_tick_colour= "navy"
-                    axis_tick_colour= "navy"
-                    axis_tick_label= "off" id="haxis"/>
-
-		<vertical_axis id="vaxis" 
-                    axis_grid="on"
-                    axis_grid_colour= "grey"
-                    axis_grid_line_style= "dash"
-                    axis_grid_reference_level= "0"
-                    axis_grid_reference_thickness= "1"
-                    axis_label_font="sansserif"
-                    axis_line="on"
-                    axis_line_colour="navy"
-                    axis_tick_colour="navy"
-                    axis_tick_label_colour="navy"
-                    axis_tick_label_height= "0.3"/>        
-		<map id='box'  margin_bottom='7%' margin_top='15%' border-colour='Rgb(0.5, 0.5, 0.5)'/>
-	</definition>
-	<drivers>
-		<$ps/>
-		<$pdf/>
-		<$png/>
-		<$gif/>
-		<$svg/>
-	</drivers>
-
-	<page height="7.5%" border='off'>
-		<nopageid/>
-	</page>
-
-	<page height="20%" border='off'>
-		<nopageid/> 
-		<map use_id='box'>
-		<cartesian>
-			<x_date   automatic='on'/>
-			<y_regular y_min='0' y_max='8'/>
-		</cartesian>  
-
-	<text margin_bottom='85%' use_id='title' > 
-         <font size='0.5'>EPS Meteogram </font><br/>
-         <font size='0.4'><spot_info key='station'/>  <spot_info key='location'/></font><br/>
-         <font size='0.4'>Deterministic Forecast and EPS Distribution <spot_info key='base_date'/> </font>
-         <br/><br/>
-         <font size='0.4'><spot_info key='parameter'/> </font>
-         </text>
-	<horizontal_axis  use_id="haxis"/>   
-	   <vertical_axis  use_id='vaxis'/> 
-	<plot>                
-			<epsgram use_id="station" parameter="cloud-cover" />
-			<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
-		</plot>
-	  </map>
-	</page>
-
-          <page height="20%" border='off'> 
-          <nopageid/> 
-          <map use_id='box'>
-       
-          <cartesian>
-			<x_date  automatic='on'/>
-            <y_regular automatic='on'/>
-           </cartesian>  
-           <horizontal_axis use_id='haxis'/>    
-		   <vertical_axis  use_id='vaxis'/>            
-           <text margin_bottom='90s%' use_id='title' > 
-         <font size='0.4'><spot_info key='parameter'/> </font>
-         </text>           
-           <plot>
-                <epsgram use_id="station" y_axis_threshold='3'  parameter="precip"/>
-				<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
-			</plot>
-		  </map>
-          </page>
-          <page height="20%" border='off'> 
-          <nopageid/>
-           <map  use_id='box'>
-       
-          <cartesian>
-			<x_date   automatic='on'/>
-            <y_regular automatic='on'/>
-           </cartesian>  
-           <horizontal_axis use_id='haxis'/>    
-		   <vertical_axis  use_id='vaxis'/> 
-           <text margin_bottom='85%' use_id='title' > 
-         <font size='0.4'><spot_info key='parameter'/> </font>
-         </text>
-         
-           <plot>
-                <epsgram use_id="station" parameter="10m-wind"/>
-				<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
-			</plot>
-		  </map>
-          </page>
-          <page height="30%" border='off'>
-        
-	   
-        <nopageid />
-        
-        <map   margin_bottom='30%' margin_top='15%' border-colour='Rgb(0.5, 0.5, 0.5)' >
-          <cartesian>
-			<x_date    automatic='on'/>
-            <y_regular automatic='on'/>
-           </cartesian>  
-           
-           <text margin_bottom='85%' use_id='title' > 
-         <font size='0.4'><spot_info key='parameter'/> </font>
-         </text>
-           <vertical_axis  use_id='vaxis'/>                                       
-          
-            <horizontal_axis 
-                axis_grid='on' 
-                axis_grid_line_style="dot" 
-                axis_grid_colour='kelly_green'
-                axis_date_type = "days"
-                axis_days_label=  "both" 
-                axis_days_label_colour = "navy"
-                axis_months_label_colour= "navy"
-                axis_days_label_height= "0.3"
-                axis_months_label_height= "0.3"
-                axis_years_label_height ="0.3"
-                axis_type= "date"
-                axis_years_label_colour = "navy" />
-                   
-			
-          
-           <plot>
-                <epsgram use_id="station" parameter="2mt"/>
-				<epsgraph legend='on' eps_legend_font_size= "0.4" eps_legend_font_colour= "navy"> <both/> </epsgraph>
-			</plot> 
-		   
-		  
-          
-           </map> 
-           <legend
-                border= "off"
-                bottom= "-10%"
-                display= "absolute"
-                height= "25%"
-                left= "0%"
-                
-                legend_entry_text_width= "99."
-                legend_plot_direction= "column"
-                legend_text_height= "0.5"
-                width= "60%"
-            />
-	</page>
-</magics>
diff --git a/apps/metgram/10_days_metgram_a3.xml b/apps/metgram/10_days_metgram_a3.xml
new file mode 100644
index 0000000..ead6485
--- /dev/null
+++ b/apps/metgram/10_days_metgram_a3.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0"?>
+<magics version="3.0" format="a3" orientation="portrait">
+	<definition>
+		<metgram id="station" 
+                station_name='$station' station_height="$height" 
+                latitude="$latitude" longitude="$longitude" 
+                date='$date' time="$time" 
+                eps_temperature_correction='yes'
+                database='$database/detdb'> $title 
+                <none/>
+        </metgram>
+	
+       <text id='title' margin_bottom='88%'
+                    font='sansserif' colour='blue' font_size='0.6'
+                    justification='left' display='absolute'/>
+       <text id='title_tempe' margin_bottom='87%'
+                    font='sansserif' colour='blue' font_size='0.6'
+                    justification='left' display='absolute'/>
+        <text id='title_wind' margin_bottom='80%'
+                    font='sansserif' colour='blue' font_size='0.6'
+                    justification='left' display='absolute'/>
+
+		<map id="box"  margin_bottom='7%' margin_top='15%' border-colour='kelly_green'/>			
+		<map id="box_wind"  margin_bottom='7%' margin_top='21%' border-colour='kelly_green'/>			
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>			
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>		
+			<noline/>
+            <label colour='kelly_green' lable='0.5'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</vertical_axis>
+	</definition>
+	<drivers>
+		<$ps/>
+		<$pdf/>
+		<$png/>
+		<$gif/>
+		<$svg/>
+	</drivers>
+   
+	<page height='8%' border='off'>
+		<$meta/>
+		<nopageid/>
+	</page>
+	<page height='15%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='15%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='15%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='15%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="21%" border='off'>
+			<pageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.5' />
+				<month label_height='0.5' label_colour='blue'> <monthandyear /> </month>
+				<noyear height='0.4'/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</magics>
diff --git a/apps/metgram/10_days_wave_epsgram_a3.xml b/apps/metgram/10_days_wave_epsgram_a3.xml
new file mode 100644
index 0000000..0bbdf01
--- /dev/null
+++ b/apps/metgram/10_days_wave_epsgram_a3.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0"?>
+<magics version="3.0" format="a3" orientation="portrait">
+	<definition>
+		<epsgram id="eps_wave" 
+                station_name='$station' 
+                latitude="$latitude" longitude="$longitude" 
+                time='' date=''
+                eps_temperature_correction='yes'
+                eps_database='$database/eps/db'> 
+                <none/>
+        </epsgram>
+        <epsgram id="eps_wave_det" 
+                station_name='$station' 
+                latitude="$latitude" longitude="$longitude" 
+                time='' date=''
+                eps_temperature_correction='yes'
+                eps_database='$database/det/db'> 
+                <none/>
+        </epsgram>
+
+
+        <epsgram id="eps_wind"               
+                station_name='$station' 
+                latitude="$latitude" longitude="$longitude" 
+                time='' date=''
+                eps_temperature_correction='yes'
+                eps_database='$database/epsdb'> 
+                <none/>
+        </epsgram>
+ 	
+        <text  id="title" justification="left" font_style='bold'  font_size='0.6' 
+            colour='navy' font='sansserif' border='off' />
+        	
+		<map id="box" border='on' 
+            border_colour='navy' border_thickness='2'/>
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='navy'>
+			<automatic/>
+			<nolabel/>
+			<date/>
+			<noline/>
+            <nominortick colour='kelly_green'/>			
+			<grid line_style="dash" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='navy'>
+			<automatic/>
+			<noline/>
+            <label colour='navy' quality='sansserif' height='0.5'/>
+ 			<grid line_style="dash" colour='kelly_green'/>
+            <tick colour='kelly_green'/>      
+		</vertical_axis>
+	</definition>
+    <drivers>
+        <$ps/>
+        <$pdf/>
+        <$png/>
+	<$gif/>
+	<$svg/>
+    </drivers>
+   
+    <page height="7%" border='off'><nopageid/> </page>
+    <page height="12%" border='off'>
+    <meta/>     
+     <nopageid/>
+        <text margin_left='10%' height='25%'  width='45%' use_id='title'/>
+        <legend  height='25%' width='40%' 
+                   plot_direction='column' columns='7'
+                   text_colour='navy' border='off' blanking='off'/>
+         <map height='58%' border='on'
+            border_colour='navy' border_thickness='2'>
+        
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="-43200" y_max="43200" />
+			</cartesian> 
+			
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"><nolabel/><notick/><nogrid/></vertical_axis> 
+			<plot>
+				<epsgram use_id="eps_wind" type='epsrose' parameter="249.140" 
+                    long_title='true' title_text='Wave Epsgram' long_title_height='off'
+                    parameter_title='Distribution of 10m Wind Direction'/>
+				<epswind rose_wind_colour='greenish_blue'/>
+			</plot> 
+            
+            </map>
+       
+
+        </page>
+     <page height="20%" border='off'>
+         <nopageid/>
+         <text height='10%' width='90%' use_id='title'/>
+         <map use_id='box' height='90%' margin_top='1%'>
+           <cartesian>
+			<x_date  automatic='on' />
+            <y_regular automatic='on' y_min='0' y_max='20' />
+           </cartesian>  
+                     
+                <plot>
+					<epsgram  use_id="eps_wind" type='epswave' parameter="165.128"  
+                        parameter_title='10m Wind Speed (m/s)'/>
+                    <epsgraph box_width='1.5' box_colour='greenish_blue' box_border_colour='navy'> <both/> </epsgraph>
+				</plot>
+          <horizontal_axis use_id="haxis"/>
+				<vertical_axis use_id="vaxis"/>
+			
+		</map>
+    </page>
+   
+    
+    <page height="20%" border='off'>
+        <nopageid/>
+         <text height='10%' width='90%' use_id='title'/>
+         <map use_id='box' height='90%' margin_top='1%'>
+           <cartesian>
+			<x_date  automatic='on' />
+            <y_regular automatic='on' y_min='0' y_max='20' />
+           </cartesian>            
+                <plot>
+					<epsgram use_id="eps_wave" type='epswave' parameter="229.140" parameter_title=' '/>
+                    <epsgraph box_width='1.5' box_colour='greenish_blue' box_border_colour='navy'> <both/> </epsgraph>
+				</plot>
+                <plot>
+					<epsgram use_id="eps_wave_det" type='epswave' parameter="229.140" parameter_title='Significant wave height (m)'/>
+                    <epsgraph box_width='1.5' box_colour='greenish_blue' box_border_colour='navy'> <both/> </epsgraph>
+				</plot>
+          <horizontal_axis use_id="haxis"/>
+				<vertical_axis use_id="vaxis"/>
+			
+		</map>
+    </page> 
+     <page height="10%" border='off'>
+         <nopageid/>
+         <text height='25%' margin_left='10%' width='40%' use_id='title' />  
+         <legend  width='35%' height='25%' 
+              
+                   text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/>
+         <map height='73%'  border='on'
+            border_colour='navy' border_thickness='2'>
+        
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="-43200" y_max="43200" />
+			</cartesian> 
+			
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"><nolabel/><notick/><nogrid/></vertical_axis> 
+			<plot>
+				<epsgram use_id="eps_wave" type='epsrose' parameter="230.140" parameter_title='Mean wave direction ( oceanographic convention )'/>
+				<epswave rose_wind_colour='Rgb(0.925, 0.609, 0.953)' rose_wind_convention='oceanographic'/>
+			</plot>
+             <plot>
+				<epsgram use_id="eps_wave_det" type='epsrose' parameter="230.140" parameter_title='ignore'/>
+				<epsdirection keyword='forecast' line_colour='blue' line_thickness='3' />
+			</plot>
+            <plot>
+				<epsgram use_id="eps_wave" type='epsrose' parameter="230.140" parameter_title='ignore'/>
+				<epsdirection keyword='control' line_colour='red' line_thickness='3' line_style='dash'/>
+			</plot>
+		
+         
+          </map>
+        </page>   
+    <page height="28%" border='off'>
+     <pageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' 
+                font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+         <text height='10%' use_id='title' width='90%'/>
+         <map height='65%' border='on' border_colour='navy' border_thickness='2' margin_top='1%'>
+          
+           <cartesian>
+			<x_date  automatic='on' />
+            <y_regular automatic='on'/>
+           </cartesian>  
+         
+                 <plot>
+					<epsgram use_id="eps_wave" type='epswave' parameter="232.140" parameter_title=' '/>
+                    <epsgraph box_width='1.5' box_colour='greenish_blue' box_border_colour='navy' 
+                    font='sansserif' font_colour='navy' legend_resolution='degrees'> <both/> </epsgraph>
+				</plot>
+                <plot>
+					<epsgram use_id="eps_wave_det" type='epswave' parameter="232.140" parameter_title='Mean wave period (s)'/>
+                    <epsgraph box_width='1.5' box_colour='greenish_blue' box_border_colour='navy' 
+                    font='sansserif' font_colour='navy' legend_resolution='degrees' > <both/> </epsgraph>
+				</plot>
+                <horizontal_axis use_id="haxis">
+					<date>
+                     <both label_colour='navy' label_height='0.5' />
+                     <month label_height='0.5' label_colour='navy'> <monthandyear /> </month>
+                     <noyear/>
+                    </date>
+                    <label quality='sansserif'/>
+			</horizontal_axis>
+            <vertical_axis use_id="vaxis"/>			          
+   		 		
+		</map>
+        <legend display='absolute' width='47%' height='20%' bottom='5.5%'
+                   plot_direction='column' columns='6'
+                   text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/>	
+    </page> 
+        
+
+		
+	
+</magics>
diff --git a/apps/metgram/15_days_epsgram.xml b/apps/metgram/15_days_epsgram.xml
deleted file mode 100644
index 6b6f035..0000000
--- a/apps/metgram/15_days_epsgram.xml
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0"?>
-<magics version="3.0" format="a4" orientation="portrait">
-	<definition>
-		<epsgram id="eps" 
-			type='eps15'
-			station_name='$station' 
-			latitude="$latitude" longitude="$longitude" 
-			date='$date' time="$time" station_height="$height" 
-			eps_temperature_correction='yes'
-			eps_database='$database/epsdb'> 
-			<none/>
-	</epsgram>
-	
-	<text id="title" justification="left" font_style='bold'  font_size='0.4' 
-	      colour='Rgb(0.5, 0.5, 0.5)' font='sansserif' />
-
-		<map id="box" margin_bottom='7%' margin_top='15%' 
-		     border-colour='grey' border-thickness='2'/>
-
-		<horizontal_axis id="haxis" 
-                    axis_grid= "on"
-                    axis_grid_colour= "grey"
-                    axis_grid_line_style= "dot"
-                    axis_line_colour= "charcoal"
-                    axis_minor_tick= "on"
-                    axis_minor_tick_colour= "charcoal"
-                    axis_tick_colour= "charcoal"
-                    axis_tick_label="off"
-                    axis_type= "date" />
-                
-		
-
-		<vertical_axis id="vaxis" 
-                    axis_grid= "on"
-                    axis_grid_colour= "grey"
-                    axis_grid_line_style= "dot"
-                    axis_grid_reference_level= "0"
-                    axis_grid_reference_thickness= "1"
-                    axis_label_font= "sansserif"
-                    axis_line= "on"
-                    axis_line_colour= "charcoal"
-                    axis_tick_colour= "charcoal"
-                    axis_tick_label_colour= "charcoal"
-                    axis_tick_label_height= "0.3" />
-
-	</definition>
-		<drivers>
-			<$ps/>
-			<$pdf/>
-			<$png/>
-			<$gif/>
-			<$svg/>
-		</drivers>
-
-	<page  height="7.5%" border='off'>
-		<nopageid/>       
-	</page>
-
-	<page  height="19%" border='off'>
-		<nopageid/>
-			<$meta/>
-			<map use_id='box'>
-				<text use_id='title' margin_bottom='85%' >
-                <font size='0.4'>Eps Meteogram</font> <br/>
-                <font size='0.4'><spot_info key='station'/></font> <br/>
-                <font size='0.4'>Extended Forecast based in EPS Distribution <spot_info key='base_date'/></font> <br/><br/>
-                <font size='0.4'><spot_info key='parameter'/></font> 
-                </text>
-				<cartesian>
-					<x_date  automatic='on' />
-					<y_regular automatic='on' />
-				</cartesian>  
-				<plot>
-					<epsgram use_id="eps" parameter="cloud-cover" long_title='true'/>                    
-					<epsgraph box_colour='Rgb(0.925, 0.609, 0.953)' box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
-				</plot>
-				<horizontal_axis use_id="haxis"/>
-				<vertical_axis use_id="vaxis"/>
-			</map>
-	</page>
-	<page height="19%" border='off'>
-		<nopageid/>
-		<map  use_id='box' >
-          <text use_id='title' margin_bottom='85%' >
-                 <font size='0.4'><spot_info key='parameter'/></font> 
-                </text>
-           <cartesian>
-			<x_date  automatic='on' />
-            <y_regular automatic='on' y_min='0' y_max='20' />
-           </cartesian>  
-          
-			
-                <plot>
-					<epsgram use_id="eps" parameter="precip"/>
-					<epsgraph max='20' box_colour='Rgb(0.49, 0.89, 0.51)' box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
-
-				</plot>
-           <horizontal_axis use_id="haxis"/>
-				<vertical_axis use_id="vaxis"/>
-			
-		</map> 
-	</page>
-	<page height="6%" border='off'>
-		<nopageid/>
-		<map margin_bottom='7%' margin_top='25%' 
-		     border-colour='grey' border-thickness='2'>
-			<cartesian>
-				<x_date automatic='on'/>
-				<y_regular  y_min="-43200" y_max="43200" />
-			</cartesian> 
-			 <text use_id='title' margin_bottom='75%' >
-                 <font size='0.4'><spot_info key='parameter'/></font> 
-                </text>
-			<horizontal_axis use_id="haxis"/>
-			<vertical_axis use_id="vaxis" axis_tick_label='off' axis_tick='off' axis_grid='off'></vertical_axis> 
-			<plot>
-				<epsgram use_id="eps" parameter="10m-wind-dd"/>
-				<epswind legend ='on' rose_wind_colour='gold' rose_wind_border_colour='Rgb(0.5000, 0.5000, 0.5000)'/>
-			</plot>
-       
-        </map> <legend display='absolute' bottom='50%' left='65%' width='20%' height='90%' 
-	        text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/> 
-        </page>
-	<page height="19%" border='off'>
-		<nopageid/>
-		<map use_id='box'>
-			 <text use_id='title' margin_bottom='85%' >
-                 <font size='0.4'><spot_info key='parameter'/></font> 
-                </text>
-			<cartesian>
-				<x_date  automatic='on' />
-				<y_regular automatic='on' y_min='0' y_max='20' />
-			</cartesian>  
-			<plot>
-				<epsgram use_id="eps" parameter="10m-wind"/>
-				<epsgraph box_colour='gold' box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
-			</plot>
-			<horizontal_axis use_id="haxis"/>
-			<vertical_axis use_id="vaxis"/>
-		</map>
-	</page>
-	<page height="28%" border='off'>
-		<pageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' 
-		        font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
-		<map margin_bottom='37%' margin_top='10%' border-colour='Rgb(0.5, 0.5, 0.5)' >
-			<cartesian>
-				<x_date automatic='on'/>
-				<y_regular automatic='on'/>
-			</cartesian>
-			<horizontal_axis axis_days_label= "both"
-                    axis_days_label_colour= "charcoal"
-                    axis_days_label_height= "0.3"
-                    axis_grid= "on"
-                    axis_grid_colour= "Rgb(0.5, 0.5, 0.5)"
-                    axis_grid_line_style= "dash"
-                    axis_line_colour= "charcoal"
-                    axis_minor_tick= "on"
-                    axis_minor_tick_colour= "charcoal"
-                    axis_months_label_colour= "charcoal"
-                    axis_months_label_height= "0.3"
-                    axis_tick_colour= "charcoal"
-                    axis_type= "date"
-                    axis_years_label_colour= "charcoal"
-                    axis_years_label_height= "0.3"
-            />			
-			<vertical_axis  use_id='vaxis'/> 
-			 <text use_id='title' margin_bottom='90%' >
-                 <font size='0.4'><spot_info key='parameter'/></font> 
-                </text>		
-			<plot>
-				<epsgram use_id="eps" parameter="temperature"/>
-				<epsgraph border_colour='Rgb(0.5, 0.5, 0.5)' legend='on'
-				left_box_colour='sky' box_median_colour='black' right_box_colour='RGB(1.0, 0.222, 0.222)'
-				font='sansserif' font_colour='Rgb(0.5, 0.5, 0.5)' box_colour='grey'
-				box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
-			</plot>
-		</map>
-		<legend display='absolute' bottom='0%' left='5%' width='20%' height='30%' 
-		        plot_direction='column' text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/>
-        
-	</page>
-</magics>
diff --git a/apps/metgram/CMakeLists.txt b/apps/metgram/CMakeLists.txt
new file mode 100644
index 0000000..f730430
--- /dev/null
+++ b/apps/metgram/CMakeLists.txt
@@ -0,0 +1,24 @@
+
+
+
+configure_file( metgram-script.in  metgram.sh @ONLY )
+
+install ( DIRECTORY templates DESTINATION ${INSTALL_DATA_DIR}/.. FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
+
+
+install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/metgram  ${CMAKE_CURRENT_BINARY_DIR}/metgram.sh 
+			DESTINATION ${INSTALL_BIN_DIR} 
+			PERMISSIONS OWNER_READ GROUP_READ WORLD_READ 
+				        OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
+
+
+ecbuild_add_executable( TARGET    metgramx
+                     SOURCES
+                        metgramx.cc
+                     DEFINITIONS
+                        ${MAGICS_EXTRA_DEFINITIONS}
+                    LIBS
+                        MagPlusShared ${MAGICS_EXTRA_LIBRARIES}
+                    )
+
+
diff --git a/apps/metgram/Makefile.am b/apps/metgram/Makefile.am
deleted file mode 100644
index 48a98c1..0000000
--- a/apps/metgram/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-if MAGICS_BUFR
-FORTRAN_LIBS	= $(FLIBS)
-endif
-
-magplus 	= -L$(top_builddir)/src -lMagPlus $(ODA_LIBS) 
-LDADD		=  $(magplus) ${MAGICS_3RDPARTY_LIBS} $(FORTRAN_LIBS)
-
-AM_CPPFLAGS	= -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/common -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders
-
-if MAGICS_QT
-AM_CPPFLAGS += -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-AM_LDFLAGS   = $(QT_LIBS)
-endif
-
-if MAGICS_METGRAM
-bin_SCRIPTS	= metgram
-endif
-
-if MAGICS_SPOT
-bin_PROGRAMS	= metgramx
-metgramx_SOURCES = metgramx.cc
-
-templatedir = $(datadir)/templates
-template_DATA = 10_days_epsgram.xml 10_days_epsgram_a3.xml \
-                15_days_epsgram.xml 15_days_epsgram_a3.xml \
-                10_days_metgram.xml 10_days_wave_epsgram.xml \
-                15_days_with_clim_epsgram.xml \
-                efi_distribution.xml new_efi_distribution.xml \
-                classic_plumes.json
-endif
-
-EXTRA_DIST	= metgram epsgram.template metgram.template \
-		eps15.xml eps10.xml \
-		eps10_a3.xml eps15_a3.xml epswave.xml\
-		10_days_epsgram.xml 10_days_epsgram_a3.xml \
-		15_days_epsgram.xml 15_days_epsgram_a3.xml \
-		10_days_metgram.xml 10_days_wave_epsgram.xml \
-		15_days_with_clim_epsgram.xml \
-		efi_distribution.xml new_efi_distribution.xml \
-		classic_plumes.json
-
diff --git a/apps/metgram/Makefile.in b/apps/metgram/Makefile.in
deleted file mode 100644
index 2097f61..0000000
--- a/apps/metgram/Makefile.in
+++ /dev/null
@@ -1,724 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_QT_TRUE@am__append_1 = -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
- at MAGICS_SPOT_TRUE@bin_PROGRAMS = metgramx$(EXEEXT)
-subdir = apps/metgram
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
-	"$(DESTDIR)$(templatedir)"
-PROGRAMS = $(bin_PROGRAMS)
-am__metgramx_SOURCES_DIST = metgramx.cc
- at MAGICS_SPOT_TRUE@am_metgramx_OBJECTS = metgramx.$(OBJEXT)
-metgramx_OBJECTS = $(am_metgramx_OBJECTS)
-metgramx_LDADD = $(LDADD)
-am__DEPENDENCIES_1 =
- at MAGICS_BUFR_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-metgramx_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-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'
-SCRIPTS = $(bin_SCRIPTS)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(metgramx_SOURCES)
-DIST_SOURCES = $(am__metgramx_SOURCES_DIST)
-DATA = $(template_DATA)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
- at MAGICS_BUFR_TRUE@FORTRAN_LIBS = $(FLIBS)
-magplus = -L$(top_builddir)/src -lMagPlus $(ODA_LIBS) 
-LDADD = $(magplus) ${MAGICS_3RDPARTY_LIBS} $(FORTRAN_LIBS)
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel \
-	-I$(top_srcdir)/src/common -I$(top_srcdir)/src/basic \
-	-I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers \
-	-I$(top_srcdir)/src/decoders $(am__append_1)
- at MAGICS_QT_TRUE@AM_LDFLAGS = $(QT_LIBS)
- at MAGICS_METGRAM_TRUE@bin_SCRIPTS = metgram
- at MAGICS_SPOT_TRUE@metgramx_SOURCES = metgramx.cc
- at MAGICS_SPOT_TRUE@templatedir = $(datadir)/templates
- at MAGICS_SPOT_TRUE@template_DATA = 10_days_epsgram.xml 10_days_epsgram_a3.xml \
- at MAGICS_SPOT_TRUE@                15_days_epsgram.xml 15_days_epsgram_a3.xml \
- at MAGICS_SPOT_TRUE@                10_days_metgram.xml 10_days_wave_epsgram.xml \
- at MAGICS_SPOT_TRUE@                15_days_with_clim_epsgram.xml \
- at MAGICS_SPOT_TRUE@                efi_distribution.xml new_efi_distribution.xml \
- at MAGICS_SPOT_TRUE@                classic_plumes.json
-
-EXTRA_DIST = metgram epsgram.template metgram.template \
-		eps15.xml eps10.xml \
-		eps10_a3.xml eps15_a3.xml epswave.xml\
-		10_days_epsgram.xml 10_days_epsgram_a3.xml \
-		15_days_epsgram.xml 15_days_epsgram_a3.xml \
-		10_days_metgram.xml 10_days_wave_epsgram.xml \
-		15_days_with_clim_epsgram.xml \
-		efi_distribution.xml new_efi_distribution.xml \
-		classic_plumes.json
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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) --foreign apps/metgram/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign apps/metgram/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)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-	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
-metgramx$(EXEEXT): $(metgramx_OBJECTS) $(metgramx_DEPENDENCIES) 
-	@rm -f metgramx$(EXEEXT)
-	$(AM_V_CXXLD)$(CXXLINK) $(metgramx_OBJECTS) $(metgramx_LDADD) $(LIBS)
-install-binSCRIPTS: $(bin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
-	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-binSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/metgramx.Po at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-templateDATA: $(template_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(templatedir)" || $(MKDIR_P) "$(DESTDIR)$(templatedir)"
-	@list='$(template_DATA)'; test -n "$(templatedir)" || list=; \
-	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)$(templatedir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(templatedir)" || exit $$?; \
-	done
-
-uninstall-templateDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(template_DATA)'; test -n "$(templatedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(templatedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(templatedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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) $(SCRIPTS) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(templatedir)"; 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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-templateDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS install-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-binSCRIPTS \
-	uninstall-templateDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags 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-binSCRIPTS 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 install-templateDATA \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-binPROGRAMS \
-	uninstall-binSCRIPTS uninstall-templateDATA
-
-
-# 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/apps/metgram/anna.pl b/apps/metgram/anna.pl
new file mode 100755
index 0000000..1279344
--- /dev/null
+++ b/apps/metgram/anna.pl
@@ -0,0 +1,577 @@
+#!/webapps/bin/perl
+
+##!/usr/local/bin/perl56 
+use strict;
+
+use Data::Dumper;
+use CGI;
+use XML::Parser;
+use Image::Magick;
+use IO::Socket;
+use POSIX qw(:sys_wait_h);
+#use HTML::Entities;
+use Time::Local;
+use Time::localtime;
+
+my %X = (
+	'AElig'		=>	'A',
+	'Aacute'	=>	'A',
+	'Abreve'	=>	'A',
+	'Acirc'		=>	'A',
+	'Agrave'	=>	'A',
+	'Amacr'		=>	'A',
+	'Aogon'		=>	'A',
+	'Aring'		=>	'A',
+	'Atilde'	=>	'A',
+	'Auml'		=>	'A',
+	'Cacute'	=>	'C',
+	'Ccaron'	=>	'C',
+	'Ccedil'	=>	'C',
+	'Ccirc'		=>	'C',
+	'Cdot'		=>	'C',
+	'Dcaron'	=>	'D',
+	'Dstrok'	=>	'D',
+	'Dstroke'	=>	'D',
+	'Eacute'	=>	'E',
+	'Ecaron'	=>	'E',
+	'Ecirc'		=>	'E',
+	'Edot'		=>	'E',
+	'Egrave'	=>	'E',
+	'Emacr'		=>	'E',
+	'Eogon'		=>	'E',
+	'Euml'		=>	'E',
+	'Gbreve'	=>	'G',
+	'Gcedil'	=>	'G',
+	'Gcirc'		=>	'G',
+	'Gdot'		=>	'G',
+	'Hcirc'		=>	'H',
+	'Hstrok'	=>	'H',
+	'IJlig'		=>	'IJ',
+	'Iacute'	=>	'I',
+	'Icirc'		=>	'I',
+	'Idot'		=>	'I',
+	'Igrave'	=>	'I',
+	'Imacr'		=>	'I',
+	'Iogon'		=>	'I',
+	'Itilde'	=>	'I',
+	'Iuml'		=>	'I',
+	'Jcirc'		=>	'J',
+	'Kcedil'	=>	'K',
+	'Lacute'	=>	'L',
+	'Lcaron'	=>	'L',
+	'Lcedil'	=>	'L',
+	'Lmidot'	=>	'L',
+	'Lstrok'	=>	'L',
+	'Lstroke'	=>	'L',
+	'ENG'           =>      'N',
+	'Nacute'	=>	'N',
+	'Ncaron'	=>	'N',
+	'Ncedil'	=>	'N',
+	'Ntilde'	=>	'N',
+	'OElig'		=>	'OE',
+	'Oacute'	=>	'O',
+	'Ocirc'		=>	'O',
+	'Odblac'	=>	'O',
+	'Ograve'	=>	'O',
+	'Omacr'		=>	'O',
+	'Oslash'	=>	'O',
+	'Otilde'	=>	'O',
+	'Ouml'		=>	'O',
+	'Racute'	=>	'R',
+	'Rcaron'	=>	'R',
+	'Rcedil'	=>	'R',
+	'Sacute'	=>	'S',
+	'Scaron'	=>	'S',
+	'Scedil'	=>	'S',
+	'Scirc'		=>	'S',
+	'Tcaron'	=>	'T',
+	'Tcedil'	=>	'T',
+	'Tstrok'	=>	'T',
+	'Uacute'	=>	'U',
+	'Ubreve'	=>	'U',
+	'Ucirc'		=>	'U',
+	'Udblac'	=>	'U',
+	'Ugrave'	=>	'U',
+	'Umacr'		=>	'U',
+	'Uogon'		=>	'U',
+	'Uring'		=>	'U',
+	'Utilde'	=>	'U',
+	'Uuml'		=>	'U',
+	'Wcirc'		=>	'W',
+	'Yacute'	=>	'Y',
+	'Ycirc'		=>	'Y',
+	'Yuml'		=>	'Y',
+	'Zacute'	=>	'Z',
+	'Zcaron'	=>	'Z',
+	'Zdot'		=>	'Z',
+	'aacute'	=>	'a',
+	'abreve'	=>	'a',
+	'acirc'		=>	'a',
+	'aelig'		=>	'a',
+	'agrave'	=>	'a',
+	'amacr'		=>	'a',
+	'Dstroke'	=>	'D',
+	'Lstroke'	=>	'L',
+	'cedilla'	=>	'c',
+	'lstroke'	=>	'l',
+	'aogon'		=>	'a',
+	'aring'		=>	'a',
+	'atilde'	=>	'a',
+	'auml'		=>	'a',
+	'cacute'	=>	'c',
+	'ccaron'	=>	'c',
+	'ccedil'	=>	'c',
+	'ccirc'		=>	'c',
+	'cdot'		=>	'c',
+	'dcaron'	=>	'd',
+	'dotlessi'	=>	'i',
+	'dstrok'	=>	'd',
+	'eacute'	=>	'e',
+	'ecaron'	=>	'e',
+	'ecirc'		=>	'e',
+	'edot'		=>	'e',
+	'egrave'	=>	'e',
+	'emacr'		=>	'e',
+	'eogon'		=>	'e',
+	'euml'		=>	'e',
+	'fnof'		=>	'f',
+	'gacute'	=>	'g',
+	'gbreve'	=>	'g',
+	'gcirc'		=>	'g',
+	'gdot'		=>	'g',
+	'hcirc'		=>	'h',
+	'hstrok'	=>	'h',
+	'iacute'	=>	'i',
+	'icirc'		=>	'i',
+	'igrave'	=>	'i',
+	'ijlig'		=>	'ij',
+	'imacr'		=>	'i',
+	'inodot'	=>	'i',
+	'iogon'		=>	'i',
+	'itilde'	=>	'i',
+	'iuml'		=>	'i',
+	'jcirc'		=>	'j',
+	'kcedil'	=>	'k',
+	'kgreen'	=>	'k',
+	'lacute'	=>	'l',
+	'lcaron'	=>	'l',
+	'lcedil'	=>	'l',
+	'lmidot'	=>	'l',
+	'lstrok'	=>	'l',
+	'lstroke'	=>	'l',
+	'eng'           =>      'n',
+	'nacute'	=>	'n',
+	'napos'		=>	'n',
+	'ncaron'	=>	'n',
+	'ncedil'	=>	'n',
+	'ntilde'	=>	'n',
+	'oacute'	=>	'o',
+	'ocirc'		=>	'o',
+	'odblac'	=>	'o',
+	'oelig'		=>	'oe',
+	'ograve'	=>	'o',
+	'omacr'		=>	'o',
+	'oslash'	=>	'o',
+	'otilde'	=>	'o',
+	'ouml'		=>	'o',
+	'racute'	=>	'r',
+	'rcaron'	=>	'r',
+	'rcedil'	=>	'r',
+	'sacute'	=>	's',
+	'scaron'	=>	's',
+	'scedil'	=>	's',
+	'scirc'		=>	's',
+	'sup1'		=>	'1',
+	'szlig'		=>	's',
+	'tcaron'	=>	't',
+	'tcedil'	=>	't',
+	'tstrok'	=>	't',
+	'uacute'	=>	'u',
+	'ubreve'	=>	'u',
+	'ucirc'		=>	'u',
+	'udblac'	=>	'u',
+	'ugrave'	=>	'u',
+	'umacr'		=>	'u',
+	'uogon'		=>	'u',
+	'uring'		=>	'u',
+	'utilde'	=>	'u',
+	'uuml'		=>	'u',
+	'wcirc'		=>	'w',
+	'yacute'	=>	'y',
+	'ycirc'		=>	'y',
+	'yuml'		=>	'y',
+	'zacute'	=>	'z',
+	'zcaron'	=>	'z',
+	'zdot'		=>	'z'
+);
+
+
+
+
+
+$ENV{MAGPLUS_HOME}    = $ARGV[1];
+$ENV{LD_LIBRARY_PATH} = "$ENV{MAGPLUS_HOME}/lib:$ENV{LD_LIBRARY_PATH}";
+
+
+my $ROOT = qw(/webapps/epsgrams/data/);
+my $port = $ARGV[0];
+
+sub REAPER {
+	print "$$: SIG{CHLD}\n";
+	1 until(waitpid(-1,WNOHANG) <= 0);
+	$SIG{CHLD} = \&REAPER;
+}
+
+
+
+sub calcul_time {
+    my ($basetime, $deltahour, $deltamin) = @_;
+    my ($vyear, $vmonth, $vday, $vhour) =$basetime=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+    my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $delta=              0+
+                $deltamin*60 +
+                $deltahour*60*60;
+    my $newtime = $time+ $delta;
+    my $tm = localtime($newtime);
+    my $year = $tm->year+1900;
+    my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+    my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+    my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+    my $min = $tm->min; if ($min<10) { $min = "0$min";};
+    return "$year$month$day$hour";
+}
+
+# $SIG{CHLD} = \&REAPER;
+
+my $server = IO::Socket::INET->new(
+		LocalPort => $port,
+		Reuse     => 1,
+		Listen    => 10,
+		Type      => SOCK_STREAM
+		);
+
+
+for(;;)
+{
+#	$SIG{CHLD} = "IGNORE";
+	my $client = $server->accept();
+#	$SIG{CHLD} = \&REAPER;
+
+	next unless(defined $client);
+
+
+	my $pid = fork;
+
+	if($pid)
+	{
+		waitpid($pid,0);
+		close($client);
+		next;
+	}
+
+	unless(defined $pid)
+	{
+#	print $client "ERROR: fork: $!\n";
+		close($client);
+		warn "fork: $!";
+		next;
+	}	
+
+	# Double fork
+	if(fork) {
+		exit(0);
+	}
+
+	close($server);
+
+	alarm(15);
+
+	eval {
+		local $/;
+		my $request = <$client>;
+		my $VAR1;
+		eval $request;
+		#print Dumper($$,$VAR1);
+		my $x = dispatch($VAR1,$client);
+		print $client "REPLY\n";
+		print $client Dumper($x);
+
+	};
+
+	close($client);
+	exit(0);
+
+}
+
+sub dispatch {
+	my ($request,$soc) = @_;
+
+	my $result = {};
+
+	eval {
+
+
+# print Dumper($VAR1);
+		$request->{expver} = "0001"    unless($request->{expver});
+		$request->{database}   = "10_days" unless($request->{database});
+
+		my $action = $request->{action};
+		$result = main->$action($request,$soc);
+
+
+	};
+
+
+	if($@)
+	{
+		$result = { error => $@ }	;
+		print STDERR $@;
+	}
+
+	#print Dumper($$,$result);
+
+	return $result;
+
+}
+
+
+
+sub date_list {
+	my ($self,$args,$soc) = @_;
+
+	my $expver;
+	my $database;
+	my $list = {};
+
+	opendir(ROOT,$ROOT);
+	while($database = readdir(ROOT))
+	{
+		next  unless($database =~ /^\d\d_days/)  ;
+
+		opendir(BASE,"$ROOT/$database");
+		while($expver = readdir(BASE))
+		{
+
+			next  unless($expver =~ /^\d\d\d\d$/)  ;
+
+			my %x;
+			my $x;
+
+			my $latest = readlink("$ROOT/$database/$expver/latest");
+			$latest = 999999999999 unless($latest);
+
+			opendir(DIR,"$ROOT/$database/$expver") or die "$ROOT/$args->{expver}: $!";
+			while($x = readdir(DIR))
+			{ 
+				next unless($x =~ /^(\d\d\d\d\d\d\d\d)(\d\d)/)	;
+				my $date = "$1$2";
+				$x{$date}++ if($date <= $latest);
+			}
+			closedir(DIR);
+			$list->{$database}->{$expver} = { dates => [sort keys %x], latest => $latest };
+		}
+		closedir(BASE);
+	}
+	closedir(ROOT);
+
+	return $list;
+}
+
+sub last_thursday {
+        my ($basedate) = @_;
+
+    my ($vyear, $vmonth, $vday, $vhour) =$basedate=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+        my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $tm = localtime($time);
+    my $wday = $tm->wday;
+	my $delta;
+    
+    if ($wday < 4){
+        $delta = ($wday-4)+7;
+    }
+    else {
+        $delta = $wday-4;
+    }
+    $delta= $delta*24*60*60 + $vhour*60*60;
+    
+
+        my $newtime = $time-$delta;
+        my $tm = localtime($newtime);
+
+    
+    my $year = $tm->year+1900;
+        my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+        my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+        my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+        my $min = $tm->min; if ($min<10) { $min = "0$min";};
+
+    
+    return "$year$month$day$hour";
+} 
+
+sub make_eps {
+	my ($self,$args,$soc) = @_;
+
+	print Dumper($args);
+
+	my $basetime = sprintf('%d%02d',$args->{date},$args->{time}/100);
+
+
+	my $tmp = "/webapps/epsgrams/work/epsgram_wind.$$";
+	my $ext = $args->{type};
+
+	$ext = "ps" if($args->{type} eq "pdf");
+
+
+	# $args->{title} =~ s/'/&#x39;/g;
+	# $args->{title} =~ s/'/ /g;
+	$args->{title} =~ s/'/"/g;
+
+	$args->{title}  = "" if($args->{title} eq "none");
+	$args->{height} = "" if($args->{height} eq "none");
+
+	my $fail;
+
+	my $name = $args->{title};
+	$args->{title} =~ s/\&(\w+);/$X{$1}/ge;
+
+	my $database = $args->{database};
+	my $databases = {};
+    my $template="$database\_epsgram.xml";
+
+	if ( $database eq '15_days_with_clim' ) { 
+		$databases->{database_eps} = "$ROOT/15_days/$args->{expver}/$basetime";
+		my $clim = last_thursday($basetime);
+		$databases->{database_clim} = "$ROOT/clim_15_days/$args->{expver}/$clim";
+	}
+
+	elsif ( $database eq 'efi_distribution' ) { 
+		$database = "15_days";
+        $template='efi_distribution.xml';
+		my $step = -12;
+		$basetime = sprintf('%d%02d',$args->{date},12);
+		my $validtime = sprintf('%d%02d',$args->{vdate},12);
+		while ( $step  >= -120) {
+			my $date = calcul_time($validtime, $step, 00);
+			my $db_eps = "database_eps$step\h";
+			my $db_efi = "database_efi$step\h";
+		    $databases->{$db_eps} = "$ROOT/15_days/$args->{expver}/$date";
+		    $databases->{$db_efi} = "$ROOT/efi/$args->{expver}/$date";
+			$step = $step-12;
+        }
+		my $clim = last_thursday($basetime);
+		$databases->{database_clim} = "$ROOT/clim_15_days/$args->{expver}/$clim";
+	
+    }
+	else {
+		$databases->{database} = "$ROOT/$database/$args->{expver}/$basetime";
+
+  }		
+
+	open(OUT,">$tmp.in.xml") or die "$tmp.in.xml: $!";
+	print OUT <<"EOF";
+	<eps  
+		template='$template' 
+EOF
+	foreach my $db (keys %{$databases} )  {
+		print OUT "\t\t$db='$databases->{$db}'\n";
+		print "$db='$databases->{$db}'\n";
+	}
+
+	print OUT <<"EOF";
+		>
+
+		<station 
+		name       = '$args->{title}'
+		latitude   = '$args->{latitude}' 
+		longitude  = '$args->{longitude}'
+		height     = '$args->{height}'
+		psfile     = '$tmp.ps' 
+		metafile   = '$tmp.xml'
+		/><name>$name</name>
+		</eps>
+EOF
+		close(OUT) or die "$tmp.in.xml: $!";
+
+ system("$ENV{MAGPLUS_HOME}/bin/metgram","$tmp.in.xml") or $fail++;
+ system("cat $tmp.in.xml>anna.xml");
+#	system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>/dev/null 2>/dev/null");
+#system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>&2");
+		#system("cat $tmp.in.xml");
+
+# if($args->{type} eq "pdf")
+	{
+		my $density = 72;
+		my $rotate  = 90;
+		my $file = "$tmp.ps";
+
+		system("ps2pdf $tmp.ps $tmp.pdf");
+
+if(1) {
+		my $image = Image::Magick->new;
+		$image->Read($file);
+#$image->Set(Density => $density);
+#    $image->Rotate(degrees => $rotate) unless $rotate == 0;
+		#$image->Trim(background => '#FFFFFF');
+		#$image->Border(width=>10,height=>10,color=>"#ffffff");
+		$file =~ s/\.(\w+)$/\.gif/;
+		$image->Write($file);
+		}
+
+	}
+
+# system("scp","$tmp.$args->{type}","$args->{host}:$args->{path}.$args->{type}");
+
+	foreach my $e ( qw(gif ps pdf xml) )
+	{
+		send_file("$tmp.$e","$args->{path}.$e",$soc);
+	}
+
+	my $x = { foo=> 'bar'};
+	eval {
+		#system("cat $tmp.xml");
+		$x = XML::Parser->new(Style => 'Objects')->parsefile("$tmp.xml");
+		#print Dumper($x);
+	};
+
+
+	unlink("$tmp.ps");
+	unlink("$tmp.pdf");
+	unlink("$tmp.gif");
+	unlink("$tmp.xml");
+	unlink("$tmp.in.xml");
+
+	return $x;
+
+}
+
+sub send_file {
+	my ($src,$target,$soc) = @_;
+	
+	my $size = -s $src;
+	return unless($size);
+
+	open(IN,"<$src") or return;
+
+	print $soc "FILE\n$size\n$target\n";
+	print  "FILE $size $target\n";
+
+	my $buf;
+	my $buflen = 64*1024;
+	my $read; 
+	my $total = 0;
+	my $w;
+
+	while(($read = sysread(IN,$buf,$buflen)) > 0)
+	{
+		 $w = syswrite($soc,$buf,$read);
+		 print STDERR "WRITE $w $read\n";
+		 $total += $read;
+	}
+
+	close(IN);
+	print "SENT $total\n";
+}
+
+
+
diff --git a/apps/metgram/efiserver.pl b/apps/metgram/efiserver.pl
new file mode 100755
index 0000000..51e1c21
--- /dev/null
+++ b/apps/metgram/efiserver.pl
@@ -0,0 +1,579 @@
+#!/webapps/bin/perl
+
+##!/usr/local/bin/perl56 
+use strict;
+
+use Data::Dumper;
+use CGI;
+use XML::Parser;
+use Image::Magick;
+use IO::Socket;
+use POSIX qw(:sys_wait_h);
+#use HTML::Entities;
+use Time::Local;
+use Time::localtime;
+
+my %X = (
+	'AElig'		=>	'A',
+	'Aacute'	=>	'A',
+	'Abreve'	=>	'A',
+	'Acirc'		=>	'A',
+	'Agrave'	=>	'A',
+	'Amacr'		=>	'A',
+	'Aogon'		=>	'A',
+	'Aring'		=>	'A',
+	'Atilde'	=>	'A',
+	'Auml'		=>	'A',
+	'Cacute'	=>	'C',
+	'Ccaron'	=>	'C',
+	'Ccedil'	=>	'C',
+	'Ccirc'		=>	'C',
+	'Cdot'		=>	'C',
+	'Dcaron'	=>	'D',
+	'Dstrok'	=>	'D',
+	'Dstroke'	=>	'D',
+	'Eacute'	=>	'E',
+	'Ecaron'	=>	'E',
+	'Ecirc'		=>	'E',
+	'Edot'		=>	'E',
+	'Egrave'	=>	'E',
+	'Emacr'		=>	'E',
+	'Eogon'		=>	'E',
+	'Euml'		=>	'E',
+	'Gbreve'	=>	'G',
+	'Gcedil'	=>	'G',
+	'Gcirc'		=>	'G',
+	'Gdot'		=>	'G',
+	'Hcirc'		=>	'H',
+	'Hstrok'	=>	'H',
+	'IJlig'		=>	'IJ',
+	'Iacute'	=>	'I',
+	'Icirc'		=>	'I',
+	'Idot'		=>	'I',
+	'Igrave'	=>	'I',
+	'Imacr'		=>	'I',
+	'Iogon'		=>	'I',
+	'Itilde'	=>	'I',
+	'Iuml'		=>	'I',
+	'Jcirc'		=>	'J',
+	'Kcedil'	=>	'K',
+	'Lacute'	=>	'L',
+	'Lcaron'	=>	'L',
+	'Lcedil'	=>	'L',
+	'Lmidot'	=>	'L',
+	'Lstrok'	=>	'L',
+	'Lstroke'	=>	'L',
+	'ENG'           =>      'N',
+	'Nacute'	=>	'N',
+	'Ncaron'	=>	'N',
+	'Ncedil'	=>	'N',
+	'Ntilde'	=>	'N',
+	'OElig'		=>	'OE',
+	'Oacute'	=>	'O',
+	'Ocirc'		=>	'O',
+	'Odblac'	=>	'O',
+	'Ograve'	=>	'O',
+	'Omacr'		=>	'O',
+	'Oslash'	=>	'O',
+	'Otilde'	=>	'O',
+	'Ouml'		=>	'O',
+	'Racute'	=>	'R',
+	'Rcaron'	=>	'R',
+	'Rcedil'	=>	'R',
+	'Sacute'	=>	'S',
+	'Scaron'	=>	'S',
+	'Scedil'	=>	'S',
+	'Scirc'		=>	'S',
+	'Tcaron'	=>	'T',
+	'Tcedil'	=>	'T',
+	'Tstrok'	=>	'T',
+	'Uacute'	=>	'U',
+	'Ubreve'	=>	'U',
+	'Ucirc'		=>	'U',
+	'Udblac'	=>	'U',
+	'Ugrave'	=>	'U',
+	'Umacr'		=>	'U',
+	'Uogon'		=>	'U',
+	'Uring'		=>	'U',
+	'Utilde'	=>	'U',
+	'Uuml'		=>	'U',
+	'Wcirc'		=>	'W',
+	'Yacute'	=>	'Y',
+	'Ycirc'		=>	'Y',
+	'Yuml'		=>	'Y',
+	'Zacute'	=>	'Z',
+	'Zcaron'	=>	'Z',
+	'Zdot'		=>	'Z',
+	'aacute'	=>	'a',
+	'abreve'	=>	'a',
+	'acirc'		=>	'a',
+	'aelig'		=>	'a',
+	'agrave'	=>	'a',
+	'amacr'		=>	'a',
+	'Dstroke'	=>	'D',
+	'Lstroke'	=>	'L',
+	'cedilla'	=>	'c',
+	'lstroke'	=>	'l',
+	'aogon'		=>	'a',
+	'aring'		=>	'a',
+	'atilde'	=>	'a',
+	'auml'		=>	'a',
+	'cacute'	=>	'c',
+	'ccaron'	=>	'c',
+	'ccedil'	=>	'c',
+	'ccirc'		=>	'c',
+	'cdot'		=>	'c',
+	'dcaron'	=>	'd',
+	'dotlessi'	=>	'i',
+	'dstrok'	=>	'd',
+	'eacute'	=>	'e',
+	'ecaron'	=>	'e',
+	'ecirc'		=>	'e',
+	'edot'		=>	'e',
+	'egrave'	=>	'e',
+	'emacr'		=>	'e',
+	'eogon'		=>	'e',
+	'euml'		=>	'e',
+	'fnof'		=>	'f',
+	'gacute'	=>	'g',
+	'gbreve'	=>	'g',
+	'gcirc'		=>	'g',
+	'gdot'		=>	'g',
+	'hcirc'		=>	'h',
+	'hstrok'	=>	'h',
+	'iacute'	=>	'i',
+	'icirc'		=>	'i',
+	'igrave'	=>	'i',
+	'ijlig'		=>	'ij',
+	'imacr'		=>	'i',
+	'inodot'	=>	'i',
+	'iogon'		=>	'i',
+	'itilde'	=>	'i',
+	'iuml'		=>	'i',
+	'jcirc'		=>	'j',
+	'kcedil'	=>	'k',
+	'kgreen'	=>	'k',
+	'lacute'	=>	'l',
+	'lcaron'	=>	'l',
+	'lcedil'	=>	'l',
+	'lmidot'	=>	'l',
+	'lstrok'	=>	'l',
+	'lstroke'	=>	'l',
+	'eng'           =>      'n',
+	'nacute'	=>	'n',
+	'napos'		=>	'n',
+	'ncaron'	=>	'n',
+	'ncedil'	=>	'n',
+	'ntilde'	=>	'n',
+	'oacute'	=>	'o',
+	'ocirc'		=>	'o',
+	'odblac'	=>	'o',
+	'oelig'		=>	'oe',
+	'ograve'	=>	'o',
+	'omacr'		=>	'o',
+	'oslash'	=>	'o',
+	'otilde'	=>	'o',
+	'ouml'		=>	'o',
+	'racute'	=>	'r',
+	'rcaron'	=>	'r',
+	'rcedil'	=>	'r',
+	'sacute'	=>	's',
+	'scaron'	=>	's',
+	'scedil'	=>	's',
+	'scirc'		=>	's',
+	'sup1'		=>	'1',
+	'szlig'		=>	's',
+	'tcaron'	=>	't',
+	'tcedil'	=>	't',
+	'tstrok'	=>	't',
+	'uacute'	=>	'u',
+	'ubreve'	=>	'u',
+	'ucirc'		=>	'u',
+	'udblac'	=>	'u',
+	'ugrave'	=>	'u',
+	'umacr'		=>	'u',
+	'uogon'		=>	'u',
+	'uring'		=>	'u',
+	'utilde'	=>	'u',
+	'uuml'		=>	'u',
+	'wcirc'		=>	'w',
+	'yacute'	=>	'y',
+	'ycirc'		=>	'y',
+	'yuml'		=>	'y',
+	'zacute'	=>	'z',
+	'zcaron'	=>	'z',
+	'zdot'		=>	'z'
+);
+
+
+
+
+
+$ENV{MAGPLUS_HOME}    = $ARGV[1];
+$ENV{LD_LIBRARY_PATH} = "$ENV{MAGPLUS_HOME}/lib:$ENV{LD_LIBRARY_PATH}";
+
+
+my $ROOT = qw(/webapps/epsgrams/data/);
+my $port = $ARGV[0];
+
+sub REAPER {
+	print "$$: SIG{CHLD}\n";
+	1 until(waitpid(-1,WNOHANG) <= 0);
+	$SIG{CHLD} = \&REAPER;
+}
+
+
+
+sub calcul_time {
+    my ($basetime, $deltahour, $deltamin) = @_;
+    my ($vyear, $vmonth, $vday, $vhour) =$basetime=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+    my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $delta=              0+
+                $deltamin*60 +
+                $deltahour*60*60;
+    my $newtime = $time+ $delta;
+    my $tm = localtime($newtime);
+    my $year = $tm->year+1900;
+    my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+    my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+    my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+    my $min = $tm->min; if ($min<10) { $min = "0$min";};
+    return "$year$month$day$hour";
+}
+
+# $SIG{CHLD} = \&REAPER;
+
+my $server = IO::Socket::INET->new(
+		LocalPort => $port,
+		Reuse     => 1,
+		Listen    => 10,
+		Type      => SOCK_STREAM
+		);
+
+
+for(;;)
+{
+#	$SIG{CHLD} = "IGNORE";
+	my $client = $server->accept();
+#	$SIG{CHLD} = \&REAPER;
+
+	next unless(defined $client);
+
+
+	my $pid = fork;
+
+	if($pid)
+	{
+		waitpid($pid,0);
+		close($client);
+		next;
+	}
+
+	unless(defined $pid)
+	{
+#	print $client "ERROR: fork: $!\n";
+		close($client);
+		warn "fork: $!";
+		next;
+	}	
+
+	# Double fork
+	if(fork) {
+		exit(0);
+	}
+
+	close($server);
+
+	alarm(15);
+
+	eval {
+		local $/;
+		my $request = <$client>;
+		my $VAR1;
+		eval $request;
+		#print Dumper($$,$VAR1);
+		my $x = dispatch($VAR1,$client);
+		print $client "REPLY\n";
+		print $client Dumper($x);
+
+	};
+
+	close($client);
+	exit(0);
+
+}
+
+sub dispatch {
+	my ($request,$soc) = @_;
+
+	my $result = {};
+
+	eval {
+
+
+# print Dumper($VAR1);
+		$request->{expver} = "0001"    unless($request->{expver});
+		$request->{database}   = "10_days" unless($request->{database});
+
+		my $action = $request->{action};
+		$result = main->$action($request,$soc);
+
+
+	};
+
+
+	if($@)
+	{
+		$result = { error => $@ }	;
+		print STDERR $@;
+	}
+
+	#print Dumper($$,$result);
+
+	return $result;
+
+}
+
+
+
+sub date_list {
+	my ($self,$args,$soc) = @_;
+
+	my $expver;
+	my $database;
+	my $list = {};
+
+	opendir(ROOT,$ROOT);
+	while($database = readdir(ROOT))
+	{
+		next  unless($database =~ /^\d\d_days/)  ;
+
+		opendir(BASE,"$ROOT/$database");
+		while($expver = readdir(BASE))
+		{
+
+			next  unless($expver =~ /^\d\d\d\d$/)  ;
+
+			my %x;
+			my $x;
+
+			my $latest = readlink("$ROOT/$database/$expver/latest");
+			$latest = 999999999999 unless($latest);
+
+			opendir(DIR,"$ROOT/$database/$expver") or die "$ROOT/$args->{expver}: $!";
+			while($x = readdir(DIR))
+			{ 
+				next unless($x =~ /^(\d\d\d\d\d\d\d\d)(\d\d)/)	;
+				my $date = "$1$2";
+				$x{$date}++ if($date <= $latest);
+			}
+			closedir(DIR);
+			$list->{$database}->{$expver} = { dates => [sort keys %x], latest => $latest };
+		}
+		closedir(BASE);
+	}
+	closedir(ROOT);
+
+	return $list;
+}
+
+sub last_thursday {
+        my ($basedate) = @_;
+
+    my ($vyear, $vmonth, $vday, $vhour) =$basedate=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+        my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $tm = localtime($time);
+    my $wday = $tm->wday;
+	my $delta;
+    
+    if ($wday < 4){
+        $delta = ($wday-4)+7;
+    }
+    else {
+        $delta = $wday-4;
+    }
+    $delta= $delta*24*60*60 + $vhour*60*60;
+    
+
+        my $newtime = $time-$delta;
+        my $tm = localtime($newtime);
+
+    
+    my $year = $tm->year+1900;
+        my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+        my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+        my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+        my $min = $tm->min; if ($min<10) { $min = "0$min";};
+
+    
+    return "$year$month$day$hour";
+} 
+
+sub make_eps {
+	my ($self,$args,$soc) = @_;
+
+	print Dumper($args);
+
+	my $basetime = sprintf('%d%02d',$args->{date},$args->{time}/100);
+
+
+	my $tmp = "/webapps/epsgrams/work/epsgram_wind.$$";
+	my $ext = $args->{type};
+
+	$ext = "ps" if($args->{type} eq "pdf");
+
+
+	# $args->{title} =~ s/'/&#x39;/g;
+	# $args->{title} =~ s/'/ /g;
+	$args->{title} =~ s/'/"/g;
+
+	$args->{title}  = "" if($args->{title} eq "none");
+	$args->{height} = "" if($args->{height} eq "none");
+
+	my $fail;
+
+	my $name = $args->{title};
+	$args->{title} =~ s/\&(\w+);/$X{$1}/ge;
+
+	my $database = $args->{database};
+	my $databases = {};
+    my $template="$database\_epsgram.xml";
+
+	if ( $database eq '15_days_with_clim' ) { 
+		$databases->{database_eps} = "$ROOT/15_days/$args->{expver}/$basetime";
+		my $clim = last_thursday($basetime);
+		$databases->{database_clim} = "$ROOT/clim_15_days/$args->{expver}/$clim";
+	}
+
+	elsif ( $database eq 'new_efi_distribution' ) { 
+		$database = "15_days";
+		$databases->{eps_database} = "$ROOT/15_days/$args->{expver}";
+		$databases->{clim_database} = "$ROOT/clim_15_days/$args->{expver}";
+		$databases->{efi_database} = "$ROOT/efi/$args->{expver}";
+        $template='new_efi_distribution.xml';
+		my $step = -12;
+		my $keystep = 12;
+		#$basetime = sprintf('%d%02d',$args->{date},12);
+		my $validtime = sprintf('%d%02d',$args->{vdate},12);
+		while ( $step  >= -120) {
+			my $date = calcul_time($validtime, $step, $args->{time}/100);
+	        $databases->{"step$keystep\h"} = $date;
+			$step = $step-12;
+			$keystep = $keystep+12;
+        }
+		my $clim = last_thursday($basetime);
+		$databases->{clim_date} = "$clim";
+	
+    }
+	else {
+		$databases->{database} = "$ROOT/$database/$args->{expver}/$basetime";
+
+  }		
+
+	open(OUT,">$tmp.in.xml") or die "$tmp.in.xml: $!";
+	print OUT <<"EOF";
+	<eps  
+		template='$template' 
+EOF
+	foreach my $db (keys %{$databases} )  {
+		print OUT "\t\t$db='$databases->{$db}'\n";
+		print "$db='$databases->{$db}'\n";
+	}
+
+	print OUT <<"EOF";
+		>
+
+		<station 
+		name       = '$args->{title}'
+		latitude   = '$args->{latitude}' 
+		longitude  = '$args->{longitude}'
+		height     = '$args->{height}'
+		psfile     = '$tmp.ps' 
+		metafile   = '$tmp.xml'
+		/><name>$name</name>
+		</eps>
+EOF
+		close(OUT) or die "$tmp.in.xml: $!";
+
+ system("$ENV{MAGPLUS_HOME}/bin/metgramx","$tmp.in.xml") or $fail++;
+ system("cat $tmp.in.xml>efi.xml");
+#	system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>/dev/null 2>/dev/null");
+#system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>&2");
+		#system("cat $tmp.in.xml");
+
+# if($args->{type} eq "pdf")
+	{
+		my $density = 72;
+		my $rotate  = 90;
+		my $file = "$tmp.ps";
+
+		system("ps2pdf $tmp.ps $tmp.pdf");
+
+if(1) {
+		my $image = Image::Magick->new;
+		$image->Read($file);
+#$image->Set(Density => $density);
+#    $image->Rotate(degrees => $rotate) unless $rotate == 0;
+		#$image->Trim(background => '#FFFFFF');
+		#$image->Border(width=>10,height=>10,color=>"#ffffff");
+		$file =~ s/\.(\w+)$/\.gif/;
+		$image->Write($file);
+		}
+
+	}
+
+# system("scp","$tmp.$args->{type}","$args->{host}:$args->{path}.$args->{type}");
+
+	foreach my $e ( qw(gif ps pdf xml) )
+	{
+		send_file("$tmp.$e","$args->{path}.$e",$soc);
+	}
+
+	my $x = { foo=> 'bar'};
+	eval {
+		#system("cat $tmp.xml");
+		$x = XML::Parser->new(Style => 'Objects')->parsefile("$tmp.xml");
+		#print Dumper($x);
+	};
+
+
+	unlink("$tmp.ps");
+	unlink("$tmp.pdf");
+	unlink("$tmp.gif");
+	unlink("$tmp.xml");
+	unlink("$tmp.in.xml");
+
+	return $x;
+
+}
+
+sub send_file {
+	my ($src,$target,$soc) = @_;
+	
+	my $size = -s $src;
+	return unless($size);
+
+	open(IN,"<$src") or return;
+
+	print $soc "FILE\n$size\n$target\n";
+	print  "FILE $size $target\n";
+
+	my $buf;
+	my $buflen = 64*1024;
+	my $read; 
+	my $total = 0;
+	my $w;
+
+	while(($read = sysread(IN,$buf,$buflen)) > 0)
+	{
+		 $w = syswrite($soc,$buf,$read);
+		 print STDERR "WRITE $w $read\n";
+		 $total += $read;
+	}
+
+	close(IN);
+	print "SENT $total\n";
+}
+
+
+
diff --git a/apps/metgram/eps.xml b/apps/metgram/eps.xml
new file mode 100644
index 0000000..cdad1fe
--- /dev/null
+++ b/apps/metgram/eps.xml
@@ -0,0 +1,154 @@
+<eps date='-1' time='1200' template='eps.template' 
+    directory='/scratch/graphics/cgs/epsgram/new'> 
+    <station name='Boulmer' latitude='55.42' longitude='-1.6'/>
+    <station name='Loftus' latitude='54.57' longitude='-0.87'/>
+    <station name='Thorney Island' latitude='50.82' longitude='-0.92'/>
+    <station name='Capel Dewi' latitude='52.42' longitude='-4'/>
+    <station name='Manston' latitude='51.35' longitude='1.33'/>
+    <station name='Moel-Y-Crio' latitude='53.22' longitude='-3.22'/>
+    <station name='West Freugh' latitude='54.85' longitude='-4.95'/>
+    <station name='Nottingham-Watnall' latitude='53' longitude='-1.25'/>
+    <station name='Nottingham-Watnall-grid' latitude='53' longitude='-1.'/>
+    <station name='Solent' latitude='50.8' longitude='-1.22'/>
+    <station name='Rackwick' latitude='58.87' longitude='-3.38'/>
+    <station name='Trawsgoed' latitude='52.35' longitude='-3.95'/>
+    <station name='Coningsby' latitude='53.08' longitude='-0.17'/>
+    <station name='Lough Fea' latitude='54.72' longitude='-6.82'/>
+    <station name='West Freugh' latitude='54.85' longitude='-4.95'/>
+    <station name='Shoreham Airport' latitude='50.83' longitude='-0.28'/>
+    <station name='Crosby' latitude='53.5' longitude='-3.07'/>
+    <station name='Drumburgh' latitude='54.93' longitude='-3.15'/>
+    <station name='Foyers' latitude='57.27' longitude='-4.48'/>
+    <station name='Fylingdales' latitude='54.37' longitude='-0.67'/>
+    <station name='Enochdhu' latitude='56.75' longitude='-3.53'/>
+    <station name='Leuchars' latitude='56.4' longitude='-2.87'/>
+    <station name='Portglenone' latitude='54.87' longitude='-6.45'/>
+    <station name='Newcastle Weather Centre' latitude='54.98' longitude='-1.6'/>
+    <station name='Scilly: St Mary Airport' latitude='49.92' longitude='-6.3'/>
+    <station name='Glasgow Bishopton' latitude='55.9' longitude='-4.53'/>
+    <station name='Roches Point' latitude='51.8' longitude='-8.25'/>
+    <station name='Sennybridge No2' latitude='52.07' longitude='-3.62'/>
+    <station name='Church Lawford' latitude='52.37' longitude='-1.33'/>
+    <station name='South Farnborough' latitude='51.28' longitude='-0.77'/>
+    <station name='Prestwick Rnas' latitude='55.52' longitude='-4.58'/>
+    <station name='Shoeburyness, Landwick' latitude='51.55' longitude='0.83'/>
+    <station name='Aldergrove' latitude='54.65' longitude='-6.22'/>
+    <station name='Stornoway Airport' latitude='58.22' longitude='-6.32'/>
+    <station name='Greenock Mrcc' latitude='55.97' longitude='-4.8'/>
+    <station name='Honington' latitude='52.33' longitude='0.77'/>
+    <station name='Benson' latitude='51.62' longitude='-1.08'/>
+    <station name='Herstmonceux, West End' latitude='50.9' longitude='0.32'/>
+    <station name='Aviemore' latitude='57.2' longitude='-3.83'/>
+    <station name='Aspatria' latitude='54.77' longitude='-3.32'/>
+    <station name='Camborne' latitude='50.22' longitude='-5.32'/>
+    <station name='Heathrow' latitude='51.48' longitude='-0.45'/>
+    <station name='High Wycombe Hqstc' latitude='51.68' longitude='-0.8'/>
+    <station name='Cairngorm Summit' latitude='57.12' longitude='-3.63'/>
+    <station name='Islay: Port Ellen' latitude='55.68' longitude='-6.25'/>
+    <station name='Culdrose' latitude='50.08' longitude='-5.25'/>
+    <station name='Nantmor' latitude='53' longitude='-4.08'/>
+    <station name='Wattisham' latitude='52.12' longitude='0.97'/>
+    <station name='Glenanne No2' latitude='54.23' longitude='-6.5'/>
+    <station name='Kilkenny' latitude='52.67' longitude='-7.27'/>
+    <station name='Strathallen Airfield' latitude='56.32' longitude='-3.73'/>
+    <station name='Cairnwell' latitude='56.88' longitude='-3.42'/>
+    <station name='Aberdaron' latitude='52.78' longitude='-4.73'/>
+    <station name='Yeovilton' latitude='51' longitude='-2.63'/>
+    <station name='Gawlish' latitude='51.02' longitude='-4.48'/>
+    <station name='Aultbea No2' latitude='57.87' longitude='-5.63'/>
+    <station name='Marham' latitude='52.65' longitude='0.57'/>
+    <station name='Shannon Airport' latitude='52.7' longitude='-8.92'/>
+    <station name='Bangor Harbour' latitude='54.67' longitude='-5.67'/>
+    <station name='Larkhill' latitude='51.2' longitude='-1.8'/>
+    <station name='Machrihanish' latitude='55.43' longitude='-5.7'/>
+    <station name='Lizard Lighthouse' latitude='49.97' longitude='-5.2'/>
+    <station name='Llanbedr' latitude='52.8' longitude='-4.12'/>
+    <station name='Redhill' latitude='51.22' longitude='-0.13'/>
+    <station name='Glen Ogle' latitude='56.42' longitude='-4.32'/>
+    <station name='Galway' latitude='53.28' longitude='-9.02'/>
+    <station name='Shap' latitude='54.5' longitude='-2.68'/>
+    <station name='Dublin Airport' latitude='53.43' longitude='-6.25'/>
+    <station name='Madley' latitude='52.03' longitude='-2.85'/>
+    <station name='St. Mawgan' latitude='50.43' longitude='-5'/>
+    <station name='Isle Of Portland' latitude='50.52' longitude='-2.45'/>
+    <station name='Chivenor' latitude='51.08' longitude='-4.15'/>
+    <station name='Guernsey Airport' latitude='49.43' longitude='-2.6'/>
+    <station name='Great Dun Fell No2' latitude='54.68' longitude='-2.45'/>
+    <station name='Mullingar' latitude='53.53' longitude='-7.37'/>
+    <station name='Skipton No2' latitude='53.97' longitude='-2.03'/>
+    <station name='Aberhosan' latitude='52.57' longitude='-3.72'/>
+    <station name='Northolt' latitude='51.55' longitude='-0.42'/>
+    <station name='Jersey; St. Helier' latitude='49.2' longitude='-2.1'/>
+    <station name='Kilmory' latitude='56.77' longitude='-6.05'/>
+    <station name='Weybourne' latitude='52.95' longitude='1.13'/>
+    <station name='Aboyne No2' latitude='57.08' longitude='-2.83'/>
+    <station name='Bedford' latitude='52.22' longitude='-0.48'/>
+    <station name='Gravesend-Broadness' latitude='51.47' longitude='0.3'/>
+    <station name='Lerwick' latitude='60.13' longitude='-1.18'/>
+    <station name='Connaught Airport' latitude='53.9' longitude='-8.82'/>
+    <station name='Middle Wallop' latitude='51.15' longitude='-1.57'/>
+    <station name='Dumfries-Drungans' latitude='55.05' longitude='-3.65'/>
+    <station name='Muckle Holm' latitude='60.58' longitude='-1.27'/>
+    <station name='Linton-On-Ouse' latitude='54.05' longitude='-1.25'/>
+    <station name='Great Malvern' latitude='52.12' longitude='-2.3'/>
+    <station name='Cardinham, Bodmin' latitude='50.5' longitude='-4.67'/>
+    <station name='Altnaharra No2' latitude='58.28' longitude='-4.43'/>
+    <station name='St. Athan' latitude='51.4' longitude='-3.43'/>
+    <station name='Milford Haven Conservancy Board' latitude='51.7' longitude='-5.05'/>
+    <station name='Knockarevan' latitude='54.42' longitude='-8.08'/>
+    <station name='Capel Curig No3' latitude='53.1' longitude='-3.93'/>
+    <station name='Pershore' latitude='52.15' longitude='-2.03'/>
+    <station name='Emley Moor' latitude='53.62' longitude='-1.67'/>
+    <station name='Charterhall' latitude='55.7' longitude='-2.38'/>
+    <station name='Leconfield' latitude='53.87' longitude='-0.43'/>
+    <station name='Corgary' latitude='54.43' longitude='-8.05'/>
+    <station name='Lochluichart' latitude='57.62' longitude='-4.82'/>
+    <station name='Leeds Weather Centre' latitude='53.8' longitude='-1.55'/>
+    <station name='Plymouth, Mount Batten' latitude='50.35' longitude='-4.12'/>
+    <station name='North Rona Island' latitude='59.12' longitude='-5.82'/>
+    <station name='Boltshope Park' latitude='54.82' longitude='-2.08'/>
+    <station name='Castlederg' latitude='54.7' longitude='-7.58'/>
+    <station name='Inverbervie No.2' latitude='56.85' longitude='-2.27'/>
+    <station name='Carmoney' latitude='55.02' longitude='-7.23'/>
+    <station name='Foula' latitude='60.15' longitude='-2.07'/>
+    <station name='Eskdalemuir' latitude='55.32' longitude='-3.2'/>
+    <station name='Coleshill' latitude='52.48' longitude='-1.68'/>
+    <station name='North Hessary Tor' latitude='50.55' longitude='-4'/>
+    <station name='Little Rissington' latitude='51.87' longitude='-1.68'/>
+    <station name='Peterhead Harbour' latitude='57.5' longitude='-1.77'/>
+    <station name='Langdon Bay' latitude='51.13' longitude='1.35'/>
+    <station name='Biggar' latitude='55.6' longitude='-3.55'/>
+    <station name='Andrewsfield' latitude='51.88' longitude='0.45'/>
+    <station name='Ballykelly' latitude='55.07' longitude='-7.02'/>
+    <station name='Kirkwall' latitude='58.95' longitude='-2.9'/>
+    <station name='Ronaldsway' latitude='54.08' longitude='-4.63'/>
+    <station name='Rhyl No2' latitude='53.25' longitude='-3.5'/>
+    <station name='Odiham' latitude='51.23' longitude='-0.95'/>
+    <station name='Brize Norton' latitude='51.75' longitude='-1.58'/>
+    <station name='Aberporth' latitude='52.13' longitude='-4.57'/>
+    <station name='Rosehearty' latitude='57.7' longitude='-2.12'/>
+    <station name='Edinburgh Gogarbank' latitude='55.93' longitude='-3.35'/>
+    <station name='South Uist' latitude='57.35' longitude='-7.37'/>
+    <station name='Bracknell, Beaufort Park' latitude='51.38' longitude='-0.78'/>
+    <station name='Church Fenton' latitude='53.83' longitude='-1.2'/>
+    <station name='Moyola' latitude='54.72' longitude='-6.52'/>
+    <station name='Point Of Ayre' latitude='54.42' longitude='-4.37'/>
+    <station name='Wainfleet No2' latitude='53.08' longitude='0.27'/>
+    <station name='Dunkeswell Aerodrome' latitude='50.87' longitude='-3.23'/>
+    <station name='Lochboisdale' latitude='57.15' longitude='-7.32'/>
+    <station name='Holbeach No2' latitude='52.87' longitude='0.15'/>
+    <station name='Brixham' latitude='50.4' longitude='-3.48'/>
+    <station name='Portrush' latitude='55.2' longitude='-6.65'/>
+    <station name='St Bees Head No.2' latitude='54.52' longitude='-3.6'/>
+    <station name='South Uist Range' latitude='57.33' longitude='-7.37'/>
+    <station name='Tiree' latitude='56.5' longitude='-6.88'/>
+    <station name='Ballypatrick Forest' latitude='55.18' longitude='-6.17'/>
+    <station name='Keswick' latitude='54.62' longitude='-3.17'/>
+    <station name='Sunderland University' latitude='54.98' longitude='-1.63'/>
+    <station name='Hawarden Airport' latitude='53.17' longitude='-2.98'/>
+    <station name='Charlwood' latitude='51.23' longitude='-0.38'/>
+    <station name='Brede' latitude='50.93' longitude='0.6'/>
+    <station name='Valentia Observatory' latitude='51.93' longitude='-10.25'/>
+    <station name='Tain Range' latitude='57.82' longitude='-3.97'/>
+    <station name='Fife Ness' latitude='56.3' longitude='-2.58'/>
+</eps>
diff --git a/apps/metgram/epsserver.pl b/apps/metgram/epsserver.pl
new file mode 100755
index 0000000..4271dfe
--- /dev/null
+++ b/apps/metgram/epsserver.pl
@@ -0,0 +1,577 @@
+#!/webapps/bin/perl
+
+##!/usr/local/bin/perl56 
+use strict;
+
+use Data::Dumper;
+use CGI;
+use XML::Parser;
+use Image::Magick;
+use IO::Socket;
+use POSIX qw(:sys_wait_h);
+#use HTML::Entities;
+use Time::Local;
+use Time::localtime;
+
+my %X = (
+	'AElig'		=>	'A',
+	'Aacute'	=>	'A',
+	'Abreve'	=>	'A',
+	'Acirc'		=>	'A',
+	'Agrave'	=>	'A',
+	'Amacr'		=>	'A',
+	'Aogon'		=>	'A',
+	'Aring'		=>	'A',
+	'Atilde'	=>	'A',
+	'Auml'		=>	'A',
+	'Cacute'	=>	'C',
+	'Ccaron'	=>	'C',
+	'Ccedil'	=>	'C',
+	'Ccirc'		=>	'C',
+	'Cdot'		=>	'C',
+	'Dcaron'	=>	'D',
+	'Dstrok'	=>	'D',
+	'Dstroke'	=>	'D',
+	'Eacute'	=>	'E',
+	'Ecaron'	=>	'E',
+	'Ecirc'		=>	'E',
+	'Edot'		=>	'E',
+	'Egrave'	=>	'E',
+	'Emacr'		=>	'E',
+	'Eogon'		=>	'E',
+	'Euml'		=>	'E',
+	'Gbreve'	=>	'G',
+	'Gcedil'	=>	'G',
+	'Gcirc'		=>	'G',
+	'Gdot'		=>	'G',
+	'Hcirc'		=>	'H',
+	'Hstrok'	=>	'H',
+	'IJlig'		=>	'IJ',
+	'Iacute'	=>	'I',
+	'Icirc'		=>	'I',
+	'Idot'		=>	'I',
+	'Igrave'	=>	'I',
+	'Imacr'		=>	'I',
+	'Iogon'		=>	'I',
+	'Itilde'	=>	'I',
+	'Iuml'		=>	'I',
+	'Jcirc'		=>	'J',
+	'Kcedil'	=>	'K',
+	'Lacute'	=>	'L',
+	'Lcaron'	=>	'L',
+	'Lcedil'	=>	'L',
+	'Lmidot'	=>	'L',
+	'Lstrok'	=>	'L',
+	'Lstroke'	=>	'L',
+	'ENG'           =>      'N',
+	'Nacute'	=>	'N',
+	'Ncaron'	=>	'N',
+	'Ncedil'	=>	'N',
+	'Ntilde'	=>	'N',
+	'OElig'		=>	'OE',
+	'Oacute'	=>	'O',
+	'Ocirc'		=>	'O',
+	'Odblac'	=>	'O',
+	'Ograve'	=>	'O',
+	'Omacr'		=>	'O',
+	'Oslash'	=>	'O',
+	'Otilde'	=>	'O',
+	'Ouml'		=>	'O',
+	'Racute'	=>	'R',
+	'Rcaron'	=>	'R',
+	'Rcedil'	=>	'R',
+	'Sacute'	=>	'S',
+	'Scaron'	=>	'S',
+	'Scedil'	=>	'S',
+	'Scirc'		=>	'S',
+	'Tcaron'	=>	'T',
+	'Tcedil'	=>	'T',
+	'Tstrok'	=>	'T',
+	'Uacute'	=>	'U',
+	'Ubreve'	=>	'U',
+	'Ucirc'		=>	'U',
+	'Udblac'	=>	'U',
+	'Ugrave'	=>	'U',
+	'Umacr'		=>	'U',
+	'Uogon'		=>	'U',
+	'Uring'		=>	'U',
+	'Utilde'	=>	'U',
+	'Uuml'		=>	'U',
+	'Wcirc'		=>	'W',
+	'Yacute'	=>	'Y',
+	'Ycirc'		=>	'Y',
+	'Yuml'		=>	'Y',
+	'Zacute'	=>	'Z',
+	'Zcaron'	=>	'Z',
+	'Zdot'		=>	'Z',
+	'aacute'	=>	'a',
+	'abreve'	=>	'a',
+	'acirc'		=>	'a',
+	'aelig'		=>	'a',
+	'agrave'	=>	'a',
+	'amacr'		=>	'a',
+	'Dstroke'	=>	'D',
+	'Lstroke'	=>	'L',
+	'cedilla'	=>	'c',
+	'lstroke'	=>	'l',
+	'aogon'		=>	'a',
+	'aring'		=>	'a',
+	'atilde'	=>	'a',
+	'auml'		=>	'a',
+	'cacute'	=>	'c',
+	'ccaron'	=>	'c',
+	'ccedil'	=>	'c',
+	'ccirc'		=>	'c',
+	'cdot'		=>	'c',
+	'dcaron'	=>	'd',
+	'dotlessi'	=>	'i',
+	'dstrok'	=>	'd',
+	'eacute'	=>	'e',
+	'ecaron'	=>	'e',
+	'ecirc'		=>	'e',
+	'edot'		=>	'e',
+	'egrave'	=>	'e',
+	'emacr'		=>	'e',
+	'eogon'		=>	'e',
+	'euml'		=>	'e',
+	'fnof'		=>	'f',
+	'gacute'	=>	'g',
+	'gbreve'	=>	'g',
+	'gcirc'		=>	'g',
+	'gdot'		=>	'g',
+	'hcirc'		=>	'h',
+	'hstrok'	=>	'h',
+	'iacute'	=>	'i',
+	'icirc'		=>	'i',
+	'igrave'	=>	'i',
+	'ijlig'		=>	'ij',
+	'imacr'		=>	'i',
+	'inodot'	=>	'i',
+	'iogon'		=>	'i',
+	'itilde'	=>	'i',
+	'iuml'		=>	'i',
+	'jcirc'		=>	'j',
+	'kcedil'	=>	'k',
+	'kgreen'	=>	'k',
+	'lacute'	=>	'l',
+	'lcaron'	=>	'l',
+	'lcedil'	=>	'l',
+	'lmidot'	=>	'l',
+	'lstrok'	=>	'l',
+	'lstroke'	=>	'l',
+	'eng'           =>      'n',
+	'nacute'	=>	'n',
+	'napos'		=>	'n',
+	'ncaron'	=>	'n',
+	'ncedil'	=>	'n',
+	'ntilde'	=>	'n',
+	'oacute'	=>	'o',
+	'ocirc'		=>	'o',
+	'odblac'	=>	'o',
+	'oelig'		=>	'oe',
+	'ograve'	=>	'o',
+	'omacr'		=>	'o',
+	'oslash'	=>	'o',
+	'otilde'	=>	'o',
+	'ouml'		=>	'o',
+	'racute'	=>	'r',
+	'rcaron'	=>	'r',
+	'rcedil'	=>	'r',
+	'sacute'	=>	's',
+	'scaron'	=>	's',
+	'scedil'	=>	's',
+	'scirc'		=>	's',
+	'sup1'		=>	'1',
+	'szlig'		=>	's',
+	'tcaron'	=>	't',
+	'tcedil'	=>	't',
+	'tstrok'	=>	't',
+	'uacute'	=>	'u',
+	'ubreve'	=>	'u',
+	'ucirc'		=>	'u',
+	'udblac'	=>	'u',
+	'ugrave'	=>	'u',
+	'umacr'		=>	'u',
+	'uogon'		=>	'u',
+	'uring'		=>	'u',
+	'utilde'	=>	'u',
+	'uuml'		=>	'u',
+	'wcirc'		=>	'w',
+	'yacute'	=>	'y',
+	'ycirc'		=>	'y',
+	'yuml'		=>	'y',
+	'zacute'	=>	'z',
+	'zcaron'	=>	'z',
+	'zdot'		=>	'z'
+);
+
+
+
+
+
+$ENV{MAGPLUS_HOME}    = $ARGV[1];
+$ENV{LD_LIBRARY_PATH} = "$ENV{MAGPLUS_HOME}/lib:$ENV{LD_LIBRARY_PATH}";
+
+
+my $ROOT = qw(/webapps/epsgrams/data/);
+my $port = $ARGV[0];
+
+sub REAPER {
+	print "$$: SIG{CHLD}\n";
+	1 until(waitpid(-1,WNOHANG) <= 0);
+	$SIG{CHLD} = \&REAPER;
+}
+
+
+
+sub calcul_time {
+    my ($basetime, $deltahour, $deltamin) = @_;
+    my ($vyear, $vmonth, $vday, $vhour) =$basetime=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+    my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $delta=              0+
+                $deltamin*60 +
+                $deltahour*60*60;
+    my $newtime = $time+ $delta;
+    my $tm = localtime($newtime);
+    my $year = $tm->year+1900;
+    my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+    my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+    my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+    my $min = $tm->min; if ($min<10) { $min = "0$min";};
+    return "$year$month$day$hour";
+}
+
+# $SIG{CHLD} = \&REAPER;
+
+my $server = IO::Socket::INET->new(
+		LocalPort => $port,
+		Reuse     => 1,
+		Listen    => 10,
+		Type      => SOCK_STREAM
+		);
+
+
+for(;;)
+{
+#	$SIG{CHLD} = "IGNORE";
+	my $client = $server->accept();
+#	$SIG{CHLD} = \&REAPER;
+
+	next unless(defined $client);
+
+
+	my $pid = fork;
+
+	if($pid)
+	{
+		waitpid($pid,0);
+		close($client);
+		next;
+	}
+
+	unless(defined $pid)
+	{
+#	print $client "ERROR: fork: $!\n";
+		close($client);
+		warn "fork: $!";
+		next;
+	}	
+
+	# Double fork
+	if(fork) {
+		exit(0);
+	}
+
+	close($server);
+
+	alarm(15);
+
+	eval {
+		local $/;
+		my $request = <$client>;
+		my $VAR1;
+		eval $request;
+		#print Dumper($$,$VAR1);
+		my $x = dispatch($VAR1,$client);
+		print $client "REPLY\n";
+		print $client Dumper($x);
+
+	};
+
+	close($client);
+	exit(0);
+
+}
+
+sub dispatch {
+	my ($request,$soc) = @_;
+
+	my $result = {};
+
+	eval {
+
+
+# print Dumper($VAR1);
+		$request->{expver} = "0001"    unless($request->{expver});
+		$request->{database}   = "10_days" unless($request->{database});
+
+		my $action = $request->{action};
+		$result = main->$action($request,$soc);
+
+
+	};
+
+
+	if($@)
+	{
+		$result = { error => $@ }	;
+		print STDERR $@;
+	}
+
+	#print Dumper($$,$result);
+
+	return $result;
+
+}
+
+
+
+sub date_list {
+	my ($self,$args,$soc) = @_;
+
+	my $expver;
+	my $database;
+	my $list = {};
+
+	opendir(ROOT,$ROOT);
+	while($database = readdir(ROOT))
+	{
+		next  unless($database =~ /^\d\d_days/)  ;
+
+		opendir(BASE,"$ROOT/$database");
+		while($expver = readdir(BASE))
+		{
+
+			next  unless($expver =~ /^\d\d\d\d$/)  ;
+
+			my %x;
+			my $x;
+
+			my $latest = readlink("$ROOT/$database/$expver/latest");
+			$latest = 999999999999 unless($latest);
+
+			opendir(DIR,"$ROOT/$database/$expver") or die "$ROOT/$args->{expver}: $!";
+			while($x = readdir(DIR))
+			{ 
+				next unless($x =~ /^(\d\d\d\d\d\d\d\d)(\d\d)/)	;
+				my $date = "$1$2";
+				$x{$date}++ if($date <= $latest);
+			}
+			closedir(DIR);
+			$list->{$database}->{$expver} = { dates => [sort keys %x], latest => $latest };
+		}
+		closedir(BASE);
+	}
+	closedir(ROOT);
+
+	return $list;
+}
+
+sub last_thursday {
+        my ($basedate) = @_;
+
+    my ($vyear, $vmonth, $vday, $vhour) =$basedate=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+        my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $tm = localtime($time);
+    my $wday = $tm->wday;
+	my $delta;
+    
+    if ($wday < 4){
+        $delta = ($wday-4)+7;
+    }
+    else {
+        $delta = $wday-4;
+    }
+    $delta= $delta*24*60*60 + $vhour*60*60;
+    
+
+        my $newtime = $time-$delta;
+        my $tm = localtime($newtime);
+
+    
+    my $year = $tm->year+1900;
+        my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+        my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+        my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+        my $min = $tm->min; if ($min<10) { $min = "0$min";};
+
+    
+    return "$year$month$day$hour";
+} 
+
+sub make_eps {
+	my ($self,$args,$soc) = @_;
+
+	print Dumper($args);
+
+	my $basetime = sprintf('%d%02d',$args->{date},$args->{time}/100);
+
+
+	my $tmp = "/webapps/epsgrams/work/epsgram_wind.$$";
+	my $ext = $args->{type};
+
+	$ext = "ps" if($args->{type} eq "pdf");
+
+
+	# $args->{title} =~ s/'/&#x39;/g;
+	# $args->{title} =~ s/'/ /g;
+	$args->{title} =~ s/'/"/g;
+
+	$args->{title}  = "" if($args->{title} eq "none");
+	$args->{height} = "" if($args->{height} eq "none");
+
+	my $fail;
+
+	my $name = $args->{title};
+	$args->{title} =~ s/\&(\w+);/$X{$1}/ge;
+
+	my $database = $args->{database};
+	my $databases = {};
+    my $template="$database\_epsgram.xml";
+
+	if ( $database eq '15_days_with_clim' ) { 
+		$databases->{database_eps} = "$ROOT/15_days/$args->{expver}/$basetime";
+		my $clim = last_thursday($basetime);
+		$databases->{database_clim} = "$ROOT/clim_15_days/$args->{expver}/$clim";
+	}
+
+	elsif ( $database eq 'efi_distribution' ) { 
+		$database = "15_days";
+        $template='efi_distribution.xml';
+		my $step = -12;
+		$basetime = sprintf('%d%02d',$args->{date},12);
+		my $validtime = sprintf('%d%02d',$args->{vdate},12);
+		while ( $step  >= -120) {
+			my $date = calcul_time($validtime, $step, 00);
+			my $db_eps = "database_eps$step\h";
+			my $db_efi = "database_efi$step\h";
+		    $databases->{$db_eps} = "$ROOT/15_days/$args->{expver}/$date";
+		    $databases->{$db_efi} = "$ROOT/efi/$args->{expver}/$date";
+			$step = $step-12;
+        }
+		my $clim = last_thursday($basetime);
+		$databases->{database_clim} = "$ROOT/clim_15_days/$args->{expver}/$clim";
+	
+    }
+	else {
+		$databases->{database} = "$ROOT/$database/$args->{expver}/$basetime";
+
+  }		
+
+	open(OUT,">$tmp.in.xml") or die "$tmp.in.xml: $!";
+	print OUT <<"EOF";
+	<eps  
+		template='$template' 
+EOF
+	foreach my $db (keys %{$databases} )  {
+		print OUT "\t\t$db='$databases->{$db}'\n";
+		print "$db='$databases->{$db}'\n";
+	}
+
+	print OUT <<"EOF";
+		>
+
+		<station 
+		name       = '$args->{title}'
+		latitude   = '$args->{latitude}' 
+		longitude  = '$args->{longitude}'
+		height     = '$args->{height}'
+		psfile     = '$tmp.ps' 
+		metafile   = '$tmp.xml'
+		/><name>$name</name>
+		</eps>
+EOF
+		close(OUT) or die "$tmp.in.xml: $!";
+
+ system("$ENV{MAGPLUS_HOME}/bin/metgram","$tmp.in.xml") or $fail++;
+ system("cat $tmp.in.xml>e.xml");
+#	system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>/dev/null 2>/dev/null");
+#system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>&2");
+		#system("cat $tmp.in.xml");
+
+# if($args->{type} eq "pdf")
+	{
+		my $density = 72;
+		my $rotate  = 90;
+		my $file = "$tmp.ps";
+
+		system("ps2pdf $tmp.ps $tmp.pdf");
+
+if(1) {
+		my $image = Image::Magick->new;
+		$image->Read($file);
+#$image->Set(Density => $density);
+#    $image->Rotate(degrees => $rotate) unless $rotate == 0;
+		#$image->Trim(background => '#FFFFFF');
+		#$image->Border(width=>10,height=>10,color=>"#ffffff");
+		$file =~ s/\.(\w+)$/\.gif/;
+		$image->Write($file);
+		}
+
+	}
+
+# system("scp","$tmp.$args->{type}","$args->{host}:$args->{path}.$args->{type}");
+
+	foreach my $e ( qw(gif ps pdf xml) )
+	{
+		send_file("$tmp.$e","$args->{path}.$e",$soc);
+	}
+
+	my $x = { foo=> 'bar'};
+	eval {
+		#system("cat $tmp.xml");
+		$x = XML::Parser->new(Style => 'Objects')->parsefile("$tmp.xml");
+		#print Dumper($x);
+	};
+
+
+	unlink("$tmp.ps");
+	unlink("$tmp.pdf");
+	unlink("$tmp.gif");
+	unlink("$tmp.xml");
+	unlink("$tmp.in.xml");
+
+	return $x;
+
+}
+
+sub send_file {
+	my ($src,$target,$soc) = @_;
+	
+	my $size = -s $src;
+	return unless($size);
+
+	open(IN,"<$src") or return;
+
+	print $soc "FILE\n$size\n$target\n";
+	print  "FILE $size $target\n";
+
+	my $buf;
+	my $buflen = 64*1024;
+	my $read; 
+	my $total = 0;
+	my $w;
+
+	while(($read = sysread(IN,$buf,$buflen)) > 0)
+	{
+		 $w = syswrite($soc,$buf,$read);
+		 print STDERR "WRITE $w $read\n";
+		 $total += $read;
+	}
+
+	close(IN);
+	print "SENT $total\n";
+}
+
+
+
diff --git a/apps/metgram/epswind.xml b/apps/metgram/epswind.xml
new file mode 100644
index 0000000..d9eda83
--- /dev/null
+++ b/apps/metgram/epswind.xml
@@ -0,0 +1,9 @@
+
+<eps template='15_days_epsgram_with_wind.xml' database='/vol/epsgram/data/spotbase/15_days/0001/latest/epsdb' format='a4'> 
+   
+    
+   <station name='Reading' latitude='51.4' longitude='-1' height='48' psfile='reading.ps'
+       giffile='reading.gif' svgfile='reading.svg' metafile='reading.meta'/>
+   
+    
+</eps>
diff --git a/apps/metgram/magplusserver.pl b/apps/metgram/magplusserver.pl
new file mode 100755
index 0000000..1f71822
--- /dev/null
+++ b/apps/metgram/magplusserver.pl
@@ -0,0 +1,610 @@
+#!/webapps/bin/perl
+
+##!/usr/local/bin/perl56
+use strict;
+
+use Data::Dumper;
+use CGI;
+use XML::Parser;
+use Image::Magick;
+use IO::Socket;
+use POSIX qw(:sys_wait_h);
+#use HTML::Entities;
+use Time::Local;
+use Time::localtime;
+
+my %X = (
+        'AElig'         =>      'A',
+        'Aacute'        =>      'A',
+        'Abreve'        =>      'A',
+        'Acirc'         =>      'A',
+        'Agrave'        =>      'A',
+        'Amacr'         =>      'A',
+        'Aogon'         =>      'A',
+        'Aring'         =>      'A',
+        'Atilde'        =>      'A',
+        'Auml'          =>      'A',
+        'Cacute'        =>      'C',
+        'Ccaron'        =>      'C',
+        'Ccedil'        =>      'C',
+        'Ccirc'         =>      'C',
+        'Cdot'          =>      'C',
+        'Dcaron'        =>      'D',
+        'Dstrok'        =>      'D',
+        'Dstroke'       =>      'D',
+        'Eacute'        =>      'E',
+        'Ecaron'        =>      'E',
+        'Ecirc'         =>      'E',
+        'Edot'          =>      'E',
+        'Egrave'        =>      'E',
+        'Emacr'         =>      'E',
+        'Eogon'         =>      'E',
+        'Euml'          =>      'E',
+        'Gbreve'        =>      'G',
+        'Gcedil'        =>      'G',
+        'Gcirc'         =>      'G',
+        'Gdot'          =>      'G',
+        'Hcirc'         =>      'H',
+        'Hstrok'        =>      'H',
+        'IJlig'         =>      'IJ',
+        'Iacute'        =>      'I',
+        'Icirc'         =>      'I',
+        'Idot'          =>      'I',
+        'Igrave'        =>      'I',
+        'Imacr'         =>      'I',
+        'Iogon'         =>      'I',
+        'Itilde'        =>      'I',
+        'Iuml'          =>      'I',
+        'Jcirc'         =>      'J',
+        'Kcedil'        =>      'K',
+        'Lacute'        =>      'L',
+        'Lcaron'        =>      'L',
+        'Lcedil'        =>      'L',
+        'Lmidot'        =>      'L',
+        'Lstrok'        =>      'L',
+        'Lstroke'       =>      'L',
+        'ENG'           =>      'N',
+        'Nacute'        =>      'N',
+        'Ncaron'        =>      'N',
+        'Ncedil'        =>      'N',
+        'Ntilde'        =>      'N',
+        'OElig'         =>      'OE',
+        'Oacute'        =>      'O',
+        'Ocirc'         =>      'O',
+        'Odblac'        =>      'O',
+        'Ograve'        =>      'O',
+        'Omacr'         =>      'O',
+        'Oslash'        =>      'O',
+        'Otilde'        =>      'O',
+        'Ouml'          =>      'O',
+        'Racute'        =>      'R',
+        'Rcaron'        =>      'R',
+        'Rcedil'        =>      'R',
+        'Sacute'        =>      'S',
+        'Scaron'        =>      'S',
+        'Scedil'        =>      'S',
+        'Scirc'         =>      'S',
+        'Tcaron'        =>      'T',
+        'Tcedil'        =>      'T',
+        'Tstrok'        =>      'T',
+        'Uacute'        =>      'U',
+        'Ubreve'        =>      'U',
+        'Ucirc'         =>      'U',
+        'Udblac'        =>      'U',
+        'Ugrave'        =>      'U',
+        'Umacr'         =>      'U',
+        'Uogon'         =>      'U',
+        'Uring'         =>      'U',
+        'Utilde'        =>      'U',
+        'Uuml'          =>      'U',
+        'Wcirc'         =>      'W',
+        'Yacute'        =>      'Y',
+        'Ycirc'         =>      'Y',
+        'Yuml'          =>      'Y',
+        'Zacute'        =>      'Z',
+        'Zcaron'        =>      'Z',
+        'Zdot'          =>      'Z',
+        'aacute'        =>      'a',
+        'abreve'        =>      'a',
+        'acirc'         =>      'a',
+        'aelig'         =>      'a',
+        'agrave'        =>      'a',
+        'amacr'         =>      'a',
+        'Dstroke'       =>      'D',
+        'Lstroke'       =>      'L',
+        'cedilla'       =>      'c',
+        'lstroke'       =>      'l',
+        'aogon'         =>      'a',
+        'aring'         =>      'a',
+        'atilde'        =>      'a',
+        'auml'          =>      'a',
+        'cacute'        =>      'c',
+        'ccaron'        =>      'c',
+        'ccedil'        =>      'c',
+        'ccirc'         =>      'c',
+        'cdot'          =>      'c',
+        'dcaron'        =>      'd',
+        'dotlessi'      =>      'i',
+        'dstrok'        =>      'd',
+        'eacute'        =>      'e',
+        'ecaron'        =>      'e',
+        'ecirc'         =>      'e',
+        'edot'          =>      'e',
+        'egrave'        =>      'e',
+        'emacr'         =>      'e',
+        'eogon'         =>      'e',
+        'euml'          =>      'e',
+        'fnof'          =>      'f',
+        'gacute'        =>      'g',
+        'gbreve'        =>      'g',
+        'gcirc'         =>      'g',
+        'gdot'          =>      'g',
+        'hcirc'         =>      'h',
+        'hstrok'        =>      'h',
+        'iacute'        =>      'i',
+        'icirc'         =>      'i',
+        'igrave'        =>      'i',
+        'ijlig'         =>      'ij',
+        'imacr'         =>      'i',
+        'inodot'        =>      'i',
+        'iogon'         =>      'i',
+        'itilde'        =>      'i',
+        'iuml'          =>      'i',
+        'jcirc'         =>      'j',
+        'kcedil'        =>      'k',
+        'kgreen'        =>      'k',
+        'lacute'        =>      'l',
+        'lcaron'        =>      'l',
+        'lcedil'        =>      'l',
+        'lmidot'        =>      'l',
+        'lstrok'        =>      'l',
+        'lstroke'       =>      'l',
+        'eng'           =>      'n',
+        'nacute'        =>      'n',
+        'napos'         =>      'n',
+        'ncaron'        =>      'n',
+        'ncedil'        =>      'n',
+        'ntilde'        =>      'n',
+        'oacute'        =>      'o',
+        'ocirc'         =>      'o',
+        'odblac'        =>      'o',
+        'oelig'         =>      'oe',
+        'ograve'        =>      'o',
+        'omacr'         =>      'o',
+        'oslash'        =>      'o',
+        'otilde'        =>      'o',
+        'ouml'          =>      'o',
+        'racute'        =>      'r',
+        'rcaron'        =>      'r',
+        'rcedil'        =>      'r',
+        'sacute'        =>      's',
+        'scaron'        =>      's',
+        'scedil'        =>      's',
+        'scirc'         =>      's',
+        'sup1'          =>      '1',
+        'szlig'         =>      's',
+        'tcaron'        =>      't',
+        'tcedil'        =>      't',
+        'tstrok'        =>      't',
+        'uacute'        =>      'u',
+        'ubreve'        =>      'u',
+        'ucirc'         =>      'u',
+        'udblac'        =>      'u',
+        'ugrave'        =>      'u',
+        'umacr'         =>      'u',
+        'uogon'         =>      'u',
+        'uring'         =>      'u',
+        'utilde'        =>      'u',
+        'uuml'          =>      'u',
+        'wcirc'         =>      'w',
+        'yacute'        =>      'y',
+        'ycirc'         =>      'y',
+        'yuml'          =>      'y',
+        'zacute'        =>      'z',
+        'zcaron'        =>      'z',
+        'zdot'          =>      'z'
+);
+
+
+
+
+
+$ENV{MAGPLUS_HOME}    = $ARGV[1];
+$ENV{LD_LIBRARY_PATH} = "$ENV{MAGPLUS_HOME}/lib:$ENV{LD_LIBRARY_PATH}";
+
+
+my $ROOT = qw(/webapps/epsgrams/data/);
+my $port = $ARGV[0];
+
+sub REAPER {
+        print "$$: SIG{CHLD}\n";
+        1 until(waitpid(-1,WNOHANG) <= 0);
+        $SIG{CHLD} = \&REAPER;
+}
+
+
+
+sub calcul_time {
+    my ($basetime, $deltahour, $deltamin) = @_;
+    my ($vyear, $vmonth, $vday, $vhour) =$basetime=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+    my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $delta=              0+
+                $deltamin*60 +
+                $deltahour*60*60;
+    my $newtime = $time+ $delta;
+    my $tm = localtime($newtime);
+    my $year = $tm->year+1900;
+    my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+    my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+    my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+    my $min = $tm->min; if ($min<10) { $min = "0$min";};
+    return "$year$month$day$hour";
+}
+
+# $SIG{CHLD} = \&REAPER;
+
+my $server = IO::Socket::INET->new(
+                LocalPort => $port,
+                Reuse     => 1,
+                Listen    => 10,
+                Type      => SOCK_STREAM
+                );
+
+
+for(;;)
+{
+#       $SIG{CHLD} = "IGNORE";
+        my $client = $server->accept();
+#       $SIG{CHLD} = \&REAPER;
+
+        next unless(defined $client);
+
+
+        my $pid = fork;
+
+        if($pid)
+        {
+                waitpid($pid,0);
+                close($client);
+                next;
+        }
+
+        unless(defined $pid)
+        {
+#       print $client "ERROR: fork: $!\n";
+                close($client);
+                warn "fork: $!";
+                next;
+        }
+
+        # Double fork
+        if(fork) {
+                exit(0);
+        }
+
+        close($server);
+
+        alarm(15);
+
+        eval {
+                local $/;
+                my $request = <$client>;
+                my $VAR1;
+                eval $request;
+                #print Dumper($$,$VAR1);
+                my $x = dispatch($VAR1,$client);
+                print $client "REPLY\n";
+                print $client Dumper($x);
+
+        };
+
+        close($client);
+        exit(0);
+
+}
+
+sub dispatch {
+        my ($request,$soc) = @_;
+
+        my $result = {};
+
+        eval {
+
+
+# print Dumper($VAR1);
+                $request->{expver} = "0001"    unless($request->{expver});
+                $request->{database}   = "10_days" unless($request->{database});
+
+                my $action = $request->{action};
+                $result = main->$action($request,$soc);
+
+
+        };
+
+
+        if($@)
+        {
+                $result = { error => $@ }       ;
+                print STDERR $@;
+        }
+
+        #print Dumper($$,$result);
+
+        return $result;
+
+}
+
+
+
+sub date_list {
+        my ($self,$args,$soc) = @_;
+
+        my $expver;
+        my $database;
+        my $list = {};
+
+        opendir(ROOT,$ROOT);
+        while($database = readdir(ROOT))
+        {
+                next  unless($database =~ /^\d\d_days/)  ;
+
+                opendir(BASE,"$ROOT/$database");
+                while($expver = readdir(BASE))
+                {
+
+                        next  unless($expver =~ /^\d\d\d\d$/)  ;
+
+                        my %x;
+                        my $x;
+
+                        my $latest = readlink("$ROOT/$database/$expver/latest");
+                        $latest = 999999999999 unless($latest);
+
+                        opendir(DIR,"$ROOT/$database/$expver") or die "$ROOT/$args->{expver}: $!";
+                        while($x = readdir(DIR))
+                        {
+                                next unless($x =~ /^(\d\d\d\d\d\d\d\d)(\d\d)/)  ;
+                                my $date = "$1$2";
+                                $x{$date}++ if($date <= $latest);
+                        }
+                        closedir(DIR);
+                        $list->{$database}->{$expver} = { dates => [sort keys %x], latest => $latest };
+                }
+                closedir(BASE);
+        }
+        closedir(ROOT);
+
+        return $list;
+}
+
+sub last_thursday {
+        my ($basedate) = @_;
+
+    my ($vyear, $vmonth, $vday, $vhour) =$basedate=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+        my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $tm = localtime($time);
+    my $wday = $tm->wday;
+        my $delta;
+
+    if ($wday < 4){
+        $delta = ($wday-4)+7;
+    }
+    else {
+        $delta = $wday-4;
+    }
+    $delta= $delta*24*60*60 + $vhour*60*60;
+
+
+        my $newtime = $time-$delta;
+        my $tm = localtime($newtime);
+
+
+    my $year = $tm->year+1900;
+        my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+        my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+        my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+        my $min = $tm->min; if ($min<10) { $min = "0$min";};
+
+
+    return "$year$month$day$hour";
+}
+
+
+# ----------------------------------------------------
+# convert_to_raster
+# converts the given file to the given raster format
+
+sub convert_to_raster {
+    my ($srcfile, $format) = @_;
+##    my $width  = 800;
+##    my $height =  $width * 1.414;
+    my $image  = Image::Magick->new;
+    $image->Read($srcfile);
+##    $image->Resize(width => $width, height => $height, blur => 0.5);
+    #$image->Set(Density => $density);
+    #$image->Rotate(degrees => $rotate) unless $rotate == 0;
+    $image->Trim(background => '#FFFFFF');
+    $image->Border(width=>10,height=>10,color=>"#ffffff");
+    $srcfile =~ s/\.(\w+)$/\.$format/;
+    $image->Write($srcfile);
+}
+
+
+
+sub make_eps {
+        my ($self,$args,$soc) = @_;
+
+        print Dumper($args);
+
+        my $basetime = sprintf('%d%02d',$args->{date},$args->{time}/100);
+
+        if ( $args->{date} eq 'latest' ) {
+                $basetime = 'latest';
+        }
+
+
+
+        my $tmp = "/webapps/epsgrams/work/epsgram.$$";
+        my $ext = $args->{type};
+
+        $ext = "ps" if($args->{type} eq "pdf");
+
+
+        # $args->{title} =~ s/'/&#x39;/g;
+        # $args->{title} =~ s/'/ /g;
+        $args->{title} =~ s/'/"/g;
+
+        $args->{title}  = "" if($args->{title} eq "none");
+        $args->{height} = "" if($args->{height} eq "none");
+
+        my $fail;
+
+        my $name = $args->{title};
+        $args->{title} =~ s/\&(\w+);/$X{$1}/ge;
+
+        my $database = $args->{database};
+        my $databases = {};
+        my $format = "";
+        $format = "_a3" if ($args->{format} eq "a3");
+        my $template="$database\_epsgram$format.xml";
+
+        if ( $args->{fullpath} ne '' ) {
+            $databases->{database} = $args->{fullpath};
+        }
+        elsif  ( $database eq '15_days_with_clim' ) {
+                $databases->{database_eps} = "$ROOT/15_days/$args->{expver}/$basetime";
+                my $clim = last_thursday($basetime);
+                $databases->{database_clim} = "$ROOT/15_days_clim/$args->{expver}/$clim";
+        } 
+       
+        elsif ( $database eq '10_days_metgram' ) {
+        $template="$database$format.xml";
+                $databases->{database} = "$ROOT/metgram_fc/$args->{expver}/$basetime";
+        }
+        elsif ( $database eq 'efi_distribution' ) {
+                $database = "15_days";
+        $template='efi_distribution.xml';
+                my $step = -12;
+                $basetime = sprintf('%d%02d',$args->{date},12);
+                my $validtime = sprintf('%d%02d',$args->{vdate},12);
+                while ( $step  >= -120) {
+                        my $date = calcul_time($validtime, $step, 00);
+                        my $db_eps = "database_eps$step\h";
+                        my $db_efi = "database_efi$step\h";
+                    $databases->{$db_eps} = "$ROOT/15_days/$args->{expver}/$date";
+                    $databases->{$db_efi} = "$ROOT/efi/$args->{expver}/$date";
+                        $step = $step-12;
+                }
+                my $clim = last_thursday($basetime);
+                $databases->{database_clim} = "$ROOT/15_days_clim/$args->{expver}/$clim";
+
+        }
+        else {
+                $databases->{database} = "$ROOT/$database/$args->{expver}/$basetime";
+        }
+
+        open(OUT,">$tmp.in.xml") or die "$tmp.in.xml: $!";
+        print OUT <<"EOF";
+        <eps
+                template='$template'
+EOF
+        foreach my $db (keys %{$databases} )  {
+                print OUT "\t\t$db='$databases->{$db}'\n";
+                print "$db='$databases->{$db}'\n";
+        }
+
+        print OUT <<"EOF";
+                >
+
+                <station
+                name       = '$args->{title}'
+                latitude   = '$args->{latitude}'
+                longitude  = '$args->{longitude}'
+                height     = '$args->{height}'
+                psfile     = '$tmp.ps'
+                metafile   = '$tmp.xml'
+                /><name>$name</name>
+                </eps>
+EOF
+                close(OUT) or die "$tmp.in.xml: $!";
+
+ system("$ENV{MAGPLUS_HOME}/bin/metgram","$tmp.in.xml") or $fail++;
+ system("cat $tmp.in.xml>e.xml");
+#       system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>/dev/null 2>/dev/null");
+#system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>&2");
+                #system("cat $tmp.in.xml");
+
+        my $file = "$tmp.ps";
+
+
+        # produce a PDF version?
+
+        if ($args->{pdf} eq "1")
+        {
+            #my $density = 72;
+            #my $rotate  = 90;
+            system("ps2pdf $tmp.ps $tmp.pdf");
+        }
+
+
+        # produce raster versions?
+
+        if ($args->{gif} eq "1") { convert_to_raster ($file, "gif"); }
+        if ($args->{png} eq "1") { convert_to_raster ($file, "png"); }
+        if ($args->{jpg} eq "1") { convert_to_raster ($file, "jpg"); }
+
+
+# system("scp","$tmp.$args->{type}","$args->{host}:$args->{path}.$args->{type}");
+
+        foreach my $e ( qw(gif png jpg ps pdf xml) )
+        {
+            send_file("$tmp.$e","$args->{path}.$e",$soc);
+        }
+
+        my $x = { foo=> 'bar'};
+        eval {
+                #system("cat $tmp.xml");
+                $x = XML::Parser->new(Style => 'Objects')->parsefile("$tmp.xml");
+                #print Dumper($x);
+        };
+
+
+        unlink("$tmp.ps");
+        unlink("$tmp.pdf");
+        unlink("$tmp.gif");
+        unlink("$tmp.png");
+        unlink("$tmp.jpg");
+        unlink("$tmp.xml");
+        unlink("$tmp.in.xml");
+
+        return $x;
+
+}
+
+sub send_file {
+        my ($src,$target,$soc) = @_;
+
+        my $size = -s $src;
+        return unless($size);
+
+        open(IN,"<$src") or return;
+
+        print $soc "FILE\n$size\n$target\n";
+        print  "FILE $size $target\n";
+
+        my $buf;
+        my $buflen = 64*1024;
+        my $read;
+        my $total = 0;
+        my $w;
+
+        while(($read = sysread(IN,$buf,$buflen)) > 0)
+        {
+                 $w = syswrite($soc,$buf,$read);
+                 print STDERR "WRITE $w $read\n";
+                 $total += $read;
+        }
+
+        close(IN);
+        print "SENT $total\n";
+}
diff --git a/apps/metgram/metgram b/apps/metgram/metgram
index 792acc4..d6307c1 100755
--- a/apps/metgram/metgram
+++ b/apps/metgram/metgram
@@ -147,7 +147,7 @@ sub localstation
     print OUT " pngfile='$params{pngfile}' "  unless $params{pngfile}  eq "";
     print OUT "/>\n</eps>\n";
 
-    system ($magplusbin . 'metgramx', $tmp);
+    system ($magplusbin . 'metgram.sh', $tmp);
     unlink $tmp;
     
 }
diff --git a/apps/metgram/metgram-script.in b/apps/metgram/metgram-script.in
new file mode 100644
index 0000000..f6ac3ee
--- /dev/null
+++ b/apps/metgram/metgram-script.in
@@ -0,0 +1,10 @@
+#!/bin/ksh
+#set -x
+
+# Platform dependent variables
+export MAGPLUS_HOME=@MAGICS_INSTALL_PATH@
+export LD_LIBRARY_PATH=$MAGPLUS_HOME/lib/:$2:$LD_LIBRARY_PATH
+
+# Call metgram
+exec $MAGPLUS_HOME/bin/metgramx "$@"
+
diff --git a/apps/metgram/metgram.xml b/apps/metgram/metgram.xml
new file mode 100644
index 0000000..55069ab
--- /dev/null
+++ b/apps/metgram/metgram.xml
@@ -0,0 +1,2 @@
+<eps  template='10_days_metgram' date='20100211' time='00'> 
+    <station name='multi' lat='50' lon='-1' psfile='page1.ps'/>
diff --git a/apps/metgram/metview_metgramserver.pl b/apps/metgram/metview_metgramserver.pl
new file mode 100755
index 0000000..218f91c
--- /dev/null
+++ b/apps/metgram/metview_metgramserver.pl
@@ -0,0 +1,606 @@
+#!/webapps/bin/perl
+
+##!/usr/local/bin/perl56
+use strict;
+
+use Data::Dumper;
+use CGI;
+use XML::Parser;
+use Image::Magick;
+use IO::Socket;
+use POSIX qw(:sys_wait_h);
+#use HTML::Entities;
+use Time::Local;
+use Time::localtime;
+
+my %X = (
+        'AElig'         =>      'A',
+        'Aacute'        =>      'A',
+        'Abreve'        =>      'A',
+        'Acirc'         =>      'A',
+        'Agrave'        =>      'A',
+        'Amacr'         =>      'A',
+        'Aogon'         =>      'A',
+        'Aring'         =>      'A',
+        'Atilde'        =>      'A',
+        'Auml'          =>      'A',
+        'Cacute'        =>      'C',
+        'Ccaron'        =>      'C',
+        'Ccedil'        =>      'C',
+        'Ccirc'         =>      'C',
+        'Cdot'          =>      'C',
+        'Dcaron'        =>      'D',
+        'Dstrok'        =>      'D',
+        'Dstroke'       =>      'D',
+        'Eacute'        =>      'E',
+        'Ecaron'        =>      'E',
+        'Ecirc'         =>      'E',
+        'Edot'          =>      'E',
+        'Egrave'        =>      'E',
+        'Emacr'         =>      'E',
+        'Eogon'         =>      'E',
+        'Euml'          =>      'E',
+        'Gbreve'        =>      'G',
+        'Gcedil'        =>      'G',
+        'Gcirc'         =>      'G',
+        'Gdot'          =>      'G',
+        'Hcirc'         =>      'H',
+        'Hstrok'        =>      'H',
+        'IJlig'         =>      'IJ',
+        'Iacute'        =>      'I',
+        'Icirc'         =>      'I',
+        'Idot'          =>      'I',
+        'Igrave'        =>      'I',
+        'Imacr'         =>      'I',
+        'Iogon'         =>      'I',
+        'Itilde'        =>      'I',
+        'Iuml'          =>      'I',
+        'Jcirc'         =>      'J',
+        'Kcedil'        =>      'K',
+        'Lacute'        =>      'L',
+        'Lcaron'        =>      'L',
+        'Lcedil'        =>      'L',
+        'Lmidot'        =>      'L',
+        'Lstrok'        =>      'L',
+        'Lstroke'       =>      'L',
+        'ENG'           =>      'N',
+        'Nacute'        =>      'N',
+        'Ncaron'        =>      'N',
+        'Ncedil'        =>      'N',
+        'Ntilde'        =>      'N',
+        'OElig'         =>      'OE',
+        'Oacute'        =>      'O',
+        'Ocirc'         =>      'O',
+        'Odblac'        =>      'O',
+        'Ograve'        =>      'O',
+        'Omacr'         =>      'O',
+        'Oslash'        =>      'O',
+        'Otilde'        =>      'O',
+        'Ouml'          =>      'O',
+        'Racute'        =>      'R',
+        'Rcaron'        =>      'R',
+        'Rcedil'        =>      'R',
+        'Sacute'        =>      'S',
+        'Scaron'        =>      'S',
+        'Scedil'        =>      'S',
+        'Scirc'         =>      'S',
+        'Tcaron'        =>      'T',
+        'Tcedil'        =>      'T',
+        'Tstrok'        =>      'T',
+        'Uacute'        =>      'U',
+        'Ubreve'        =>      'U',
+        'Ucirc'         =>      'U',
+        'Udblac'        =>      'U',
+        'Ugrave'        =>      'U',
+        'Umacr'         =>      'U',
+        'Uogon'         =>      'U',
+        'Uring'         =>      'U',
+        'Utilde'        =>      'U',
+        'Uuml'          =>      'U',
+        'Wcirc'         =>      'W',
+        'Yacute'        =>      'Y',
+        'Ycirc'         =>      'Y',
+        'Yuml'          =>      'Y',
+        'Zacute'        =>      'Z',
+        'Zcaron'        =>      'Z',
+        'Zdot'          =>      'Z',
+        'aacute'        =>      'a',
+        'abreve'        =>      'a',
+        'acirc'         =>      'a',
+        'aelig'         =>      'a',
+        'agrave'        =>      'a',
+        'amacr'         =>      'a',
+        'Dstroke'       =>      'D',
+        'Lstroke'       =>      'L',
+        'cedilla'       =>      'c',
+        'lstroke'       =>      'l',
+        'aogon'         =>      'a',
+        'aring'         =>      'a',
+        'atilde'        =>      'a',
+        'auml'          =>      'a',
+        'cacute'        =>      'c',
+        'ccaron'        =>      'c',
+        'ccedil'        =>      'c',
+        'ccirc'         =>      'c',
+        'cdot'          =>      'c',
+        'dcaron'        =>      'd',
+        'dotlessi'      =>      'i',
+        'dstrok'        =>      'd',
+        'eacute'        =>      'e',
+        'ecaron'        =>      'e',
+        'ecirc'         =>      'e',
+        'edot'          =>      'e',
+        'egrave'        =>      'e',
+        'emacr'         =>      'e',
+        'eogon'         =>      'e',
+        'euml'          =>      'e',
+        'fnof'          =>      'f',
+        'gacute'        =>      'g',
+        'gbreve'        =>      'g',
+        'gcirc'         =>      'g',
+        'gdot'          =>      'g',
+        'hcirc'         =>      'h',
+        'hstrok'        =>      'h',
+        'iacute'        =>      'i',
+        'icirc'         =>      'i',
+        'igrave'        =>      'i',
+        'ijlig'         =>      'ij',
+        'imacr'         =>      'i',
+        'inodot'        =>      'i',
+        'iogon'         =>      'i',
+        'itilde'        =>      'i',
+        'iuml'          =>      'i',
+        'jcirc'         =>      'j',
+        'kcedil'        =>      'k',
+        'kgreen'        =>      'k',
+        'lacute'        =>      'l',
+        'lcaron'        =>      'l',
+        'lcedil'        =>      'l',
+        'lmidot'        =>      'l',
+        'lstrok'        =>      'l',
+        'lstroke'       =>      'l',
+        'eng'           =>      'n',
+        'nacute'        =>      'n',
+        'napos'         =>      'n',
+        'ncaron'        =>      'n',
+        'ncedil'        =>      'n',
+        'ntilde'        =>      'n',
+        'oacute'        =>      'o',
+        'ocirc'         =>      'o',
+        'odblac'        =>      'o',
+        'oelig'         =>      'oe',
+        'ograve'        =>      'o',
+        'omacr'         =>      'o',
+        'oslash'        =>      'o',
+        'otilde'        =>      'o',
+        'ouml'          =>      'o',
+        'racute'        =>      'r',
+        'rcaron'        =>      'r',
+        'rcedil'        =>      'r',
+        'sacute'        =>      's',
+        'scaron'        =>      's',
+        'scedil'        =>      's',
+        'scirc'         =>      's',
+        'sup1'          =>      '1',
+        'szlig'         =>      's',
+        'tcaron'        =>      't',
+        'tcedil'        =>      't',
+        'tstrok'        =>      't',
+        'uacute'        =>      'u',
+        'ubreve'        =>      'u',
+        'ucirc'         =>      'u',
+        'udblac'        =>      'u',
+        'ugrave'        =>      'u',
+        'umacr'         =>      'u',
+        'uogon'         =>      'u',
+        'uring'         =>      'u',
+        'utilde'        =>      'u',
+        'uuml'          =>      'u',
+        'wcirc'         =>      'w',
+        'yacute'        =>      'y',
+        'ycirc'         =>      'y',
+        'yuml'          =>      'y',
+        'zacute'        =>      'z',
+        'zcaron'        =>      'z',
+        'zdot'          =>      'z'
+);
+
+
+
+
+
+$ENV{MAGPLUS_HOME}    = $ARGV[1];
+$ENV{LD_LIBRARY_PATH} = "$ENV{MAGPLUS_HOME}/lib:$ENV{LD_LIBRARY_PATH}";
+
+
+my $ROOT = qw(/webapps/epsgrams/data/);
+my $port = $ARGV[0];
+
+sub REAPER {
+        print "$$: SIG{CHLD}\n";
+        1 until(waitpid(-1,WNOHANG) <= 0);
+        $SIG{CHLD} = \&REAPER;
+}
+
+
+
+sub calcul_time {
+    my ($basetime, $deltahour, $deltamin) = @_;
+    my ($vyear, $vmonth, $vday, $vhour) =$basetime=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+    my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $delta=              0+
+                $deltamin*60 +
+                $deltahour*60*60;
+    my $newtime = $time+ $delta;
+    my $tm = localtime($newtime);
+    my $year = $tm->year+1900;
+    my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+    my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+    my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+    my $min = $tm->min; if ($min<10) { $min = "0$min";};
+    return "$year$month$day$hour";
+}
+
+# $SIG{CHLD} = \&REAPER;
+
+my $server = IO::Socket::INET->new(
+                LocalPort => $port,
+                Reuse     => 1,
+                Listen    => 10,
+                Type      => SOCK_STREAM
+                );
+
+
+for(;;)
+{
+#       $SIG{CHLD} = "IGNORE";
+        my $client = $server->accept();
+#       $SIG{CHLD} = \&REAPER;
+
+        next unless(defined $client);
+
+
+        my $pid = fork;
+
+        if($pid)
+        {
+                waitpid($pid,0);
+                close($client);
+                next;
+        }
+
+        unless(defined $pid)
+        {
+#       print $client "ERROR: fork: $!\n";
+                close($client);
+                warn "fork: $!";
+                next;
+        }
+
+        # Double fork
+        if(fork) {
+                exit(0);
+        }
+
+        close($server);
+
+        alarm(15);
+
+        eval {
+                local $/;
+                my $request = <$client>;
+                my $VAR1;
+                eval $request;
+                #print Dumper($$,$VAR1);
+                my $x = dispatch($VAR1,$client);
+                print $client "REPLY\n";
+                print $client Dumper($x);
+
+        };
+
+        close($client);
+        exit(0);
+
+}
+
+sub dispatch {
+        my ($request,$soc) = @_;
+
+        my $result = {};
+
+        eval {
+
+
+# print Dumper($VAR1);
+                $request->{expver} = "0001"    unless($request->{expver});
+                $request->{database}   = "10_days" unless($request->{database});
+
+                my $action = $request->{action};
+                $result = main->$action($request,$soc);
+
+
+        };
+
+
+        if($@)
+        {
+                $result = { error => $@ }       ;
+                print STDERR $@;
+        }
+
+        #print Dumper($$,$result);
+
+        return $result;
+
+}
+
+
+
+sub date_list {
+        my ($self,$args,$soc) = @_;
+
+        my $expver;
+        my $database;
+        my $list = {};
+
+        opendir(ROOT,$ROOT);
+        while($database = readdir(ROOT))
+        {
+                next  unless($database =~ /^\d\d_days/)  ;
+
+                opendir(BASE,"$ROOT/$database");
+                while($expver = readdir(BASE))
+                {
+
+                        next  unless($expver =~ /^\d\d\d\d$/)  ;
+
+                        my %x;
+                        my $x;
+
+                        my $latest = readlink("$ROOT/$database/$expver/latest");
+                        $latest = 999999999999 unless($latest);
+
+                        opendir(DIR,"$ROOT/$database/$expver") or die "$ROOT/$args->{expver}: $!";
+                        while($x = readdir(DIR))
+                        {
+                                next unless($x =~ /^(\d\d\d\d\d\d\d\d)(\d\d)/)  ;
+                                my $date = "$1$2";
+                                $x{$date}++ if($date <= $latest);
+                        }
+                        closedir(DIR);
+                        $list->{$database}->{$expver} = { dates => [sort keys %x], latest => $latest };
+                }
+                closedir(BASE);
+        }
+        closedir(ROOT);
+
+        return $list;
+}
+
+sub last_thursday {
+        my ($basedate) = @_;
+
+    my ($vyear, $vmonth, $vday, $vhour) =$basedate=~m/(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
+        my $time = timelocal(0,0,$vhour, $vday, $vmonth-1, $vyear-1900);
+    my $tm = localtime($time);
+    my $wday = $tm->wday;
+        my $delta;
+
+    if ($wday < 4){
+        $delta = ($wday-4)+7;
+    }
+    else {
+        $delta = $wday-4;
+    }
+    $delta= $delta*24*60*60 + $vhour*60*60;
+
+
+        my $newtime = $time-$delta;
+        my $tm = localtime($newtime);
+
+
+    my $year = $tm->year+1900;
+        my $month = $tm->mon+1;  if ($month<10) { $month="0$month";} ;
+        my $day =$tm->mday; if ($day<10) { $day="0$day";} ;
+        my $hour = $tm->hour; if ($hour<10) { $hour="0$hour";} ;
+        my $min = $tm->min; if ($min<10) { $min = "0$min";};
+
+
+    return "$year$month$day$hour";
+}
+
+
+# ----------------------------------------------------
+# convert_to_raster
+# converts the given file to the given raster format
+
+sub convert_to_raster {
+    my ($srcfile, $format) = @_;
+##    my $width  = 800;
+##    my $height =  $width * 1.414;
+    my $image  = Image::Magick->new;
+    $image->Read($srcfile);
+##    $image->Resize(width => $width, height => $height, blur => 0.5);
+    #$image->Set(Density => $density);
+    #$image->Rotate(degrees => $rotate) unless $rotate == 0;
+    $image->Trim(background => '#FFFFFF');
+    $image->Border(width=>10,height=>10,color=>"#ffffff");
+    $srcfile =~ s/\.(\w+)$/\.$format/;
+    $image->Write($srcfile);
+}
+
+
+
+sub make_eps {
+        my ($self,$args,$soc) = @_;
+
+        print Dumper($args);
+
+        my $basetime = sprintf('%d%02d',$args->{date},$args->{time}/100);
+
+        if ( $args->{date} eq 'latest' ) {
+                $basetime = 'latest';
+        }
+
+
+
+        my $tmp = "/webapps/epsgrams/work/epsgram.$$";
+        my $ext = $args->{type};
+
+        $ext = "ps" if($args->{type} eq "pdf");
+
+
+        # $args->{title} =~ s/'/&#x39;/g;
+        # $args->{title} =~ s/'/ /g;
+        $args->{title} =~ s/'/"/g;
+
+        $args->{title}  = "" if($args->{title} eq "none");
+        $args->{height} = "" if($args->{height} eq "none");
+
+        my $fail;
+
+        my $name = $args->{title};
+        $args->{title} =~ s/\&(\w+);/$X{$1}/ge;
+
+        my $database = $args->{database};
+        my $databases = {};
+        my $format = "";
+        $format = "_a3" if ($args->{format} eq "a3");
+        my $template="$database\_epsgram$format.xml";
+
+        if ( $database eq '15_days_with_clim' ) {
+                $databases->{database_eps} = "$ROOT/15_days/$args->{expver}/$basetime";
+                my $clim = last_thursday($basetime);
+                $databases->{database_clim} = "$ROOT/15_days_clim/$args->{expver}/$clim";
+        }
+        elsif ( $database eq '10_days_metgram' ) {
+        $template="$database$format.xml";
+                $databases->{database} = "$ROOT/metgram_fc/$args->{expver}/$basetime";
+        }
+        elsif ( $database eq 'efi_distribution' ) {
+                $database = "15_days";
+        $template='efi_distribution.xml';
+                my $step = -12;
+                $basetime = sprintf('%d%02d',$args->{date},12);
+                my $validtime = sprintf('%d%02d',$args->{vdate},12);
+                while ( $step  >= -120) {
+                        my $date = calcul_time($validtime, $step, 00);
+                        my $db_eps = "database_eps$step\h";
+                        my $db_efi = "database_efi$step\h";
+                    $databases->{$db_eps} = "$ROOT/15_days/$args->{expver}/$date";
+                    $databases->{$db_efi} = "$ROOT/efi/$args->{expver}/$date";
+                        $step = $step-12;
+                }
+                my $clim = last_thursday($basetime);
+                $databases->{database_clim} = "$ROOT/15_days_clim/$args->{expver}/$clim";
+
+        }
+        else {
+                $databases->{database} = "$ROOT/$database/$args->{expver}/$basetime";
+        }
+
+        open(OUT,">$tmp.in.xml") or die "$tmp.in.xml: $!";
+        print OUT <<"EOF";
+        <eps
+                template='$template'
+EOF
+        foreach my $db (keys %{$databases} )  {
+                print OUT "\t\t$db='$databases->{$db}'\n";
+                print "$db='$databases->{$db}'\n";
+        }
+
+        print OUT <<"EOF";
+                >
+
+                <station
+                name       = '$args->{title}'
+                latitude   = '$args->{latitude}'
+                longitude  = '$args->{longitude}'
+                height     = '$args->{height}'
+                psfile     = '$tmp.ps'
+                metafile   = '$tmp.xml'
+                /><name>$name</name>
+                </eps>
+EOF
+                close(OUT) or die "$tmp.in.xml: $!";
+
+ system("$ENV{MAGPLUS_HOME}/bin/metgram","$tmp.in.xml") or $fail++;
+ system("cat $tmp.in.xml>g.xml");
+#       system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>/dev/null 2>/dev/null");
+#system("$ENV{MAGPLUS_HOME}/bin/epsweb $tmp.in.xml 1>&2");
+                #system("cat $tmp.in.xml");
+
+        my $file = "$tmp.ps";
+
+
+        # produce a PDF version?
+
+        if ($args->{pdf} eq "1")
+        {
+            #my $density = 72;
+            #my $rotate  = 90;
+            system("ps2pdf $tmp.ps $tmp.pdf");
+        }
+
+
+        # produce raster versions?
+
+        if ($args->{gif} eq "1") { convert_to_raster ($file, "gif"); }
+        if ($args->{png} eq "1") { convert_to_raster ($file, "png"); }
+        if ($args->{jpg} eq "1") { convert_to_raster ($file, "jpg"); }
+
+
+# system("scp","$tmp.$args->{type}","$args->{host}:$args->{path}.$args->{type}");
+
+        foreach my $e ( qw(gif png jpg ps pdf xml) )
+        {
+            send_file("$tmp.$e","$args->{path}.$e",$soc);
+        }
+
+        my $x = { foo=> 'bar'};
+        eval {
+                #system("cat $tmp.xml");
+                $x = XML::Parser->new(Style => 'Objects')->parsefile("$tmp.xml");
+                #print Dumper($x);
+        };
+
+
+        unlink("$tmp.ps");
+        unlink("$tmp.pdf");
+        unlink("$tmp.gif");
+        unlink("$tmp.png");
+        unlink("$tmp.jpg");
+        unlink("$tmp.xml");
+        unlink("$tmp.in.xml");
+
+        return $x;
+
+}
+
+sub send_file {
+        my ($src,$target,$soc) = @_;
+
+        my $size = -s $src;
+        return unless($size);
+
+        open(IN,"<$src") or return;
+
+        print $soc "FILE\n$size\n$target\n";
+        print  "FILE $size $target\n";
+
+        my $buf;
+        my $buflen = 64*1024;
+        my $read;
+        my $total = 0;
+        my $w;
+
+        while(($read = sysread(IN,$buf,$buflen)) > 0)
+        {
+                 $w = syswrite($soc,$buf,$read);
+                 print STDERR "WRITE $w $read\n";
+                 $total += $read;
+        }
+
+        close(IN);
+        print "SENT $total\n";
+}
diff --git a/apps/metgram/multi_metgrams.xml b/apps/metgram/multi_metgrams.xml
new file mode 100644
index 0000000..bb58d7e
--- /dev/null
+++ b/apps/metgram/multi_metgrams.xml
@@ -0,0 +1,1510 @@
+<magics version='3' orientation='portrait' format='a3'> 
+	<definition>
+    <metgram id="station1" 
+                station_name='station1' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station2" 
+                station_name='station2' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station3" 
+                station_name='station3' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station4" 
+                station_name='station4' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station5" 
+                station_name='station5' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station6" 
+                station_name='station6' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station7" 
+                station_name='station7' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station8" 
+                station_name='station8' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station9" 
+                station_name='station9' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station10" 
+                station_name='station10' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station11" 
+                station_name='station11' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+    <metgram id="station12" 
+                station_name='station12' station_height="25" 
+                latitude="50" longitude="25" 
+                eps_temperature_correction='yes'
+				time='' date=''
+                database='/webapps/epsgrams/data/metgram_fc/0001/latest/detdb'> 
+        </metgram>
+	
+       <text id='title' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+       <text id='title_tempe' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+        <text id='title_wind' margin_bottom='75%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+
+		<map id="box"  margin_bottom='7%' margin_top='15%' border-colour='kelly_green'/>			
+		<map id="box_wind"  margin_bottom='7%' margin_top='21%' border-colour='kelly_green'/>			
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>			
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>		
+			<noline/>
+            <label height='0.2' colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</vertical_axis>
+
+<page id='metgram1' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station1" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>	
+<page id='metgram2' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station2" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram3' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station3" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram4' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station4" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram5' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station5" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram6' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station6" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram7' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station7" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram8' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station8" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram9' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station9" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram10' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station10" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram11' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station11" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram12' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station12" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="10m_wind"/>
+				<metgraph> <flags/> </metgraph>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+	</definition>
+    <drivers>
+		<$ps/>
+		<$png/>
+		<$pdf/>
+		<$gif/>
+		<$svg/>
+
+    </drivers>
+	<page left='5%' width='90%' bottom='5%' height='90%'>
+	    <nopageid/>
+		<page use_id='metgram1'/>
+		<page use_id='metgram2'/>
+		<page use_id='metgram3'/>
+		<page use_id='metgram4'/>
+		<page use_id='metgram5'/>
+		<page use_id='metgram6'/>
+		<page use_id='metgram7'/>
+		<page use_id='metgram8'/>
+		<page use_id='metgram9'/>
+		<page use_id='metgram10'/>
+		<page use_id='metgram11'/>
+		<page use_id='metgram12'/>
+	
+    </page>
+</magics>
diff --git a/apps/metgram/multi_metgrams_page1.xml b/apps/metgram/multi_metgrams_page1.xml
new file mode 100644
index 0000000..58835c2
--- /dev/null
+++ b/apps/metgram/multi_metgrams_page1.xml
@@ -0,0 +1,1511 @@
+<magics version='3' orientation='portrait' format='a3'> 
+	<definition>
+	
+	<metgram id='station1'
+		station_name='<font colour="red">Amsterdam (NL)</font>'
+		latitude='52.30' longitude='4.76'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station2'
+		station_name='<font colour="red">Ankara (TR)</font>'
+		latitude='39.93' longitude='32.86'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station3'
+		station_name='<font colour="red">Athens (GR)</font>'
+		latitude='38.41' longitude='23.73'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station4'
+		station_name='<font colour="red">Beijing (CN)</font>'
+		latitude='39.91' longitude='116.28'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station5'
+		station_name='<font colour="red">Belgrade (RS)</font>'
+		latitude='44.80' longitude='20.50'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station6'
+		station_name='<font colour="red">Berlin (DE)</font>'
+		latitude='52.51' longitude='13.40'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station7'
+		station_name='<font colour="red">Bern (CH)</font>'
+		latitude='46.90' longitude='7.50'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+    <metgram id='station8'
+		station_name='<font colour="red">Bet Dagan (IL)</font>'
+		latitude='32.0072' longitude='34.8140'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station9'
+		station_name='<font colour="red">Brasilia (BR)</font>'
+		latitude='-15.78' longitude='-47.91'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station10'
+		station_name='<font colour="red">Bratislava (SK)</font>'
+		latitude='48.15' longitude='17.12'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station11'
+		station_name='<font colour="red">Bruxelles (BE)</font>'
+		latitude='50.88' longitude='4.51'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station12'
+		station_name='<font colour="red">Bucharest (RO)</font>'
+		latitude='44.40' longitude='26.10'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	
+       <text id='title' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+       <text id='title_tempe' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+        <text id='title_wind' margin_bottom='75%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+
+		<map id="box"  margin_bottom='7%' margin_top='15%' border-colour='kelly_green'/>			
+		<map id="box_wind"  margin_bottom='7%' margin_top='21%' border-colour='kelly_green'/>			
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>			
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>		
+			<noline/>
+            <label height='0.2' colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</vertical_axis>
+
+<page id='metgram1' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station1" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="10m_wind"/>
+				<metgraph  metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>	
+<page id='metgram2' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station2" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram3' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station3" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram4' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station4" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram5' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station5" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram6' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station6" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram7' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station7" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram8' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station8" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram9' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station9" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram10' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station10" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram11' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station11" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram12' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station12" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+	</definition>
+    <drivers>
+		<$ps/>
+		<$png/>
+		<$pdf/>
+		<$gif/>
+		<$svg/>
+
+    </drivers>
+	<page left='5%' width='90%' bottom='5%' height='90%'>
+	    <nopageid/>
+		<page use_id='metgram1'/>
+		<page use_id='metgram2'/>
+		<page use_id='metgram3'/>
+		<page use_id='metgram4'/>
+		<page use_id='metgram5'/>
+		<page use_id='metgram6'/>
+		<page use_id='metgram7'/>
+		<page use_id='metgram8'/>
+		<page use_id='metgram9'/>
+		<page use_id='metgram10'/>
+		<page use_id='metgram11'/>
+		<page use_id='metgram12'/>
+	
+    </page>
+</magics>
diff --git a/apps/metgram/multi_metgrams_page2.xml b/apps/metgram/multi_metgrams_page2.xml
new file mode 100644
index 0000000..1e2b704
--- /dev/null
+++ b/apps/metgram/multi_metgrams_page2.xml
@@ -0,0 +1,1510 @@
+<magics version='3' orientation='portrait' format='a3'> 
+	<definition>
+	<metgram id='station1'
+		station_name='<font colour="red">Budapest (HU)</font>'
+		latitude='47.48' longitude='19.08'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station2'
+		station_name='<font colour="red">Darmstadt (DE)</font>'
+		latitude='49.85' longitude='8.67'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station3'
+		station_name='<font colour="red">Dublin (IE)</font>'
+		latitude='53.41' longitude='-6.25'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station4'
+		station_name='<font colour="red">Exeter (GB)</font>'
+		latitude='50.70' longitude='-3.50'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station5'
+		station_name='<font colour="red">Helsinki (FI)</font>'
+		latitude='60.25' longitude='25.03'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station6'
+		station_name='<font colour="red">Kobenhavn (DK)</font>'
+		latitude='55.76' longitude='12.51'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station7'
+		station_name='<font colour="red">Lisboa (PT)</font>'
+		latitude='38.76' longitude='-9.11'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station8'
+		station_name='<font colour="red">Ljubljana (SI)</font>'
+		latitude='46.07' longitude='14.55'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station9'
+		station_name='<font colour="red">Los Angeles (US)</font>'
+		latitude='34.10' longitude='-118.20'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station10'
+		station_name='<font colour="red">Luxembourg (LU)</font>'
+		latitude='49.62' longitude='6.15'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station11'
+		station_name='<font colour="red">Madrid (ES)</font>'
+		latitude='40.41' longitude='-3.66'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station12'
+		station_name='<font colour="red">Melbourne (AU)</font>'
+		latitude='-37.81' longitude='144.95'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	
+       <text id='title' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+       <text id='title_tempe' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+        <text id='title_wind' margin_bottom='75%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+
+		<map id="box"  margin_bottom='7%' margin_top='15%' border-colour='kelly_green'/>			
+		<map id="box_wind"  margin_bottom='7%' margin_top='21%' border-colour='kelly_green'/>			
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>			
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>		
+			<noline/>
+            <label height='0.2' colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</vertical_axis>
+
+<page id='metgram1' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station1" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>	
+<page id='metgram2' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station2" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram3' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station3" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram4' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station4" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram5' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station5" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram6' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station6" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram7' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station7" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram8' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station8" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram9' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station9" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram10' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station10" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram11' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station11" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram12' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station12" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+	</definition>
+    <drivers>
+		<$ps/>
+		<$png/>
+		<$pdf/>
+		<$gif/>
+		<$svg/>
+
+    </drivers>
+	<page left='5%' width='90%' bottom='5%' height='90%'>
+	    <nopageid/>
+		<page use_id='metgram1'/>
+		<page use_id='metgram2'/>
+		<page use_id='metgram3'/>
+		<page use_id='metgram4'/>
+		<page use_id='metgram5'/>
+		<page use_id='metgram6'/>
+		<page use_id='metgram7'/>
+		<page use_id='metgram8'/>
+		<page use_id='metgram9'/>
+		<page use_id='metgram10'/>
+		<page use_id='metgram11'/>
+		<page use_id='metgram12'/>
+	
+    </page>
+</magics>
diff --git a/apps/metgram/multi_metgrams_page3.xml b/apps/metgram/multi_metgrams_page3.xml
new file mode 100644
index 0000000..1ca4a9b
--- /dev/null
+++ b/apps/metgram/multi_metgrams_page3.xml
@@ -0,0 +1,1510 @@
+<magics version='3' orientation='portrait' format='a3'> 
+	<definition>
+	<metgram id='station1'
+		station_name='<font colour="red">Moscow (RU)</font>'
+		latitude='55.80' longitude='37.60'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station2'
+		station_name='<font colour="red">Nairobi (KE)</font>'
+		latitude='-1.28' longitude='36.75'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station3'
+		station_name='<font colour="red">New Delhi (IN)</font>'
+		latitude='28.56' longitude='77.11'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station4'
+		station_name='<font colour="red">Niamey (NE)</font>'
+		latitude='13.45' longitude='2.10'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station5'
+		station_name='<font colour="red">Oslo (NO)</font>'
+		latitude='59.88' longitude='10.61'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station6'
+		station_name='<font colour="red">Paris (FR)</font>'
+		latitude='48.83' longitude='2.33'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station7'
+		station_name='<font colour="red">Podgorica (ME)</font>'
+		latitude='42.78' longitude='19.46'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station8'
+		station_name='<font colour="red">Prague (CZ)</font>'
+		latitude='50.10' longitude='14.50'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station9'
+		station_name='<font colour="red">Rabat (MA)</font>'
+		latitude='34.00' longitude='-6.80'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station10'
+		station_name='<font colour="red">Reading (GB)</font>'
+		latitude='51.43' longitude='-0.95'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station11'
+		station_name='<font colour="red">Reykjavik (IS)</font>'
+		latitude='64.11' longitude='-21.88'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station12'
+		station_name='<font colour="red">Riga (LV)</font>'
+		latitude='56.95' longitude='24.1'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	
+       <text id='title' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+       <text id='title_tempe' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+        <text id='title_wind' margin_bottom='75%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+
+		<map id="box"  margin_bottom='7%' margin_top='15%' border-colour='kelly_green'/>			
+		<map id="box_wind"  margin_bottom='7%' margin_top='21%' border-colour='kelly_green'/>			
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>			
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>		
+			<noline/>
+            <label height='0.2' colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</vertical_axis>
+
+<page id='metgram1' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station1" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>	
+<page id='metgram2' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station2" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram3' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station3" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram4' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station4" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram5' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station5" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram6' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station6" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram7' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station7" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram8' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station8" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram9' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station9" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram10' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station10" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram11' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station11" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram12' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station12" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+	</definition>
+    <drivers>
+		<$ps/>
+		<$png/>
+		<$pdf/>
+		<$gif/>
+		<$svg/>
+
+    </drivers>
+	<page left='5%' width='90%' bottom='5%' height='90%'>
+	    <nopageid/>
+		<page use_id='metgram1'/>
+		<page use_id='metgram2'/>
+		<page use_id='metgram3'/>
+		<page use_id='metgram4'/>
+		<page use_id='metgram5'/>
+		<page use_id='metgram6'/>
+		<page use_id='metgram7'/>
+		<page use_id='metgram8'/>
+		<page use_id='metgram9'/>
+		<page use_id='metgram10'/>
+		<page use_id='metgram11'/>
+		<page use_id='metgram12'/>
+	
+    </page>
+</magics>
diff --git a/apps/metgram/multi_metgrams_page4.xml b/apps/metgram/multi_metgrams_page4.xml
new file mode 100644
index 0000000..98a602b
--- /dev/null
+++ b/apps/metgram/multi_metgrams_page4.xml
@@ -0,0 +1,1518 @@
+<magics version='3' orientation='portrait' format='a3'> 
+	<definition>
+	
+    <metgram id='station1'
+		station_name='<font colour="red">Roma (IT)</font>'
+		latitude='41.80' longitude='12.53'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+    <metgram id='station2'
+		station_name='<font colour="red">Skopje(MK)</font>'
+		latitude='41.9666' longitude='21.65'
+		height='239' eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+    <metgram id='station3'
+		station_name='<font colour="red">Sofia(BG)</font>'
+		latitude='42.65' longitude='23.383333'
+		height='591' eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station4'
+		station_name='<font colour="red">Stockholm (SE)</font>'
+		latitude='59.31' longitude='17.98'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station5'
+		station_name='<font colour="red">Tallinn (EE)</font>'
+		latitude='59.416667' longitude='24.75'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station6'
+		station_name='<font colour="red">Tokyo (J)</font>'
+		latitude='35.68' longitude='139.76'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station7'
+		station_name='<font colour="red">Toulouse (FR)</font>'
+		latitude='43.60' longitude='1.40'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station8'
+		station_name='<font colour="red">Vilnius (LT)</font>'
+		latitude='54.68' longitude='25.32'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station9'
+		station_name='<font colour="red">Washington (US)</font>'
+		latitude='38.83' longitude='-77.02'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station10'
+		station_name='<font colour="red">Wien (AT)</font>'
+		latitude='48.25' longitude='16.36'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	<metgram id='station11'
+		station_name='<font colour="red">Zagreb (HR)</font>'
+		latitude='45.83' longitude='16.00'
+		eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	
+	<metgram id='station12'
+		station_name='<font colour="red">Zurich(CH)</font>'
+		latitude='47.3702' longitude='8.549'
+		height='108' eps_temperature_correction='yes'
+		time='$time' date='$date'
+		database='$database/detdb'>
+	</metgram> 
+	
+       <text id='title' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+       <text id='title_tempe' margin_bottom='85%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+        <text id='title_wind' margin_bottom='75%'
+                    font='sansserif' colour='blue' font_size='0.2'
+                    justification='left' display='absolute'/>
+
+		<map id="box"  margin_bottom='7%' margin_top='15%' border-colour='kelly_green'/>			
+		<map id="box_wind"  margin_bottom='7%' margin_top='21%' border-colour='kelly_green'/>			
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>			
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>		
+			<noline/>
+            <label height='0.2' colour='kelly_green'/>
+			<grid line_style="dot" colour='kelly_green'/>
+            <tick colour='kelly_green'/>
+		</vertical_axis>
+
+<page id='metgram1' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station1" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station1" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station1" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>	
+<page id='metgram2' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station2" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station2" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station2" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram3' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station3" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station3" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station3" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram4' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station4" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station4" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station4" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram5' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station5" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station5" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station5" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram6' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station6" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station6" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station6" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram7' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station7" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station7" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station7" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram8' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station8" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station8" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station8" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram9' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station9" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station9" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station9" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram10' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station10" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station10" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station10" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram11' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station11" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station11" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station11" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+<page id='metgram12' width='25%' height='33%'>
+		<nopageid/>
+		<page height='15%' border='off'>
+		<meta/>
+		<nopageid/>
+	</page>
+	<page height='14%' border='off'>  
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <regular/>	</vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="cloud_cover" long_title='true'/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="0" y_max="100"/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>                
+			<vertical_axis use_id="vaxis"> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="humidity"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian> 
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="precipitation"/>
+				<metgraph> <bar/> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page  height='14%' border='off'>
+		<nopageid/>
+		<map use_id='box' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<text use_id='title'/>
+			<horizontal_axis use_id="haxis"/>				
+			<vertical_axis use_id="vaxis" axis_tick_interval='10'/>
+			<plot>
+				<metgram use_id="station12" parameter="msl"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+
+	<page height="8%" border='off'>
+		<nopageid/>
+		<map use_id='box_wind'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular y_min='-1' y_max='1'/>
+			</cartesian>
+			<text use_id='title_wind'/>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"> <nolabel/> <notick/> <nogrid/> </vertical_axis>
+			<plot>
+				<metgram use_id="station12" parameter="10m_wind"/>
+				<metgraph metgram_flag_frequency='2' metgram_plot_style='flags' metgram_flag_length='0.25'/>
+			</plot>
+		</map> 
+	</page>
+
+        <page height="20%" border='off'>
+			<nopageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+			<map  margin_bottom='25%' margin_top='15%' border-colour='kelly_green' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  automatic='on'/>
+			</cartesian>
+			<horizontal_axis use_id="haxis">
+				<date >
+				<both label_colour='blue' label_height='0.18' />
+				<month label_height='0.2' label_colour='blue'> <monthandyear /> </month>
+				<noyear/>
+				</date>
+				<label/>
+			</horizontal_axis>
+			<text use_id='title_tempe'/>
+			<vertical_axis use_id="vaxis"/>
+			<plot>
+				<metgram use_id="station12" parameter="temperature"/>
+				<metgraph> </metgraph>
+			</plot>
+		</map>
+	</page>
+</page>
+
+	</definition>
+    <drivers>
+		<$ps/>
+		<$png/>
+		<$pdf/>
+		<$gif/>
+		<$svg/>
+
+    </drivers>
+	<page left='5%' width='90%' bottom='5%' height='90%'>
+	    <nopageid/>
+		<page use_id='metgram1'/>
+		<page use_id='metgram2'/>
+		<page use_id='metgram3'/>
+		<page use_id='metgram4'/>
+	
+		<page use_id='metgram5'/>
+		<page use_id='metgram6'/>
+		<page use_id='metgram7'/>
+		<page use_id='metgram8'/>
+	
+        <page use_id='metgram9'/>
+        <page use_id='metgram10'/>
+        <page use_id='metgram11'/>
+        <page use_id='metgram12'/>
+        
+        
+    </page>
+    
+    
+</magics>
diff --git a/apps/metgram/templates/10_days_epsgram.xml b/apps/metgram/templates/10_days_epsgram.xml
new file mode 100644
index 0000000..ac87e23
--- /dev/null
+++ b/apps/metgram/templates/10_days_epsgram.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+<magics version="3.0" format="a4" orientation="portrait">
+	<definition>
+		
+		<epsgram id="station" 
+                station_name='$station' date='' time=''
+                latitude="$latitude" longitude="$longitude" station_height='$height'
+                eps_database='$database/epsdb'> 
+                <none/>
+        </epsgram>
+	
+        <text id="title" font='sansserif' colour='navy' font_size='0.4'
+               justification='left' display='absolute'>	
+		</text>
+		<horizontal_axis  axis_grid= "on"
+                    axis_grid_colour= "Rgb(0.5, 0.5, 0.5)"
+                    axis_grid_line_style= "dash"
+                    axis_line_colour= "navy"
+                    axis_minor_tick= "on"
+                    axis_type= "date"
+                    axis_minor_tick_colour= "navy"
+                    axis_tick_colour= "navy"
+                    axis_tick_label= "off" id="haxis"/>
+
+		<vertical_axis id="vaxis" 
+                    axis_grid="on"
+                    axis_grid_colour= "grey"
+                    axis_grid_line_style= "dash"
+                    axis_grid_reference_level= "0"
+                    axis_grid_reference_thickness= "1"
+                    axis_label_font="sansserif"
+                    axis_line="on"
+                    axis_line_colour="navy"
+                    axis_tick_colour="navy"
+                    axis_tick_label_colour="navy"
+                    axis_tick_label_height= "0.3"/>        
+		<map id='box'  margin_bottom='7%' margin_top='15%' border-colour='Rgb(0.5, 0.5, 0.5)'/>
+	</definition>
+	<drivers>
+		<$ps/>
+		<$pdf/>
+		<$png/>
+		<$gif/>
+		<$svg/>
+	</drivers>
+
+	<page height="7.5%" border='off'>
+		<nopageid/>
+	</page>
+
+	<page height="20%" border='off'>
+		<nopageid/> 
+		<map use_id='box'>
+		<cartesian>
+			<x_date   automatic='on'/>
+			<y_regular y_min='0' y_max='8'/>
+		</cartesian>  
+
+	<text margin_bottom='85%' use_id='title'  
+         text_line_1="<font size='0.5'>EPS Meteogram </font>"
+         text_line_2="<font size='0.4'><spot_info key='station'/>  <spot_info key='location'/></font>"
+         text_line_3="<font size='0.4'>Deterministic Forecast and EPS Distribution <spot_info key='base_date'/> </font>"
+         text_line_4="<br/>"
+         text_line_5="<font size='0.4'><spot_info key='parameter'/> </font>"
+         text_line_count="5"
+         />
+	<horizontal_axis  use_id="haxis"/>   
+	   <vertical_axis  use_id='vaxis'/> 
+	<plot>                
+			<epsgram use_id="station" parameter="cloud-cover" />
+			<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
+		</plot>
+	  </map>
+	</page>
+
+          <page height="20%" border='off'> 
+          <nopageid/> 
+          <map use_id='box'>
+       
+          <cartesian>
+			<x_date  automatic='on'/>
+            <y_regular automatic='on'/>
+           </cartesian>  
+           <horizontal_axis use_id='haxis'/>    
+		   <vertical_axis  use_id='vaxis'/>            
+           <text margin_bottom='90s%' use_id='title' 
+			text_line_1="<font size='0.4'><spot_info key='parameter'/> </font>"
+         />           
+           <plot>
+                <epsgram use_id="station" y_axis_threshold='3'  parameter="precip"/>
+				<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
+			</plot>
+		  </map>
+          </page>
+          <page height="20%" border='off'> 
+          <nopageid/>
+           <map  use_id='box'>
+       
+          <cartesian>
+			<x_date   automatic='on'/>
+            <y_regular automatic='on'/>
+           </cartesian>  
+           <horizontal_axis use_id='haxis'/>    
+		   <vertical_axis  use_id='vaxis'/> 
+           <text margin_bottom='85%' use_id='title'  
+			text_line_1="<font size='0.4'><spot_info key='parameter'/> </font>"
+         />
+         
+           <plot>
+                <epsgram use_id="station" parameter="10m-wind"/>
+				<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
+			</plot>
+		  </map>
+          </page>
+          <page height="30%" border='off'>
+        
+	   
+        <nopageid />
+        
+        <map   margin_bottom='30%' margin_top='15%' border-colour='Rgb(0.5, 0.5, 0.5)' >
+          <cartesian>
+			<x_date    automatic='on'/>
+            <y_regular automatic='on'/>
+           </cartesian>  
+           
+           <text margin_bottom='85%' use_id='title'  
+				text_line_1="<font size='0.4'><spot_info key='parameter'/> </font>"
+			/>
+           <vertical_axis  use_id='vaxis'/>                                       
+          
+            <horizontal_axis 
+                axis_grid='on' 
+                axis_grid_line_style="dot" 
+                axis_grid_colour='kelly_green'
+                axis_date_type = "days"
+                axis_days_label=  "both" 
+                axis_days_label_colour = "navy"
+                axis_months_label_colour= "navy"
+                axis_days_label_height= "0.3"
+                axis_months_label_height= "0.3"
+                axis_years_label_height ="0.3"
+                axis_minor_tick= "on"
+                axis_minor_tick_colour= "navy"
+                axis_type= "date"
+                axis_years_label_colour = "navy" />
+                   
+			
+          
+           <plot>
+                <epsgram use_id="station" parameter="2mt"/>
+				<epsgraph legend='on' eps_legend_font_size= "0.4" eps_legend_font_colour= "navy"> <both/> </epsgraph>
+			</plot> 
+		   
+		  
+          
+           </map> 
+           <legend
+                border= "off"
+                bottom= "-10%"
+                display= "absolute"
+                height= "35%"
+                left= "0%"
+                legend_entry_text_width= "99."
+                legend_plot_direction= "column"
+                legend_text_height= "0.3"
+                legend_text_colour= "navy"
+                width= "70%"
+            />
+	</page>
+</magics>
diff --git a/apps/metgram/10_days_epsgram_a3.xml b/apps/metgram/templates/10_days_epsgram_a3.xml
similarity index 100%
rename from apps/metgram/10_days_epsgram_a3.xml
rename to apps/metgram/templates/10_days_epsgram_a3.xml
diff --git a/apps/metgram/10_days_metgram.xml b/apps/metgram/templates/10_days_metgram.xml
similarity index 100%
rename from apps/metgram/10_days_metgram.xml
rename to apps/metgram/templates/10_days_metgram.xml
diff --git a/apps/metgram/10_days_wave_epsgram.xml b/apps/metgram/templates/10_days_wave_epsgram.xml
similarity index 100%
rename from apps/metgram/10_days_wave_epsgram.xml
rename to apps/metgram/templates/10_days_wave_epsgram.xml
diff --git a/apps/metgram/templates/15_days_epsgram.xml b/apps/metgram/templates/15_days_epsgram.xml
new file mode 100644
index 0000000..fd1990a
--- /dev/null
+++ b/apps/metgram/templates/15_days_epsgram.xml
@@ -0,0 +1,184 @@
+<?xml version="1.0"?>
+<magics version="3.0" format="a4" orientation="portrait">
+	<definition>
+		<epsgram id="eps" 
+			type='eps15'
+			station_name='$station' 
+			latitude="$latitude" longitude="$longitude" 
+			date='$date' time="$time" station_height="$height" 
+			eps_temperature_correction='yes'
+			eps_database='$database/epsdb'> 
+			<none/>
+	</epsgram>
+	
+	<text id="title" justification="left" font_style='bold'  font_size='0.4' 
+	      colour='Rgb(0.5, 0.5, 0.5)' font='sansserif' />
+
+		<map id="box" margin_bottom='7%' margin_top='15%' 
+		     border-colour='grey' border-thickness='2'/>
+
+		<horizontal_axis id="haxis" 
+                    axis_grid= "on"
+                    axis_grid_colour= "grey"
+                    axis_grid_line_style= "dot"
+                    axis_line_colour= "charcoal"
+                    axis_minor_tick= "on"
+                    axis_minor_tick_colour= "charcoal"
+                    axis_tick_colour= "charcoal"
+                    axis_tick_label="off"
+                    axis_type= "date" />
+                
+		
+
+		<vertical_axis id="vaxis" 
+                    axis_grid= "on"
+                    axis_grid_colour= "grey"
+                    axis_grid_line_style= "dot"
+                    axis_grid_reference_level= "0"
+                    axis_grid_reference_thickness= "1"
+                    axis_label_font= "sansserif"
+                    axis_line= "on"
+                    axis_line_colour= "charcoal"
+                    axis_tick_colour= "charcoal"
+                    axis_tick_label_colour= "charcoal"
+                    axis_tick_label_height= "0.3" />
+
+	</definition>
+		<drivers>
+			<$ps/>
+			<$pdf/>
+			<$png/>
+			<$gif/>
+			<$svg/>
+		</drivers>
+
+	<page  height="7.5%" border='off'>
+		<nopageid/>       
+	</page>
+
+	<page  height="19%" border='off'>
+		<nopageid/>
+			<$meta/>
+			<map use_id='box'>
+				<text use_id='title' margin_bottom='85%' 
+                text_line_1="<font size='0.4'>Eps Meteogram</font>"
+                text_line_2="<font size='0.4'><spot_info key='station'/></font>"
+                text_line_3="<font size='0.4'>Extended Forecast based in EPS Distribution <spot_info key='base_date'/></font>"
+                text_line_4="<br/>"
+                text_line_5="<font size='0.4'><spot_info key='parameter'/></font>"
+                text_line_count="5"
+                />
+				<cartesian>
+					<x_date  automatic='on' />
+					<y_regular automatic='on' />
+				</cartesian>  
+				<plot>
+					<epsgram use_id="eps" parameter="cloud-cover" long_title='true'/>                    
+					<epsgraph box_colour='Rgb(0.925, 0.609, 0.953)' box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
+				</plot>
+				<horizontal_axis use_id="haxis"/>
+				<vertical_axis use_id="vaxis"/>
+			</map>
+	</page>
+	<page height="19%" border='off'>
+		<nopageid/>
+		<map  use_id='box' >
+          <text use_id='title' margin_bottom='85%' 
+                 text_line_1= "<font size='0.4'><spot_info key='parameter'/></font>"
+                />
+           <cartesian>
+			<x_date  automatic='on' />
+            <y_regular automatic='on' y_min='0' y_max='20' />
+           </cartesian>  
+          
+			
+                <plot>
+					<epsgram use_id="eps" parameter="precip"/>
+					<epsgraph max='20' box_colour='Rgb(0.49, 0.89, 0.51)' box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
+
+				</plot>
+           <horizontal_axis use_id="haxis"/>
+				<vertical_axis use_id="vaxis"/>
+			
+		</map> 
+	</page>
+	<page height="6%" border='off'>
+		<nopageid/>
+		<map margin_bottom='7%' margin_top='25%' 
+		     border-colour='grey' border-thickness='2'>
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular  y_min="-43200" y_max="43200" />
+			</cartesian> 
+			 <text use_id='title' margin_bottom='75%' 
+                 text_line_1="<font size='0.4'><spot_info key='parameter'/></font> "
+                />
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis" axis_tick_label='off' axis_tick='off' axis_grid='off'></vertical_axis> 
+			<plot>
+				<epsgram use_id="eps" parameter="10m-wind-dd"/>
+				<epswind legend ='on' rose_wind_colour='gold' rose_wind_border_colour='Rgb(0.5000, 0.5000, 0.5000)'/>
+			</plot>
+       
+        </map> <legend display='absolute' bottom='50%' left='65%' width='20%' height='90%' 
+	        text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/> 
+        </page>
+	<page height="19%" border='off'>
+		<nopageid/>
+		<map use_id='box'>
+			 <text use_id='title' margin_bottom='85%' 
+                text_line_1=" <font size='0.4'><spot_info key='parameter'/></font> "
+                />
+			<cartesian>
+				<x_date  automatic='on' />
+				<y_regular automatic='on' y_min='0' y_max='20' />
+			</cartesian>  
+			<plot>
+				<epsgram use_id="eps" parameter="10m-wind"/>
+				<epsgraph box_colour='gold' box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
+			</plot>
+			<horizontal_axis use_id="haxis"/>
+			<vertical_axis use_id="vaxis"/>
+		</map>
+	</page>
+	<page height="28%" border='off'>
+		<pageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' 
+		        font='sansserif' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+		<map margin_bottom='37%' margin_top='10%' border-colour='Rgb(0.5, 0.5, 0.5)' >
+			<cartesian>
+				<x_date automatic='on'/>
+				<y_regular automatic='on'/>
+			</cartesian>
+			<horizontal_axis axis_days_label= "both"
+                    axis_days_label_colour= "charcoal"
+                    axis_days_label_height= "0.3"
+                    axis_grid= "on"
+                    axis_grid_colour= "Rgb(0.5, 0.5, 0.5)"
+                    axis_grid_line_style= "dash"
+                    axis_line_colour= "charcoal"
+                    axis_minor_tick= "on"
+                    axis_minor_tick_colour= "charcoal"
+                    axis_months_label_colour= "charcoal"
+                    axis_months_label_height= "0.3"
+                    axis_tick_colour= "charcoal"
+                    axis_type= "date"
+                    axis_years_label_colour= "charcoal"
+                    axis_years_label_height= "0.3"
+            />			
+			<vertical_axis  use_id='vaxis'/> 
+			 <text use_id='title' margin_bottom='90%' 
+                text_line_1=" <font size='0.4'><spot_info key='parameter'/></font> "
+                />		
+			<plot>
+				<epsgram use_id="eps" parameter="temperature"/>
+				<epsgraph border_colour='Rgb(0.5, 0.5, 0.5)' legend='on'
+				left_box_colour='sky' box_median_colour='black' right_box_colour='RGB(1.0, 0.222, 0.222)'
+				font='sansserif' font_colour='Rgb(0.5, 0.5, 0.5)' box_colour='grey'
+				box_border_colour='Rgb(0.5, 0.5, 0.5)'> <both/> </epsgraph>
+			</plot>
+		</map>
+		<legend display='absolute' bottom='0%' left='5%' width='20%' height='30%' 
+		        plot_direction='column' text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/>
+        
+	</page>
+</magics>
diff --git a/apps/metgram/15_days_epsgram_a3.xml b/apps/metgram/templates/15_days_epsgram_a3.xml
similarity index 100%
rename from apps/metgram/15_days_epsgram_a3.xml
rename to apps/metgram/templates/15_days_epsgram_a3.xml
diff --git a/apps/metgram/15_days_with_clim_epsgram.xml b/apps/metgram/templates/15_days_with_clim_epsgram.xml
similarity index 100%
rename from apps/metgram/15_days_with_clim_epsgram.xml
rename to apps/metgram/templates/15_days_with_clim_epsgram.xml
diff --git a/apps/metgram/classic_plumes.json b/apps/metgram/templates/classic_plumes.json
similarity index 100%
rename from apps/metgram/classic_plumes.json
rename to apps/metgram/templates/classic_plumes.json
diff --git a/apps/metgram/efi_distribution.xml b/apps/metgram/templates/efi_distribution.xml
similarity index 100%
rename from apps/metgram/efi_distribution.xml
rename to apps/metgram/templates/efi_distribution.xml
diff --git a/apps/metgram/new_efi_distribution.xml b/apps/metgram/templates/new_efi_distribution.xml
similarity index 100%
rename from apps/metgram/new_efi_distribution.xml
rename to apps/metgram/templates/new_efi_distribution.xml
diff --git a/apps/metgram/tigge_epsgram.xml b/apps/metgram/tigge_epsgram.xml
new file mode 100644
index 0000000..e7a3559
--- /dev/null
+++ b/apps/metgram/tigge_epsgram.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<magics version="2.0">
+	<definition>
+		<epsgram id="station" 
+                station='reading' date='' time=''
+                latitude="50" longitude="-1" height='48'
+                eps_database='/scratch/graphics/cgs/tigge//ecmf/2007091200/epsdb'> 
+                <none/>
+        </epsgram>
+	
+        <text id="title" justification="left" 
+            font_size="0.4" colour='blue' font='helvetica'>	
+		</text>
+	
+
+		<horizontal_axis id="haxis" axis_line="false" line_thickness="4" colour='kelly_green'>
+			<nolabel/>
+			<date/>
+			<noline/>
+            <minortick colour='kelly_green'/>
+			<colour>kelly_green</colour>
+			<grid line_style="dot" colour='kelly_green'>				
+			</grid>
+            <tick colour='kelly_green'>               
+			</tick>
+		</horizontal_axis>
+
+		<vertical_axis id="vaxis" axis_line="false" line_thickness="4" colour='kelly_green'>
+			<noline/>
+            <label colour='kelly_green' quality='helvetica'>              
+			</label>
+			<grid line_style="dot" colour='kelly_green'>
+			</grid>
+            <tick colour='kelly_green'>
+			</tick>
+		</vertical_axis>        
+        <map id='box'  margin-bottom='7%' margin-top='15%' border-colour='Rgb(0.5, 0.5, 0.5)'/>
+
+	</definition>
+    
+    <drivers>
+       <ps/>
+    </drivers>
+ 
+    <page height="7.5%" border='off'>
+        <nopageid/>
+       
+    </page>
+	 
+       
+       <page height="20%" border='off'>
+        <nopageid/> 
+        <meta/>
+        
+        <map use_id='box'>
+       
+          <cartesian>
+			<x_date   automatic='on'/>
+            <y_regular y_min='0' y_max='100'/>
+           </cartesian>  
+           
+           
+           <text margin-bottom='78%' use_id='title'/>
+           <horizontal_axis use_id='haxis'/>    
+		   <vertical_axis  use_id='vaxis'/>                                       
+           <layer>
+                
+					<epsgram use_id="station" parameter="228164" parameter_title='cloud-cover' long_title='true'/>
+					<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
+				
+			</layer>
+            
+          
+		  </map>
+          </page>
+          
+          <page height="20%" border='off'> 
+          <nopageid/> 
+          <map use_id='box'>
+       
+          <cartesian>
+			<x_date  automatic='on'/>
+            <y_regular y_min='0' y_max='15'/>
+           </cartesian>  
+           
+           <text margin-bottom='78%' use_id='title'/>
+           <horizontal_axis use_id='haxis'/>    
+		   <vertical_axis  use_id='vaxis'/>           
+          
+           <layer>
+                <epsgram use_id="station" parameter="228228" parameter_title='total precipitation'/>
+					<epsgraph max='15' deterministic='on' whisker='on'> <both/> </epsgraph>
+
+			</layer>
+            
+           
+		  </map>
+          </page>
+          <page height="20%" border='off'> 
+          <nopageid/>
+           <map  use_id='box'>
+       
+          <cartesian>
+			<x_date   automatic='on'/>
+            <y_regular automatic='on'/>
+           </cartesian>  
+           
+           <text margin-bottom='78%' use_id='title'/>
+           <horizontal_axis use_id='haxis'/>    
+		   <vertical_axis  use_id='vaxis'/>           
+          
+           <layer>
+                <epsgram use_id="station" parameter="165" parameter_title='10m wind'/>
+					<epsgraph deterministic='on' whisker='on'> <both/> </epsgraph>
+			</layer>
+            
+          
+		  </map>
+          </page>
+          <page height="30%" border='off'>
+        
+	   
+        <pageid line_system_plot='off' line_date_plot='off' line_errors_plot='off' 
+                font='helvetica' line_colour='Rgb(0.8, 0.8, 0.8)'/>
+        <map   margin-bottom='30%' margin-top='15%' border-colour='Rgb(0.5, 0.5, 0.5)' >
+          <cartesian>
+			<x_date    automatic='on'/>
+            <y_regular automatic='on'/>
+           </cartesian>  
+           
+           <text margin-bottom='80%' use_id='title'/>
+          
+		   <vertical_axis  use_id='vaxis'/>   
+           <horizontal_axis use_id="haxis">
+                   <date>
+                    <both colour='blue' height='0.25' />
+                     <month height='0.3' colour='blue'> <monthandyear /> </month>
+                     <noyear height='0.4'/>
+                    </date>
+                    <label quality='helvetica'/>
+			</horizontal_axis>     
+               
+           <layer>
+                <epsgram use_id="station" parameter="167" parameter_title='surface temperature' parameter_offset_factor='-273.5' />
+				<epsgraph > <both/> </epsgraph>
+			</layer> 
+            <legend bottom='0%' left='0%' width='30%' height='40%' 
+                   plot_direction='column' columns='3'
+                   text_colour='Rgb(0.5, 0.5, 0.5)' border='off' blanking='off'/>	
+            
+            
+            
+            
+
+		 
+		  </map>
+    
+</page>
+		
+
+		
+
+</magics>
diff --git a/apps/metgram/wave10.xml b/apps/metgram/wave10.xml
new file mode 100644
index 0000000..26a0800
--- /dev/null
+++ b/apps/metgram/wave10.xml
@@ -0,0 +1,9 @@
+
+<eps template='10_days_wave_epsgram.xml' database='/vol/epsgram/data/spotbase/10_days_wave/0001/latest' format='a4'> 
+   
+    
+   <station name='Sea' latitude='40' longitude='-20'  psfile='Sea.ps'
+       giffile='Sea.gif' metafile='Sea.meta'/>
+   
+    
+</eps>
diff --git a/apps/metgram/wave10_a3.xml b/apps/metgram/wave10_a3.xml
new file mode 100644
index 0000000..b8a1912
--- /dev/null
+++ b/apps/metgram/wave10_a3.xml
@@ -0,0 +1,9 @@
+
+<eps template='10_days_wave_epsgram_a3.xml' database='/vol/epsgram/data/spotbase/10_days_wave/0001/latest' format='a4'> 
+   
+    
+   <station name='Sea' latitude='40' longitude='-20'  psfile='Sea_a3.ps'
+       giffile='Sea_a3.gif' metafile='Sea.meta'/>
+   
+    
+</eps>
diff --git a/bufr.f90 b/bufr.f90
new file mode 100644
index 0000000..1e01c54
--- /dev/null
+++ b/bufr.f90
@@ -0,0 +1,31 @@
+	program magics
+
+	call popen
+
+	call pset1c("output_formats", (/"ps"/), 1)
+	call psetc("output_name", "bufr")
+	call psetc("output_name_first_page_number", "off")
+
+	call psetr("subpage_lower_left_longitude", -20.00)
+	call psetr("subpage_upper_right_longitude", 60.00)
+	call psetr("subpage_upper_right_latitude", 60.00)
+	call psetc("subpage_map_projection", "cylindrical")
+	call psetr("subpage_lower_left_latitude", 30.00)
+
+	call psetc("obs_input_file_name", "synop.bufr")
+	call pobs
+
+	call preset('obs_input_file_name')
+
+	call psetc("map_grid_colour", "tan")
+	call psetc("map_grid", "on")
+	call psetc("map_coastline_colour", "tan")
+	call pcoast
+
+	call preset('map_grid_colour')
+	call preset('map_grid')
+	call preset('map_coastline_colour')
+
+	call pclose
+
+	end
diff --git a/cmake/2.8/CMakePushCheckState.cmake b/cmake/2.8/CMakePushCheckState.cmake
new file mode 100644
index 0000000..0a42128
--- /dev/null
+++ b/cmake/2.8/CMakePushCheckState.cmake
@@ -0,0 +1,61 @@
+# This module defines two macros:
+# CMAKE_PUSH_CHECK_STATE()
+# and
+# CMAKE_POP_CHECK_STATE()
+# These two macros can be used to save and restore the state of the variables
+# CMAKE_REQUIRED_FLAGS, CMAKE_REQUIRED_DEFINITIONS, CMAKE_REQUIRED_LIBRARIES
+# and CMAKE_REQUIRED_INCLUDES used by the various Check-files coming with CMake,
+# like e.g. check_function_exists() etc.
+# The variable contents are pushed on a stack, pushing multiple times is supported.
+# This is useful e.g. when executing such tests in a Find-module, where they have to be set,
+# but after the Find-module has been executed they should have the same value
+# as they had before.
+#
+# Usage:
+#   cmake_push_check_state()
+#   set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -DSOME_MORE_DEF)
+#   check_function_exists(...)
+#   cmake_pop_check_state()
+
+#=============================================================================
+# Copyright 2006-2011 Alexander Neundorf, <neundorf at kde.org>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+
+MACRO(CMAKE_PUSH_CHECK_STATE)
+
+   IF(NOT DEFINED _CMAKE_PUSH_CHECK_STATE_COUNTER)
+      SET(_CMAKE_PUSH_CHECK_STATE_COUNTER 0)
+   ENDIF()
+
+   MATH(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}+1")
+
+   SET(_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}    ${CMAKE_REQUIRED_INCLUDES})
+   SET(_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_DEFINITIONS})
+   SET(_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}   ${CMAKE_REQUIRED_LIBRARIES})
+   SET(_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}       ${CMAKE_REQUIRED_FLAGS})
+ENDMACRO(CMAKE_PUSH_CHECK_STATE)
+
+MACRO(CMAKE_POP_CHECK_STATE)
+
+# don't pop more than we pushed
+   IF("${_CMAKE_PUSH_CHECK_STATE_COUNTER}" GREATER "0")
+
+      SET(CMAKE_REQUIRED_INCLUDES    ${_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      SET(CMAKE_REQUIRED_DEFINITIONS ${_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      SET(CMAKE_REQUIRED_LIBRARIES   ${_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      SET(CMAKE_REQUIRED_FLAGS       ${_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+
+      MATH(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}-1")
+   ENDIF()
+
+ENDMACRO(CMAKE_POP_CHECK_STATE)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
new file mode 100644
index 0000000..d42a153
--- /dev/null
+++ b/cmake/CMakeLists.txt
@@ -0,0 +1,5 @@
+file( GLOB_RECURSE ecbuild_support_files  RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*" )
+
+ecbuild_add_resources(  TARGET ${PROJECT_NAME}_ecbuild_support_files
+						SOURCES_PACK
+							${ecbuild_support_files} )
diff --git a/cmake/CheckFortranCompilerFlag.cmake b/cmake/CheckFortranCompilerFlag.cmake
new file mode 100644
index 0000000..5408691
--- /dev/null
+++ b/cmake/CheckFortranCompilerFlag.cmake
@@ -0,0 +1,37 @@
+# - Check whether the CXX compiler supports a given flag.
+# CHECK_CXX_COMPILER_FLAG(FLAG VARIABLE)
+#
+#  FLAG - the compiler flag
+#  VARIABLE - variable to store the result
+
+# Copyright (c) 2006, Alexander Neundorf, <neundorf at kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+INCLUDE(CheckFortranSourceCompiles)
+
+MACRO (CHECK_FORTRAN_COMPILER_FLAG _FLAG _RESULT)
+   SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+   SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+   CHECK_FORTRAN_SOURCE_COMPILES("program main\nend program\n" ${_RESULT}
+     # Some compilers do not fail with a bad flag
+     FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
+     FAIL_REGEX "unrecognized .*option"                     # GNU
+     FAIL_REGEX "unknown .*option"                          # Clang
+     FAIL_REGEX "invalid value"                             # Clang
+     FAIL_REGEX "ignoring unknown option"                   # MSVC
+     FAIL_REGEX "warning D9002"                             # MSVC, any lang
+     FAIL_REGEX "option.*not supported"                     # Intel
+     FAIL_REGEX "invalid argument .*option"                 # Intel
+     FAIL_REGEX "ignoring option .*argument required"       # Intel
+     FAIL_REGEX "[Uu]nknown option"                         # HP
+     FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
+     FAIL_REGEX "command option .* is not recognized"       # XL
+     FAIL_REGEX "not supported in this configuration; ignored"       # AIX
+     FAIL_REGEX "File with unknown suffix passed to linker" # PGI
+     FAIL_REGEX "WARNING: unknown flag:"                    # Open64
+     )
+   SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+ENDMACRO (CHECK_FORTRAN_COMPILER_FLAG)
diff --git a/cmake/CheckFortranSourceCompiles.cmake b/cmake/CheckFortranSourceCompiles.cmake
new file mode 100644
index 0000000..0b5c423
--- /dev/null
+++ b/cmake/CheckFortranSourceCompiles.cmake
@@ -0,0 +1,94 @@
+# - Check if given Fortran source compiles and links into an executable
+# CHECK_FORTRAN_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>])
+#  <code>       - source code to try to compile, must define 'main'
+#  <var>        - variable to store whether the source code compiled
+#  <fail-regex> - fail if test output matches this regex
+# The following variables may be set before calling this macro to
+# modify the way the check is run:
+#
+#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
+#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+#  CMAKE_REQUIRED_INCLUDES = list of include directories
+#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+
+#=============================================================================
+# Copyright 2005-2009 Kitware, Inc.
+# Fortran version, 2013, James Tappin
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+
+
+macro(CHECK_FORTRAN_SOURCE_COMPILES SOURCE VAR)
+
+if("${VAR}" MATCHES "^${VAR}$")
+    set(_FAIL_REGEX)
+    set(_key)
+    foreach(arg ${ARGN})
+      if("${arg}" MATCHES "^(FAIL_REGEX)$")
+        set(_key "${arg}")
+      elseif(_key)
+        list(APPEND _${_key} "${arg}")
+      else()
+        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
+      endif()
+    endforeach()
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES)
+    endif()
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    else()
+      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES)
+    endif()
+    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90"
+      "${SOURCE}\n")
+
+    # message(STATUS "Performing Test ${VAR}")
+    try_compile(${VAR}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+      "${CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES}"
+      OUTPUT_VARIABLE OUTPUT)
+
+    foreach(_regex ${_FAIL_REGEX})
+      if("${OUTPUT}" MATCHES "${_regex}")
+        set(${VAR} 0)
+      endif()
+    endforeach()
+
+    if(${VAR})
+      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
+      # message(STATUS "Performing Test ${VAR} - Success")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Performing Fortran SOURCE FILE Test ${VAR} succeded with the following output:\n"
+        "${OUTPUT}\n"
+        "Source file was:\n${SOURCE}\n")
+    else()
+      # message(STATUS "Performing Test ${VAR} - Failed")
+      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Performing Fortran SOURCE FILE Test ${VAR} failed with the following output:\n"
+        "${OUTPUT}\n"
+        "Source file was:\n${SOURCE}\n")
+    endif()
+  endif()
+endmacro()
+
diff --git a/cmake/FindADSM.cmake b/cmake/FindADSM.cmake
new file mode 100644
index 0000000..76140b6
--- /dev/null
+++ b/cmake/FindADSM.cmake
@@ -0,0 +1,43 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find ADSM
+# Once done this will define
+#  ADSM_FOUND - System has ADSM
+#  ADSM_INCLUDE_DIRS - The ADSM include directories
+#  ADSM_LIBRARIES - The libraries needed to use ADSM
+
+if( EC_OS_BITS EQUAL 32 )
+	set( ADSM_LIBNAME ApiDS )
+endif()
+if( EC_OS_BITS EQUAL 64 )
+	set( ADSM_LIBNAME ApiTSM64 )
+endif()
+if( NOT DEFINED ADSM_LIBNAME )
+	message( STATUS "MARS only supports ADSM with 32 or 64 bits" )
+endif()
+
+if( DEFINED ADSM_PATH )
+	find_path(ADSM_INCLUDE_DIR dsmapitd.h      PATHS ${ADSM_PATH} ${ADSM_PATH}/include ${ADSM_PATH}/sample NO_DEFAULT_PATH )
+	find_library(ADSM_LIBRARY  ${ADSM_LIBNAME} PATHS ${ADSM_PATH} ${ADSM_PATH}/lib     ${ADSM_PATH}/lib64  NO_DEFAULT_PATH )
+endif()
+
+find_path(ADSM_INCLUDE_DIR dsmapitd.h      PATH_SUFFIXES bin64 )
+find_library( ADSM_LIBRARY ${ADSM_LIBNAME} PATH_SUFFIXES bin64 )
+
+set( ADSM_LIBRARIES    ${ADSM_LIBRARY} )
+set( ADSM_INCLUDE_DIRS ${ADSM_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set ADSM_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(ADSM  DEFAULT_MSG
+								  ADSM_LIBRARY ADSM_INCLUDE_DIR)
+
+mark_as_advanced(ADSM_INCLUDE_DIR ADSM_LIBRARY )
diff --git a/cmake/FindAIO.cmake b/cmake/FindAIO.cmake
new file mode 100644
index 0000000..61fdcc0
--- /dev/null
+++ b/cmake/FindAIO.cmake
@@ -0,0 +1,66 @@
+# (C) Copyright 1996-2014 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.
+
+# OUTPUT:
+# RT_LIB  = the library to link against
+
+if( CMAKE_SYSTEM_NAME MATCHES "Linux" )
+
+	find_package( Realtime )
+
+	if( REALTIME_FOUND ) # check that aio needs realtime
+		set( AIO_LIBRARIES ${RT_LIB} )
+	endif()
+
+endif()
+
+find_path( AIO_INCLUDE_DIRS NAMES aio.h HINTS ENV AIO_PATH ${AIO_PATH} )
+
+mark_as_advanced( AIO_INCLUDE_DIRS )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( AIO  DEFAULT_MSG  AIO_INCLUDE_DIRS  )
+
+# checks for AIO64 vs AIO
+if( AIO_FOUND )
+
+	include( CheckCSourceCompiles )
+	include( CMakePushCheckState )
+    
+    cmake_push_check_state()
+    
+		set( CMAKE_REQUIRED_INCLUDES ${AIO_INCLUDE_DIRS} )
+
+		if( AIO_LIBRARIES )
+			set( CMAKE_REQUIRED_LIBRARIES ${AIO_LIBRARIES} )
+		endif()
+
+		check_c_source_compiles( "#include <aio.h>
+								  #include <fcntl.h>
+								  int main(){
+									  struct aiocb* aiocbp;
+									  int n = aio_write(aiocbp);
+									  n = aio_read(aiocbp);
+									  n = aio_fsync(O_SYNC,aiocbp);
+									  return 0; }"
+								EC_HAVE_AIOCB )
+
+		check_c_source_compiles( "#include <aio.h>
+								  #include <fcntl.h>
+								  int main(){
+									  struct aiocb64* aiocbp;
+									  int n = aio_write64(aiocbp);
+									  n = aio_read64(aiocbp);
+									  n = aio_fsync64(O_SYNC,aiocbp);
+									  return 0; }"
+								EC_HAVE_AIOCB64 )
+
+    cmake_pop_check_state()
+
+endif()
diff --git a/cmake/FindArmadillo.cmake b/cmake/FindArmadillo.cmake
new file mode 100644
index 0000000..ba14e2e
--- /dev/null
+++ b/cmake/FindArmadillo.cmake
@@ -0,0 +1,33 @@
+# (C) Copyright 1996-2014 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.
+
+ecbuild_add_extra_search_paths( armadillo )
+
+IF( NOT DEFINED ARMADILLO_PATH AND NOT "$ENV{ARMADILLO_PATH}" STREQUAL "" )
+  SET( ARMADILLO_PATH "$ENV{ARMADILLO_PATH}" )
+ENDIF()
+
+if( DEFINED ARMADILLO_PATH )
+        find_path(ARMADILLO_INCLUDE_DIR ARMADILLO.h PATHS ${ARMADILLO_PATH}/include PATH_SUFFIXES ARMADILLO  NO_DEFAULT_PATH)
+        find_library(ARMADILLO_LIBRARY  ARMADILLO   PATHS ${ARMADILLO_PATH}/lib     PATH_SUFFIXES ARMADILLO  NO_DEFAULT_PATH)
+endif()
+
+find_path(ARMADILLO_INCLUDE_DIR  armadillo PATH_SUFFIXES include )
+find_library( ARMADILLO_LIBRARY  armadillo   PATH_SUFFIXES lib )
+
+set( ARMADILLO_LIBRARIES    ${ARMADILLO_LIBRARY} )
+set( ARMADILLO_INCLUDE_DIRS ${ARMADILLO_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set ARMADILLO_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(ARMADILLO  DEFAULT_MSG
+                                  ARMADILLO_LIBRARY ARMADILLO_INCLUDE_DIR)
+
+mark_as_advanced(ARMADILLO_INCLUDE_DIR ARMADILLO_LIBRARY )
diff --git a/cmake/FindCMath.cmake b/cmake/FindCMath.cmake
new file mode 100644
index 0000000..f498c01
--- /dev/null
+++ b/cmake/FindCMath.cmake
@@ -0,0 +1,20 @@
+# (C) Copyright 1996-2014 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.
+
+#Sets:
+# CMATH_LIBRARIES      = the library to link against (RT etc)
+
+if( DEFINED CMATH_PATH )
+    find_library(CMATH_LIBRARIES m PATHS ${CMATH_PATH}/lib NO_DEFAULT_PATH )
+endif()
+
+find_library(CMATH_LIBRARIES m )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(CMATH  DEFAULT_MSG CMATH_LIBRARIES )
diff --git a/cmake/FindCairo.cmake b/cmake/FindCairo.cmake
new file mode 100644
index 0000000..7b3d47e
--- /dev/null
+++ b/cmake/FindCairo.cmake
@@ -0,0 +1,58 @@
+# - Try to find the cairo library
+# Once done this will define
+#
+# CAIRO_FOUND - system has cairo
+# CAIRO_INCLUDE_DIRS - the cairo include directory
+# CAIRO_LIBRARIES - Link these to use cairo
+#
+# Define CAIRO_MIN_VERSION for which version desired.
+
+
+if( NOT DEFINED CAIRO_PATH AND NOT "$ENV{CAIRO_PATH}" STREQUAL "" )
+    set( APPEND CAIRO_PATH "$ENV{CAIRO_PATH}" )
+endif()
+
+if( NOT DEFINED CAIRO_PATH )
+
+    include(FindPkgConfig)
+
+    if(Cairo_FIND_REQUIRED)
+        set(_pkgconfig_REQUIRED "REQUIRED")
+    else()
+        set(_pkgconfig_REQUIRED "")
+    endif()
+
+    if(CAIRO_MIN_VERSION)
+        pkg_check_modules(PKCAIRO ${_pkgconfig_REQUIRED} cairo>=${CAIRO_MIN_VERSION})
+    else()
+        pkg_check_modules(PKCAIRO ${_pkgconfig_REQUIRED} cairo)
+    endif()
+
+    if( PKG_CONFIG_FOUND AND PKCAIRO_FOUND )
+
+        find_path(CAIRO_INCLUDE_DIR cairo.h HINTS ${PKCAIRO_INCLUDEDIR} ${PKCAIRO_INCLUDE_DIRS} PATH_SUFFIXES cairo NO_DEFAULT_PATH )
+        find_library(CAIRO_LIBRARY  cairo   HINTS ${PKCAIRO_LIBDIR}     ${PKCAIRO_LIBRARY_DIRS} PATH_SUFFIXES cairo NO_DEFAULT_PATH )
+
+    endif()
+
+else()
+
+    find_path(CAIRO_INCLUDE_DIR cairo.h PATHS ${CAIRO_PATH}/include PATH_SUFFIXES cairo NO_DEFAULT_PATH )
+    find_library(CAIRO_LIBRARY  cairo   PATHS ${CAIRO_PATH}/lib     PATH_SUFFIXES cairo NO_DEFAULT_PATH )
+
+endif()
+
+find_path(CAIRO_INCLUDE_DIR cairo.h PATH_SUFFIXES cairo )
+find_library( CAIRO_LIBRARY cairo   PATH_SUFFIXES cairo )
+
+set( CAIRO_LIBRARIES    ${CAIRO_LIBRARY} )
+set( CAIRO_INCLUDE_DIRS ${CAIRO_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set GRIBAPI_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(CAIRO  DEFAULT_MSG
+                                  CAIRO_LIBRARY CAIRO_INCLUDE_DIR)
+
+mark_as_advanced( CAIRO_INCLUDE_DIR CAIRO_LIBRARY )
diff --git a/cmake/FindDl.cmake b/cmake/FindDl.cmake
new file mode 100644
index 0000000..305fff0
--- /dev/null
+++ b/cmake/FindDl.cmake
@@ -0,0 +1,20 @@
+# © Copyright 1996-2014 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.
+
+#Sets:
+# DL_LIBRARIES      = the library to link against (RT etc)
+
+if( DEFINED DL_PATH )
+    find_library(DL_LIBRARIES dl PATHS ${DL_PATH}/lib NO_DEFAULT_PATH )
+endif()
+
+find_library(DL_LIBRARIES dl )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(DL  DEFAULT_MSG DL_LIBRARIES )
diff --git a/cmake/FindEMOS.cmake b/cmake/FindEMOS.cmake
new file mode 100644
index 0000000..8472b0a
--- /dev/null
+++ b/cmake/FindEMOS.cmake
@@ -0,0 +1,37 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find EMOS
+# Once done this will define
+#  EMOS_FOUND - System has EMOS
+#  EMOS_INCLUDE_DIRS - The EMOS include directories
+#  EMOS_LIBRARIES - The libraries needed to use EMOS
+
+ecbuild_add_extra_search_paths( libemos )
+
+if( NOT DEFINED EMOS_PATH AND DEFINED $ENV{EMOS_PATH} )
+	set( EMOS_PATH $ENV{EMOS_PATH} )
+endif()
+
+if( DEFINED EMOS_PATH )
+    find_library( EMOS_LIBRARY NAMES emos.R64.D64.I32 emos.R64 emosR64 emos PATHS ${EMOS_PATH} PATH_SUFFIXES lib lib/emos NO_DEFAULT_PATH)
+endif()
+
+find_library( EMOS_LIBRARY NAMES emos.R64.D64.I32 emos.R64 emosR64 emos)
+
+ecbuild_find_fortranlibs()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( EMOS  DEFAULT_MSG  EMOS_LIBRARY FORTRANLIBS_FOUND )
+
+mark_as_advanced(EMOS_LIBRARY)
+
+if( EMOS_FOUND )
+    set( EMOS_LIBRARIES  ${EMOS_LIBRARY} ${FORTRAN_LIBRARIES} )
+endif()
diff --git a/cmake/FindEcLib.cmake b/cmake/FindEcLib.cmake
new file mode 100644
index 0000000..5799c85
--- /dev/null
+++ b/cmake/FindEcLib.cmake
@@ -0,0 +1,49 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find EcLib
+# Once done this will define
+#  ECLIB_FOUND - System has ECLIB
+#  ECLIB_INCLUDE_DIRS - The ECLIB include directories
+#  ECLIB_LIBRARIES - The libraries needed to use ECLIB
+
+# skip if ECLIB is already found or if has is built inside
+
+if( NOT ECLIB_FOUND )
+
+    # find external eclib
+
+    set( _ENV_ECLIB_PATH "$ENV{ECLIB_PATH}" )
+    if( NOT DEFINED ECLIB_PATH AND _ENV_ECLIB_PATH )
+        set( ECLIB_PATH ${_ENV_ECLIB_PATH} )
+    endif()
+
+    if( DEFINED ECLIB_PATH )
+        find_path(ECLIB_INCLUDE_DIR NAMES eclib_version.h PATHS ${ECLIB_PATH} ${ECLIB_PATH}/include PATH_SUFFIXES eclib  NO_DEFAULT_PATH)
+        find_library(ECLIB_LIBRARY  NAMES Ec              PATHS ${ECLIB_PATH} ${ECLIB_PATH}/lib     PATH_SUFFIXES eclib  NO_DEFAULT_PATH)
+    endif()
+    
+    find_path(ECLIB_INCLUDE_DIR NAMES eclib_version.h PATH_SUFFIXES eclib )
+    find_library( ECLIB_LIBRARY NAMES Ec              PATH_SUFFIXES eclib )
+
+    include(FindPackageHandleStandardArgs)
+    
+    # handle the QUIETLY and REQUIRED arguments and set ECLIB_FOUND to TRUE
+    # if all listed variables are TRUE
+    find_package_handle_standard_args(ECLIB  DEFAULT_MSG
+                                      ECLIB_LIBRARY ECLIB_INCLUDE_DIR )
+    
+    mark_as_advanced(ECLIB_INCLUDE_DIR ECLIB_LIBRARY )
+
+    set( ECLIB_LIBRARIES    ${ECLIB_LIBRARY} )
+    set( ECLIB_INCLUDE_DIRS ${ECLIB_INCLUDE_DIR} )
+
+    debug_var( ECLIB_LIBRARIES )
+    debug_var( ECLIB_INCLUDE_DIRS )
+
+endif()
diff --git a/cmake/FindEcregrid.cmake b/cmake/FindEcregrid.cmake
new file mode 100644
index 0000000..3ddf732
--- /dev/null
+++ b/cmake/FindEcregrid.cmake
@@ -0,0 +1,48 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find ECREGRID
+# Once done this will define
+#  ECREGRID_FOUND - System has ECREGRID
+#  ECREGRID_INCLUDE_DIRS - The ECREGRID include directories
+#  ECREGRID_LIBRARIES - The libraries needed to use ECREGRID
+#  ECREGRID_DEFINITIONS - Compiler switches required for using ECREGRID
+
+option( WITH_ECREGRID "try to find scin installation" ON )
+
+# skip if ECREGRID is already found or if has is built inside
+
+if( NOT ECREGRID_FOUND AND WITH_ECREGRID )
+
+    if( NOT DEFINED ECREGRID_PATH AND NOT "$ENV{ECREGRID_PATH}" STREQUAL "" )
+        list( APPEND ECREGRID_PATH "$ENV{ECREGRID_PATH}" )
+    endif()
+
+    if( DEFINED ECREGRID_PATH )
+        find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/include PATH_SUFFIXES scin_api  NO_DEFAULT_PATH )
+        find_library(ECREGRID_LIBRARY  NAMES scin       PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/lib     PATH_SUFFIXES scin      NO_DEFAULT_PATH )
+    endif()
+    
+    find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATH_SUFFIXES scin_api )
+    find_library( ECREGRID_LIBRARY NAMES scin       PATH_SUFFIXES scin     )
+    
+    include(FindPackageHandleStandardArgs)
+    
+    # handle the QUIETLY and REQUIRED arguments and set ECREGRID_FOUND to TRUE
+    # if all listed variables are TRUE
+    find_package_handle_standard_args(Scin  DEFAULT_MSG
+                                      ECREGRID_LIBRARY ECREGRID_INCLUDE_DIR)
+
+    if( ECREGRID_FOUND )
+        set( ECREGRID_LIBRARIES    ${ECREGRID_LIBRARY} )
+        set( ECREGRID_INCLUDE_DIRS ${ECREGRID_INCLUDE_DIR} )
+    endif()
+    
+    mark_as_advanced(ECREGRID_INCLUDE_DIR ECREGRID_LIBRARY )
+    
+endif()
diff --git a/cmake/FindFDB.cmake b/cmake/FindFDB.cmake
new file mode 100644
index 0000000..6624544
--- /dev/null
+++ b/cmake/FindFDB.cmake
@@ -0,0 +1,35 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find FDB
+# Once done this will define
+#  FDB_FOUND - System has FDB
+#  FDB_INCLUDE_DIRS - The FDB include directories
+#  FDB_LIBRARIES - The libraries needed to use FDB
+
+
+if( NOT FDB_FOUND )
+
+	if( DEFINED FDB_PATH )
+		find_library( FDB_LIBRARY NAMES fdb PATHS ${FDB_PATH} ${FDB_PATH}/lib NO_DEFAULT_PATH)
+	endif()
+	
+	find_library( FDB_LIBRARY NAMES fdb )
+	
+	set( FDB_LIBRARIES  ${FDB_LIBRARY} )
+	
+	include(FindPackageHandleStandardArgs)
+	
+	# handle the QUIETLY and REQUIRED arguments and set FDB_FOUND to TRUE
+	# if all listed variables are TRUE
+	find_package_handle_standard_args(FDB  DEFAULT_MSG
+									  FDB_LIBRARY )
+	
+	mark_as_advanced(FDB_LIBRARY)
+
+endif()
diff --git a/cmake/FindGeoTIFF.cmake b/cmake/FindGeoTIFF.cmake
new file mode 100644
index 0000000..f4f3b53
--- /dev/null
+++ b/cmake/FindGeoTIFF.cmake
@@ -0,0 +1,37 @@
+###############################################################################
+#
+# CMake module to search for GeoTIFF library
+#
+# On success, the macro sets the following variables:
+# GEOTIFF_FOUND       = if the library found
+# GEOTIFF_LIBRARIES   = full path to the library
+# GEOTIFF_INCLUDE_DIR = where to find the library headers 
+# also defined, but not for general use are
+# GEOTIFF_LIBRARY, where to find the PROJ.4 library.
+#
+# Copyright (c) 2009 Mateusz Loskot <mateusz at loskot.net>
+#
+# Module source: http://github.com/mloskot/workshop/tree/master/cmake/
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+###############################################################################
+
+SET(GEOTIFF_NAMES geotiff)
+
+
+    FIND_PATH(GEOTIFF_INCLUDE_DIR geotiff.h PATH_PREFIXES geotiff 
+         PATHS /usr/local/include/libgeotiff /usr/include/libgeotiff)
+
+    FIND_LIBRARY(GEOTIFF_LIBRARY NAMES ${GEOTIFF_NAMES})
+
+
+IF(GEOTIFF_FOUND)
+  SET(GEOTIFF_LIBRARIES ${GEOTIFF_LIBRARY})
+ENDIF()
+
+# Handle the QUIETLY and REQUIRED arguments and set SPATIALINDEX_FOUND to TRUE
+# if all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GEOTIFF DEFAULT_MSG GEOTIFF_LIBRARY GEOTIFF_INCLUDE_DIR)
diff --git a/cmake/FindHPSS.cmake b/cmake/FindHPSS.cmake
new file mode 100644
index 0000000..50f95cc
--- /dev/null
+++ b/cmake/FindHPSS.cmake
@@ -0,0 +1,39 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find HPSS
+# Once done this will define
+#  HPSS_FOUND - System has HPSS
+#  HPSS_INCLUDE_DIRS - The HPSS include directories
+#  HPSS_LIBRARIES - The libraries needed to use HPSS
+#  HPSS_DEFINITIONS - Compiler switches required for using HPSS
+
+if( DEFINED HPSS_PATH )
+	find_path(HPSS_INCLUDE_DIR hpss_api.h PATHS ${HPSS_PATH}/include PATH_SUFFIXES hpss NO_DEFAULT_PATH)
+	find_library(HPSS_LIBRARY  hpss       PATHS ${HPSS_PATH}/lib     PATH_SUFFIXES hpss NO_DEFAULT_PATH)
+endif()
+
+find_path(HPSS_INCLUDE_DIR hpss_api.h PATH_SUFFIXES hpss )
+find_library( HPSS_LIBRARY hpss       PATH_SUFFIXES hpss )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set HPSS_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(HPSS  DEFAULT_MSG
+                                  HPSS_LIBRARY HPSS_INCLUDE_DIR)
+
+mark_as_advanced(HPSS_INCLUDE_DIR HPSS_LIBRARY )
+
+if( HPSS_FOUND )
+    set( HPSS_LIBRARIES    ${HPSS_LIBRARY} )
+    set( HPSS_INCLUDE_DIRS ${HPSS_INCLUDE_DIR} )
+else()
+    set( HPSS_LIBRARIES    "" )
+    set( HPSS_INCLUDE_DIRS "" )
+endif()
diff --git a/cmake/FindLEX.cmake b/cmake/FindLEX.cmake
new file mode 100644
index 0000000..34ea36c
--- /dev/null
+++ b/cmake/FindLEX.cmake
@@ -0,0 +1,129 @@
+# - Find lex executable and provides a macro to generate custom build rules
+#
+# The module defines the following variables:
+#  LEX_FOUND - true is lex executable is found
+#  LEX_EXECUTABLE - the path to the lex executable
+#  LEX_LIBRARIES - The lex libraries
+#  LEX_INCLUDE_DIRS - The path to the lex headers
+#
+#
+# If lex is found on the system, the module provides the macro:
+#  LEX_TARGET(Name LexInput LexOutput [COMPILE_FLAGS <string>])
+# which creates a custom command  to generate the <LexOutput> file from
+# the <LexInput> file.  If  COMPILE_FLAGS option is specified, the next
+# parameter is added to the lex  command line. Name is an alias used to
+# get  details of  this custom  command.  Indeed the  macro defines  the
+# following variables:
+#  LEX_${Name}_DEFINED - true is the macro ran successfully
+#  LEX_${Name}_OUTPUTS - the source file generated by the custom rule, an
+#  alias for LexOutput
+#  LEX_${Name}_INPUT - the lex source file, an alias for ${LexInput}
+#
+# Lex scanners oftenly use tokens  defined by Yacc: the code generated
+# by Lex  depends of the header  generated by Yacc.   This module also
+# defines a macro:
+#  ADD_LEX_YACC_DEPENDENCY(LexTarget YaccTarget)
+# which  adds the  required dependency  between a  scanner and  a parser
+# where  <LexTarget>  and <YaccTarget>  are  the  first parameters  of
+# respectively LEX_TARGET and YACC_TARGET macros.
+#
+#  ====================================================================
+
+#=============================================================================
+# Copyright 2009 Kitware, Inc.
+# Copyright 2006 Tristan Carel
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+
+# This file is based on the FindFLEX CMake macro, and adapted by ECMWF
+
+#=============================================================================
+# (C) Copyright 1996-2014 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.
+
+FIND_PROGRAM(LEX_EXECUTABLE lex DOC "path to the lex executable")
+MARK_AS_ADVANCED(LEX_EXECUTABLE)
+
+FIND_LIBRARY(FL_LIBRARY NAMES fl
+  DOC "Path to the fl library")
+
+FIND_PATH(LEX_INCLUDE_DIR LexLexer.h
+  DOC "Path to the lex headers")
+
+MARK_AS_ADVANCED(FL_LIBRARY LEX_INCLUDE_DIR)
+
+SET(LEX_INCLUDE_DIRS ${LEX_INCLUDE_DIR})
+SET(LEX_LIBRARIES ${FL_LIBRARY})
+
+IF(LEX_EXECUTABLE)
+
+  #============================================================
+  # LEX_TARGET (public macro)
+  #============================================================
+  #
+  MACRO(LEX_TARGET Name Input Output)
+    SET(LEX_TARGET_usage "LEX_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS <string>]")
+    IF(${ARGC} GREATER 3)
+      IF(${ARGC} EQUAL 5)
+        IF("${ARGV3}" STREQUAL "COMPILE_FLAGS")
+          SET(LEX_EXECUTABLE_opts  "${ARGV4}")
+          SEPARATE_ARGUMENTS(LEX_EXECUTABLE_opts)
+        ELSE()
+          MESSAGE(SEND_ERROR ${LEX_TARGET_usage})
+        ENDIF()
+      ELSE()
+        MESSAGE(SEND_ERROR ${LEX_TARGET_usage})
+      ENDIF()
+    ENDIF()
+
+    message( STATUS "${LEX_EXECUTABLE} ${LEX_EXECUTABLE_opts} -t ${Input} > ${Output}" )
+
+    ADD_CUSTOM_COMMAND(OUTPUT ${Output}
+      COMMAND ${LEX_EXECUTABLE} ${LEX_EXECUTABLE_opts} -t ${Input} > ${Output}
+      DEPENDS ${Input}
+      COMMENT "[LEX][${Name}] Building scanner with lex ${LEX_VERSION}"
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+    SET(LEX_${Name}_DEFINED TRUE)
+    SET(LEX_${Name}_OUTPUTS ${Output})
+    SET(LEX_${Name}_INPUT ${Input})
+    SET(LEX_${Name}_COMPILE_FLAGS ${LEX_EXECUTABLE_opts})
+  ENDMACRO(LEX_TARGET)
+  #============================================================
+
+
+  #============================================================
+  # ADD_LEX_YACC_DEPENDENCY (public macro)
+  #============================================================
+  #
+  MACRO(ADD_LEX_YACC_DEPENDENCY LexTarget YaccTarget)
+
+    IF(NOT LEX_${LexTarget}_OUTPUTS)
+      MESSAGE(SEND_ERROR "Lex target `${LexTarget}' does not exists.")
+    ENDIF()
+
+    IF(NOT YACC_${YaccTarget}_OUTPUT_HEADER)
+      MESSAGE(SEND_ERROR "Yacc target `${YaccTarget}' does not exists.")
+    ENDIF()
+
+    SET_SOURCE_FILES_PROPERTIES(${LEX_${LexTarget}_OUTPUTS}
+      PROPERTIES OBJECT_DEPENDS ${YACC_${YaccTarget}_OUTPUT_HEADER})
+  ENDMACRO(ADD_LEX_YACC_DEPENDENCY)
+  #============================================================
+
+ENDIF(LEX_EXECUTABLE)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LEX REQUIRED_VARS LEX_EXECUTABLE)
+
+# FindLEX.cmake ends here
diff --git a/cmake/FindLegacyFDB.cmake b/cmake/FindLegacyFDB.cmake
new file mode 100644
index 0000000..0136299
--- /dev/null
+++ b/cmake/FindLegacyFDB.cmake
@@ -0,0 +1,35 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find FDB
+# Once done this will define
+#  LEGACY_FDB_FOUND - System has FDB
+#  LEGACY_FDB_INCLUDE_DIRS - The FDB include directories
+#  LEGACY_FDB_LIBRARIES - The libraries needed to use FDB
+
+
+if( NOT LEGACY_FDB_FOUND )
+
+	if( DEFINED LEGACY_FDB_PATH )
+		find_library( LEGACY_FDB_LIBRARY NAMES fdb_legacy PATHS ${LEGACY_FDB_PATH} ${LEGACY_FDB_PATH}/lib NO_DEFAULT_PATH)
+	endif()
+	
+	find_library( LEGACY_FDB_LIBRARY NAMES fdb_legacy )
+	
+	set( LEGACY_FDB_LIBRARIES  ${LEGACY_FDB_LIBRARY} )
+	
+	include(FindPackageHandleStandardArgs)
+	
+	# handle the QUIETLY and REQUIRED arguments and set LEGACY_FDB_FOUND to TRUE
+	# if all listed variables are TRUE
+	find_package_handle_standard_args(LEGACY_FDB  DEFAULT_MSG
+		LEGACY_FDB_LIBRARY )
+	
+	mark_as_advanced(LEGACY_FDB_LIBRARY)
+
+endif()
diff --git a/cmake/FindLibGFortran.cmake b/cmake/FindLibGFortran.cmake
new file mode 100644
index 0000000..bf9e168
--- /dev/null
+++ b/cmake/FindLibGFortran.cmake
@@ -0,0 +1,52 @@
+# © Copyright 1996-2014 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.
+
+###############################################################################
+# gfortran libs
+
+set( __libgfortran_names gfortran libgfortran.so.1 libgfortran.so.3 )
+
+# use gfortran to find the library
+
+find_program( GFORTRAN_EXECUTABLE gfortran )
+
+if( GFORTRAN_EXECUTABLE )
+
+	execute_process(COMMAND ${GFORTRAN_EXECUTABLE} "-print-search-dirs"
+		RESULT_VARIABLE _GFORTRAN_SEARCH_SUCCESS
+		OUTPUT_VARIABLE _GFORTRAN_VALUES_OUTPUT
+		ERROR_VARIABLE _GFORTRAN_ERROR_VALUE
+		OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+#	debug_var(_GFORTRAN_SEARCH_SUCCESS)
+#	debug_var(_GFORTRAN_VALUES_OUTPUT)
+#	debug_var(_GFORTRAN_ERROR_VALUE)
+
+	if(_GFORTRAN_SEARCH_SUCCESS MATCHES 0)
+		string(REGEX REPLACE ".*libraries: =(.*)" "\\1" _result  ${_GFORTRAN_VALUES_OUTPUT})
+		string(REGEX REPLACE ":" ";" _gfortran_hints ${_result} )
+	endif()
+
+	debug_var( _gfortran_hints )
+
+endif()
+
+find_library( GFORTRAN_LIB NAMES ${__libgfortran_names}  HINTS ${LIBGFORTRAN_PATH} ENV LIBGFORTRAN_PATH PATHS PATH_SUFFIXES lib64 lib NO_DEFAULT_PATH )
+find_library( GFORTRAN_LIB NAMES ${__libgfortran_names}  HINTS ${_gfortran_hints} PATHS PATH_SUFFIXES lib64 lib )
+
+mark_as_advanced( GFORTRAN_LIB )
+
+if( GFORTRAN_LIB )
+	set( GFORTRAN_LIBRARIES ${GFORTRAN_LIB} )
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( LIBGFORTRAN  DEFAULT_MSG GFORTRAN_LIBRARIES  )
+
+
diff --git a/cmake/FindNDBM.cmake b/cmake/FindNDBM.cmake
new file mode 100644
index 0000000..21cf1cf
--- /dev/null
+++ b/cmake/FindNDBM.cmake
@@ -0,0 +1,34 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find NetCDF
+# Once done this will define
+#  NDBM_FOUND - System has NetCDF
+#  NDBM_INCLUDE_DIRS - The NetCDF include directories
+#  NDBM_LIBRARIES - The libraries needed to use NetCDF
+#  NDBM_DEFINITIONS - Compiler switches required for using NetCDF
+
+if( DEFINED NDBM_PATH )
+	find_path(NDBM_INCLUDE_DIR NAMES ndbm.h   PATHS ${NDBM_PATH} ${NDBM_PATH}/include PATH_SUFFIXES ndbm NO_DEFAULT_PATH)
+	find_library(NDBM_LIBRARY  NAMES ndbm dbm PATHS ${NDBM_PATH} ${NDBM_PATH}/lib     PATH_SUFFIXES ndbm NO_DEFAULT_PATH)
+endif()
+
+find_path(NDBM_INCLUDE_DIR NAMES ndbm.h   PATH_SUFFIXES ndbm )
+find_library( NDBM_LIBRARY NAMES ndbm dbm PATH_SUFFIXES ndbm )
+
+set( NDBM_LIBRARIES    ${NDBM_LIBRARY} )
+set( NDBM_INCLUDE_DIRS ${NDBM_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set GRIBAPI_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(NDBM  DEFAULT_MSG
+								  NDBM_LIBRARY NDBM_INCLUDE_DIR)
+
+mark_as_advanced(NDBM_INCLUDE_DIR NDBM_LIBRARY )
diff --git a/cmake/FindNetCDF.cmake b/cmake/FindNetCDF.cmake
new file mode 100644
index 0000000..5d71504
--- /dev/null
+++ b/cmake/FindNetCDF.cmake
@@ -0,0 +1,88 @@
+# (C) Copyright 1996-2014 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.
+
+# Try to find NetCDF3 or NetCDF4 -- default is 4
+#
+# Input:
+#  * NETCDF_PATH - user defined path where to search for the library first
+#  * NETCDF_CXX  - if to search also for netcdf_c++ wrapper library
+#
+# Output:
+#  NETCDF_FOUND - System has NetCDF
+#  NETCDF_DEFINITIONS
+#  NETCDF_INCLUDE_DIRS - The NetCDF include directories
+#  NETCDF_LIBRARIES - The libraries needed to use NetCDF
+
+# default is netcdf4
+
+if( NOT PREFER_NETCDF3 )
+  set( PREFER_NETCDF4 1 )
+else()
+  set( PREFER_NETCDF4 0 )
+endif()
+mark_as_advanced( PREFER_NETCDF4 PREFER_NETCDF3 )
+
+### NetCDF4
+
+if( PREFER_NETCDF4 )
+
+    # hdf5
+
+    ecbuild_add_extra_search_paths( hdf5 )
+
+    find_package( HDF5 COMPONENTS C CXX HL )
+
+    # netcdf4
+
+    if( DEFINED $ENV{NETCDF_PATH} )
+        set( NETCDF_ROOT "$ENV{NETCDF_PATH}" )
+        list( APPEND CMAKE_PREFIX_PATH  $ENV{NETCDF_PATH} )
+    endif()
+
+    if( DEFINED NETCDF_PATH )
+        set( NETCDF_ROOT "${NETCDF_PATH}" )
+        list( APPEND CMAKE_PREFIX_PATH  ${NETCDF_PATH} )
+    endif()
+
+    if( NETCDF_CXX )
+       set( NETCDF_FIND_COMPONENTS C CXX )
+    else()
+       set( NETCDF_FIND_COMPONENTS C )
+    endif()
+
+    ecbuild_add_extra_search_paths( netcdf4 )
+
+    find_package( NetCDF4 )
+
+	set_package_properties( NetCDF4 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF4 file format" )
+
+    if( NETCDF_FOUND AND HDF5_FOUND )
+        # list( APPEND NETCDF_DEFINITIONS  ${HDF5_DEFINITIONS} )
+        list( APPEND NETCDF_LIBRARIES    ${HDF5_HL_LIBRARIES} ${HDF5_LIBRARIES}  )
+        list( APPEND NETCDF_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} )
+    endif()
+
+#    debug_var( NETCDF_FOUND )
+#    debug_var( NETCDF_LIBRARIES )
+#    debug_var( NETCDF_INCLUDE_DIRS )
+#    debug_var( HDF5_FOUND )
+#    debug_var( HDF5_INCLUDE_DIRS )
+#    debug_var( HDF5_HL_LIBRARIES )
+#    debug_var( HDF5_LIBRARIES )
+
+endif()
+
+### NetCDF3
+
+if( PREFER_NETCDF3 )
+
+    find_package( NetCDF3 )
+
+	set_package_properties( NetCDF3 PROPERTIES TYPE RECOMMENDED PURPOSE "support for NetCDF3 file format" )
+
+endif()
diff --git a/cmake/FindNetCDF3.cmake b/cmake/FindNetCDF3.cmake
new file mode 100644
index 0000000..a903d2c
--- /dev/null
+++ b/cmake/FindNetCDF3.cmake
@@ -0,0 +1,85 @@
+# (C) Copyright 1996-2014 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.
+
+# Try to find NetCDF
+#
+# Input:
+#  * NETCDF_PATH - user defined path where to search for the library first
+#  * NETCDF_CXX  - if to search also for netcdf_c++ wrapper library
+#
+# Output:
+#  NETCDF_FOUND - System has NetCDF
+#  NETCDF_INCLUDE_DIRS - The NetCDF include directories
+#  NETCDF_LIBRARIES - The libraries needed to use NetCDF
+
+### TODO: generalize this into a macro for all ecbuild
+
+if( DEFINED NETCDF_PATH )
+    list( APPEND _netcdf_incs ${NETCDF_PATH} ${NETCDF_PATH}/include )
+    list( APPEND _netcdf_libs ${NETCDF_PATH} ${NETCDF_PATH}/lib )
+endif()
+	
+foreach( _h /usr/local/apps/netcdf )
+
+	if( EXISTS ${_h} )
+	
+        list( APPEND _netcdf_incs  ${_h}/include ${_h}/current/include ${_h}/new/include ${_h}/stable/include )
+        list( APPEND _netcdf_libs  ${_h}/lib ${_h}/current/lib ${_h}/new/lib ${_h}/stable/lib )
+
+		file(GLOB _hd ${_h}/*)
+        foreach( d ${_hd} )
+            if( IS_DIRECTORY ${d} )
+                list( APPEND _netcdf_incs ${d}/include ${d}/LP64/include )
+                list( APPEND _netcdf_libs ${d}/lib ${d}/LP64/lib )
+            endif()
+        endforeach()
+    endif()
+
+endforeach() 
+
+###
+
+set( _ncdf_sfx netcdf LP64 )
+
+find_path( NETCDF_INCLUDE_DIR  netcdf.h  PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH )
+find_path( NETCDF_INCLUDE_DIR  netcdf.h  PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} )
+
+find_library( NETCDF_LIBRARY  netcdf  PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx}  NO_DEFAULT_PATH )
+find_library( NETCDF_LIBRARY  netcdf  PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx}  )
+
+set( NETCDF_LIBRARIES    ${NETCDF_LIBRARY} )
+set( NETCDF_INCLUDE_DIRS ${NETCDF_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+if( NETCDF_CXX )
+
+    find_path( NETCDF_CXX_INCLUDE_DIR netcdfcpp.h PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH)
+    find_path( NETCDF_CXX_INCLUDE_DIR netcdfcpp.h PATHS ${_netcdf_incs} PATH_SUFFIXES ${_ncdf_sfx} )
+
+    set( _ncdf_cxx netcdf_c++ netcdf_c++ netcdf_c++4 )
+
+    find_library( NETCDF_CXX_LIBRARY NAMES ${_ncdf_cxx} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx} NO_DEFAULT_PATH )
+    find_library( NETCDF_CXX_LIBRARY NAMES ${_ncdf_cxx} PATHS ${_netcdf_libs} PATH_SUFFIXES ${_ncdf_sfx} )
+
+    list( APPEND NETCDF_INCLUDE_DIRS ${NETCDF_CXX_INCLUDE_DIR} )
+    list( APPEND NETCDF_LIBRARIES    ${NETCDF_CXX_LIBRARY} )
+
+	find_package_handle_standard_args( NETCDF3  DEFAULT_MSG NETCDF_LIBRARY NETCDF_CXX_LIBRARY NETCDF_INCLUDE_DIR NETCDF_CXX_INCLUDE_DIR )
+
+    mark_as_advanced(NETCDF_INCLUDE_DIR NETCDF_CXX_LIBRARY )
+
+else()
+
+	find_package_handle_standard_args( NETCDF3  DEFAULT_MSG NETCDF_LIBRARY NETCDF_INCLUDE_DIR)
+
+endif()
+
+set( NETCDF_FOUND ${NETCDF3_FOUND} )
+
+mark_as_advanced(NETCDF_INCLUDE_DIR NETCDF_LIBRARY )
diff --git a/cmake/FindODB.cmake b/cmake/FindODB.cmake
new file mode 100644
index 0000000..bfa6905
--- /dev/null
+++ b/cmake/FindODB.cmake
@@ -0,0 +1,53 @@
+# © Copyright 1996-2014 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.
+
+# - Try to find ODB
+# Once done this will define
+#  ODB_FOUND - System has ODB
+#  ODB_INCLUDE_DIRS - The ODB include directories
+#  ODB_LIBRARIES - The libraries needed to use ODB
+
+# /usr/local/apps/odb/CY37R3.001/pgf90/LP64/include/odbdump.h
+# /usr/local/apps/odb/CY37R3.001/pgf90/LP64/module/odb.mod
+
+# -lodb -lodbec -lifsaux -lmpi_serial -lodbdummy
+
+find_package( Dl ) # find the dynamic linker
+
+list( APPEND _odb_search_libs odb odbec ifsaux mpi_serial odbdummy  )
+
+if( DEFINED ODB_PATH )
+    find_path(ODB_INCLUDE_DIR odbdump.h PATHS  ${ODB_ROOT} ${ODB_ROOT}/include ${ODB_PATH} ${ODB_PATH}/include PATH_SUFFIXES odb NO_DEFAULT_PATH)
+    find_path(ODB_MODULE_DIR odb.mod PATHS ${ODB_ROOT} ${ODB_ROOT}/module ${ODB_PATH} ${ODB_PATH}/module PATH_SUFFIXES odb NO_DEFAULT_PATH)
+    foreach( _lib ${_odb_search_libs} )
+      find_library(ODB_LIBRARY_${_lib}  ${_lib} PATHS ${ODB_ROOT} ${ODB_ROOT}/lib ${ODB_PATH} ${ODB_PATH}/lib     PATH_SUFFIXES odb NO_DEFAULT_PATH)
+    endforeach()
+endif()
+
+find_path(ODB_INCLUDE_DIR odbdump.h PATH_SUFFIXES odb )
+find_path(ODB_MODULE_DIR odb.mod PATH_SUFFIXES odb )
+foreach( _lib ${_odb_search_libs} )
+  find_library( ODB_LIBRARY_${_lib} ${_lib} PATH_SUFFIXES odb )
+endforeach()
+
+foreach( _lib ${_odb_search_libs} )
+  list( APPEND ODB_LIB_LIST   ODB_LIBRARY_${_lib} )
+  list( APPEND ODB_LIBRARIES  ${ODB_LIBRARY_${_lib}} )
+  mark_as_advanced(${ODB_LIBRARY_${_lib}})
+endforeach()
+
+set( ODB_INCLUDE_DIRS ${ODB_INCLUDE_DIR} ${ODB_MODULE_DIR})
+mark_as_advanced(ODB_INCLUDE_DIR )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set GRIBAPI_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(ODB  DEFAULT_MSG
+                                  ODB_INCLUDE_DIR ${ODB_LIB_LIST} )
+
diff --git a/cmake/FindOpenJPEG.cmake b/cmake/FindOpenJPEG.cmake
new file mode 100644
index 0000000..3e36954
--- /dev/null
+++ b/cmake/FindOpenJPEG.cmake
@@ -0,0 +1,43 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find the OpenJPEG includes and library
+# This module defines
+#  OPENJPEG_FOUND         - System has OpenJPEG
+#  OPENJPEG_INCLUDE_DIRS  - the OpenJPEG include directories
+#  OPENJPEG_LIBRARIES     - the libraries needed to use OpenJPEG
+#
+# also defined internally:
+#  OPENJPEG_LIBRARY, where to find the OpenJPEG library.
+#  OPENJPEG_INCLUDE_DIR, where to find the openjpeg.h header
+
+ecbuild_add_extra_search_paths( openjpg )
+
+IF( NOT DEFINED OPENJPEG_PATH AND NOT "$ENV{OPENJPEG_PATH}" STREQUAL "" )
+  SET( OPENJPEG_PATH "$ENV{OPENJPEG_PATH}" )
+ENDIF()
+
+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)
+endif()
+
+find_path(OPENJPEG_INCLUDE_DIR  openjpeg.h PATH_SUFFIXES openjpeg )
+find_library( OPENJPEG_LIBRARY  openjpeg   PATH_SUFFIXES openjpeg )
+
+set( OPENJPEG_LIBRARIES    ${OPENJPEG_LIBRARY} )
+set( OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set OPENJPEG_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(OpenJPEG  DEFAULT_MSG
+                                  OPENJPEG_LIBRARY OPENJPEG_INCLUDE_DIR)
+
+mark_as_advanced(OPENJPEG_INCLUDE_DIR OPENJPEG_LIBRARY )
diff --git a/cmake/FindPGIFortran.cmake b/cmake/FindPGIFortran.cmake
new file mode 100644
index 0000000..66afeda
--- /dev/null
+++ b/cmake/FindPGIFortran.cmake
@@ -0,0 +1,44 @@
+# (C) Copyright 1996-2014 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.
+
+###############################################################################
+# FORTRAN support
+
+# list( APPEND pg_libs pgmp pgbind numa pgf90 pgf90_rpm1 pgf902 pgf90rtl  pgftnrtl nspgc pgc rt pgsse1 pgsse2 ) # init
+# list( APPEND pg_libs pgf90 pgf90_rpm1 pgf902 pgf90rtl pgftnrtl pghpf pgc pgf90 rt pgsse1 pgsse2 )             # mars client linux.2
+# list( APPEND pg_libs pgftnrtl nspgc pgc rt pgsse1 pgsse2 )                                                    # mars client linux.3
+
+list( APPEND pg_libs pgmp pgbind numa pgf90 pgf90_rpm1 pgf902 pgf90rtl pgftnrtl pghpf nspgc pgc pgf90 pgf902 pghpf_rpm1 pghpf2 pgsse1 pgsse2 ) # better ?                                                    #
+
+set( pgi_fortran_all_libs_found 1 )
+
+foreach( pglib ${pg_libs} )
+
+	find_library( ${pglib}_lib  ${pglib} PATHS ${PGI_PATH} PATH_SUFFIXES lib libso NO_DEFAULT_PATH )
+
+	find_library( ${pglib}_lib  ${pglib} HINTS /usr/local/apps/pgi/pgi-10.8/linux86-64/10.8 PATH PATH_SUFFIXES lib libso )
+
+    if( ${pglib}_lib )
+        list( APPEND PGIFORTRAN_LIBRARIES ${${pglib}_lib} )
+#	else()
+#		set( pgi_fortran_all_libs_found 0 )
+    endif()
+
+endforeach()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( LIBPGIFORTRAN DEFAULT_MSG pgi_fortran_all_libs_found PGIFORTRAN_LIBRARIES  )
+
+if( LIBPGIFORTRAN_FOUND )
+	find_package( Realtime )
+endif()
+
+if( REALTIME_FOUND )
+	set( LIBPGIFORTRAN_LIBRARIES ${PGIFORTRAN_LIBRARIES} ${RT_LIB} )
+endif()
diff --git a/cmake/FindPango.cmake b/cmake/FindPango.cmake
new file mode 100644
index 0000000..81b55c0
--- /dev/null
+++ b/cmake/FindPango.cmake
@@ -0,0 +1,33 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find Pango
+
+# Output:
+#   PANGO_FOUND
+#   PANGO_LIBRARIES
+#   PANGO_INCLUDE_DIRS
+
+ecbuild_add_extra_search_paths( pango )
+
+find_package(PkgConfig)
+
+pkg_check_modules(PC_LIBPANGO QUIET pango)
+
+debug_var( PC_LIBPANGO_FOUND )
+debug_var( PC_LIBPANGO_VERSION )
+debug_var( PC_LIBPANGO_LIBRARIES )
+debug_var( PC_LIBPANGO_INCLUDE_DIRS )
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args( pango DEFAULT_MSG PC_LIBPANGO_LIBRARIES PC_LIBPANGO_INCLUDE_DIRS )
+
+set( PANGO_VERSION ${PC_LIBPANGO_VERSION} )
+set( PANGO_LIBRARIES ${PC_LIBPANGO_LIBRARIES} )
+set( PANGO_INCLUDE_DIRS ${PC_LIBPANGO_INCLUDE_DIRS} )
+
diff --git a/cmake/FindPangoCairo.cmake b/cmake/FindPangoCairo.cmake
new file mode 100644
index 0000000..43fbf11
--- /dev/null
+++ b/cmake/FindPangoCairo.cmake
@@ -0,0 +1,98 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find PangoCairo
+
+# Output:
+#   PANGOCAIRO_FOUND
+#   PANGOCAIRO_LIBRARIES
+#   PANGOCAIRO_INCLUDE_DIRS
+
+
+find_package(PkgConfig)
+
+pkg_check_modules(PC_LIBPANGOCAIRO QUIET pangocairo)
+
+#debug_var( PC_LIBPANGOCAIRO_FOUND )
+#debug_var( PC_LIBPANGOCAIRO_VERSION )
+#debug_var( PC_LIBPANGOCAIRO_LIBRARIES )
+#debug_var( PC_LIBPANGOCAIRO_INCLUDE_DIRS )
+
+# find_package(X11)
+# debug_var( X11_LIBRARIES )
+
+
+
+if(PC_LIBPANGOCAIRO_FOUND)
+
+    include(FindPackageHandleStandardArgs)
+    find_package_handle_standard_args( pangocairo DEFAULT_MSG PC_LIBPANGOCAIRO_LIBRARIES PC_LIBPANGOCAIRO_INCLUDE_DIRS )
+    set( PANGOCAIRO_VERSION ${PC_LIBPANGOCAIRO_VERSION} )
+    set( PANGOCAIRO_LIBRARIES ${PC_LIBPANGOCAIRO_LIBRARIES} )
+    set( PANGOCAIRO_INCLUDE_DIRS ${PC_LIBPANGOCAIRO_INCLUDE_DIRS} )
+
+else()
+
+    # this is to get magics compiling on mac with macbrew
+
+    include(FindPackageHandleStandardArgs)
+
+    set(PANGO_VERSION 1.0)
+    set(GLIB_VERSION 2.0)
+
+    find_path( _PANGOCAIRO_INCLUDE_DIRS
+        NAMES pango/pangocairo.h
+        HINTS /usr/local/include PATH_SUFFIXES pango-${PANGO_VERSION})
+
+    find_path( _CAIRO_INCLUDE_DIRS
+        NAMES cairo.h
+        HINTS /usr/local/include PATH_SUFFIXES cairo)
+
+    find_path( _GLIB_INCLUDE_DIRS_1
+        NAMES glib.h
+        HINTS /usr/local/include PATH_SUFFIXES glib-${GLIB_VERSION})
+
+    find_path( _GLIB_INCLUDE_DIRS_2
+        NAMES glibconfig.h
+        HINTS /usr/local/lib/glib-${GLIB_VERSION} PATH_SUFFIXES include)
+
+
+    find_package(X11)
+
+    set(PANGOCAIRO_INCLUDE_DIRS
+        ${_PANGOCAIRO_INCLUDE_DIRS}
+        ${_CAIRO_INCLUDE_DIRS}
+        ${_GLIB_INCLUDE_DIRS_1}
+        ${_GLIB_INCLUDE_DIRS_2}
+	${X11_INCLUDE_DIR}
+    )
+
+#message(WARNING "===> ${PANGOCAIRO_INCLUDE_DIRS}")
+
+    find_library( _PANGOCAIRO_LIBRARIES NAMES pangocairo pangocairo-${PANGO_VERSION})
+    find_library( _PANGO_LIBRARIES NAMES pango pango-${PANGO_VERSION})
+    find_library( _CAIRO_LIBRARIES NAMES cairo)
+    find_library( _GLIB_LIBRARIES NAMES glib-${GLIB_VERSION})
+
+    debug_var(X11_LIBRARIES)
+    set(PANGOCAIRO_LIBRARIES
+        ${_PANGOCAIRO_LIBRARIES}
+        ${_PANGO_LIBRARIES}
+        ${_CAIRO_LIBRARIES}
+        ${_GLIB_LIBRARIES}
+	${X11_LIBRARIES}
+    )
+
+#message(WARNING "===> ${PANGOCAIRO_LIBRARIES}")
+
+    find_package_handle_standard_args( pangocairo  DEFAULT_MSG
+        PANGOCAIRO_LIBRARIES
+        PANGOCAIRO_INCLUDE_DIRS  )
+
+endif()
+
diff --git a/cmake/FindProj4.cmake b/cmake/FindProj4.cmake
new file mode 100644
index 0000000..6181ed0
--- /dev/null
+++ b/cmake/FindProj4.cmake
@@ -0,0 +1,67 @@
+# - Try to find the proj4 library
+# Once done this will define
+#
+# PROJ4_FOUND - system has proj4
+# PROJ4_INCLUDE_DIRS - the proj4 include directory
+# PROJ4_LIBRARIES - Link these to use proj4
+#
+# Define PROJ4_MIN_VERSION for which version desired.
+
+if( NOT PROJ4_PATH AND NOT "$ENV{PROJ4_PATH}" STREQUAL "" )
+    set( PROJ4_PATH "$ENV{PROJ4_PATH}" )
+endif()
+
+ecbuild_add_extra_search_paths( proj4 )
+
+if( NOT PROJ4_PATH )
+
+    include(FindPkgConfig)
+
+#    if(Proj4_FIND_REQUIRED)
+#        set(_pkgconfig_REQUIRED "REQUIRED")
+#    else()
+#        set(_pkgconfig_REQUIRED "")
+#    endif()
+
+    if(PROJ4_MIN_VERSION)
+        pkg_check_modules(PKPROJ4 ${_pkgconfig_REQUIRED} QUIET proj4>=${PROJ4_MIN_VERSION})
+    else()
+        pkg_check_modules(PKPROJ4 ${_pkgconfig_REQUIRED} QUIET proj4)
+    endif()
+
+    if( PKG_CONFIG_FOUND AND PKPROJ4_FOUND )
+
+        find_path(PROJ4_INCLUDE_DIR proj_api.h HINTS ${PKPROJ4_INCLUDEDIR} ${PKPROJ4_INCLUDE_DIRS} PATH_SUFFIXES proj4 NO_DEFAULT_PATH )
+        find_library(PROJ4_LIBRARY  proj       HINTS ${PKPROJ4_LIBDIR}     ${PKPROJ4_LIBRARY_DIRS} PATH_SUFFIXES proj4 NO_DEFAULT_PATH )
+
+    endif()
+
+#    debug_var( PKG_CONFIG_FOUND )
+#    debug_var( PKPROJ4_FOUND )
+#    debug_var( PROJ4_MIN_VERSION )
+
+endif()
+
+if( PROJ4_PATH )
+
+    find_path(PROJ4_INCLUDE_DIR NAMES proj_api.h PATHS ${PROJ4_PATH} ${PROJ4_PATH}/include PATH_SUFFIXES proj4 NO_DEFAULT_PATH )
+    find_library(PROJ4_LIBRARY  NAMES proj       PATHS ${PROJ4_PATH} ${PROJ4_PATH}/lib     PATH_SUFFIXES proj4 NO_DEFAULT_PATH )
+
+endif()
+
+find_path(PROJ4_INCLUDE_DIR NAMES proj_api.h PATHS PATH_SUFFIXES proj4 )
+find_library( PROJ4_LIBRARY NAMES proj       PATHS PATH_SUFFIXES proj4 )
+
+
+# debug_var( PROJ4_INCLUDE_DIR )
+# debug_var( PROJ4_LIBRARY )
+
+# handle the QUIETLY and REQUIRED arguments and set GRIBAPI_FOUND
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(PROJ4  DEFAULT_MSG
+                                  PROJ4_LIBRARY PROJ4_INCLUDE_DIR)
+
+set( PROJ4_LIBRARIES    ${PROJ4_LIBRARY} )
+set( PROJ4_INCLUDE_DIRS ${PROJ4_INCLUDE_DIR} )
+
+mark_as_advanced( PROJ4_INCLUDE_DIR PROJ4_LIBRARY )
diff --git a/cmake/FindREADLINE.cmake b/cmake/FindREADLINE.cmake
new file mode 100644
index 0000000..9477026
--- /dev/null
+++ b/cmake/FindREADLINE.cmake
@@ -0,0 +1,87 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find READLINE
+# Once done this will define
+#  READLINE_FOUND - System has READLINE
+#  READLINE_INCLUDE_DIRS - The READLINE include directories
+#  READLINE_LIBRARIES - The libraries needed to use READLINE
+#  READLINE_DEFINITIONS - Compiler switches required for using READLINE
+
+if( DEFINED READLINE_PATH )
+    find_path(READLINE_INCLUDE_DIR readline/readline.h PATHS ${READLINE_PATH}/include NO_DEFAULT_PATH)
+    find_library(READLINE_LIBRARY  readline            PATHS ${READLINE_PATH}/lib     PATH_SUFFIXES readline NO_DEFAULT_PATH)
+endif()
+
+find_path(READLINE_INCLUDE_DIR readline/readline.h )
+find_library( READLINE_LIBRARY readline            PATH_SUFFIXES readline )
+
+# check what version we got
+cmake_push_check_state()
+
+  set( CMAKE_REQUIRED_LIBRARIES ${READLINE_LIBRARY} )
+  set( CMAKE_REQUIRED_INCLUDES  ${READLINE_INCLUDE_DIR} )
+
+  # sometimes the link might fail missing -ltermcap or -l(n)curses
+  # if we searched before for Curses, then lets try to use it
+  if(CURSES_FOUND)
+      list( APPEND CMAKE_REQUIRED_LIBRARIES ${CURSES_LIBRARIES} )
+      list( APPEND CMAKE_REQUIRED_INCLUDES  ${CURSES_INCLUDE_DIR} )
+  endif()
+
+  ecbuild_check_cxx_source_return(
+     "#include <stdio.h>
+      #include <readline/readline.h>
+      #include <iostream>
+      int main() {
+          std::cout << rl_library_version << std::flush;
+          return 0;
+     }"
+     VAR readline_version
+     OUTPUT __readline_version_out )
+
+cmake_pop_check_state()
+
+# debug_var( readline_version )
+# debug_var( __readline_version_out )
+
+set( __readline_fail 0 )
+if( __readline_version_out )
+
+    if( "${__readline_version_out}" MATCHES "^EditLine" )
+      message( STATUS "Found EditLine instead of Readline at '${READLINE_INCLUDE_DIR}'" )
+      if( READLINE_WRAPPER_OK )
+        set( READLINE_WRAPPER      "EditLine" )
+        set( __readline_fail 0 )
+      else()
+        message( STATUS "Readline wrapper not accepted -- rejecting Readline at '${READLINE_INCLUDE_DIR}'" )
+        set( __readline_fail 1 )
+      endif()
+    endif()
+
+else()
+    message( STATUS "Readline test run failed -- rejecting Readline at '${READLINE_INCLUDE_DIR}'" )
+    set( __readline_fail 1 )
+endif()
+
+if( __readline_fail )
+    set( READLINE_LIBRARY      READLINE_LIBRARY-NOTFOUND )
+    set( READLINE_INCLUDE_DIR  READLINE_INCLUDE_DIR-NOTFOUND )
+endif()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(READLINE  DEFAULT_MSG READLINE_LIBRARY READLINE_INCLUDE_DIR)
+
+if( READLINE_FOUND )
+    set( READLINE_VERSION      ${__readline_version_out} )
+    set( READLINE_LIBRARIES    ${READLINE_LIBRARY} )
+    set( READLINE_INCLUDE_DIRS ${READLINE_INCLUDE_DIR} )
+endif()
+
+mark_as_advanced(READLINE_INCLUDE_DIR READLINE_LIBRARY )
diff --git a/cmake/FindRPCGEN.cmake b/cmake/FindRPCGEN.cmake
new file mode 100644
index 0000000..98c4a98
--- /dev/null
+++ b/cmake/FindRPCGEN.cmake
@@ -0,0 +1,20 @@
+# (C) Copyright 1996-2014 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.
+
+#Sets:
+# RPCGEN_FOUND           = prcgen was found
+# RPCGEN_EXECUTABLE      = the executable rpcgen
+
+if( DEFINED RPCGEN_PATH )
+    find_program( RPCGEN_EXECUTABLE NAMES rpcgen PATHS ${RPCGEN_PATH} PATH_SUFFIXES bin NO_DEFAULT_PATH )
+endif()
+find_program( RPCGEN_EXECUTABLE NAMES rpcgen )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( RPCGEN  DEFAULT_MSG RPCGEN_EXECUTABLE )
diff --git a/cmake/FindRealtime.cmake b/cmake/FindRealtime.cmake
new file mode 100644
index 0000000..b46b9b7
--- /dev/null
+++ b/cmake/FindRealtime.cmake
@@ -0,0 +1,22 @@
+# (C) Copyright 1996-2014 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.
+
+#Sets:
+# RT_LIB      = the library to link against
+
+if( DEFINED REALTIME_PATH )
+    find_library(RT_LIB rt PATHS ${REALTIME_PATH}/lib NO_DEFAULT_PATH )
+endif()
+
+find_library( RT_LIB rt )
+
+mark_as_advanced( RT_LIB )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(REALTIME  DEFAULT_MSG RT_LIB )
diff --git a/cmake/FindSZip.cmake b/cmake/FindSZip.cmake
new file mode 100644
index 0000000..533df50
--- /dev/null
+++ b/cmake/FindSZip.cmake
@@ -0,0 +1,32 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find SZip
+# Once done this will define
+#  SZIP_FOUND - System has SZip
+#  SZIP_INCLUDE_DIRS - The SZip include directories
+#  SZIP_LIBRARIES - The libraries needed to use SZip
+
+ecbuild_add_extra_search_paths( szip )
+
+if( DEFINED SZIP_PATH )
+    find_path( SZIP_INCLUDE_DIR szlib.h       PATHS ${SZIP_PATH}/include PATH_SUFFIXES szip NO_DEFAULT_PATH )
+    find_library( SZIP_LIBRARY  NAMES szip sz PATHS ${SZIP_PATH}/lib     PATH_SUFFIXES szip NO_DEFAULT_PATH )
+endif()
+
+find_path( SZIP_INCLUDE_DIR szlib.h PATH_SUFFIXES szip )
+find_library( SZIP_LIBRARY NAMES szip sz  PATH_SUFFIXES szip )
+
+set( SZIP_LIBRARIES    ${SZIP_LIBRARY} )
+set( SZIP_INCLUDE_DIRS ${SZIP_INCLUDE_DIR} )
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args(SZip  DEFAULT_MSG SZIP_LIBRARY SZIP_INCLUDE_DIR)
+
+mark_as_advanced(SZIP_INCLUDE_DIR SZIP_LIBRARY )
diff --git a/cmake/FindScin.cmake b/cmake/FindScin.cmake
new file mode 100644
index 0000000..3ddf732
--- /dev/null
+++ b/cmake/FindScin.cmake
@@ -0,0 +1,48 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find ECREGRID
+# Once done this will define
+#  ECREGRID_FOUND - System has ECREGRID
+#  ECREGRID_INCLUDE_DIRS - The ECREGRID include directories
+#  ECREGRID_LIBRARIES - The libraries needed to use ECREGRID
+#  ECREGRID_DEFINITIONS - Compiler switches required for using ECREGRID
+
+option( WITH_ECREGRID "try to find scin installation" ON )
+
+# skip if ECREGRID is already found or if has is built inside
+
+if( NOT ECREGRID_FOUND AND WITH_ECREGRID )
+
+    if( NOT DEFINED ECREGRID_PATH AND NOT "$ENV{ECREGRID_PATH}" STREQUAL "" )
+        list( APPEND ECREGRID_PATH "$ENV{ECREGRID_PATH}" )
+    endif()
+
+    if( DEFINED ECREGRID_PATH )
+        find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/include PATH_SUFFIXES scin_api  NO_DEFAULT_PATH )
+        find_library(ECREGRID_LIBRARY  NAMES scin       PATHS ${ECREGRID_PATH} ${ECREGRID_PATH}/lib     PATH_SUFFIXES scin      NO_DEFAULT_PATH )
+    endif()
+    
+    find_path(ECREGRID_INCLUDE_DIR NAMES scin_api.h PATH_SUFFIXES scin_api )
+    find_library( ECREGRID_LIBRARY NAMES scin       PATH_SUFFIXES scin     )
+    
+    include(FindPackageHandleStandardArgs)
+    
+    # handle the QUIETLY and REQUIRED arguments and set ECREGRID_FOUND to TRUE
+    # if all listed variables are TRUE
+    find_package_handle_standard_args(Scin  DEFAULT_MSG
+                                      ECREGRID_LIBRARY ECREGRID_INCLUDE_DIR)
+
+    if( ECREGRID_FOUND )
+        set( ECREGRID_LIBRARIES    ${ECREGRID_LIBRARY} )
+        set( ECREGRID_INCLUDE_DIRS ${ECREGRID_INCLUDE_DIR} )
+    endif()
+    
+    mark_as_advanced(ECREGRID_INCLUDE_DIR ECREGRID_LIBRARY )
+    
+endif()
diff --git a/cmake/FindTrilinos.cmake b/cmake/FindTrilinos.cmake
new file mode 100644
index 0000000..717cca6
--- /dev/null
+++ b/cmake/FindTrilinos.cmake
@@ -0,0 +1,52 @@
+# (C) Copyright 1996-2014 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.
+
+# Try to find the Trilinos library
+#
+# Needs environmental variables
+#   TRILINOS_PATH
+# Sets
+#   TRILINOS_INCLUDE_DIRS
+#   TRILINOS_LIBRARIES
+#   TRILINOS_FOUND
+
+# Try to find Trilinos using Trilinos recommendations
+
+
+ecbuild_add_extra_search_paths( trilinos )
+
+if( DEFINED $ENV{TRILINOS_PATH} )
+    find_package(Trilinos PATHS $ENV{TRILINOS_PATH}/lib/cmake/Trilinos $ENV{TRILINOS_PATH}/include )
+endif()
+
+if( TRILINOS_PATH )
+    find_package(Trilinos PATHS ${TRILINOS_PATH}/lib/cmake/Trilinos ${TRILINOS_PATH}/include )
+endif()
+
+if( Trilinos_FOUND )
+
+        set( TRILINOS_INCLUDE_DIRS "" )
+
+        list( APPEND TRILINOS_INCLUDE_DIRS ${Trilinos_INCLUDE_DIRS} )
+        list( APPEND TRILINOS_INCLUDE_DIRS ${Trilinos_TPL_INCLUDE_DIRS} )
+
+        foreach( test_lib ${Trilinos_LIBRARIES} )
+          if(NOT ${test_lib} STREQUAL "pytrilinos")
+            find_library( ${test_lib}_lib ${test_lib} PATHS  ${Trilinos_LIBRARY_DIRS}  NO_DEFAULT_PATH)
+            find_library( ${test_lib}_lib ${test_lib})
+            mark_as_advanced( ${test_lib}_lib )
+            list( APPEND TRILINOS_LIBRARIES ${${test_lib}_lib} )
+          endif()
+        endforeach()
+
+        list( APPEND TRILINOS_LIBRARIES ${Trilinos_TPL_LIBRARIES} )
+
+    set( TRILINOS_FOUND TRUE )
+	set( TRILINOS_VERSION ${Trilinos_VERSION} )
+
+endif()
diff --git a/cmake/FindXLFortranLibs.cmake b/cmake/FindXLFortranLibs.cmake
new file mode 100644
index 0000000..7be0070
--- /dev/null
+++ b/cmake/FindXLFortranLibs.cmake
@@ -0,0 +1,49 @@
+# © Copyright 1996-2014 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.
+
+###############################################################################
+
+list( APPEND xl_libs xlf90 xlopt xlf xlsmp )
+
+set( xlf_all_libs_found 1 )
+
+foreach( lib ${xl_libs} )
+
+	find_library( ${lib}_lib  ${lib} PATHS ${XLF_PATH} PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH )
+
+	find_library( ${lib}_lib  ${lib} )
+
+	if( ${lib}_lib )
+        list( APPEND XLFORTRAN_LIBRARIES ${${lib}_lib} )
+	else()
+		set( xlf_all_libs_found 0 )
+    endif()
+
+endforeach()
+
+include(FindPackageHandleStandardArgs)
+
+find_package_handle_standard_args( LIBXLFORTRAN DEFAULT_MSG xlf_all_libs_found XLFORTRAN_LIBRARIES  )
+
+# HACK for support libraries
+
+if(  LIBXLFORTRAN_FOUND )
+	list( APPEND xl_extra_libs pthreads m essl )
+	foreach( lib ${xl_extra_libs} )
+
+		find_library( ${lib}_lib  ${lib} PATHS ${XLF_PATH} PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH )
+
+		find_library( ${lib}_lib  ${lib} )
+
+		if( ${lib}_lib )
+			list( APPEND XLFORTRAN_LIBRARIES ${${lib}_lib} )
+		endif()
+
+	endforeach()
+endif()
+
diff --git a/cmake/FindYACC.cmake b/cmake/FindYACC.cmake
new file mode 100644
index 0000000..dbdb191
--- /dev/null
+++ b/cmake/FindYACC.cmake
@@ -0,0 +1,157 @@
+# - Find yacc executable and provides macros to generate custom build rules
+# The module defines the following variables:
+#
+#  YACC_EXECUTABLE - path to the yacc program
+#  YACC_FOUND - true if the program was found
+#
+# The minimum required version of yacc can be specified using the
+# standard CMake syntax, e.g. find_package(YACC 2.1.3)
+#
+# If yacc is found, the module defines the macros:
+#  YACC_TARGET(<Name> <YaccInput> <CodeOutput> [VERBOSE <file>]
+#              [COMPILE_FLAGS <string>])
+# which will create  a custom rule to generate  a parser. <YaccInput> is
+# the path to  a yacc file. <CodeOutput> is the name  of the source file
+# generated by yacc.  A header file is also  be generated, and contains
+# the  token  list.  If  COMPILE_FLAGS  option is  specified,  the  next
+# parameter is  added in the yacc  command line.  if  VERBOSE option is
+# specified, <file> is created  and contains verbose descriptions of the
+# grammar and parser. The macro defines a set of variables:
+#  YACC_${Name}_DEFINED - true is the macro ran successfully
+#  YACC_${Name}_INPUT - The input source file, an alias for <YaccInput>
+#  YACC_${Name}_OUTPUT_SOURCE - The source file generated by yacc
+#  YACC_${Name}_OUTPUT_HEADER - The header file generated by yacc
+#  YACC_${Name}_OUTPUTS - The sources files generated by yacc
+#  YACC_${Name}_COMPILE_FLAGS - Options used in the yacc command line
+#
+#  ====================================================================
+
+#=============================================================================
+# Copyright 2009 Kitware, Inc.
+# Copyright 2006 Tristan Carel
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+
+# This file is based on the FindFLEX CMake macro, and adapted by ECMWF
+
+#=============================================================================
+# (C) Copyright 1996-2014 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.
+
+FIND_PROGRAM(YACC_EXECUTABLE yacc DOC "path to the yacc/yacc executable")
+MARK_AS_ADVANCED(YACC_EXECUTABLE)
+
+IF(YACC_EXECUTABLE)
+  # the yacc commands should be executed with the C locale, otherwise
+  # the message (which are parsed) may be translated
+  SET(_Yacc_SAVED_LC_ALL "$ENV{LC_ALL}")
+  SET(ENV{LC_ALL} C)
+
+  SET(ENV{LC_ALL} ${_Yacc_SAVED_LC_ALL})
+
+  # internal macro
+  MACRO(YACC_TARGET_option_verbose Name YaccOutput filename)
+    LIST(APPEND YACC_TARGET_cmdopt "--verbose")
+    GET_FILENAME_COMPONENT(YACC_TARGET_output_path "${YaccOutput}" PATH)
+    GET_FILENAME_COMPONENT(YACC_TARGET_output_name "${YaccOutput}" NAME_WE)
+    ADD_CUSTOM_COMMAND(OUTPUT ${filename}
+      COMMAND ${CMAKE_COMMAND}
+      ARGS -E copy
+      "${YACC_TARGET_output_path}/${YACC_TARGET_output_name}.output"
+      "${filename}"
+      DEPENDS
+      "${YACC_TARGET_output_path}/${YACC_TARGET_output_name}.output"
+      COMMENT "[YACC][${Name}] Copying yacc verbose table to ${filename}"
+      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+    SET(YACC_${Name}_VERBOSE_FILE ${filename})
+    LIST(APPEND YACC_TARGET_extraoutputs
+      "${YACC_TARGET_output_path}/${YACC_TARGET_output_name}.output")
+  ENDMACRO(YACC_TARGET_option_verbose)
+
+  # internal macro
+  MACRO(YACC_TARGET_option_extraopts Options)
+    SET(YACC_TARGET_extraopts "${Options}")
+    SEPARATE_ARGUMENTS(YACC_TARGET_extraopts)
+    LIST(APPEND YACC_TARGET_cmdopt ${YACC_TARGET_extraopts})
+  ENDMACRO(YACC_TARGET_option_extraopts)
+
+  #============================================================
+  # YACC_TARGET (public macro)
+  #============================================================
+  #
+  MACRO(YACC_TARGET Name YaccInput YaccOutput)
+    SET(YACC_TARGET_output_header "")
+    SET(YACC_TARGET_cmdopt "")
+    SET(YACC_TARGET_outputs "${YaccOutput}")
+    IF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7)
+      MESSAGE(SEND_ERROR "Usage")
+    ELSE()
+      # Parsing parameters
+      IF(${ARGC} GREATER 5 OR ${ARGC} EQUAL 5)
+        IF("${ARGV3}" STREQUAL "VERBOSE")
+          YACC_TARGET_option_verbose(${Name} ${YaccOutput} "${ARGV4}")
+        ENDIF()
+        IF("${ARGV3}" STREQUAL "COMPILE_FLAGS")
+          YACC_TARGET_option_extraopts("${ARGV4}")
+        ENDIF()
+      ENDIF()
+
+      IF(${ARGC} EQUAL 7)
+        IF("${ARGV5}" STREQUAL "VERBOSE")
+          YACC_TARGET_option_verbose(${Name} ${YaccOutput} "${ARGV6}")
+        ENDIF()
+
+        IF("${ARGV5}" STREQUAL "COMPILE_FLAGS")
+          YACC_TARGET_option_extraopts("${ARGV6}")
+        ENDIF()
+      ENDIF()
+
+      # Header's name generated by yacc (see option -d)
+      LIST(APPEND YACC_TARGET_cmdopt "-d")
+      STRING(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${ARGV2}")
+      STRING(REPLACE "c" "h" _fileext ${_fileext})
+      STRING(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}"
+          YACC_${Name}_OUTPUT_HEADER "${ARGV2}")
+      LIST(APPEND YACC_TARGET_outputs "${YACC_${Name}_OUTPUT_HEADER}")
+
+#       message ( STATUS "${YACC_EXECUTABLE} ${YACC_TARGET_cmdopt} ${CMAKE_CURRENT_BINARY_DIR}/${ARGV1}" )
+#       message ( STATUS "${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/y.tab.h ${YACC_${Name}_OUTPUT_HEADER}" )
+#       message ( STATUS "${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/y.tab.c ${ARGV2}" )
+
+      ADD_CUSTOM_COMMAND(OUTPUT ${YACC_TARGET_outputs} ${YACC_TARGET_extraoutputs}
+        COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV1} ${CMAKE_CURRENT_BINARY_DIR}
+        COMMAND ${YACC_EXECUTABLE} ${YACC_TARGET_cmdopt} ${CMAKE_CURRENT_BINARY_DIR}/${ARGV1}
+        COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/y.tab.h ${YACC_${Name}_OUTPUT_HEADER}
+        COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/y.tab.c ${ARGV2}
+        DEPENDS ${ARGV1}
+        COMMENT "[YACC][${Name}] Building parser with yacc"
+        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+      # define target variables
+      SET(YACC_${Name}_DEFINED TRUE)
+      SET(YACC_${Name}_INPUT ${ARGV1})
+      SET(YACC_${Name}_OUTPUTS ${YACC_TARGET_outputs})
+      SET(YACC_${Name}_COMPILE_FLAGS ${YACC_TARGET_cmdopt})
+      SET(YACC_${Name}_OUTPUT_SOURCE "${YaccOutput}")
+
+    ENDIF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7)
+  ENDMACRO(YACC_TARGET)
+  #
+  #============================================================
+
+ENDIF(YACC_EXECUTABLE)
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(YACC REQUIRED_VARS  YACC_EXECUTABLE )
+
+# FindYACC.cmake ends here
diff --git a/cmake/Findgrib_api.cmake b/cmake/Findgrib_api.cmake
new file mode 100644
index 0000000..2bf9ff7
--- /dev/null
+++ b/cmake/Findgrib_api.cmake
@@ -0,0 +1,131 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find GRIB_API
+# Once done this will define
+#  GRIB_API_FOUND - System has GRIB_API
+#  GRIB_API_INCLUDE_DIRS - The GRIB_API include directories
+#  GRIB_API_LIBRARIES - The libraries needed to use GRIB_API
+#  GRIB_API_DEFINITIONS - Compiler switches required for using GRIB_API
+
+option( NO_GRIB_API_BINARIES "skip trying to find grib_api installed binaries" OFF )
+option( GRIB_API_PNG "use png with grib_api" ON )
+option( GRIB_API_JPG "use jpg with grib_api" ON )
+
+if( NOT grib_api_FOUND AND NOT NO_GRIB_API_BINARIES )
+
+    ecbuild_add_extra_search_paths( grib_api )
+
+    if( GRIB_API_JPG ) # jpeg support
+        
+        find_package( JPEG     QUIET ) # grib_api might be a static .a library in which
+    
+        if( NOT "$ENV{JASPER_PATH}" STREQUAL "" )
+            list( APPEND CMAKE_PREFIX_PATH "$ENV{JASPER_PATH}" )
+        endif()
+        find_package( Jasper   QUIET ) # case we don't know if which jpeg library was used
+    
+        find_package( OpenJPEG QUIET ) # so we try to find all jpeg libs and link to them 
+        
+        if(JPEG_FOUND)
+            list( APPEND _grib_api_jpg_incs ${JPEG_INCLUDE_DIR} )
+            list( APPEND _grib_api_jpg_libs ${JPEG_LIBRARIES} )
+        endif()
+        if(JASPER_FOUND)
+            list( APPEND _grib_api_jpg_incs ${JASPER_INCLUDE_DIR} )
+            list( APPEND _grib_api_jpg_libs ${JASPER_LIBRARIES} )
+        endif()
+        if(OPENJPEG_FOUND)
+            list( APPEND _grib_api_jpg_incs ${OPENJPEG_INCLUDE_DIR} )
+            list( APPEND _grib_api_jpg_libs ${OPENJPEG_LIBRARIES} )
+        endif()
+
+    endif()
+    
+    if( GRIB_API_PNG ) # png support
+    
+        find_package(PNG)
+    
+        if( DEFINED PNG_PNG_INCLUDE_DIR AND NOT DEFINED PNG_INCLUDE_DIRS )
+          set( PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR}  CACHE INTERNAL "PNG include dirs" )
+        endif()
+        if( DEFINED PNG_LIBRARY AND NOT DEFINED PNG_LIBRARIES )
+          set( PNG_LIBRARIES ${PNG_LIBRARY} CACHE INTERNAL "PNG libraries" )
+        endif()
+        
+        if(PNG_FOUND)
+            list( APPEND _grib_api_png_defs ${PNG_DEFINITIONS} )
+            list( APPEND _grib_api_png_incs ${PNG_INCLUDE_DIRS} )
+            list( APPEND _grib_api_png_libs ${PNG_LIBRARIES} )
+        endif()
+
+    endif()
+
+	# The grib_api on macos that comes with 'port' is linked against ghostscript
+	if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+		find_library(GS_LIBRARIES NAMES gs)
+		if( GS_LIBRARIES )
+			list( APPEND GRIB_API_LIBRARIES ${GS_LIBRARIES} )
+		endif()
+	endif()
+
+    # find external grib_api
+
+    if( NOT DEFINED GRIB_API_PATH AND NOT "$ENV{GRIB_API_PATH}" STREQUAL "" )
+        list( APPEND GRIB_API_PATH "$ENV{GRIB_API_PATH}" )
+    endif()
+
+    if( DEFINED GRIB_API_PATH )
+        find_path(GRIB_API_INCLUDE_DIR NAMES grib_api.h PATHS ${GRIB_API_PATH} ${GRIB_API_PATH}/include PATH_SUFFIXES grib_api  NO_DEFAULT_PATH)
+        find_library(GRIB_API_LIBRARY  NAMES grib_api   PATHS ${GRIB_API_PATH} ${GRIB_API_PATH}/lib     PATH_SUFFIXES grib_api  NO_DEFAULT_PATH)
+        find_program(GRIB_API_INFO     NAMES grib_info  PATHS ${GRIB_API_PATH} ${GRIB_API_PATH}/bin     PATH_SUFFIXES grib_api  NO_DEFAULT_PATH)
+    endif()
+    
+    find_path(GRIB_API_INCLUDE_DIR NAMES grib_api.h PATHS PATH_SUFFIXES grib_api )
+    find_library( GRIB_API_LIBRARY NAMES grib_api   PATHS PATH_SUFFIXES grib_api )
+    find_program(GRIB_API_INFO     NAMES grib_info  PATHS PATH_SUFFIXES grib_api )
+    
+    set( GRIB_API_LIBRARIES    ${GRIB_API_LIBRARY} )
+    set( GRIB_API_INCLUDE_DIRS ${GRIB_API_INCLUDE_DIR} )
+
+    if( GRIB_API_INFO )
+        
+        execute_process( COMMAND ${GRIB_API_INFO} -v  OUTPUT_VARIABLE _grib_info_out ERROR_VARIABLE _grib_info_err OUTPUT_STRIP_TRAILING_WHITESPACE )
+        
+        # debug_var( _grib_info_out )
+    
+        string( REPLACE "." " " _version_list ${_grib_info_out} ) # dots to spaces
+        separate_arguments( _version_list )
+
+        list( GET _version_list 0 GRIB_API_MAJOR_VERSION )
+        list( GET _version_list 1 GRIB_API_MINOR_VERSION )
+        list( GET _version_list 2 GRIB_API_PATCH_VERSION )
+
+        set( GRIB_API_VERSION     "${GRIB_API_MAJOR_VERSION}.${GRIB_API_MINOR_VERSION}.${GRIB_API_PATCH_VERSION}" ) 
+        set( GRIB_API_VERSION_STR "${_grib_info_out}" )
+
+        set( grib_api_VERSION     "${GRIB_API_VERSION}" ) 
+        set( grib_api_VERSION_STR "${GRIB_API_VERSION_STR}" )
+
+    endif()
+    
+    include(FindPackageHandleStandardArgs)
+    
+    # handle the QUIETLY and REQUIRED arguments and set GRIB_API_FOUND to TRUE
+    find_package_handle_standard_args( grib_api DEFAULT_MSG
+                                       GRIB_API_LIBRARY GRIB_API_INCLUDE_DIR GRIB_API_INFO )
+    
+    mark_as_advanced( GRIB_API_INCLUDE_DIR GRIB_API_LIBRARY GRIB_API_INFO )
+    
+    list( APPEND GRIB_API_DEFINITIONS  ${_grib_api_jpg_defs} ${_grib_api_png_defs} )
+    list( APPEND GRIB_API_INCLUDE_DIRS ${_grib_api_jpg_incs} ${_grib_api_png_incs} )
+	list( APPEND GRIB_API_LIBRARIES    ${_grib_api_jpg_libs} ${_grib_api_png_libs} )
+
+    set( grib_api_FOUND ${GRIB_API_FOUND} )
+
+endif()
diff --git a/cmake/Findodb_api.cmake b/cmake/Findodb_api.cmake
new file mode 100644
index 0000000..c573d9b
--- /dev/null
+++ b/cmake/Findodb_api.cmake
@@ -0,0 +1,99 @@
+# (C) Copyright 1996-2014 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.
+
+# - Try to find ODB_API
+# Once done this will define
+#  ODB_API_FOUND - System has ODB_API
+#  ODB_API_INCLUDE_DIRS - The ODB_API include directories
+#  ODB_API_LIBRARIES - The libraries needed to use ODB_API
+#  ODB_API_DEFINITIONS - Compiler switches required for using ODB_API
+
+if( NOT odb_api_FOUND )
+
+    ecbuild_add_extra_search_paths( odb_api )
+
+    # find external odb_api
+
+    if( NOT DEFINED ODB_API_PATH AND NOT "$ENV{ODB_API_PATH}" STREQUAL "" )
+        list( APPEND ODB_API_PATH "$ENV{ODB_API_PATH}" )
+    endif()
+
+    if( DEFINED ODB_API_PATH )
+
+        find_path( ODB_API_INCLUDE_DIR
+                   NAMES odb_api_config.h
+                   PATHS ${ODB_API_PATH} ${ODB_API_PATH}/include
+                   PATH_SUFFIXES odb_api
+                   NO_DEFAULT_PATH )
+
+        find_library( ODB_API_LIBRARY NAMES Odb
+                      PATHS ${ODB_API_PATH} ${ODB_API_PATH}/lib
+                      PATH_SUFFIXES odb_api
+                      NO_DEFAULT_PATH )
+
+        find_library( ODB_API_ECLIB_LIBRARY NAMES Ec
+                      PATHS ${ODB_API_PATH} ${ODB_API_PATH}/lib
+                      PATH_SUFFIXES odb_api
+                      NO_DEFAULT_PATH )
+    endif()
+    
+        find_path( ODB_API_INCLUDE_DIR
+                   NAMES odb_api_config.h
+                   PATHS
+                   PATH_SUFFIXES odb_api )
+
+        find_library( ODB_API_LIBRARY NAMES Odb
+                      PATHS
+                      PATH_SUFFIXES odb_api )
+
+        find_library( ODB_API_ECLIB_LIBRARY NAMES Ec
+                      PATHS
+                      PATH_SUFFIXES odb_api )
+
+
+    # get the version
+
+    if( ODB_API_INCLUDE_DIR )
+
+        set(_odb_api_VERSION_REGEX "([0-9]+)")
+
+        foreach( v MAJOR MINOR PATCH )
+
+          file(STRINGS "${ODB_API_INCLUDE_DIR}/odb_api_config.h" _odb_api_${v}_VERSION_CONTENTS REGEX "#define ODB_API_${v}_VERSION ")
+
+          if( "${_odb_api_${v}_VERSION_CONTENTS}" MATCHES ".*#define ODB_API_${v}_VERSION ${_odb_api_VERSION_REGEX}.*")
+
+              set( ODB_API_${v}_VERSION "${CMAKE_MATCH_1}" )
+
+          endif()
+
+        endforeach()
+
+    endif()
+
+    set( ODB_API_VERSION     "${ODB_API_MAJOR_VERSION}.${ODB_API_MINOR_VERSION}.${ODB_API_PATCH_VERSION}" )
+    set( ODB_API_VERSION_STR "${_odb_info_out}" )
+
+    set( odb_api_VERSION     "${ODB_API_VERSION}" )
+    set( odb_api_VERSION_STR "${ODB_API_VERSION_STR}" )
+
+    # handle the QUIETLY and REQUIRED arguments and set ODB_API_FOUND to TRUE
+
+    include(FindPackageHandleStandardArgs)
+
+    find_package_handle_standard_args( odb_api DEFAULT_MSG
+                                       ODB_API_LIBRARY ODB_API_ECLIB_LIBRARY ODB_API_INCLUDE_DIR )
+    
+    set( ODB_API_LIBRARIES    ${ODB_API_LIBRARY} ${ODB_API_ECLIB_LIBRARY} )
+    set( ODB_API_INCLUDE_DIRS ${ODB_API_INCLUDE_DIR} )
+
+    mark_as_advanced( ODB_API_INCLUDE_DIR ODB_API_LIBRARY ODB_API_ECLIB_LIBRARY )
+    
+    set( odb_api_FOUND ${ODB_API_FOUND} )
+
+endif()
diff --git a/cmake/Findspot.cmake b/cmake/Findspot.cmake
new file mode 100644
index 0000000..6396ef0
--- /dev/null
+++ b/cmake/Findspot.cmake
@@ -0,0 +1,67 @@
+# (C) Copyright 1996-2012 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.
+
+# - Try to find ODB_API
+# Once done this will define
+#  ODB_API_FOUND - System has ODB_API
+#  ODB_API_INCLUDE_DIRS - The ODB_API include directories
+#  ODB_API_LIBRARIES - The libraries needed to use ODB_API
+#  ODB_API_DEFINITIONS - Compiler switches required for using ODB_API
+
+if( NOT spot_FOUND )
+
+    ecbuild_add_extra_search_paths( spot )
+
+    # find external odb_api
+
+    if( NOT DEFINED SPOT_PATH AND NOT "$ENV{SPOT_PATH}" STREQUAL "" )
+        list( APPEND SPOT_PATH "$ENV{SPOT_PATH}" )
+    endif()
+
+    if( DEFINED SPOT_PATH )
+
+        find_path( SPOT_INCLUDE_DIR
+                   NAMES spot_database.h
+                   PATHS ${SPOT_PATH} ${SPOT_PATH}/include
+                   NO_DEFAULT_PATH )
+
+        find_library( SPOT_LIBRARY NAMES spot_database
+                      PATHS ${SPOT_PATH} ${SPOT_PATH}/lib
+                      NO_DEFAULT_PATH )
+
+    endif()
+    
+        find_path( SPOT_INCLUDE_DIR
+                   NAMES spot_database.h
+                   PATHS
+                   PATH_SUFFIXES spot )
+
+        find_library( SPOT_LIBRARY NAMES spot_database
+                      PATHS
+                      PATH_SUFFIXES odb_api )
+
+        find_library( ODB_API_ECLIB_LIBRARY NAMES Ec
+                      PATHS
+                      PATH_SUFFIXES spot )
+
+
+    # get the version
+
+    include(FindPackageHandleStandardArgs)
+
+    find_package_handle_standard_args( spot DEFAULT_MSG
+                                       SPOT_LIBRARY SPOT_INCLUDE_DIR )
+    
+    set( SPOT_LIBRARIES    ${SPOT_LIBRARY} )
+    set( SPOT_INCLUDE_DIRS ${SPOT_INCLUDE_DIR} )
+
+    mark_as_advanced( SPOT_INCLUDE_DIR SPOT_LIBRARY )
+    
+    set( spot_FOUND ${SPOT_FOUND} )
+
+endif()
diff --git a/cmake/contrib/CheckFortranCompilerFlag.cmake b/cmake/contrib/CheckFortranCompilerFlag.cmake
new file mode 100644
index 0000000..6a35c8e
--- /dev/null
+++ b/cmake/contrib/CheckFortranCompilerFlag.cmake
@@ -0,0 +1,25 @@
+# File taken from CMake Bug Report: http://public.kitware.com/Bug/print_bug_page.php?bug_id=12459
+
+# - Check whether the Fortan compiler supports a given flag.
+# CHECK_FORTRAN_COMPILER_FLAG(<flag> <var>)
+#  <flag> - the compiler flag
+#  <var>  - variable to store the result
+# This internally calls the check_fortran_source_compiles macro.  See help
+# for CheckFortranSourceCompiles for a listing of variables that can
+# modify the build.
+
+INCLUDE(CheckFortranSourceCompiles)
+
+MACRO (CHECK_FORTRAN_COMPILER_FLAG _FLAG _RESULT)
+   SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+   SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+   CHECK_FORTRAN_SOURCE_COMPILES("end" ${_RESULT}
+     # Some compilers do not fail with a bad flag
+     FAIL_REGEX "unrecognized .*option"                     # GNU
+     FAIL_REGEX "ignoring unknown option"                   # MSVC
+     FAIL_REGEX "[Uu]nknown option"                         # HP
+     FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
+     FAIL_REGEX "command option .* is not recognized"       # XL
+     )
+   SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+ENDMACRO (CHECK_FORTRAN_COMPILER_FLAG)
diff --git a/cmake/contrib/CheckFortranSourceCompiles.cmake b/cmake/contrib/CheckFortranSourceCompiles.cmake
new file mode 100644
index 0000000..500aee6
--- /dev/null
+++ b/cmake/contrib/CheckFortranSourceCompiles.cmake
@@ -0,0 +1,61 @@
+# File taken from CMake Bug Report: http://public.kitware.com/Bug/print_bug_page.php?bug_id=12459
+
+# - Check if the source code provided in the SOURCE argument compiles.
+# CHECK_FORTRAN_SOURCE_COMPILES(SOURCE VAR)
+# - macro which checks if the source code compiles
+#  SOURCE   - source code to try to compile
+#  VAR      - variable to store whether the source code compiled
+#
+# The following variables may be set before calling this macro to
+# modify the way the check is run:
+#
+#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
+#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+#  CMAKE_REQUIRED_INCLUDES = list of include directories
+#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+
+MACRO(CHECK_FORTRAN_SOURCE_COMPILES SOURCE VAR)
+  IF("${VAR}" MATCHES "^${VAR}$")
+    SET(MACRO_CHECK_FUNCTION_DEFINITIONS
+      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
+    IF(CMAKE_REQUIRED_LIBRARIES)
+      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES
+        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
+    ELSE(CMAKE_REQUIRED_LIBRARIES)
+      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES)
+    ENDIF(CMAKE_REQUIRED_LIBRARIES)
+    IF(CMAKE_REQUIRED_INCLUDES)
+      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES
+        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
+    ELSE(CMAKE_REQUIRED_INCLUDES)
+      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES)
+    ENDIF(CMAKE_REQUIRED_INCLUDES)
+    FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90"
+      "${SOURCE}\n")
+
+    MESSAGE(STATUS "Performing Test ${VAR}")
+    TRY_COMPILE(${VAR}
+      ${CMAKE_BINARY_DIR}
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90
+      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+      "${CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES}"
+      "${CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES}"
+      OUTPUT_VARIABLE OUTPUT)
+    IF(${VAR})
+      SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
+      MESSAGE(STATUS "Performing Test ${VAR} - Success")
+      FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Performing Fortran SOURCE FILE Test ${VAR} succeded with the following output:\n"
+        "${OUTPUT}\n"
+        "Source file was:\n${SOURCE}\n")
+    ELSE(${VAR})
+      MESSAGE(STATUS "Performing Test ${VAR} - Failed")
+      SET(${VAR} 0 CACHE INTERNAL "Test ${VAR}")
+      FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+        "Performing Fortran SOURCE FILE Test ${VAR} failed with the following output:\n"
+        "${OUTPUT}\n"
+        "Source file was:\n${SOURCE}\n")
+    ENDIF(${VAR})
+  ENDIF("${VAR}" MATCHES "^${VAR}$")
+ENDMACRO(CHECK_FORTRAN_SOURCE_COMPILES)
diff --git a/cmake/contrib/FindEigen3.cmake b/cmake/contrib/FindEigen3.cmake
new file mode 100644
index 0000000..df0cb13
--- /dev/null
+++ b/cmake/contrib/FindEigen3.cmake
@@ -0,0 +1,88 @@
+# - Try to find Eigen3 lib
+#
+# This module supports requiring a minimum version, e.g. you can do
+#   find_package(Eigen3 3.1.2)
+# to require version 3.1.2 or newer of Eigen3.
+#
+# Once done this will define
+#
+#  EIGEN3_FOUND - system has eigen lib with correct version
+#  EIGEN3_INCLUDE_DIR - the eigen include directory
+#  EIGEN3_VERSION - eigen version
+
+# Copyright (c) 2006, 2007 Montel Laurent, <montel at kde.org>
+# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael at free.fr>
+# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1 at gmail.com>
+# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
+
+ecbuild_add_extra_search_paths( eigen )
+
+if(NOT Eigen3_FIND_VERSION)
+  if(NOT Eigen3_FIND_VERSION_MAJOR)
+    set(Eigen3_FIND_VERSION_MAJOR 2)
+  endif(NOT Eigen3_FIND_VERSION_MAJOR)
+  if(NOT Eigen3_FIND_VERSION_MINOR)
+    set(Eigen3_FIND_VERSION_MINOR 91)
+  endif(NOT Eigen3_FIND_VERSION_MINOR)
+  if(NOT Eigen3_FIND_VERSION_PATCH)
+    set(Eigen3_FIND_VERSION_PATCH 0)
+  endif(NOT Eigen3_FIND_VERSION_PATCH)
+
+  set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
+endif(NOT Eigen3_FIND_VERSION)
+
+macro(_eigen3_check_version)
+  file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
+
+  string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
+  set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
+  string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
+  set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
+  string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
+  set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
+
+  set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
+  if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+    set(EIGEN3_VERSION_OK FALSE)
+  else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+    set(EIGEN3_VERSION_OK TRUE)
+  endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+
+  if(NOT EIGEN3_VERSION_OK)
+
+    message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
+                   "but at least version ${Eigen3_FIND_VERSION} is required")
+  else()
+	set( EIGEN3_VERSION ${EIGEN3_VERSION} CACHE INTERNAL "Eigen3 version" )
+  endif()
+
+endmacro(_eigen3_check_version)
+
+if(EIGEN3_INCLUDE_DIR)
+
+  # in cache already
+  _eigen3_check_version()
+  set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})
+
+else(EIGEN3_INCLUDE_DIR)
+
+  find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
+      PATHS
+      ${CMAKE_INSTALL_PREFIX}/include
+      ${KDE4_INCLUDE_DIR}
+      ${EIGEN3_PATH}/include
+      PATH_SUFFIXES eigen3 eigen
+    )
+
+  if(EIGEN3_INCLUDE_DIR)
+    _eigen3_check_version()
+  endif(EIGEN3_INCLUDE_DIR)
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
+
+  mark_as_advanced(EIGEN3_INCLUDE_DIR)
+
+endif(EIGEN3_INCLUDE_DIR)
+
+set( EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR} )
diff --git a/cmake/contrib/FindNetCDF4.cmake b/cmake/contrib/FindNetCDF4.cmake
new file mode 100644
index 0000000..b046b39
--- /dev/null
+++ b/cmake/contrib/FindNetCDF4.cmake
@@ -0,0 +1,289 @@
+# Project uclales
+# http://gitorious.org/uclales
+# License: Academic Free License v3.0
+#
+# - Find NETCDF, a library for reading and writing self describing array data.
+#
+# This module invokes the NETCDF wrapper compiler that should be installed
+# alongside NETCDF.  Depending upon the NETCDF Configuration, the wrapper compiler
+# is called either h5cc or h5pcc.  If this succeeds, the module will then call
+# the compiler with the -show argument to see what flags are used when compiling
+# an NETCDF client application.
+#
+# The module will optionally accept the COMPONENTS argument.  If no COMPONENTS
+# are specified, then the find module will default to finding only the NETCDF C
+# library.  If one or more COMPONENTS are specified, the module will attempt to
+# find the language bindings for the specified components.  Currently, the only
+# valid components are C, CXX, FORTRAN and F90.
+#
+# On UNIX systems, this module will read the variable NETCDF_USE_STATIC_LIBRARIES
+# to determine whether or not to prefer a static link to a dynamic link for NETCDF
+# and all of it's dependencies.  To use this feature, make sure that the
+# NETCDF_USE_STATIC_LIBRARIES variable is set before the call to find_package.
+#
+# To provide the module with a hint about where to find your NETCDF installation,
+# you can set the environment variable NETCDF_ROOT.  The Find module will then
+# look in this path when searching for NETCDF executables, paths, and libraries.
+#
+# In addition to finding the includes and libraries required to compile an NETCDF
+# client application, this module also makes an effort to find tools that come
+# with the NETCDF distribution that may be useful for regression testing.
+#
+# This module will define the following variables:
+#  NETCDF_INCLUDE_DIRS - Location of the NETCDF includes
+#  NETCDF_INCLUDE_DIR - Location of the NETCDF includes (deprecated)
+#  NETCDF_DEFINITIONS - Required compiler definitions for NETCDF
+#  NETCDF_C_LIBRARIES - Required libraries for the NETCDF C bindings.
+#  NETCDF_CXX_LIBRARIES - Required libraries for the NETCDF C++ bindings
+#  NETCDF_FORTRAN_LIBRARIES - Required libraries for the NETCDF FORTRAN bindings
+#  NETCDF_F90_LIBRARIES - Required libraries for the NETCDF FORTRAN 90 bindings
+#  NETCDF_LIBRARIES - Required libraries for all requested bindings
+#  NETCDF_FOUND - true if NETCDF was found on the system
+#  NETCDF_LIBRARY_DIRS - the full set of library directories
+#  NETCDF_IS_PARALLEL - Whether or not NETCDF was found with parallel IO support
+#  NETCDF_CONFIG_EXECUTABLE - the path to the NC-CONFIG tool
+
+#=============================================================================
+# Copyright 2009 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+# This module is maintained by Thijs Heus <thijs.heus at zmaw.de>.
+
+include(SelectLibraryConfigurations)
+include(FindPackageHandleStandardArgs)
+
+# List of the valid NETCDF components
+set( NETCDF_VALID_COMPONENTS
+    FORTRAN
+    F90
+    CXX
+    C
+)
+
+# Invoke the NETCDF wrapper compiler.  The compiler return value is stored to the
+# return_value argument, the text output is stored to the output variable.
+macro( _NETCDF_CONFIG flag output return_value )
+    if( NETCDF_CONFIG_EXECUTABLE )
+        exec_program( ${NETCDF_CONFIG_EXECUTABLE}
+            ARGS ${flag}
+            OUTPUT_VARIABLE ${output}
+            RETURN_VALUE ${return_value}
+        )
+        if( ${${return_value}} EQUAL 0 )
+            # do nothing
+        else()
+            message( STATUS
+              "Unable to determine ${flag} from NC-CONFIG." )
+        endif()
+    endif()
+endmacro()
+#
+# try to find the NETCDF wrapper compilers
+find_program( NETCDF_CONFIG_EXECUTABLE
+    NAMES nc-config
+    HINTS ENV NETCDF_ROOT
+    PATHS
+    PATH_SUFFIXES bin Bin
+    DOC "NETCDF CONFIG PROGRAM.  Used only to detect NETCDF compile flags." )
+mark_as_advanced( NETCDF_CONFIG_EXECUTABLE )
+
+set(output "no")
+_NETCDF_CONFIG (--has-hdf5 output return)
+set(HAS_HDF5 FALSE)
+
+if(${output} STREQUAL yes)
+  set(HAS_HDF5 TRUE)
+  if(NETCDF_FIND_QUIETLY OR NOT NETCDF_FIND_REQUIRED)
+    find_package(HDF5)
+  else()
+    find_package(HDF5 REQUIRED)
+  endif()
+#        list( APPEND NETCDF_LIBRARIES_DEBUG
+#            ${HDF5_LIBRARIES_DEBUG} )
+#        list( APPEND NETCDF_LIBRARIES_RELEASE
+#            ${HDF5_LIBRARIES_RELEASE} )
+  set (NETCDF_IS_PARALLEL ${HDF5_IS_PARALLEL})
+endif()
+_NETCDF_CONFIG (--has-pnetcdf output return)
+if(${output} STREQUAL yes)
+  set (NETCDF_IS_PARALLEL TRUE)
+else()
+#   set(NETCDF_IS_PARALLEL FALSE)
+endif()
+set( NETCDF_IS_PARALLEL TRUE CACHE BOOL
+    "NETCDF library compiled with parallel IO support" )
+
+
+if( NETCDF_INCLUDE_DIRS AND NETCDF_LIBRARIES )
+    # Do nothing: we already have NETCDF_INCLUDE_PATH and NETCDF_LIBRARIES in the
+    # cache, it would be a shame to override them
+else()
+    if( NOT NETCDF_FIND_COMPONENTS )
+        set( NETCDF_LANGUAGE_BINDINGS "C" )
+    else()
+        # add the extra specified components, ensuring that they are valid.
+        foreach( component ${NETCDF_FIND_COMPONENTS} )
+            list( FIND NETCDF_VALID_COMPONENTS ${component} component_location )
+            if( ${component_location} EQUAL -1 )
+                message( FATAL_ERROR
+                    "\"${component}\" is not a valid NETCDF component." )
+            else()
+                list( APPEND NETCDF_LANGUAGE_BINDINGS ${component} )
+            endif()
+        endforeach()
+    endif()
+
+    # seed the initial lists of libraries to find with items we know we need
+    set( NETCDF_C_INCLUDE_NAMES netcdf.h )
+    set( NETCDF_CXX_INCLUDE_NAMES netcdfcpp.h ${NETCDF_C_INCLUDE_NAMES} )
+    set( NETCDF_FORTRAN_INCLUDE_NAMES ${NETCDF_C_INCLUDE_NAMES} )
+    set( NETCDF_F90_INCLUDE_NAMES netcdf.mod typesizes.mod ${NETCDF_C_INCLUDE_NAMES} )
+
+    set( NETCDF_C_LIBRARY_NAMES netcdf)
+    set( NETCDF_CXX_LIBRARY_NAMES netcdf_c++ ${NETCDF_C_LIBRARY_NAMES} )
+    set( NETCDF_FORTRAN_LIBRARY_NAMES netcdff ${NETCDF_C_LIBRARY_NAMES})
+    set( NETCDF_F90_LIBRARY_NAMES ${NETCDF_FORTRAN_LIBRARY_NAMES} )
+
+    set( NETCDF_REQUIRED netcdf.h netcdfcpp.h netcdf.mod typesizes.mod netcdf netcdf_c++)
+
+    foreach( LANGUAGE ${NETCDF_LANGUAGE_BINDINGS} )
+        foreach( INC ${NETCDF_${LANGUAGE}_INCLUDE_NAMES} )
+          find_path( NETCDF_${INC}_INCLUDE_DIR ${INC}
+              HINTS
+                  ${NETCDF_${LANGUAGE}_INCLUDE_FLAGS}
+                      ENV NETCDF_ROOT
+              PATHS
+              PATH_SUFFIXES
+                  include
+                  Include
+          )
+          mark_as_advanced( NETCDF_${INC}_INCLUDE_DIR )
+          if (NETCDF_${INC}_INCLUDE_DIR)
+            list( APPEND NETCDF_INCLUDE_DIRS ${NETCDF_${INC}_INCLUDE_DIR} )
+          else()
+            list( FIND NETCDF_REQUIRED ${INC} location )
+            if( ${location} EQUAL -1 )
+            else()
+              if(NETCDF_FIND_REQUIRED)
+                message( SEND_ERROR "\"${INC}\" is not found." )
+              endif()
+            else()
+            endif()
+          endif()
+        endforeach()
+        # find the NETCDF libraries
+        foreach( LIB ${NETCDF_${LANGUAGE}_LIBRARY_NAMES} )
+            if( UNIX AND NETCDF_USE_STATIC_LIBRARIES )
+                # According to bug 1643 on the CMake bug tracker, this is the
+                # preferred method for searching for a static library.
+                # See http://www.cmake.org/Bug/view.php?id=1643.  We search
+                # first for the full static library name, but fall back to a
+                # generic search on the name if the static search fails.
+                set( THIS_LIBRARY_SEARCH_DEBUG lib${LIB}d.a ${LIB}d )
+                set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a ${LIB} )
+            else()
+                set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d )
+                set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} )
+            endif()
+            find_library( NETCDF_${LIB}_LIBRARY_DEBUG
+                NAMES ${THIS_LIBRARY_SEARCH_DEBUG}
+                HINTS ${NETCDF_${LANGUAGE}_LIBRARY_DIRS}
+                ENV NETCDF_ROOT
+                PATHS
+                PATH_SUFFIXES lib64 Lib64 lib Lib)
+            find_library( NETCDF_${LIB}_LIBRARY_RELEASE
+                NAMES ${THIS_LIBRARY_SEARCH_RELEASE}
+                HINTS ${NETCDF_${LANGUAGE}_LIBRARY_DIRS}
+                ENV NETCDF_ROOT
+                PATHS
+                PATH_SUFFIXES lib64 Lib64 lib Lib )
+            select_library_configurations( NETCDF_${LIB} )
+            # even though we adjusted the individual library names in
+            # select_library_configurations, we still need to distinguish
+            # between debug and release variants because NETCDF_LIBRARIES will
+            # need to specify different lists for debug and optimized builds.
+            # We can't just use the NETCDF_${LIB}_LIBRARY variable (which was set
+            # up by the selection macro above) because it may specify debug and
+            # optimized variants for a particular library, but a list of
+            # libraries is allowed to specify debug and optimized only once.
+          if (NETCDF_${LIB}_LIBRARY_RELEASE)
+            list( APPEND NETCDF_LIBRARIES_RELEASE ${NETCDF_${LIB}_LIBRARY_RELEASE} )
+          endif()
+          if (NETCDF_${LIB}_LIBRARY_DEBUG)
+            list( APPEND NETCDF_LIBRARIES_DEBUG ${NETCDF_${LIB}_LIBRARY_DEBUG} )
+          endif()
+          if (NETCDF_${LIB}_LIBRARY_RELEASE OR NETCDF_${LIB}_LIBRARY_DEBUG )
+          else()
+#             message( STATUS "\"${LIB}\" is not found." )
+            list( FIND NETCDF_REQUIRED ${LIB} location )
+            if( ${location} EQUAL -1 )
+            else()
+              if(NETCDF_FIND_REQUIRED)
+                message( SEND_ERROR "\"${LIB}\" is not found." )
+              endif()
+           endif()
+          endif()
+        endforeach()
+        list( APPEND NETCDF_LIBRARY_DIRS ${NETCDF_${LANGUAGE}_LIBRARY_DIRS} )
+
+        # Append the libraries for this language binding to the list of all
+        # required libraries.
+        list( APPEND NETCDF_LIBRARIES_DEBUG
+            ${NETCDF_${LANGUAGE}_LIBRARIES_DEBUG} )
+        list( APPEND NETCDF_LIBRARIES_RELEASE
+            ${NETCDF_${LANGUAGE}_LIBRARIES_RELEASE} )
+    endforeach()
+
+    # We may have picked up some duplicates in various lists during the above
+    # process for the language bindings (both the C and C++ bindings depend on
+    # libz for example).  Remove the duplicates.
+    if( NETCDF_INCLUDE_DIRS )
+        list( REMOVE_DUPLICATES NETCDF_INCLUDE_DIRS )
+    endif()
+    if( NETCDF_LIBRARIES_DEBUG )
+        list( REMOVE_DUPLICATES NETCDF_LIBRARIES_DEBUG )
+    endif()
+    if( NETCDF_LIBRARIES_RELEASE )
+        list( REMOVE_DUPLICATES NETCDF_LIBRARIES_RELEASE )
+    endif()
+    if( NETCDF_LIBRARY_DIRS )
+        list( REMOVE_DUPLICATES NETCDF_LIBRARY_DIRS )
+    endif()
+
+    # Construct the complete list of NETCDF libraries with debug and optimized
+    # variants when the generator supports them.
+    if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
+        set( NETCDF_LIBRARIES
+            debug ${NETCDF_LIBRARIES_DEBUG}
+            optimized ${NETCDF_LIBRARIES_RELEASE} )
+    else()
+        set( NETCDF_LIBRARIES ${NETCDF_LIBRARIES_RELEASE} )
+    endif()
+endif()
+
+find_package_handle_standard_args( NETCDF4 DEFAULT_MSG
+    NETCDF_LIBRARIES
+    NETCDF_INCLUDE_DIRS
+)
+
+mark_as_advanced(
+    NETCDF_INCLUDE_DIRS
+    NETCDF_LIBRARIES
+    NETCDF_LIBRARY_DIRS
+)
+
+set( NETCDF_FOUND ${NETCDF4_FOUND} )
+
+# For backwards compatibility we set NETCDF_INCLUDE_DIR to the value of
+# NETCDF_INCLUDE_DIRS
+set( NETCDF_INCLUDE_DIR "${NETCDF_INCLUDE_DIRS}" )
+
diff --git a/cmake/contrib/FindNumPy.cmake b/cmake/contrib/FindNumPy.cmake
new file mode 100644
index 0000000..ba02cec
--- /dev/null
+++ b/cmake/contrib/FindNumPy.cmake
@@ -0,0 +1,101 @@
+# - Find the NumPy libraries
+# This module finds if NumPy is installed, and sets the following variables
+# indicating where it is.
+#
+# TODO: Update to provide the libraries and paths for linking npymath lib.
+#
+#  NUMPY_FOUND               - was NumPy found
+#  NUMPY_VERSION             - the version of NumPy found as a string
+#  NUMPY_VERSION_MAJOR       - the major version number of NumPy
+#  NUMPY_VERSION_MINOR       - the minor version number of NumPy
+#  NUMPY_VERSION_PATCH       - the patch version number of NumPy
+#  NUMPY_VERSION_DECIMAL     - e.g. version 1.6.1 is 10601
+#  NUMPY_INCLUDE_DIRS        - path to the NumPy include files
+
+#============================================================================
+# Copyright 2012 Continuum Analytics, Inc.
+#
+# MIT License
+#
+# 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 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+#============================================================================
+
+# Finding NumPy involves calling the Python interpreter
+if(NumPy_FIND_REQUIRED)
+    find_package(PythonInterp REQUIRED)
+else()
+    find_package(PythonInterp)
+endif()
+
+if(NOT PYTHONINTERP_FOUND)
+    set(NUMPY_FOUND FALSE)
+    return()
+endif()
+
+execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c"
+    "import numpy as n; print(n.__version__); print(n.get_include());"
+    RESULT_VARIABLE _NUMPY_SEARCH_SUCCESS
+    OUTPUT_VARIABLE _NUMPY_VALUES_OUTPUT
+    ERROR_VARIABLE _NUMPY_ERROR_VALUE
+    OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+if(NOT _NUMPY_SEARCH_SUCCESS MATCHES 0)
+    if(NumPy_FIND_REQUIRED)
+        message(FATAL_ERROR
+            "NumPy import failure:\n${_NUMPY_ERROR_VALUE}")
+    endif()
+    set(NUMPY_FOUND FALSE)
+    return()
+endif()
+
+# Convert the process output into a list
+string(REGEX REPLACE ";" "\\\\;" _NUMPY_VALUES ${_NUMPY_VALUES_OUTPUT})
+string(REGEX REPLACE "\n" ";" _NUMPY_VALUES ${_NUMPY_VALUES})
+# Just in case there is unexpected output from the Python command.
+list(GET _NUMPY_VALUES -2 NUMPY_VERSION)
+list(GET _NUMPY_VALUES -1 NUMPY_INCLUDE_DIRS)
+
+string(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+" _VER_CHECK "${NUMPY_VERSION}")
+if("${_VER_CHECK}" STREQUAL "")
+    # The output from Python was unexpected. Raise an error always
+    # here, because we found NumPy, but it appears to be corrupted somehow.
+    message(FATAL_ERROR
+        "Requested version and include path from NumPy, got instead:\n${_NUMPY_VALUES_OUTPUT}\n")
+    return()
+endif()
+
+# Make sure all directory separators are '/'
+string(REGEX REPLACE "\\\\" "/" NUMPY_INCLUDE_DIRS ${NUMPY_INCLUDE_DIRS})
+
+# Get the major and minor version numbers
+string(REGEX REPLACE "\\." ";" _NUMPY_VERSION_LIST ${NUMPY_VERSION})
+list(GET _NUMPY_VERSION_LIST 0 NUMPY_VERSION_MAJOR)
+list(GET _NUMPY_VERSION_LIST 1 NUMPY_VERSION_MINOR)
+list(GET _NUMPY_VERSION_LIST 2 NUMPY_VERSION_PATCH)
+string(REGEX MATCH "[0-9]*" NUMPY_VERSION_PATCH ${NUMPY_VERSION_PATCH})
+math(EXPR NUMPY_VERSION_DECIMAL
+    "(${NUMPY_VERSION_MAJOR} * 10000) + (${NUMPY_VERSION_MINOR} * 100) + ${NUMPY_VERSION_PATCH}")
+
+find_package_message(NUMPY
+    "Found NumPy: version \"${NUMPY_VERSION}\" ${NUMPY_INCLUDE_DIRS}"
+    "${NUMPY_INCLUDE_DIRS}${NUMPY_VERSION}")
+
+set(NUMPY_FOUND TRUE)
\ No newline at end of file
diff --git a/cmake/contrib/GetGitRevisionDescription.cmake b/cmake/contrib/GetGitRevisionDescription.cmake
new file mode 100644
index 0000000..ea1da07
--- /dev/null
+++ b/cmake/contrib/GetGitRevisionDescription.cmake
@@ -0,0 +1,123 @@
+# - Returns a version string from Git
+#
+# These functions force a re-configure on each git commit so that you can
+# trust the values of the variables in your build system.
+#
+#  get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
+#
+# Returns the refspec and sha hash of the current head revision
+#
+#  git_describe(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe on the source tree, and adjusting
+# the output so that it tests false if an error occurs.
+#
+#  git_get_exact_tag(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe --exact-match on the source tree,
+# and adjusting the output so that it tests false if there was no exact
+# matching tag.
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik at iastate.edu> <abiryan at ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+if(__get_git_revision_description)
+    return()
+endif()
+set(__get_git_revision_description YES)
+
+# We must run the following at "include" time, not at function call time,
+# to find the path to this module rather than the path to a calling list file
+get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
+
+function(get_git_head_revision _refspecvar _hashvar)
+    set(GIT_PARENT_DIR "${PROJECT_SOURCE_DIR}")
+    set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+    while(NOT EXISTS "${GIT_DIR}")  # .git dir not found, search parent directories
+        set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
+        get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
+        if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
+            # We have reached the root directory, we are not in git
+            set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+            set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+            return()
+        endif()
+        set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+    endwhile()
+    set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
+    if(NOT EXISTS "${GIT_DATA}")
+        file(MAKE_DIRECTORY "${GIT_DATA}")
+    endif()
+
+    if(NOT EXISTS "${GIT_DIR}/HEAD")
+        return()
+    endif()
+    set(HEAD_FILE "${GIT_DATA}/HEAD")
+    configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
+
+    configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
+        "${GIT_DATA}/grabRef.cmake"
+        @ONLY)
+    include("${GIT_DATA}/grabRef.cmake")
+
+    set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
+    set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
+endfunction()
+
+function(git_describe _var)
+    if(NOT GIT_FOUND)
+        find_package(Git QUIET)
+    endif()
+    get_git_head_revision(refspec hash)
+    if(NOT GIT_FOUND)
+        set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
+        return()
+    endif()
+    if(NOT hash)
+        set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
+        return()
+    endif()
+
+    # TODO sanitize
+    #if((${ARGN}" MATCHES "&&") OR
+    #   (ARGN MATCHES "||") OR
+    #   (ARGN MATCHES "\\;"))
+    #   message("Please report the following error to the project!")
+    #   message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
+    #endif()
+
+    #message(STATUS "Arguments to execute_process: ${ARGN}")
+
+    execute_process(COMMAND
+        "${GIT_EXECUTABLE}"
+        describe
+        ${hash}
+        ${ARGN}
+        WORKING_DIRECTORY
+        "${CMAKE_SOURCE_DIR}"
+        RESULT_VARIABLE
+        res
+        OUTPUT_VARIABLE
+        out
+        ERROR_QUIET
+        OUTPUT_STRIP_TRAILING_WHITESPACE)
+    if(NOT res EQUAL 0)
+        set(out "${out}-${res}-NOTFOUND")
+    endif()
+
+    set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
+
+function(git_get_exact_tag _var)
+    git_describe(out --exact-match ${ARGN})
+    set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
diff --git a/cmake/contrib/GetGitRevisionDescription.cmake.in b/cmake/contrib/GetGitRevisionDescription.cmake.in
new file mode 100644
index 0000000..7a3e42f
--- /dev/null
+++ b/cmake/contrib/GetGitRevisionDescription.cmake.in
@@ -0,0 +1,38 @@
+#
+# Internal file for GetGitRevisionDescription.cmake
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik at iastate.edu> <abiryan at ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+set(HEAD_HASH)
+
+file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
+
+string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
+if(HEAD_CONTENTS MATCHES "ref")
+    # named branch
+    string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
+    if(EXISTS "@GIT_DIR@/${HEAD_REF}")
+        configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+    elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
+        configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+        set(HEAD_HASH "${HEAD_REF}")
+    endif()
+else()
+    # detached HEAD
+    configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
+endif()
+
+if(NOT HEAD_HASH)
+    file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
+    string(STRIP "${HEAD_HASH}" HEAD_HASH)
+endif()
\ No newline at end of file
diff --git a/cmake/contrib/GreatCMakeCookOff/.gitattributes b/cmake/contrib/GreatCMakeCookOff/.gitattributes
new file mode 100644
index 0000000..0b6acf1
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/.gitattributes
@@ -0,0 +1,22 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs     diff=csharp
+*.sln    merge=union
+*.csproj merge=union
+*.vbproj merge=union
+*.fsproj merge=union
+*.dbproj merge=union
+
+# Standard to msysgit
+*.doc  diff=astextplain
+*.DOC  diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot  diff=astextplain
+*.DOT  diff=astextplain
+*.pdf  diff=astextplain
+*.PDF  diff=astextplain
+*.rtf  diff=astextplain
+*.RTF  diff=astextplain
diff --git a/cmake/contrib/GreatCMakeCookOff/.gitignore b/cmake/contrib/GreatCMakeCookOff/.gitignore
new file mode 100644
index 0000000..8a94597
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/.gitignore
@@ -0,0 +1,6 @@
+build/
+.*.swp
+.*.swo
+*.pyc
+wiki
+*.*~
diff --git a/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake b/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
new file mode 100644
index 0000000..172e7b6
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
@@ -0,0 +1,61 @@
+include(CheckCXXCompilerFlag)
+
+#�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)
+     set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+     set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+     CHECK_CXX_SOURCE_COMPILES("int main() { return 0;}" ${_RESULT}
+       # Some compilers do not fail with a bad flag
+       FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
+       FAIL_REGEX "unrecognized .*option"                     # GNU
+       FAIL_REGEX "unknown .*option"                          # Clang
+       FAIL_REGEX "ignoring unknown option"                   # MSVC
+       FAIL_REGEX "warning D9002"                             # MSVC, any lang
+       FAIL_REGEX "option.*not supported"                     # Intel
+       FAIL_REGEX "invalid argument .*option"                 # Intel
+       FAIL_REGEX "ignoring option .*argument required"       # Intel
+       FAIL_REGEX "[Uu]nknown option"                         # HP
+       FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
+       FAIL_REGEX "command option .* is not recognized"       # XL
+       FAIL_REGEX "not supported in this configuration; ignored"       # AIX
+       FAIL_REGEX "File with unknown suffix passed to linker" # PGI
+       FAIL_REGEX "WARNING: unknown flag:"                    # Open64
+       )
+     set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+  endmacro ()
+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)
+if(MINGW) 
+  check_cxx_compiler_flag(-std=gnu++11 has_std_gnupp11)
+  check_cxx_compiler_flag(-std=gnu++0x has_std_gnupp0x)
+endif(MINGW)
+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) 
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif(has_std_cpp0x)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+endif(has_std_gnupp11)
+
+check_cxx_compiler_flag(-stdlib=libc++ has_stdlib_libcpp)
+if(has_stdlib_libcpp)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+endif(has_stdlib_libcpp)
+
+if(MSVC) 
+  set(MSWINDOBE TRUE)
+  add_definitions(/EHsc)
+  # Wd4251 stops MSCrapWare from issuing meaningless warnings. Seems Microsoft engineers don't grok
+  # dynamic libraries yet. Or templates. Or both acting alone or together. In any case, issuing
+  # warning sure is easier on them than fixing  their OS.
+  # Unfortunately, it does disable warnings that may be of interest. Possibly. 
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_VARIADIC_MAX=10 /wd4251")
+endif(MSVC)
+
+set(PROJECT_USES_CPP11 True CACHE INTERNAL "Uses c++11.")
diff --git a/cmake/contrib/GreatCMakeCookOff/AddGTest.cmake b/cmake/contrib/GreatCMakeCookOff/AddGTest.cmake
new file mode 100644
index 0000000..7db9357
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/AddGTest.cmake
@@ -0,0 +1,72 @@
+# CMake arguments for gtest.
+set(GTEST_CMAKE_ARGS 
+      -DBUILD_SHARED_LIBS=OFF
+      -Dgtest_force_shared_crt=ON
+      -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+      -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
+      -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+      -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
+      -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
+      -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWIDTHDEBINFO}
+      -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
+      -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL})
+if(MINGW)
+  list(APPEND GTEST_CMAKE_ARGS -Dgtest_disable_pthreads=ON)
+else(MINGW)
+  find_package(Threads)
+endif(MINGW)
+
+
+# Add gtest
+if(NOT EXTERNAL_ROOT)
+  set(EXTERNAL_ROOT ${PROJECT_BINARY_DIR}/external)
+endif(NOT EXTERNAL_ROOT)
+include(ExternalProject)
+ExternalProject_Add(
+    googletest
+    PREFIX ${EXTERNAL_ROOT}
+    SVN_REPOSITORY http://googletest.googlecode.com/svn/trunk/
+    TIMEOUT 10
+    # Force separate output paths for debug and release builds to allow easy
+    # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
+    CMAKE_ARGS ${GTEST_CMAKE_ARGS}
+    # Disable install step
+    INSTALL_COMMAND ""
+    # Wrap download, configure and build steps in a script to log output
+    LOG_DOWNLOAD ON
+    LOG_CONFIGURE ON
+    LOG_BUILD ON)
+
+if(PROJECT_USES_CPP11)
+  add_definitions(-DGTEST_LANG_CXX11)
+endif(PROJECT_USES_CPP11)
+
+macro(add_gtest name source)
+
+  ExternalProject_Get_Property(googletest source_dir)
+  include_directories(${source_dir}/include)
+  # Better, but only works on CMake 2.8.6?
+  # get_target_property(THISTEST_INCLUDE test_${name} INCLUDE_DIRECTORIES)
+  # set_target_properties(test_${name} PROPERTIES INCLUDE_DIRECTORIES
+  #                       "${source_dir}/include;${THISTEST_INCLUDE}") 
+
+  add_executable(test_${name} ${source})
+  ExternalProject_Get_Property(googletest binary_dir)
+  if(MSVC)
+    target_link_libraries(test_${name} ${binary_dir}/${CMAKE_CFG_INTDIR}/gtest.lib)
+  else(MSVC)
+    target_link_libraries(test_${name} ${binary_dir}/libgtest.a)
+  endif(MSVC)
+  if(CMAKE_THREAD_LIBS_INIT)
+    target_link_libraries(test_${name} ${CMAKE_THREAD_LIBS_INIT})
+  endif(CMAKE_THREAD_LIBS_INIT)
+
+  add_dependencies(test_${name} googletest)
+  if(NOT "${ARGN}" STREQUAL "")
+    target_link_libraries(test_${name} ${ARGN})
+  endif(NOT "${ARGN}" STREQUAL "")
+
+  add_test(cxx_${name} ${EXECUTABLE_OUTPUT_PATH}/test_${name}
+              --gtest_output=xml:${CMAKE_BINARY_DIR}/test-results/test_${name}.xml)
+  set_tests_properties(cxx_${name} PROPERTIES LABELS "gtest")
+endmacro()
diff --git a/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake b/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
new file mode 100644
index 0000000..b4f26d8
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
@@ -0,0 +1,199 @@
+# Checks for C++11 features
+# 
+# USAGE: There are two functions
+#
+# 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 
+# the variable HAS_CXX11_FEATURENAME, where FEATURENAME is the input in capital letters.
+# Fails if required feature are not available
+#
+# For possible features, please print out the result from the first function.
+#
+# Original script by Rolf Eike Beer
+# Modifications by Andreas Weis
+# Further Modifications by RSDT at UCL
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
+
+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})
+    SET(_bindir "${CMAKE_BINARY_DIR}/cxx11_feature_tests/cxx11_${FEATURE_NAME}")
+
+		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(_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})
+ENDMACRO(cxx11_check_single_feature)
+
+# Find list of all features
+function(cxx11_find_all_features outvar)
+  FILE(GLOB ALL_CPP11_FEATURE_FILES "${CPP11_FEATURE_CHECK_DIR}/*.cpp")
+  set(OUTPUT_VARIABLES)
+  foreach(filename ${ALL_CPP11_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_cxx11_feature current_feature)
+  # Find set of files that match current_feature, excepting _fail and _fail_compile.
+  file(GLOB ALL_FEATURE_FILES "${CPP11_FEATURE_CHECK_DIR}/${current_feature}*.cpp")
+  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)
+    message(FATAL_ERROR "[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
+  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_CXX11_${UPPER_OPTIONAL})
+  cxx11_check_single_feature(${current_feature} "${number}" ${VARNAME})
+endmacro(_figure_out_cxx11_feature)
+
+function(cxx11_feature_check)
+
+  # find all features
+  cxx11_find_all_features(ALL_CPP11_FEATURES)
+
+  # 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}.")
+  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. 
+  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.")
+    endif()
+  endif()
+
+  # Check optional features
+  foreach(current_feature ${OPTIONALS})
+    _figure_out_cxx11_feature(${current_feature})
+  endforeach(current_feature ${ARGN})
+
+  # Check required features
+  foreach(current_feature ${REQUIRED})
+    _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.")
+    endif(NOT ${VARNAME})
+  endforeach(current_feature ${REQUIRED})
+
+endfunction(cxx11_feature_check)
diff --git a/cmake/contrib/GreatCMakeCookOff/CheckIsNaN.cmake b/cmake/contrib/GreatCMakeCookOff/CheckIsNaN.cmake
new file mode 100644
index 0000000..bc74e08
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/CheckIsNaN.cmake
@@ -0,0 +1,53 @@
+# Tries and find which isnan to use
+# defines ISNAN_VARIATION, which should be included in a configuration files somewher as
+#   @ISNAN_VARIATION@
+if(ISNAN_VARIATION)
+  return()
+endif(ISNAN_VARIATION)
+
+include(CheckCXXSourceCompiles)
+CHECK_CXX_SOURCE_COMPILES(
+  "#include <cmath>\nint main() { bool a = std::isnan(0e0); return 0; }\n" 
+  CXX_HAS_STD_ISNAN)
+
+if(NOT CXX_HAS_STD_ISNAN)
+  CHECK_CXX_SOURCE_COMPILES(
+    "#include <math.h>\nint main() { bool a = isnan(0e0); return 0; }\n" 
+    CXX_HAS_ISNAN)
+endif(NOT CXX_HAS_STD_ISNAN)
+
+if(NOT CXX_HAS_STD_ISNAN AND NOT CXX_HAS_ISNAN)
+  CHECK_CXX_SOURCE_COMPILES(
+    "#include <math.h>\nint main() { bool a = _isnan(0e0); return 0; }\n" 
+    CXX_HAS___ISNAN)
+endif(NOT CXX_HAS_STD_ISNAN AND NOT CXX_HAS_ISNAN)
+
+if(NOT CXX_HAS_STD_ISNAN AND NOT CXX_HAS_ISNAN)
+  CHECK_CXX_SOURCE_COMPILES(
+    "# include <float.h>\nint main() { bool a = _isnan(0e0); return 0; }\n" 
+    CXX_HAS_FLOAT_H_ISNAN)
+endif(NOT CXX_HAS_STD_ISNAN AND NOT CXX_HAS_ISNAN)
+
+if(NOT CXX_HAS_STD_ISNAN AND NOT CXX_HAS_ISNAN AND NOT CXX_HAS___ISNAN AND NOT CXX_HAS_FLOAT_H_ISNAN)
+  message(FATAL_ERROR "[isnan] could not find standard function on this OS.")
+endif(NOT CXX_HAS_STD_ISNAN AND NOT CXX_HAS_ISNAN AND NOT CXX_HAS___ISNAN AND NOT CXX_HAS_FLOAT_H_ISNAN)
+
+if(CXX_HAS_STD_ISNAN)
+  set(ISNAN_HEADERS "#include <cmath>")
+  set(ISNAN_VARIATION "std::isnan")
+elseif(CXX_HAS_ISNAN)
+  set(ISNAN_HEADERS "#include <math.h>")
+  set(ISNAN_VARIATION "::isnan")
+elseif(CXX_HAS___ISNAN)
+  set(ISNAN_HEADERS "#include <math.h>")
+  set(ISNAN_VARIATION "__isnan")
+elseif(CXX_HAS_FLOAT_H_ISNAN)
+  set(ISNAN_HEADERS "#include <float.h>")
+  set(ISNAN_VARIATION "_isnan")
+else()
+  message(FATAL_ERROR "AM HERE")
+endif()
+if(ISNAN_VARIATION)
+  set(ISNAN_VARIATION ${ISNAN_VARIATION} CACHE INTERNAL "Definition for isnan\n")
+  set(ISNAN_HEADERS ${ISNAN_HEADERS} CACHE INTERNAL "Headers containing isnan definition\n")
+endif(ISNAN_VARIATION)
diff --git a/cmake/contrib/GreatCMakeCookOff/FindEigen.cmake b/cmake/contrib/GreatCMakeCookOff/FindEigen.cmake
new file mode 100644
index 0000000..646d5dd
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/FindEigen.cmake
@@ -0,0 +1,131 @@
+# - Try to find Eigen3 lib
+#
+# This module supports requiring a minimum version, e.g. you can do
+#   find_package(Eigen3 3.1.2)
+# to require version 3.1.2 or newer of Eigen3.
+#
+# Once done this will define
+#
+#  EIGEN3_FOUND - system has eigen lib with correct version
+#  EIGEN3_INCLUDE_DIR - the eigen include directory
+#  EIGEN3_VERSION - eigen version
+
+# Copyright (c) 2006, 2007 Montel Laurent, <montel at kde.org>
+# Copyright (c) 2008, 2009 Gael Guennebaud, <g.gael at free.fr>
+# Copyright (c) 2009 Benoit Jacob <jacob.benoit.1 at gmail.com>
+# Redistribution and use is allowed according to the terms of the 2-clause BSD license.
+# Modified by RSDT at UCL 
+
+if(NOT Eigen3_FIND_VERSION)
+  if(NOT Eigen3_FIND_VERSION_MAJOR)
+    set(Eigen3_FIND_VERSION_MAJOR 2)
+  endif(NOT Eigen3_FIND_VERSION_MAJOR)
+  if(NOT Eigen3_FIND_VERSION_MINOR)
+    set(Eigen3_FIND_VERSION_MINOR 91)
+  endif(NOT Eigen3_FIND_VERSION_MINOR)
+  if(NOT Eigen3_FIND_VERSION_PATCH)
+    set(Eigen3_FIND_VERSION_PATCH 0)
+  endif(NOT Eigen3_FIND_VERSION_PATCH)
+
+  set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}")
+endif(NOT Eigen3_FIND_VERSION)
+
+macro(_eigen3_check_version)
+  file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
+
+  string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}")
+  set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}")
+  string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}")
+  set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}")
+  string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}")
+  set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}")
+
+  set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION})
+  if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+    set(EIGEN3_VERSION_OK FALSE)
+  else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+    set(EIGEN3_VERSION_OK TRUE)
+  endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION})
+
+  if(NOT EIGEN3_VERSION_OK)
+
+    message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, "
+                   "but at least version ${Eigen3_FIND_VERSION} is required")
+  endif(NOT EIGEN3_VERSION_OK)
+endmacro(_eigen3_check_version)
+
+if(NOT EIGEN3_INCLUDE_DIR)
+  if(NOT "$ENV{EIGEN3_INCLUDE_DIR}" STREQUAL "")
+    set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_INCLUDE_DIR})
+  endif(NOT "$ENV{EIGEN3_INCLUDE_DIR}" STREQUAL "")
+endif(NOT EIGEN3_INCLUDE_DIR)
+if (EIGEN3_INCLUDE_DIR)
+
+  # in cache already
+  _eigen3_check_version()
+  set(EIGEN3_FOUND ${EIGEN3_VERSION_OK})
+
+else (EIGEN3_INCLUDE_DIR)
+
+  find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
+      PATHS
+      $ENV{HOME}/usr/include
+      ${CMAKE_INSTALL_PREFIX}/include
+      ${KDE4_INCLUDE_DIR}
+      /usr/include
+      /usr/local/include
+      ${EXTERNAL_ROOT}/include
+      PATH_SUFFIXES eigen3 eigen
+    )
+
+  if(EIGEN3_INCLUDE_DIR)
+    _eigen3_check_version()
+  endif(EIGEN3_INCLUDE_DIR)
+
+  include(FindPackageHandleStandardArgs)
+  find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK)
+
+  mark_as_advanced(EIGEN3_INCLUDE_DIR)
+
+endif(EIGEN3_INCLUDE_DIR)
+
+if(NOT EIGEN3_FOUND)
+  if(CMAKE_VERSION VERSION_LESS 2.8.10)
+    # Doesn't have Hg download prior to 2.8.10
+    message(FATAL_ERROR "Please install eigen.")
+  else(CMAKE_VERSION VERSION_LESS 2.8.10)
+    if(NOT EXTERNAL_ROOT)
+      set(EXTERNAL_ROOT ${CMAKE_BINARY_DIR}/external)
+    endif(NOT EXTERNAL_ROOT)
+    find_package(Hg)
+    if(HG_FOUND)
+    
+      message(STATUS "Eigen3 not found. Will attempt to download it.")
+      include(ExternalProject)
+      ExternalProject_Add(
+          eigen
+          PREFIX ${EXTERNAL_ROOT}
+          HG_REPOSITORY https://bitbucket.org/eigen/eigen/
+          HG_TAG 3.2.0
+          TIMEOUT 10
+          CMAKE_ARGS 
+            -DCMAKE_INSTALL_PREFIX=${EXTERNAL_ROOT}
+            -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+            -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
+            -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
+            -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWIDTHDEBINFO}
+            -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
+            -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL}
+          # Wrap download, configure and build steps in a script to log output
+          LOG_DOWNLOAD ON
+          LOG_CONFIGURE ON
+          LOG_BUILD ON)
+      set(EIGEN3_INCLUDE_DIR ${EXTERNAL_ROOT}/include/eigen3)
+  
+    else(HG_FOUND)
+   
+      message(FATAL_ERROR "Hg not found, and eigen not found.\nNeed one or the other.")
+   
+    endif(HG_FOUND)
+  endif(CMAKE_VERSION VERSION_LESS 2.8.10)
+endif(NOT EIGEN3_FOUND)
diff --git a/cmake/contrib/GreatCMakeCookOff/LICENSE b/cmake/contrib/GreatCMakeCookOff/LICENSE
new file mode 100644
index 0000000..8dbb759
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 University College London
+
+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 AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/cmake/contrib/GreatCMakeCookOff/README.md b/cmake/contrib/GreatCMakeCookOff/README.md
new file mode 100644
index 0000000..a0a6947
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/README.md
@@ -0,0 +1,176 @@
+The Great CMake CookOff
+=======================
+
+
+This is a repository of usefull and less than usefull cmake recipes.  It is distributed under the
+[MIT License](http://opensource.org/licenses/MIT)
+
+
+Adding [Eigen](http://eigen.tuxfamily.org/) to a project
+========================================================
+
+Looks for the Eigen installed on system. If not found, then uses external project to download it.
+Usage is as follows:
+
+```cmake
+# Tell cmake to look into GreatCMakeCookOff for recipes
+set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/GreatCMakeCookOff) 
+
+# Optionally, tell cmake where to download eigen, if needed.
+# Defaults to value below.
+set(EXTERNAL_ROOT ${PROJECT_BINARY_DIR}/external)
+
+# Now look for cmake.
+find_package(Eigen)
+```
+
+**NOTE:** After building the first time, run cmake again. It will find the eigen it downloaded
+previously, and it will stop checking for updates. 
+
+Adding [GTest](https://code.google.com/p/googletest/) to a project
+==================================================================
+
+For googly reasons, whether valid or 404, GTest prefers to be compiled for each an every project. 
+This script does two things:
+
+- it adds GTest as an external project
+- it provides a function to add gtests to ctest
+
+This implies that GTest is downloaded the first time that make runs. Furthermore, it will be
+checked each and every time that makes runs. So, make now requires a working internet connection.
+Unlike Eigen above, there is currently no option avoid checking for updates.
+
+The CMakeLists.txt file could look like this:
+
+```cmake
+option(tests          "Enable testing."                         on)
+
+if(tests) 
+  find_package(GTest)
+  enable_testing()
+endif(tests)
+```
+
+And adding a test comes down to
+
+```cmake
+if(tests)
+
+  add_gtest(testme testme.cc mylib)
+
+endif(tests)
+```
+
+- first argument: name of the test
+- second argument: list of source files
+- other arguments: additional libraries to add during linking
+
+The test do expect an explicit main function. See the test generated in ``tests/addgtest.cmake``.
+
+**NOTE:** When using c++11, it is recommended to first include the c++11 flag script
+``AddCPP11Flags.cmake`` (see below) so that the gtest can be compiled with ``GTEST_LANG_CXX11``. 
+
+C++11
+=====
+
+Checking for specific features
+------------------------------
+
+Look for some c++11 features. Uses a script modified from [here](http://pageant.ghulbus.eu/?p=664).
+Usage is given below.
+
+```cmake
+# First need to enable c++
+enable_language(CXX)
+
+# The following will print out all available features.
+cxx11_find_all_features(ALL_FEATURES)
+message(STATUS "[c++11] features we can check for: ${ALL_FEATURES}")
+
+# The following checks for all features
+cxx11_feature_check()
+
+# An internal value is set if a particular feature exists.
+if(HAS_CXX11_AUTO)
+  message(STATUS "[c++11] has auto.")
+endif()
+if(HAS_CXX11_LAMBDA)
+  message(STATUS "[c++11] has lambda.")
+endif()
+```
+
+Alternatively, only a subset of features can be checked for, and some can be required:
+```cmake
+cxx11_feature_check(auto lambda REQUIRED long_long share_ptr variadic_templates)
+```
+The previous statement will fail if ``long long``, ``std::shared_ptr<...>``, and variadic templates
+are not available. It will also check for the availability of ``auto`` and ``lambda``, but without
+failing.
+
+Figuring out flags for some compilers
+-------------------------------------
+
+The script checks the existence of a few flags to enable c++11 features on different compilers.
+The output is somewhat verbose, but it seems to do the job for gcc, darwin-gcc, and microsoft visual
+studio. In addition, the intel compilers have to be told to use an external c++11 standard library.
+This script cannot figure where this library would be (hint: g++ provides it), so that is left up to
+the user. The script can be activated with a one liner.
+
+```cmake
+include("path/to/cookoff/AddCPP11Flags.cmake")
+```
+
+**NOTE:** On windows + visual studio, disables warnings 4251 and ups fake variadic templates to 10.
+
+
+Figure out ``isnan``
+====================
+
+Each and every vendor provides a different ``isnan``. There is a script to help define a portable
+c++ macro. It is meant to be used within a configuration file as follows:
+
+```cmake
+include("path/to/cookoff/CheckIsNaN.cmake")
+if(NOT ISNAN_VARIATION)
+  message(STATUS "Could not find working isnan.")
+endif(NOT ISNAN_VARIATION)
+
+configure_file(/path/to/config.h.in /path/to/config.h)
+```
+
+Two cmake variables are defined:
+
+- ISNAN_HEADERS will the header(s) relevant to the local ``isnan`` definition
+- ISNAN_VARIATIOPN is the fully qualified name to the local ``isnan`` definition
+
+They can be used as follows in a the configuration file ``config.h.in``:
+
+``cpp
+ at ISNAN_HEADERS@
+
+#define not_a_number(X) @ISNAN_VARIATION@
+``
+
+One should then use the macro ``not_a_number`` in-place of any ``isnan`` flavour.
+
+In c++11, it is also possible to define a function that takes only arithmetic type, thus obviating
+the need for a macro:
+
+```cpp
+ at ISNAN_HEADERS@
+#include <type_traits>
+
+template<class T>
+  typename std::enable_if<std::is_arithmetic<T>::value, bool> :: type 
+    not_a_number(T const &_in) { return @ISNAN_VARIATION@(_in); }
+```
+
+Testing CMake scripts
+=====================
+
+The file ``TestCMake.cmake`` contains a function to test cmake scripts. It converts an input cmake
+file into a project which is then configured, built, and run using ``ctest``. Unless an optional
+"SOURCE" is provided as argument, the test program is an empty ``main`` function returning 0. If the
+keyword is provided, then a ``main.cc`` or ``main.c`` file should provided the cmake script.
+
+For examples, look at the tests in this package.
diff --git a/cmake/contrib/GreatCMakeCookOff/TestCMake.cmake b/cmake/contrib/GreatCMakeCookOff/TestCMake.cmake
new file mode 100644
index 0000000..4fc877a
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/TestCMake.cmake
@@ -0,0 +1,58 @@
+function(_args_have_option outvar optionname arglist)
+  list(FIND ${arglist} "${optionname}" HASOPTION)
+  if(HASOPTION EQUAL -1)
+    set(${outvar} False PARENT_SCOPE)
+  else()
+    set(${outvar} True PARENT_SCOPE)
+    list(REMOVE_ITEM ${arglist} ${optionname})
+    set(${arglist} ${${arglist}} PARENT_SCOPE)
+  endif()
+endfunction(_args_have_option)
+
+function(cmake_test testname)
+
+  # Parse further arguments
+  # Let caller create a source file
+  set(ALL_OPTIONS ${ARGN})
+  _args_have_option(SOURCE "SOURCE" ALL_OPTIONS)
+  # Let caller create executable to run
+  # Should be used with test-command
+  _args_have_option(NOEXEC "NOEXEC" ALL_OPTIONS)
+
+  # set source and build dir.
+  set(FAKE_PROJECT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${testname})
+  set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/fake_project_builds/${testname})
+
+  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${testname}.cmake 
+                 ${FAKE_PROJECT_DIR}/CMakeData.cmake @ONLY)
+  message(STATUS "[${testname}] project in ${FAKE_PROJECT_DIR}")
+
+  if(NOT SOURCE)
+    file(WRITE ${FAKE_PROJECT_DIR}/main.c "int main() { return 0; }" )
+  endif(NOT SOURCE)
+  file(WRITE ${FAKE_PROJECT_DIR}/CMakeLists.txt
+       "cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR)\n"
+       "project(allfeatures)\n"
+       "include(\"${FAKE_PROJECT_DIR}/CMakeData.cmake\")\n"
+       "enable_language(C)\n"
+       "if(NOT ${NOEXEC})\n"
+       "  file(GLOB ALLFILES \${PROJECT_SOURCE_DIR}/*.c \${PROJECT_SOURCE_DIR}/*.cc)\n"
+       "  add_executable(${testname} \${ALLFILES})\n"
+       "endif(NOT ${NOEXEC})\n")
+  
+  
+  if(EXISTS ${BUILD_DIR})
+    file(REMOVE_RECURSE ${BUILD_DIR})
+  endif(EXISTS ${BUILD_DIR})
+  
+  file(MAKE_DIRECTORY ${BUILD_DIR})
+  
+  add_test(cmake_test_${testname}
+             ${CMAKE_CTEST_COMMAND} --build-and-test ${FAKE_PROJECT_DIR} ${BUILD_DIR}
+                                    --build-generator ${CMAKE_GENERATOR}
+                                    --build-makeprogram ${CMAKE_MAKE_PROGRAM}
+                                    --build-project ${testname}
+                                    --build-options -Dcookoff_path=${CMAKE_SOURCE_DIR}/..
+                                    ${ALL_OPTIONS})
+
+endfunction(cmake_test)
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/__func__-N2340.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/__func__-N2340.cpp
new file mode 100644
index 0000000..d961df8
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/__func__-N2340.cpp
@@ -0,0 +1,8 @@
+#include <cstring>
+
+int main()
+{
+	if (!__func__) { return 1; }
+	if(std::strlen(__func__) <= 0) { return 1; }
+	return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/auto-N2546.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/auto-N2546.cpp
new file mode 100644
index 0000000..948648e
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/auto-N2546.cpp
@@ -0,0 +1,12 @@
+
+int main()
+{
+	auto i = 5;
+	auto f = 3.14159f;
+	auto d = 3.14159;
+	bool ret = (
+		(sizeof(f) < sizeof(d)) &&
+		(sizeof(i) == sizeof(int))
+	);
+	return ret ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/begin_function.cc b/cmake/contrib/GreatCMakeCookOff/cpp11/begin_function.cc
new file mode 100644
index 0000000..870ba92
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/begin_function.cc
@@ -0,0 +1,12 @@
+#include <iterator>
+#include <vector>
+#include <exception>
+
+int main() {
+  std::vector<int> vector(2, 1);
+  auto i_first = std::begin(vector);
+  auto i_end = std::end(vector);
+  if(i_first + 2 != i_end) return 1;
+  if(*i_first != 1) return 2;
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/constexpr-N2235.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/constexpr-N2235.cpp
new file mode 100644
index 0000000..ed62451
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/constexpr-N2235.cpp
@@ -0,0 +1,19 @@
+constexpr int square(int x)
+{
+	return x*x;
+}
+
+constexpr int the_answer()
+{
+	return 42;
+}
+
+int main()
+{
+	int test_arr[square(3)];
+	bool ret = (
+		(square(the_answer()) == 1764) &&
+		(sizeof(test_arr)/sizeof(test_arr[0]) == 9)
+	);
+	return ret ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/constructor_delegate.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/constructor_delegate.cpp
new file mode 100644
index 0000000..4934d83
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/constructor_delegate.cpp
@@ -0,0 +1,32 @@
+#include <cmath>
+#include <assert.h>
+
+class A {
+  public:
+    int a;
+    double b;
+
+    A() : A(0, 0) {}
+    explicit A(int _a) : A(_a, 0) {}
+    explicit A(double _b) : A(0, _b) {}
+    A(int _a, double _b) : a(_a), b(_b) {}
+};
+
+int main() {
+  A instance(1, 1.5e0);
+  assert(instance.a == 1);
+  assert(std::abs(instance.b - 1.5) < 1e-8);
+
+  A instance1(1);
+  assert(instance1.a == 1);
+  assert(std::abs(instance1.b) < 1e-8);
+
+  A instance2(1.5);
+  assert(instance2.a == 0);
+  assert(std::abs(instance2.b - 1.5) < 1e-8);
+
+  A instance3;
+  assert(instance3.a == 0);
+  assert(std::abs(instance3.b) < 1e-8);
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/cstdint.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/cstdint.cpp
new file mode 100644
index 0000000..be2878f
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/cstdint.cpp
@@ -0,0 +1,10 @@
+#include <cstdint>
+int main()
+{
+	bool test = 
+		(sizeof(int8_t) == 1) &&
+		(sizeof(int16_t) == 2) &&
+		(sizeof(int32_t) == 4) &&
+		(sizeof(int64_t) == 8);
+	return test ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/decltype-N2343.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/decltype-N2343.cpp
new file mode 100644
index 0000000..843f83a
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/decltype-N2343.cpp
@@ -0,0 +1,11 @@
+
+bool check_size(int i)
+{
+	return sizeof(int) == sizeof(decltype(i));
+}
+
+int main()
+{
+	bool ret = check_size(42);
+	return ret ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/deleted_constructor.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/deleted_constructor.cpp
new file mode 100644
index 0000000..565da27
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/deleted_constructor.cpp
@@ -0,0 +1,10 @@
+struct A {
+  int b;
+  A(int _b) : b(_b) {};
+  A(A const &) = delete;
+};
+
+int main() {
+  A first(1);
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/deleted_constructor_fail_compile.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/deleted_constructor_fail_compile.cpp
new file mode 100644
index 0000000..a71d565
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/deleted_constructor_fail_compile.cpp
@@ -0,0 +1,11 @@
+struct A {
+  int b;
+  A(int _b) : b(_b) {};
+  A(A const &) = delete;
+};
+
+int main() {
+  A first(1);
+  A second(first);
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/enable_if.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/enable_if.cpp
new file mode 100644
index 0000000..4eed94b
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/enable_if.cpp
@@ -0,0 +1,8 @@
+#include <type_traits>
+
+template<int N>
+  typename std::enable_if<N==2, int>::type testme() { return 0; }
+
+int main() {
+  return testme<2>();
+};
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/explicit_cast.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/explicit_cast.cpp
new file mode 100644
index 0000000..37c97f9
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/explicit_cast.cpp
@@ -0,0 +1,13 @@
+class A {
+  public:
+   A(int a = 5) : a_(a) {};
+   explicit operator bool() const { return a_ == 2; }
+  protected:
+   int a_;
+};
+
+int main () {
+  A a(6);
+  A const b(2);
+  return (static_cast<bool>(a) == false and static_cast<bool>(b) == true) ? 0: 1;  
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/initialization.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/initialization.cpp
new file mode 100644
index 0000000..462575f
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/initialization.cpp
@@ -0,0 +1,7 @@
+#include <vector>
+
+int main() {
+  std::vector<double> a{0, 1, 2, 3};
+  std::vector< std::vector<double> > b{ {5, 6, 7}, {8, 9, 10, 11} };
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/lambda-N2927.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/lambda-N2927.cpp
new file mode 100644
index 0000000..4c33ed5
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/lambda-N2927.cpp
@@ -0,0 +1,5 @@
+int main()
+{
+	int ret = 0;
+	return ([&ret]() -> int { return ret; })();
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/long_double.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/long_double.cpp
new file mode 100644
index 0000000..8f005ee
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/long_double.cpp
@@ -0,0 +1,4 @@
+int main(void)
+{
+	return sizeof(long double) > sizeof(double) ? 0: 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/long_long-N1811.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/long_long-N1811.cpp
new file mode 100644
index 0000000..0911127
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/long_long-N1811.cpp
@@ -0,0 +1,7 @@
+int main(void)
+{
+	long long l;
+	unsigned long long ul;
+
+	return ((sizeof(l) >= 8) && (sizeof(ul) >= 8)) ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/noexcept.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/noexcept.cpp
new file mode 100644
index 0000000..0ea69d4
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/noexcept.cpp
@@ -0,0 +1,9 @@
+class A {
+    public:
+    A() noexcept {};
+};
+int main()
+{
+   A a = A();
+   return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/nullptr-N2431.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/nullptr-N2431.cpp
new file mode 100644
index 0000000..c78fac4
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/nullptr-N2431.cpp
@@ -0,0 +1,5 @@
+int main()
+{
+	int* test = nullptr;
+	return test ? 1 : 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/nullptr-N2431_fail_compile.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/nullptr-N2431_fail_compile.cpp
new file mode 100644
index 0000000..7ab77a2
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/nullptr-N2431_fail_compile.cpp
@@ -0,0 +1,5 @@
+int main()
+{
+	int i = nullptr;
+	return 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/override.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/override.cpp
new file mode 100644
index 0000000..d8d4e0d
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/override.cpp
@@ -0,0 +1,22 @@
+class A {
+  public:
+    virtual void foo(int &_a) = 0;
+    virtual void bar(int &_a)  { _a += 1; }
+};
+
+class B : public A {
+  public:
+    void foo(int &_a) override { _a += 1; }
+    void bar(int &_a) override { _a += 2; }
+};
+
+int main() {
+  A * b = static_cast<A*>(new B);
+  int a = 0;
+  b->foo(a); 
+  if(a != 1) return 1;
+  b->bar(a); 
+  if(a != 3) return 1;
+  delete b;
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/override_fail_compile.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/override_fail_compile.cpp
new file mode 100644
index 0000000..19f43c9
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/override_fail_compile.cpp
@@ -0,0 +1,22 @@
+class A {
+  public:
+    virtual void foo(int &_a) = 0;
+    void bar(int &_a)  { _a += 1; }
+};
+
+class B : public A {
+  public:
+    void foo(int &_a) override { _a += 1; }
+    void bar(int &_a) override { _a += 2; }
+};
+
+int main() {
+  A * b = static_cast<A*>(new B);
+  int a = 0;
+  b->foo(a); 
+  if(a != 1) return 1;
+  b->bar(a); 
+  if(a != 3) return 1;
+  delete b;
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/random_device.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/random_device.cpp
new file mode 100644
index 0000000..a777421
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/random_device.cpp
@@ -0,0 +1,13 @@
+#include <random>
+#include <sstream>
+
+int main()
+{
+    std::random_device rd;
+    std::mt19937 gen(rd());
+    std::uniform_int_distribution<> dis(1, 6);
+    std::ostringstream sstr;
+    for(int n=0; n<10; ++n) sstr << dis(gen) << ' ';
+    return 0;
+}
+
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/rvalue_references-N2118.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/rvalue_references-N2118.cpp
new file mode 100644
index 0000000..75fb555
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/rvalue_references-N2118.cpp
@@ -0,0 +1,15 @@
+int foo(int& lvalue)
+{
+	return 123;
+}
+
+int foo(int&& rvalue)
+{
+	return 321;
+}
+
+int main()
+{
+	int i = 42;
+	return ((foo(i) == 123) && (foo(42) == 321)) ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/shared_ptr.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/shared_ptr.cpp
new file mode 100644
index 0000000..4a4ff82
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/shared_ptr.cpp
@@ -0,0 +1,6 @@
+#include<memory>
+
+int main() {
+  std::shared_ptr<int> a(new int(1));
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/sizeof_member-N2253.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/sizeof_member-N2253.cpp
new file mode 100644
index 0000000..a55fc09
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/sizeof_member-N2253.cpp
@@ -0,0 +1,14 @@
+struct foo {
+	char bar;
+	int baz;
+};
+
+int main(void)
+{
+	bool ret = (
+		(sizeof(foo::bar) == 1) &&
+		(sizeof(foo::baz) >= sizeof(foo::bar)) &&
+		(sizeof(foo) >= sizeof(foo::bar)+sizeof(foo::baz))
+	);
+	return ret ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/static_assert-N1720.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/static_assert-N1720.cpp
new file mode 100644
index 0000000..c3d74ca
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/static_assert-N1720.cpp
@@ -0,0 +1,5 @@
+int main()
+{
+	static_assert(0 < 1, "your ordering of integers is screwed");
+	return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/static_assert-N1720_fail_compile.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/static_assert-N1720_fail_compile.cpp
new file mode 100644
index 0000000..4cb1183
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/static_assert-N1720_fail_compile.cpp
@@ -0,0 +1,5 @@
+int main()
+{
+	static_assert(1 < 0, "this should fail");
+	return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/template_alias.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/template_alias.cpp
new file mode 100644
index 0000000..52881a9
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/template_alias.cpp
@@ -0,0 +1,8 @@
+template<class A, class B> struct AClass {
+  typedef A t_first;
+  typedef B t_second;
+};
+
+template<class B> using Specialized = AClass<int, B>;
+
+int main() { return 0; }
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/trivial_type_traits.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/trivial_type_traits.cpp
new file mode 100644
index 0000000..8cf8319
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/trivial_type_traits.cpp
@@ -0,0 +1,7 @@
+#include<type_traits>
+int main()
+{
+  bool const a = std::is_trivially_move_constructible<int>::value;
+  bool const b = std::is_trivially_move_assignable<int>::value;
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/type_traits.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/type_traits.cpp
new file mode 100644
index 0000000..4344f76
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/type_traits.cpp
@@ -0,0 +1,7 @@
+#include<type_traits>
+int main()
+{
+  bool const a = std::is_move_constructible<int>::value;
+  bool const b = std::is_move_assignable<int>::value;
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/unique_ptr.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/unique_ptr.cpp
new file mode 100644
index 0000000..159591d
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/unique_ptr.cpp
@@ -0,0 +1,6 @@
+#include<memory>
+
+int main() {
+  std::unique_ptr<int> a(new int(1));
+  return 0;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/cpp11/variadic_templates-N2555.cpp b/cmake/contrib/GreatCMakeCookOff/cpp11/variadic_templates-N2555.cpp
new file mode 100644
index 0000000..4518e88
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/cpp11/variadic_templates-N2555.cpp
@@ -0,0 +1,23 @@
+int Accumulate()
+{
+	return 0;
+}
+
+template<typename T, typename... Ts>
+int Accumulate(T v, Ts... vs)
+{
+	return v + Accumulate(vs...);
+}
+
+template<int... Is>
+int CountElements()
+{
+	return sizeof...(Is);
+}
+
+int main()
+{
+	int acc = Accumulate(1, 2, 3, 4, -5);
+	int count = CountElements<1,2,3,4,5>();
+	return ((acc == 5) && (count == 5)) ? 0 : 1;
+}
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/CMakeLists.txt b/cmake/contrib/GreatCMakeCookOff/tests/CMakeLists.txt
new file mode 100644
index 0000000..f2eb4d0
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR)
+project(COOKOFF_TEST)
+
+enable_testing()
+
+include(${PROJECT_SOURCE_DIR}/../TestCMake.cmake)
+
+cmake_test(checkisnan SOURCE)
+cmake_test(checkcpp11flags)
+cmake_test(addgtest NOEXEC SOURCE --test-command ${CMAKE_MAKE_PROGRAM} test)
+
+add_subdirectory(cpp11)
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/addgtest.cmake b/cmake/contrib/GreatCMakeCookOff/tests/addgtest.cmake
new file mode 100644
index 0000000..b1139d9
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/addgtest.cmake
@@ -0,0 +1,20 @@
+option(tests          "Enable testing."                         on)
+
+if(tests) 
+  include(${cookoff_path}/AddGTest.cmake)
+  enable_testing()
+endif(tests)
+
+file(WRITE ${CMAKE_SOURCE_DIR}/mytest.cc 
+     "#include <gtest/gtest.h>\n\n"
+     "class TestMe : public ::testing::Test {};\n\n"
+     "TEST_F(TestMe, TestThis) {\n"
+     "  EXPECT_TRUE(true); \n"
+     "}\n\n"
+     "int main(int argc, char **argv) {\n"
+     "  ::testing::InitGoogleTest(&argc, argv);\n"
+     "  return RUN_ALL_TESTS();\n"
+     "}\n")
+
+
+add_gtest(mytest mytest.cc)
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/checkcpp11flags.cmake b/cmake/contrib/GreatCMakeCookOff/tests/checkcpp11flags.cmake
new file mode 100644
index 0000000..1f7e8a4
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/checkcpp11flags.cmake
@@ -0,0 +1 @@
+include(${cookoff_path}/AddCPP11Flags.cmake)
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/checkisnan.cmake b/cmake/contrib/GreatCMakeCookOff/tests/checkisnan.cmake
new file mode 100644
index 0000000..e9cbdaa
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/checkisnan.cmake
@@ -0,0 +1,19 @@
+include(${cookoff_path}/CheckIsNaN.cmake)
+if(NOT ISNAN_VARIATION)
+  message(STATUS "Could not find working isnan.")
+endif(NOT ISNAN_VARIATION)
+
+enable_language(CXX)
+file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/isnan.cc.in
+     "\@ISNAN_HEADERS\@\n"
+     "#include <limits>\n"
+     "#include <exception>\n"
+     "#define not_a_number(X) \@ISNAN_VARIATION\@(X)\n"
+     "int main() {\n"
+     "  if(not_a_number(0.5e0)) throw std::exception(); \n"
+     "  if(not_a_number(2l)) throw std::exception(); \n"
+     "  if(not not_a_number(std::numeric_limits<double>::quiet_NaN())) throw std::exception(); \n"
+     "  return 0;\n"
+     "}\n")
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/isnan.cc.in ${CMAKE_CURRENT_SOURCE_DIR}/main.cc)
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/cpp11/CMakeLists.txt b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/CMakeLists.txt
new file mode 100644
index 0000000..45d20a5
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_test(allfeatures)
+cmake_test(parse_input_features)
+cmake_test(check_features)
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/cpp11/allfeatures.cmake b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/allfeatures.cmake
new file mode 100644
index 0000000..f4dec87
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/allfeatures.cmake
@@ -0,0 +1,7 @@
+enable_language(CXX)
+include(${cookoff_path}/CheckCXX11Features.cmake)
+cxx11_find_all_features(ALL_CPP11_FEATURES)
+LIST(LENGTH ALL_CPP11_FEATURES LIST_LENGTH)
+if(${LIST_LENGTH} EQUAL 0)
+  message(FATAL_ERROR "No c++11 features found")
+endif()
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/cpp11/check_features.cmake b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/check_features.cmake
new file mode 100644
index 0000000..1ea2fdb
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/check_features.cmake
@@ -0,0 +1,9 @@
+# This is a C++ feature
+enable_language(CXX)
+
+# Include check feature.
+include(${cookoff_path}/CheckCXX11Features.cmake)
+
+# Now call function to test.
+cxx11_feature_check("auto")
+cxx11_feature_check()
diff --git a/cmake/contrib/GreatCMakeCookOff/tests/cpp11/parse_input_features.cmake b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/parse_input_features.cmake
new file mode 100644
index 0000000..ca88de0
--- /dev/null
+++ b/cmake/contrib/GreatCMakeCookOff/tests/cpp11/parse_input_features.cmake
@@ -0,0 +1,68 @@
+# This is a C++ feature
+enable_language(CXX)
+
+# Include check feature.
+include(${cookoff_path}/CheckCXX11Features.cmake)
+
+# Now call function with fake input
+set(ALL_FEATURES "first;second;third")
+
+# No input OPTIONALS == ALL_FEATURES
+parse_input_features("${ALL_FEATURES}" OPTIONALS REQUIRED ERRORS "")
+if(NOT "${OPTIONALS}" STREQUAL "${ALL_FEATURES}")
+  message(FATAL_ERROR "OPTIONALS results should contain everything.") 
+endif(NOT "${OPTIONALS}" STREQUAL "${ALL_FEATURES}")
+if(NOT "${REQUIRED}" STREQUAL "")
+  message(FATAL_ERROR "REQUIRED should be empty.") 
+endif(NOT "${REQUIRED}" STREQUAL "")
+if(NOT "${ERRORS}" STREQUAL "")
+  message(FATAL_ERROR "ERRORS should be empty.") 
+endif(NOT "${ERRORS}" STREQUAL "")
+
+# Single input without REQUIRED
+parse_input_features("${ALL_FEATURES}" OPTIONALS REQUIRED ERRORS "second")
+if(NOT "${OPTIONALS}" STREQUAL "second")
+  message(FATAL_ERROR "OPTIONALS results should second.") 
+endif()
+if(NOT "${REQUIRED}" STREQUAL "")
+  message(FATAL_ERROR "REQUIRED should be empty.") 
+endif()
+if(NOT "${ERRORS}" STREQUAL "")
+  message(FATAL_ERROR "ERRORS should be empty.") 
+endif()
+
+# Single error input without REQUIRED
+parse_input_features("${ALL_FEATURES}" OPTIONALS REQUIRED ERRORS "none")
+if(NOT "${OPTIONALS}" STREQUAL "")
+  message(FATAL_ERROR "OPTIONALS results should be empty.") 
+endif()
+if(NOT "${REQUIRED}" STREQUAL "")
+  message(FATAL_ERROR "REQUIRED should be empty.") 
+endif()
+if(NOT "${ERRORS}" STREQUAL "none")
+  message(FATAL_ERROR "ERRORS should be none.") 
+endif()
+
+# Single valid input with REQUIRED
+parse_input_features("${ALL_FEATURES}" OPTIONALS REQUIRED ERRORS REQUIRED first)
+if(NOT "${OPTIONALS}" STREQUAL "")
+  message(FATAL_ERROR "OPTIONALS results should be empty.") 
+endif()
+if(NOT "${REQUIRED}" STREQUAL "first")
+  message(FATAL_ERROR "REQUIRED should be first.") 
+endif()
+if(NOT "${ERRORS}" STREQUAL "")
+  message(FATAL_ERROR "ERRORS should be empty.") 
+endif()
+
+# one of each
+parse_input_features("${ALL_FEATURES}" OPTIONALS REQUIRED ERRORS second third REQUIRED first none)
+if(NOT "${OPTIONALS}" STREQUAL "second;third")
+  message(FATAL_ERROR "OPTIONALS results should be second;optional.") 
+endif()
+if(NOT "${REQUIRED}" STREQUAL "first")
+  message(FATAL_ERROR "REQUIRED should be first.") 
+endif()
+if(NOT "${ERRORS}" STREQUAL "none")
+  message(FATAL_ERROR "ERRORS should be none.") 
+endif()
diff --git a/cmake/ecbuild_add_cxx11_flags.cmake b/cmake/ecbuild_add_cxx11_flags.cmake
new file mode 100644
index 0000000..414f39f
--- /dev/null
+++ b/cmake/ecbuild_add_cxx11_flags.cmake
@@ -0,0 +1,25 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to add cxx11 flags to compilation
+# uses macros from the project github.com/UCL/GreatCMakeCookOff
+
+macro( ecbuild_add_cxx11_flags )
+
+	# if( CMAKE_COMPILER_IS_GNUCXX )
+	# 	if( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7 )
+	# 		cmake_add_cxx_flags("-std=c++0x")
+	# 	else()
+	# 		cmake_add_cxx_flags("-std=c++11")
+	# 	endif()
+	# endif()
+
+	include( ${ECBUILD_MACROS_DIR}/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake )
+
+endmacro( ecbuild_add_cxx11_flags )
diff --git a/cmake/ecbuild_add_executable.cmake b/cmake/ecbuild_add_executable.cmake
new file mode 100644
index 0000000..c6591de
--- /dev/null
+++ b/cmake/ecbuild_add_executable.cmake
@@ -0,0 +1,197 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding a test
+##############################################################################
+
+macro( ecbuild_add_executable )
+
+	set( options NOINSTALL AUTO_VERSION )
+	set( single_value_args TARGET COMPONENT LINKER_LANGUAGE VERSION )
+    set( multi_value_args  SOURCES TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_executable(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_TARGET  )
+      message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the TARGET.")
+    endif()
+
+    if( NOT _PAR_SOURCES )
+      message(FATAL_ERROR "The call to ecbuild_add_executable() doesn't specify the SOURCES.")
+    endif()
+
+    ### conditional build
+
+    if( DEFINED _PAR_CONDITION )
+        set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
+        file( WRITE  ${_target_condition_file} "  if( ")
+        foreach( term ${_PAR_CONDITION} )
+            file( APPEND ${_target_condition_file} " ${term}")
+        endforeach()
+        file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
+        include( ${_target_condition_file} )
+    else()
+        set( _${_PAR_TARGET}_condition TRUE )
+    endif()
+
+    if( _${_PAR_TARGET}_condition )
+
+        # add include dirs if defined
+        if( DEFINED _PAR_INCLUDES )
+          list(REMOVE_DUPLICATES _PAR_INCLUDES )
+          foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+            if( path )
+              include_directories( ${path} )
+    #        else()
+    #          message( WARNING "Path ${path} was skipped" )
+            endif()
+          endforeach()
+        endif()
+    
+        # add persistent layer files
+        if( DEFINED _PAR_PERSISTENT )
+			if( DEFINED PERSISTENT_NAMESPACE )
+	            ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
+			else()
+	            ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
+			endif()
+     endif()
+    
+        # add templates to project files and remove from compilation sources
+        if( DEFINED _PAR_TEMPLATES )
+            list( REMOVE_ITEM _PAR_SOURCES ${_PAR_TEMPLATES} )
+            ecbuild_declare_project_files( ${_PAR_TEMPLATES} )
+            add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
+        endif()
+    
+        # add the executable target
+        add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
+    
+        # add extra dependencies
+        if( DEFINED _PAR_DEPENDS)
+          add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
+        endif()
+    
+        # add the link libraries
+        if( DEFINED _PAR_LIBS )
+          list(REMOVE_DUPLICATES _PAR_LIBS )
+          list(REMOVE_ITEM _PAR_LIBS debug)
+          list(REMOVE_ITEM _PAR_LIBS optimized)
+          foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
+            if( lib )
+              target_link_libraries( ${_PAR_TARGET} ${lib} )
+            else()
+#              message( WARNING "Lib ${lib} was skipped" )
+            endif()
+          endforeach()
+        endif()
+    
+        # add local flags
+        if( DEFINED _PAR_CFLAGS )
+            set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+        endif()
+        if( DEFINED _PAR_CXXFLAGS )
+            set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+        endif()
+        if( DEFINED _PAR_FFLAGS )
+            set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+        endif()
+        if( DEFINED _PAR_GENERATED )
+            set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+        endif()
+
+		# define VERSION if requested
+		if( DEFINED _PAR_VERSION )
+			set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
+		else()
+			if( _PAR_AUTO_VERSION )
+				set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
+			endif()
+		endif()
+    
+        # filter sources        
+
+        ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
+
+#    debug_var( ${_PAR_TARGET}_h_srcs )
+#    debug_var( ${_PAR_TARGET}_c_srcs )
+#    debug_var( ${_PAR_TARGET}_cxx_srcs )
+#    debug_var( ${_PAR_TARGET}_f_srcs )
+
+        # installation
+
+        if( NOT _PAR_NOINSTALL )
+
+            # add installation paths and associate with defined component
+#            if( DEFINED _PAR_COMPONENT )
+#                set( COMPONENT_DIRECTIVE "${_PAR_COMPONENT}" )
+#            else()
+#                set( COMPONENT_DIRECTIVE "${PROJECT_NAME}" )
+#            endif()
+        
+            install( TARGETS ${_PAR_TARGET}
+              EXPORT  ${CMAKE_PROJECT_NAME}-targets
+              RUNTIME DESTINATION ${INSTALL_BIN_DIR}
+              LIBRARY DESTINATION ${INSTALL_LIB_DIR}
+              ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
+#              COMPONENT ${COMPONENT_DIRECTIVE} )
+
+            # set build location
+
+            set_property( TARGET ${_PAR_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
+
+            # export location of target to other projects -- must be exactly after setting the build location (see previous command)
+
+            export( TARGETS ${_PAR_TARGET} APPEND FILE "${TOP_PROJECT_TARGETS_FILE}" )
+
+         endif()
+    
+        # add definitions to compilation
+        if( DEFINED _PAR_DEFINITIONS )
+            get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
+            list( APPEND _target_defs ${_PAR_DEFINITIONS} )
+            set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
+        endif()
+        
+        # set linker language
+        if( DEFINED _PAR_LINKER_LANGUAGE )
+            set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+        endif()
+
+        # paths to target
+        get_target_property(EXE_FILENAME ${_PAR_TARGET} OUTPUT_NAME)
+        if( NOT EXE_FILENAME )
+            set( EXE_FILENAME ${_PAR_TARGET} )
+        endif()
+
+        # make sure target is removed before - some problems with AIX
+        add_custom_command(
+              TARGET ${_PAR_TARGET}
+              PRE_BUILD
+              COMMAND ${CMAKE_COMMAND} -E remove ${EXE_FILENAME}
+        )
+    
+        # for the links target
+        if( NOT _PAR_NOINSTALL )
+            ecbuild_link_exe( ${_PAR_TARGET} ${EXE_FILENAME} )
+        endif()
+
+        # append to the list of this project targets
+        set( ${PROJECT_NAME}_ALL_EXES ${${PROJECT_NAME}_ALL_EXES} ${_PAR_TARGET} CACHE INTERNAL "" )    
+
+    endif()
+
+    # mark project files
+    ecbuild_declare_project_files( ${_PAR_SOURCES} )
+
+endmacro( ecbuild_add_executable  )
diff --git a/cmake/ecbuild_add_extra_search_paths.cmake b/cmake/ecbuild_add_extra_search_paths.cmake
new file mode 100644
index 0000000..e504664
--- /dev/null
+++ b/cmake/ecbuild_add_extra_search_paths.cmake
@@ -0,0 +1,27 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+#
+# macro for adding search paths to CMAKE_PREFIX_PATH
+# for example the ECMWF /usr/local/apps paths
+#
+# usage: ecbuild_search_paths( netcdf4 )
+
+function( ecbuild_add_extra_search_paths pkg )
+
+	# debug_var( pkg )
+
+	ecbuild_list_extra_search_paths( ${pkg} CMAKE_PREFIX_PATH )
+
+	# debug_var( CMAKE_PREFIX_PATH )
+
+	set( CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE )
+
+endfunction()
+
diff --git a/cmake/ecbuild_add_library.cmake b/cmake/ecbuild_add_library.cmake
new file mode 100644
index 0000000..860f9ec
--- /dev/null
+++ b/cmake/ecbuild_add_library.cmake
@@ -0,0 +1,327 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# auxiliary macro for adding a library
+##############################################################################
+
+function( ecbuild_add_library_impl )
+
+	set( options NOINSTALL AUTO_VERSION )
+	set( single_value_args TARGET TYPE COMPONENT INSTALL_HEADERS LINKER_LANGUAGE HEADER_DESTINATION VERSION )
+	set( multi_value_args  SOURCES TEMPLATES LIBS INCLUDES DEPENDS PERSISTENT DEFINITIONS CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
+
+	cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+	if(_PAR_UNPARSED_ARGUMENTS)
+	  message(FATAL_ERROR "Unknown keywords given to ecbuild_add_library(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+	endif()
+
+	if( NOT _PAR_TARGET  )
+	  message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
+	endif()
+
+	if( NOT _PAR_SOURCES )
+	  message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the SOURCES.")
+	endif()
+
+	# get_filename_component( currdir ${CMAKE_CURRENT_SOURCE_DIR} NAME )
+
+	# file(RELATIVE_PATH reldir ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
+
+	# debug_var( currdir )
+	# debug_var( reldir )
+
+	### conditional build
+
+	if( DEFINED _PAR_CONDITION )
+		set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
+		file( WRITE  ${_target_condition_file} "  if( ")
+		foreach( term ${_PAR_CONDITION} )
+			file( APPEND ${_target_condition_file} " ${term}")
+		endforeach()
+		file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
+		include( ${_target_condition_file} )
+	else()
+		set( _${_PAR_TARGET}_condition TRUE )
+	endif()
+
+	if( _${_PAR_TARGET}_condition )
+
+		# defines the type of library
+		if( DEFINED _PAR_TYPE )
+			# checks that is either SHARED or STATIC or MODULE
+			if( NOT _PAR_TYPE MATCHES "STATIC" AND
+				NOT _PAR_TYPE MATCHES "SHARED" AND
+				NOT _PAR_TYPE MATCHES "MODULE" )
+				message( FATAL_ERROR "library type must be one of [ STATIC | SHARED | MODULE ]" )
+			endif()
+		endif()
+
+		# add include dirs if defined
+		if( DEFINED _PAR_INCLUDES )
+		  list( REMOVE_DUPLICATES _PAR_INCLUDES )
+		  foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+			if( path )
+			  include_directories( ${path} )
+	#        else()
+	#          message( WARNING "Path ${path} was skipped" )
+			endif()
+		  endforeach()
+		endif()
+
+		# add persistent layer files
+		if( DEFINED _PAR_PERSISTENT )
+			if( DEFINED PERSISTENT_NAMESPACE )
+				ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
+			else()
+				ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
+			endif()
+		endif()
+
+		# add templates to project files and remove from compilation sources
+		if( DEFINED _PAR_TEMPLATES )
+			list( REMOVE_ITEM _PAR_SOURCES ${_PAR_TEMPLATES} )
+			ecbuild_declare_project_files( ${_PAR_TEMPLATES} )
+			add_custom_target( ${_PAR_TARGET}_templates SOURCES ${_PAR_TEMPLATES} )
+		endif()
+
+		add_library( ${_PAR_TARGET} ${_PAR_TYPE} ${_PAR_SOURCES} )
+
+		# add extra dependencies
+		if( DEFINED _PAR_DEPENDS)
+		  add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
+		endif()
+
+		# add the link libraries
+		if( DEFINED _PAR_LIBS )
+		  list(REMOVE_DUPLICATES _PAR_LIBS )
+		  list(REMOVE_ITEM _PAR_LIBS debug)
+		  list(REMOVE_ITEM _PAR_LIBS optimized)
+		  foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
+			if( lib )
+			  target_link_libraries( ${_PAR_TARGET} ${lib} )
+			else()
+#              message( WARNING "Lib ${lib} was skipped" )
+			endif()
+		  endforeach()
+		endif()
+
+		# FIX: Cray compiler PIC option is not detected by CMake
+
+		get_property( _target_pic TARGET ${_PAR_TARGET} PROPERTY POSITION_INDEPENDENT_CODE )
+		if( _target_pic )
+			if( "${CMAKE_C_COMPILER_ID}" STREQUAL "Cray" )
+				set( _PAR_CFLAGS "-fPIC -h PIC ${_PAR_CFLAGS}" )
+			endif()
+			if( "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Cray" )
+				set( _PAR_CXXFLAGS "-fPIC -h PIC ${_PAR_CXXFLAGS}" )
+			endif()
+			if( "${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Cray" )
+				set( _PAR_FFLAGS "-fPIC -h PIC ${_PAR_FFLAGS}" )
+			endif()
+		endif()
+
+		# define VERSION if requested
+		if( DEFINED _PAR_VERSION )
+			set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
+		else()
+			if( _PAR_AUTO_VERSION OR LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]")
+				set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
+			endif()
+			if( LIBS_VERSION AND NOT LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]" )
+				set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${LIBS_VERSION}" )
+			endif()
+		endif()
+
+		# filter sources
+
+		ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
+
+#		debug_var( ${_PAR_TARGET}_h_srcs )
+#		debug_var( ${_PAR_TARGET}_c_srcs )
+#		debug_var( ${_PAR_TARGET}_cxx_srcs )
+#		debug_var( ${_PAR_TARGET}_f_srcs )
+
+		# add local flags
+
+		if( DEFINED _PAR_CFLAGS )
+			set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+		endif()
+		if( DEFINED _PAR_CXXFLAGS )
+			set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+		endif()
+		if( DEFINED _PAR_FFLAGS )
+			set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+		endif()
+		if( DEFINED _PAR_GENERATED )
+			set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+		endif()
+
+		# set linker language
+		if( DEFINED _PAR_LINKER_LANGUAGE )
+			set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+		endif()
+
+		# installation
+
+		if( NOT _PAR_NOINSTALL )
+
+			# and associate with defined component
+#            if( DEFINED _PAR_COMPONENT )
+#                set( COMPONENT_DIRECTIVE "${_PAR_COMPONENT}" )
+#            else()
+#                set( COMPONENT_DIRECTIVE "${PROJECT_NAME}" )
+#            endif()
+
+			install( TARGETS ${_PAR_TARGET}
+			  EXPORT  ${CMAKE_PROJECT_NAME}-targets
+			  RUNTIME DESTINATION ${INSTALL_BIN_DIR}
+			  LIBRARY DESTINATION ${INSTALL_LIB_DIR}
+			  ARCHIVE DESTINATION ${INSTALL_LIB_DIR} )
+#              COMPONENT ${COMPONENT_DIRECTIVE} )
+
+			# install headers
+			if( _PAR_HEADER_DESTINATION )
+				set( _h_destination "${_PAR_HEADER_DESTINATION}" )
+			else()
+				set( _h_destination "${INSTALL_INCLUDE_DIR}" )
+			endif()
+
+			if( _PAR_INSTALL_HEADERS )
+				if( _PAR_INSTALL_HEADERS MATCHES "LISTED" )
+					foreach( file ${${_PAR_TARGET}_h_srcs} )
+						get_filename_component( _file_dir ${file} PATH )
+						install( FILES ${file} DESTINATION "${_h_destination}/${_file_dir}" )
+					endforeach()
+					if( DEFINED _PAR_TEMPLATES )
+						foreach( file ${_PAR_TEMPLATES} )
+							get_filename_component( _file_dir ${file} PATH )
+							install( FILES ${file} DESTINATION "${_h_destination}/${_file_dir}" )
+						endforeach()
+					endif()
+					if( DEFINED _PAR_PERSISTENT )
+						foreach( file ${_PAR_PERSISTENT} )
+							  get_filename_component( _file_dir ${file} PATH )
+							  get_filename_component( _file_we  ${file} NAME_WE )
+							  set( pfile "${CMAKE_CURRENT_BINARY_DIR}/${_file_dir}/${_file_we}.b" )
+							  install( FILES ${pfile} DESTINATION "${_h_destination}/${_file_dir}" )
+						endforeach()
+					endif()
+				endif()
+				if( _PAR_INSTALL_HEADERS MATCHES "ALL" ) # "(\\.h|\\.b|\\.hxx|\\.hh|\\.hpp|\\.H)" ????
+					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.h" )
+					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.hh" )
+					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.hpp" )
+					install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "*.H" )
+				endif()
+			endif()
+
+			if( DEFINED _PAR_INSTALL_HEADERS_LIST )
+				install( FILES ${_PAR_INSTALL_HEADERS_LIST} DESTINATION ${_h_destination} )
+			endif()
+
+			if( DEFINED _PAR_INSTALL_HEADERS_REGEX )
+				install( DIRECTORY ./  DESTINATION ${_h_destination} FILES_MATCHING PATTERN "${_PAR_INSTALL_HEADERS_REGEX}")
+			endif()
+
+			# set build location
+
+			set_property( TARGET ${_PAR_TARGET} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
+			set_property( TARGET ${_PAR_TARGET} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
+
+			# export location of target to other projects -- must be exactly after setting the build location (see previous 2 commands)
+
+			export( TARGETS ${_PAR_TARGET} APPEND FILE "${TOP_PROJECT_TARGETS_FILE}" )
+
+		endif()
+
+		# add definitions to compilation
+		if( DEFINED _PAR_DEFINITIONS )
+			get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
+			list( APPEND _target_defs ${_PAR_DEFINITIONS} )
+			set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
+		endif()
+
+		# paths to target
+		set(LIB_FILENAME ${CMAKE_SHARED_LIBRARY_PREFIX}${_PAR_TARGET}${CMAKE_SHARED_LIBRARY_SUFFIX}${LIB_SUFFIX})
+		get_target_property(LIB_LOCNAME ${_PAR_TARGET} LOCATION)
+
+		# make sure target is removed before - some problems with AIX
+		add_custom_command(
+			  TARGET ${_PAR_TARGET}
+			  PRE_BUILD
+			  COMMAND ${CMAKE_COMMAND} -E remove ${LIB_LOCNAME}
+	   )
+
+		# for the links target
+		if( NOT _PAR_NOINSTALL )
+			ecbuild_link_lib( ${_PAR_TARGET} ${LIB_FILENAME} )
+		endif()
+
+		# append to the list of this project targets
+		set( ${PROJECT_NAME}_ALL_LIBS ${${PROJECT_NAME}_ALL_LIBS} ${_PAR_TARGET} CACHE INTERNAL "" )
+
+	endif()
+
+	# mark project files
+	ecbuild_declare_project_files( ${_PAR_SOURCES} )
+
+endfunction( ecbuild_add_library_impl  )
+
+##############################################################################
+# auxiliary macro for adding a library
+##############################################################################
+
+macro( ecbuild_add_library )
+
+	set( options  )
+	set( single_value_args TARGET TYPE )
+	set( multi_value_args )
+
+	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+	if( DEFINED _p_TYPE ) # don't do anything if TYPE was specified
+
+			if( _p_TYPE MATCHES "[Bb][Oo][Tt][Hh]" ) # build both types
+
+				ecbuild_add_library_impl( TARGET ${_p_TARGET}        TYPE SHARED ${_p_UNPARSED_ARGUMENTS} )
+				ecbuild_add_library_impl( TARGET ${_p_TARGET}-static TYPE STATIC ${_p_UNPARSED_ARGUMENTS} )
+
+				set_target_properties( ${_p_TARGET}-static PROPERTIES OUTPUT_NAME ${_p_TARGET} )
+
+			else()
+
+				ecbuild_add_library_impl( ${ARGV} )
+
+			endif()
+
+	else()
+
+		if( NOT DEFINED _p_TARGET )
+			message(FATAL_ERROR "The call to ecbuild_add_library() doesn't specify the TARGET.")
+		else()
+
+			if( BUILD_SHARED_LIBS MATCHES "[Bb][Oo][Tt][Hh]" ) # build both types
+
+				ecbuild_add_library_impl( TARGET ${_p_TARGET}        TYPE SHARED ${_p_UNPARSED_ARGUMENTS} )
+				ecbuild_add_library_impl( TARGET ${_p_TARGET}-static TYPE STATIC ${_p_UNPARSED_ARGUMENTS} )
+
+				set_target_properties( ${_p_TARGET}-static PROPERTIES OUTPUT_NAME ${_p_TARGET} )
+
+			else()
+
+				ecbuild_add_library_impl( ${ARGV} )
+
+			endif()
+
+		endif()
+
+	endif()
+
+endmacro( ecbuild_add_library )
diff --git a/cmake/ecbuild_add_option.cmake b/cmake/ecbuild_add_option.cmake
new file mode 100644
index 0000000..92e5386
--- /dev/null
+++ b/cmake/ecbuild_add_option.cmake
@@ -0,0 +1,149 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding a test
+##############################################################################
+
+macro( ecbuild_add_option )
+
+	set( options ADVANCED )
+	set( single_value_args FEATURE DEFAULT DESCRIPTION )
+	set( multi_value_args  REQUIRED_PACKAGES )
+
+	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+	if( _p_UNPARSED_ARGUMENTS )
+	  message(FATAL_ERROR "Unknown keywords given to ecbuild_add_option(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+	# check FEATURE parameter
+
+	if( NOT _p_FEATURE  )
+	  message(FATAL_ERROR "The call to ecbuild_add_option() doesn't specify the FEATURE.")
+    endif()
+
+	# check DEFAULT parameter
+
+	if( NOT DEFINED _p_DEFAULT )
+		set( _p_DEFAULT ON )
+	else()
+		if( NOT _p_DEFAULT MATCHES "[Oo][Nn]" AND NOT _p_DEFAULT MATCHES "[Oo][Ff][Ff]" )
+			message(FATAL_ERROR "In macro ecbuild_add_option(), DEFAULT is either ON or OFF: \"${_p_DEFAULT}\"")
+		endif()
+	endif()
+
+	# check if user provided value
+
+	get_property( _in_cache CACHE ENABLE_${_p_FEATURE} PROPERTY VALUE )
+
+	if( NOT "${ENABLE_${_p_FEATURE}}" STREQUAL "" AND _in_cache )
+		set( ${_p_FEATURE}_user_provided_input 1 CACHE BOOL "" )
+	else()
+		set( ${_p_FEATURE}_user_provided_input 0 CACHE BOOL "" )
+	endif()
+
+	mark_as_advanced( ${_p_FEATURE}_user_provided_input )
+
+	# define the option -- for cmake GUI
+
+	option( ENABLE_${_p_FEATURE} "${_p_DESCRIPTION}" ${_p_DEFAULT} )
+
+	if( ${_p_ADVANCED} )
+		mark_as_advanced( ENABLE_${_p_FEATURE} )
+	endif()
+
+	# debug_var( ENABLE_${_p_FEATURE} )
+	# debug_var( ${_p_FEATURE}_user_provided_input )
+
+	if( ENABLE_${_p_FEATURE} )
+
+		set( HAVE_${_p_FEATURE} 1 )
+
+		### search for dependent packages
+
+		foreach( pkg ${_p_REQUIRED_PACKAGES} )
+
+			string(REPLACE " " ";" pkglist ${pkg}) # string to list
+
+			list( GET pkglist 0 pkgname )
+
+			if( pkgname STREQUAL "PROJECT" )  # if 1st entry is PROJECT, then we are looking for a ecbuild project
+				set( pkgproject 1 )
+				list( GET pkglist 1 pkgname )
+			else()                            # else 1st entry is package name
+				set( pkgproject 0 )
+			endif()
+
+			# debug_var( pkg )
+			# debug_var( pkglist )
+			# debug_var( pkgname )
+
+			string( TOUPPER ${pkgname} pkgUPPER )
+			string( TOLOWER ${pkgname} pkgLOWER )
+
+			if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
+				set( ${pkgname}_already_found 1 )
+			else()
+
+				ecbuild_add_extra_search_paths( ${pkgLOWER} ) # adds search paths specific to ECMWF
+
+				if( pkgproject )
+					ecbuild_use_package( ${pkglist} )
+				else()
+					find_package( ${pkglist} )
+				endif()
+
+				# append to list of third-party libraries (to be forward to other packages )
+				string( TOUPPER ${PROJECT_NAME} PNAME )
+				list( APPEND ${PNAME}_TPLS ${pkgname} )
+
+			endif()
+
+			# debug_var( ${pkgname}_FOUND  )
+			# debug_var( ${pkgLOWER}_FOUND )
+			# debug_var( ${pkgUPPER}_FOUND )
+
+			# we have feature iff all required packages were FOUND
+
+			if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
+				message( STATUS "Found package ${pkgname} required for feature ${_p_FEATURE}" )
+			else()
+				message( STATUS "Could not find package ${pkgname} required for feature ${_p_FEATURE}" )
+				set( HAVE_${_p_FEATURE} 0 )
+				list( APPEND _failed_to_find_packages ${pkgname} )
+			endif()
+
+		endforeach()
+
+		# FINAL CHECK
+
+		if( HAVE_${_p_FEATURE} )
+
+			message( STATUS "Feature ${_p_FEATURE} enabled" )
+
+		else() # if user provided input and we cannot satisfy FAIL otherwise WARN
+
+			if( ${_p_FEATURE}_user_provided_input )
+				message( FATAL_ERROR "Feature ${_p_FEATURE} cannot be enabled -- following required packages weren't found: ${_failed_to_find_packages}" )
+			else()
+				message( STATUS "Feature ${_p_FEATURE} was not enabled (also not requested) -- following required packages weren't found: ${_failed_to_find_packages}" )
+				set( ENABLE_${_p_FEATURE} OFF )
+			endif()
+
+		endif()
+
+	else( ENABLE_${_p_FEATURE} )
+
+		set( HAVE_${_p_FEATURE} 0 )
+
+	endif( ENABLE_${_p_FEATURE} )
+
+	add_feature_info( ${_p_FEATURE} ENABLE_${_p_FEATURE} "${_p_DESCRIPTION}")
+
+endmacro( ecbuild_add_option  )
diff --git a/cmake/ecbuild_add_persistent.cmake b/cmake/ecbuild_add_persistent.cmake
new file mode 100644
index 0000000..c8ef383
--- /dev/null
+++ b/cmake/ecbuild_add_persistent.cmake
@@ -0,0 +1,61 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding persistent layer object classes
+##############################################################################
+	
+# define the script to build the persistent class information
+set( sg_perl "${CMAKE_CURRENT_LIST_DIR}/sg.pl" CACHE INTERNAL "perl script to generate persistent objects" )
+
+macro( ecbuild_add_persistent )
+
+	ecbuild_find_perl( REQUIRED )
+
+	set( options )
+    set( single_value_args SRC_LIST NAMESPACE )
+    set( multi_value_args  FILES ) 
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_persistent(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_SRC_LIST  )
+      message(FATAL_ERROR "The call to ecbuild_add_persistent() doesn't specify the SRC_LIST.")
+    endif()
+
+    if( NOT _PAR_FILES )
+      message(FATAL_ERROR "The call to ecbuild_add_persistent() doesn't specify the FILES.")
+    endif()
+
+    foreach( file ${_PAR_FILES} )
+
+      get_filename_component( _file_dir    ${file} PATH )
+      get_filename_component( _file_we     ${file} NAME_WE )
+
+      set( file ${_file_we} )
+      if( _file_dir )
+         file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_file_dir} )
+         set( file ${_file_dir}/${_file_we} )
+      endif()
+
+      # debug_var(file)
+
+      add_custom_command(
+        OUTPUT  ${file}.b
+		COMMAND ${PERL_EXECUTABLE} ${sg_perl} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.h ${CMAKE_CURRENT_BINARY_DIR}/${_file_dir} ${_PAR_NAMESPACE}
+		DEPENDS ${sg_perl} ${file}.h
+        )
+      set_source_files_properties( ${file}.h PROPERTIES OBJECT_DEPENDS "${file}.b" )
+      list( APPEND ${_PAR_SRC_LIST} ${CMAKE_CURRENT_BINARY_DIR}/${file}.b )
+    
+    endforeach()
+
+endmacro( ecbuild_add_persistent  )
diff --git a/cmake/ecbuild_add_resources.cmake b/cmake/ecbuild_add_resources.cmake
new file mode 100644
index 0000000..12f47af
--- /dev/null
+++ b/cmake/ecbuild_add_resources.cmake
@@ -0,0 +1,158 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding a resources
+##############################################################################
+
+macro( ecbuild_dont_pack )
+
+    set( options )
+    set( single_value_args REGEX )
+    set( multi_value_args  FILES DIRS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_resources(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT DEFINED _PAR_REGEX AND NOT  DEFINED _PAR_FILES AND NOT  DEFINED _PAR_DIRS )
+      message(FATAL_ERROR "Call to ecbuild_dont_pack does not speficify any list to avoid packing.")
+    endif()
+
+    set( LOCAL_FILES_NOT_TO_PACK "" )
+
+    # all recursive files are not to pack
+    if( DEFINED _PAR_REGEX )
+        file( GLOB_RECURSE all_files_in_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${_PAR_REGEX} )
+        list( APPEND LOCAL_FILES_NOT_TO_PACK ${all_files_in_subdirs} )
+    endif()
+
+    # selected dirs not to pack
+    if( DEFINED _PAR_DIRS )
+        foreach( dir ${_PAR_DIRS} )
+            list( APPEND LOCAL_FILES_NOT_TO_PACK ${dir}/ )
+        endforeach()
+    endif()
+
+    # selected files not to pack
+    if( DEFINED _PAR_FILES )
+        list( APPEND LOCAL_FILES_NOT_TO_PACK ${_PAR_FILES} )
+    endif()
+
+    # transform the local files  to full absolute paths
+    # and place them in the global list of files not to pack
+    foreach( file ${LOCAL_FILES_NOT_TO_PACK} )
+        list( APPEND ECBUILD_DONT_PACK_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file} )
+    endforeach()
+
+    # save cache if we added any files not to pack
+    if( LOCAL_FILES_NOT_TO_PACK )
+        set( ECBUILD_DONT_PACK_FILES ${ECBUILD_DONT_PACK_FILES} CACHE INTERNAL "" )
+    endif()
+
+endmacro()
+
+macro( ecbuild_add_resources )
+
+    set( options )
+    set( single_value_args TARGET )
+    set( multi_value_args  SOURCES SOURCES_PACK SOURCES_DONT_PACK PACK DONT_PACK DONT_PACK_DIRS DONT_PACK_REGEX )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_resources(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_TARGET  )
+      message(FATAL_ERROR "The call to ecbuild_add_resources() doesn't specify the TARGET.")
+    endif()
+
+    set( LOCAL_FILES_NOT_TO_PACK "" )
+
+    # all recursive files are not to pack
+    if( DEFINED _PAR_DONT_PACK_REGEX )
+        foreach( exp ${_PAR_DONT_PACK_REGEX} )
+            file( GLOB_RECURSE all_files_in_subdirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${exp} )
+            list( APPEND LOCAL_FILES_NOT_TO_PACK ${all_files_in_subdirs} )
+        endforeach()
+    endif()
+
+    # selected dirs not to pack
+    if( DEFINED _PAR_DONT_PACK_DIRS )
+        foreach( dir ${_PAR_DONT_PACK_DIRS} )
+            list( APPEND LOCAL_FILES_NOT_TO_PACK ${dir}/ )
+        endforeach()
+    endif()
+
+    # selected files not to pack
+    if( DEFINED _PAR_DONT_PACK )
+        list( APPEND LOCAL_FILES_NOT_TO_PACK ${_PAR_DONT_PACK} )
+    endif()
+
+    # now lets remove files that we want to pack from the list
+    # note that these have priority over the files not to pack
+    # so we can GLOB_RECURSE * -> DONT_PACK and then select only the ones we pack
+
+    # files to pack but are not project files
+    if( DEFINED _PAR_PACK )
+        foreach( file ${_PAR_PACK} )
+            list( REMOVE_ITEM LOCAL_FILES_NOT_TO_PACK ${file} )
+        endforeach()
+    endif()
+
+    # define as project files, but dont pack them
+    if( DEFINED _PAR_SOURCES_DONT_PACK )
+        list( APPEND LOCAL_FILES_NOT_TO_PACK ${_PAR_SOURCES_DONT_PACK} )
+		foreach( sfile ${_PAR_SOURCES_DONT_PACK} )
+			set( _full_sfile "${CMAKE_CURRENT_SOURCE_DIR}/${sfile}" )
+	        if( EXISTS ${_full_sfile} )
+				list( APPEND ${_PAR_TARGET}_files ${_full_sfile} )
+			endif()
+		endforeach()
+    endif()
+
+    # define as project files and pack them
+    # SOURCES_PACK is alias to SOURCES
+    if( DEFINED _PAR_SOURCES_PACK )
+        list( APPEND _PAR_SOURCES ${_PAR_SOURCES_PACK} )
+    endif()
+    if( DEFINED _PAR_SOURCES )
+        list( APPEND ${_PAR_TARGET}_files ${_PAR_SOURCES} )
+        foreach( file ${_PAR_SOURCES} )
+            list( REMOVE_ITEM LOCAL_FILES_NOT_TO_PACK ${file} )
+        endforeach()
+    endif()
+
+    # there are project files, so lets create the target
+    if( DEFINED ${_PAR_TARGET}_files )
+        add_custom_target( ${_PAR_TARGET} SOURCES ${${_PAR_TARGET}_files} )
+    endif()
+
+    # remove CMakeLists.txt
+    foreach( file ${LOCAL_FILES_NOT_TO_PACK} )
+        if( ${file} MATCHES "CMakeLists.txt" )
+            list( REMOVE_ITEM LOCAL_FILES_NOT_TO_PACK ${file} )
+        endif()
+    endforeach()
+
+    # transform the local files  to full absolute paths
+    # and place them in the global list of files not to pack
+    foreach( file ${LOCAL_FILES_NOT_TO_PACK} )
+        list( APPEND ECBUILD_DONT_PACK_FILES ${CMAKE_CURRENT_SOURCE_DIR}/${file} )
+    endforeach()
+
+    # save cache if we added any files not to pack
+    if( LOCAL_FILES_NOT_TO_PACK )
+        set( ECBUILD_DONT_PACK_FILES ${ECBUILD_DONT_PACK_FILES} CACHE INTERNAL "" )
+    endif()
+
+endmacro( ecbuild_add_resources  )
+
diff --git a/cmake/ecbuild_add_test.cmake b/cmake/ecbuild_add_test.cmake
new file mode 100644
index 0000000..b4a8155
--- /dev/null
+++ b/cmake/ecbuild_add_test.cmake
@@ -0,0 +1,305 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding a test
+##############################################################################
+
+# Arguments:
+#  TARGET : name of test
+#  ENABLED [optional]: (default ON)
+#  COMMAND [optional]: Run command instead of executable
+#  TYPE [optional]: EXE / SCRIPT / PYTHON  (default EXE)
+#  MPI [optional]: number of mpi-tasks to use. If greater than 1,
+#                  and MPI is not available, the test is disabled
+#  SOURCES: sources to be compiled
+#  LIBS: Libraries needed for linking
+#  INCLUDES: Extra include directories
+#  DEPENDS: Add explicit dependency to other targets
+#  ARGS: Command-line arguments to COMMAND OR TARGET
+
+macro( ecbuild_add_test )
+
+    set( options           BOOST )
+    set( single_value_args TARGET ENABLED COMMAND TYPE LINKER_LANGUAGE MPI )
+    set( multi_value_args  SOURCES LIBS INCLUDES DEPENDS ARGS PERSISTENT DEFINITIONS RESOURCES TEST_DATA CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION ENVIRONMENT )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_add_test(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    set( _TEST_DIR ${CMAKE_CURRENT_BINARY_DIR} )
+
+    # Check for MPI
+    if(_PAR_MPI)
+      if( (_PAR_MPI GREATER 1) AND ( (NOT HAVE_MPI) OR (NOT MPIEXEC) ) )
+        set( _PAR_ENABLED 0 )
+      endif()
+    else()
+      set( _PAR_MPI 1 )
+    endif()
+
+    # default is enabled
+    if( NOT DEFINED _PAR_ENABLED )
+      set( _PAR_ENABLED 1 )
+    endif()
+
+
+    ### check test type
+
+    # command implies script
+    if( DEFINED _PAR_COMMAND )
+        set( _PAR_TYPE "SCRIPT" )
+    endif()
+
+    # default of TYPE
+    if( NOT _PAR_TYPE AND DEFINED _PAR_TARGET )
+        set( _PAR_TYPE "EXE" )
+        if( NOT _PAR_SOURCES )
+           message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a TARGET without SOURCES.")
+        endif()
+    endif()
+
+    if( _PAR_TYPE MATCHES "PYTHON" )
+        if( PYTHONINTERP_FOUND )
+            set( _PAR_COMMAND ${PYTHON_EXECUTABLE} )
+        else()
+            message( FATAL_ERROR "Requested a python test but python interpreter not found - PYTHON_EXECUTABLE: [${PYTHON_EXECUTABLE}]" )
+        endif()
+    endif()
+
+    ### further checks
+
+    if( NOT _PAR_TARGET AND NOT _PAR_COMMAND )
+        message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a TARGET nor a COMMAND.")
+    endif()
+
+    if( NOT _PAR_COMMAND AND NOT _PAR_SOURCES )
+      message(FATAL_ERROR "The call to ecbuild_add_test() defines neither a COMMAND nor SOURCES, so no test can be defined or built.")
+    endif()
+
+    if( _PAR_TYPE MATCHES "SCRIPT" AND NOT _PAR_COMMAND )
+        message(FATAL_ERROR "The call to ecbuild_add_test() defines a 'script' but doesn't specify the COMMAND.")
+    endif()
+
+    ### conditional build
+
+    if( DEFINED _PAR_CONDITION )
+        set(_target_condition_file "${CMAKE_CURRENT_BINARY_DIR}/set_${_PAR_TARGET}_condition.cmake")
+        file( WRITE  ${_target_condition_file} "  if( ")
+        foreach( term ${_PAR_CONDITION} )
+            file( APPEND ${_target_condition_file} " ${term}")
+        endforeach()
+        file( APPEND ${_target_condition_file} " )\n    set(_${_PAR_TARGET}_condition TRUE)\n  else()\n    set(_${_PAR_TARGET}_condition FALSE)\n  endif()\n")
+        include( ${_target_condition_file} )
+    else()
+        set( _${_PAR_TARGET}_condition TRUE )
+    endif()
+
+	# boost unit test linking to unit_test lib ?
+
+	if( _PAR_BOOST AND ENABLE_TESTS AND _${_PAR_TARGET}_condition )
+		if( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
+			include_directories( ${ECBUILD_BOOST_HEADER_DIRS} )
+		else()
+			include_directories( ${ECBUILD_BOOST_HEADER_DIRS} ${Boost_INCLUDE_DIRS} )
+		endif()
+	endif()
+
+	### enable the tests
+
+    if( ENABLE_TESTS AND _${_PAR_TARGET}_condition )
+
+      # add resources
+
+      if( DEFINED _PAR_RESOURCES )
+        foreach( rfile ${_PAR_RESOURCES} )
+          execute_process( COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${rfile} ${CMAKE_CURRENT_BINARY_DIR} )
+        endforeach()
+      endif()
+
+      # get test data
+
+      if( _PAR_TEST_DATA )
+
+         foreach( _d ${_PAR_TEST_DATA} )
+
+            string( REGEX MATCH "[^:]+" _name "${_d}" )
+            string( REGEX MATCH ":.*"  _md5  "${_d}" )
+            string( REPLACE ":" "" _md5 "${_md5}" )
+
+            if( _md5 )
+              ecbuild_get_test_data( TARGET _test_data_${name} NAME ${_name} MD5 ${_md5} )
+            else()
+              ecbuild_get_test_data( TARGET _test_data_${name} NAME ${_name} )
+            endif()
+
+            list( APPEND _PAR_DEPENDS _test_data_${name} )
+
+         endforeach()
+
+      endif()
+
+      # build executable
+
+      if( DEFINED _PAR_SOURCES )
+    
+                # add include dirs if defined
+                if( DEFINED _PAR_INCLUDES )
+                  list(REMOVE_DUPLICATES _PAR_INCLUDES )
+                  foreach( path ${_PAR_INCLUDES} ) # skip NOTFOUND
+                    if( path )
+                      include_directories( ${path} )
+                    endif()
+                  endforeach()
+                endif()
+        
+                # add persistent layer files
+                if( DEFINED _PAR_PERSISTENT )
+		            if( DEFINED PERSISTENT_NAMESPACE )
+        		        ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} NAMESPACE ${PERSISTENT_NAMESPACE} )
+            		else()
+                		ecbuild_add_persistent( SRC_LIST _PAR_SOURCES FILES ${_PAR_PERSISTENT} )
+            		endif()
+                endif()
+        
+                # add the test target
+                
+                add_executable( ${_PAR_TARGET} ${_PAR_SOURCES} )
+        
+                # add extra dependencies
+                if( DEFINED _PAR_DEPENDS)
+                  add_dependencies( ${_PAR_TARGET} ${_PAR_DEPENDS} )
+                endif()
+        
+                # add the link libraries
+                if( DEFINED _PAR_LIBS )
+                  list(REMOVE_DUPLICATES _PAR_LIBS )
+                  list(REMOVE_ITEM _PAR_LIBS debug)
+                  list(REMOVE_ITEM _PAR_LIBS optimized)
+                  foreach( lib ${_PAR_LIBS} ) # skip NOTFOUND
+                    if( lib )
+                      target_link_libraries( ${_PAR_TARGET} ${lib} )
+                    else()
+                      message( WARNING "Lib ${lib} was skipped" )
+                    endif()
+                  endforeach()
+                endif()
+
+                # add test libraries
+				if( _PAR_BOOST AND BOOST_UNIT_TEST_FRAMEWORK_LINKED )
+                    target_link_libraries( ${_PAR_TARGET} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_TEST_EXEC_MONITOR_LIBRARY} )
+                endif()
+        
+                # add local flags
+                if( DEFINED _PAR_CFLAGS )
+                    set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
+                endif()
+                if( DEFINED _PAR_CXXFLAGS )
+                    set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
+                endif()
+                if( DEFINED _PAR_FFLAGS )
+                    set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
+                endif()
+                if( DEFINED _PAR_GENERATED )
+                    set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
+                endif()
+
+        
+                # add definitions to compilation
+                if( DEFINED _PAR_DEFINITIONS )
+                    get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
+                    list( APPEND _target_defs ${_PAR_DEFINITIONS} )
+					if( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
+						list( APPEND _target_defs BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
+					endif()
+					set_property( TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS ${_target_defs} )
+                endif()
+        
+                # set build location to local build dir
+                # not the project base as defined for libs and execs
+                set_property( TARGET ${_PAR_TARGET} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+                # set linker language
+                if( DEFINED _PAR_LINKER_LANGUAGE )
+                    set_property( TARGET ${_PAR_TARGET} PROPERTY LINKER_LANGUAGE ${_PAR_LINKER_LANGUAGE} )
+                endif()
+        
+                # make sure target is removed before - some problems with AIX
+                get_target_property(EXE_FILENAME ${_PAR_TARGET} OUTPUT_NAME)
+                add_custom_command(
+                      TARGET ${_PAR_TARGET}
+                      PRE_BUILD
+                      COMMAND ${CMAKE_COMMAND} -E remove ${EXE_FILENAME}
+                )
+
+      endif() # _PAR_SOURCES
+
+      if( DEFINED _PAR_COMMAND AND NOT _PAR_TARGET ) # in the absence of target, we use the command as a name
+          set( _PAR_TARGET ${_PAR_COMMAND} )
+      endif()
+
+      # scripts dont have actual build targets so no data downloads are executed
+      # we build a phony target to trigger the dependency downloads
+      if( DEFINED _PAR_COMMAND )
+
+          add_custom_target( ${_PAR_TARGET}.x ALL COMMAND touch ${_PAR_TARGET}.x )
+
+          if( DEFINED _PAR_DEPENDS)
+             add_dependencies( ${_PAR_TARGET}.x ${_PAR_DEPENDS} )
+           endif()
+
+      endif()
+
+    
+      # define the arguments
+      set( TEST_ARGS "" )
+      if( DEFINED _PAR_ARGS  )
+        list( APPEND TEST_ARGS ${_PAR_ARGS} )
+      endif()
+
+      # Wrap with MPIEXEC
+      if( HAVE_MPI AND MPIEXEC )
+        if( DEFINED _PAR_COMMAND )
+          set( _PAR_COMMAND ${MPIEXEC} -n ${_PAR_MPI} ${_PAR_COMMAND} )
+        else()
+          set( _PAR_COMMAND ${MPIEXEC} -n ${_PAR_MPI} ${_PAR_TARGET} )
+        endif()
+      endif()
+
+      ### define the test
+
+      if( _PAR_ENABLED ) # we can disable and still build it but not run it with 'make tests'
+
+          if( DEFINED _PAR_COMMAND )
+              add_test( ${_PAR_TARGET} ${_PAR_COMMAND} ${TEST_ARGS} ) # run a command as test
+          else()
+              add_test( ${_PAR_TARGET} ${_PAR_TARGET}  ${TEST_ARGS} ) # run the test that was generated
+          endif()
+
+          add_dependencies( check ${_PAR_TARGET} )
+
+          if( DEFINED _PAR_ENVIRONMENT )
+              set_tests_properties( ${_PAR_TARGET} PROPERTIES ENVIRONMENT "${_PAR_ENVIRONMENT}")
+          endif()
+
+      endif()
+    
+      # add to the overall list of tests
+      list( APPEND ECBUILD_ALL_TESTS ${_PAR_TARGET} )
+      list( REMOVE_DUPLICATES ECBUILD_ALL_TESTS )
+      set( ECBUILD_ALL_TESTS ${ECBUILD_ALL_TESTS} CACHE INTERNAL "" )
+
+    endif() # _condition
+
+    # finally mark project files
+    ecbuild_declare_project_files( ${_PAR_SOURCES} )
+
+endmacro( ecbuild_add_test )
diff --git a/cmake/ecbuild_append_to_rpath.cmake b/cmake/ecbuild_append_to_rpath.cmake
new file mode 100644
index 0000000..bf48730
--- /dev/null
+++ b/cmake/ecbuild_append_to_rpath.cmake
@@ -0,0 +1,73 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to append paths to rpath
+
+# if dir is absolute, it simply appends
+# if dir is relative,
+#    then it will try to make it relative to the executables
+#    else it will fallback to making it absolute by prepending the install path
+
+function( _path_append var path )
+	if( "${${var}}" STREQUAL "" )
+		set( ${var} "${path}" PARENT_SCOPE )
+	else()
+		set( ${var} "${${var}}:${path}" PARENT_SCOPE )
+	endif()
+endfunction()
+
+macro( ecbuild_append_to_rpath RPATH_DIRS )
+   
+   if( NOT ${ARGC} EQUAL 1 )
+	   message( SEND_ERROR "ecbuild_append_to_rpath takes 1 argument")
+   endif()
+
+   foreach( RPATH_DIR ${RPATH_DIRS} )
+     
+		if( NOT ${RPATH_DIR} STREQUAL "" )
+        
+			file( TO_CMAKE_PATH ${RPATH_DIR} RPATH_DIR ) # sanitize the path
+
+			if( IS_ABSOLUTE ${RPATH_DIR} )
+
+				_path_append( CMAKE_INSTALL_RPATH "${RPATH_DIR}" )
+
+			else()
+
+				set( _done 0 )
+
+				if( EC_OS_NAME STREQUAL "macosx" )
+					set( CMAKE_INSTALL_NAME_DIR "@loader_path/${RPATH_DIR}" )
+					_path_append( CMAKE_INSTALL_RPATH "@loader_path/${RPATH_DIR}" )
+					set( _done 1 )
+				endif()
+
+				if( EC_OS_NAME STREQUAL "linux" )
+					_path_append( CMAKE_INSTALL_RPATH "$ORIGIN/${RPATH_DIR}" )
+					set( _done 1 )
+				endif()
+
+				if( EC_OS_NAME STREQUAL "solaris" )
+					_path_append( CMAKE_INSTALL_RPATH "$ORIGIN/${RPATH_DIR}" )
+					set( _done 1 )
+				endif()
+
+				# fallback
+
+				if( NOT _done )
+					_path_append( CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${RPATH_DIR}" )
+				endif()
+
+			endif()
+
+     endif()
+
+   endforeach()
+
+endmacro( ecbuild_append_to_rpath )
diff --git a/cmake/ecbuild_check_c_source.cmake b/cmake/ecbuild_check_c_source.cmake
new file mode 100644
index 0000000..397a18f
--- /dev/null
+++ b/cmake/ecbuild_check_c_source.cmake
@@ -0,0 +1,146 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro that runs the given C code and returns its output
+
+macro( ecbuild_check_c_source_return SOURCE )
+
+    set( options )
+    set( single_value_args VAR  OUTPUT )
+    set( multi_value_args  INCLUDES LIBS DEFINITIONS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_check_c_source_return(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_VAR OR NOT _PAR_OUTPUT )
+      message(FATAL_ERROR "The call to ecbuild_check_c_source_return() doesn't specify either SOURCE, VAR or OUTPUT")
+    endif()
+
+
+    if( NOT DEFINED ${_PAR_VAR} )
+
+        set(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${_PAR_VAR} ${CMAKE_REQUIRED_FLAGS}")
+
+        set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
+        if( CMAKE_REQUIRED_LIBRARIES )
+            list( APPEND __add_libs ${CMAKE_REQUIRED_LIBRARIES} )
+        endif()
+        if( _PAR_LIBS )
+            list( APPEND __add_libs ${_PAR_LIBS} )
+        endif()
+        if( __add_libs )
+            set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${__add_libs}")
+        endif()
+
+        set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
+        if( CMAKE_REQUIRED_INCLUDES )
+            list( APPEND __add_incs ${CMAKE_REQUIRED_INCLUDES} )
+        endif()
+        if( _PAR_INCLUDES )
+            list( APPEND __add_incs ${_PAR_INCLUDES} )
+        endif()
+        if( __add_libs )
+            set(CHECK_C_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}.c" "${SOURCE}\n" )
+
+        message( STATUS "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}.c
+          COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+          CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+          -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+          "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
+          "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
+          COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
+          RUN_OUTPUT_VARIABLE     run_OUTPUT )
+    
+        # if it did not compile make the return value fail code of 1
+        if( NOT ${_PAR_VAR}_COMPILED )
+          set( ${_PAR_VAR}_EXITCODE 1 )
+        endif()
+    
+        # if the return value was 0 then it worked
+        if("${${_PAR_VAR}_EXITCODE}" EQUAL 0)
+    
+          message(STATUS "Performing Test ${_PAR_VAR} - Success")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+            "Performing C SOURCE FILE Test ${_PAR_VAR} succeded with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C SOURCE FILE Run ${_PAR_VAR} succeded with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_PAR_VAR}}\n"
+            "Source file was:\n${SOURCE}\n")
+
+          set( ${_PAR_VAR}     1              CACHE INTERNAL "Test ${_PAR_VAR}")
+          set( ${_PAR_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_PAR_VAR} output")
+    
+        else()
+    
+          if(CMAKE_CROSSCOMPILING AND "${${_PAR_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+            set(${_PAR_VAR} "${${_PAR_VAR}_EXITCODE}")
+            set(${OUTPUT} "")
+          else()
+            set(${_PAR_VAR} "" CACHE INTERNAL "Test ${_PAR_VAR}")
+            set(${_PAR_OUTPUT} "" CACHE INTERNAL "Test ${_PAR_VAR} output")
+          endif()
+    
+          message(STATUS "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"
+            "${compile_OUTPUT}\n" 
+            "Performing C 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")
+        endif()
+    
+    endif()
+
+endmacro()
+
+##############################################################################
+# macro that only adds a c flag if compiler supports it
+
+macro( cmake_add_c_flags m_c_flags )
+
+  set( options )
+  set( single_value_args BUILD )
+  set( multi_value_args )
+
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if( NOT DEFINED N_CFLAG )
+    set( N_CFLAG 0 )
+  endif()
+
+  math( EXPR N_CFLAG '${N_CFLAG}+1' )
+
+  check_c_compiler_flag( ${m_c_flags} C_FLAG_TEST_${N_CFLAG} )
+
+  if( C_FLAG_TEST_${N_CFLAG} )
+    if( _PAR_BUILD )
+      set( CMAKE_C_FLAGS_${_PAR_BUILD} "${CMAKE_C_FLAGS_${_PAR_BUILD}} ${m_c_flags}" )
+    else()
+      set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${m_c_flags}" )
+      # message( STATUS "C FLAG [${m_c_flags}] added" )
+    endif()
+  else()
+	message( WARNING "Unrecognised C flag [${m_c_flags}] -- skipping" )
+  endif()
+
+endmacro()
+
diff --git a/cmake/ecbuild_check_compiler.cmake b/cmake/ecbuild_check_compiler.cmake
new file mode 100644
index 0000000..8a7b46d
--- /dev/null
+++ b/cmake/ecbuild_check_compiler.cmake
@@ -0,0 +1,123 @@
+# (C) Copyright 1996-2014 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.
+
+###################################################################################################
+# enable C to use in system introspection
+
+if( NOT CMAKE_C_COMPILER_LOADED AND ENABLE_OS_TESTS )
+	enable_language( C )
+endif()
+
+############################################################################################
+# try to get compiler version if cmake did not
+
+if( NOT CMAKE_C_COMPILER_VERSION )
+
+    set( EC_COMPILER_VERSION "?.?" )
+
+    if( CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Intel" )
+        exec_program( ${CMAKE_C_COMPILER}
+                      ARGS ${CMAKE_C_COMPILER_ARG1} -dumpversion
+                      OUTPUT_VARIABLE EC_COMPILER_VERSION )
+
+        string(REGEX REPLACE "([0-9])\\.([0-9])(\\.([0-9]))?" "\\1.\\2"  EC_COMPILER_VERSION ${EC_COMPILER_VERSION} )
+    endif()
+
+    if( CMAKE_C_COMPILER_ID MATCHES "Clang" )
+        exec_program( ${CMAKE_C_COMPILER}
+                      ARGS ${CMAKE_C_COMPILER_ARG1} --version
+                      OUTPUT_VARIABLE EC_COMPILER_VERSION )
+
+        string(REGEX REPLACE ".*clang version ([0-9])\\.([0-9])(\\.([0-9]))?.*" "\\1.\\2" EC_COMPILER_VERSION ${EC_COMPILER_VERSION} )
+    endif()
+
+    if( CMAKE_C_COMPILER_ID MATCHES "SunPro" )
+        exec_program( ${CMAKE_C_COMPILER}
+                      ARGS ${CMAKE_C_COMPILER_ARG1} -V
+                      OUTPUT_VARIABLE EC_COMPILER_VERSION )
+
+        string(REGEX REPLACE ".*([0-9]+)\\.([0-9]+).*" "\\1.\\2" EC_COMPILER_VERSION ${EC_COMPILER_VERSION} )
+    endif()
+
+    if( CMAKE_C_COMPILER_ID MATCHES "XL" )
+        exec_program( ${CMAKE_C_COMPILER}
+                      ARGS ${CMAKE_C_COMPILER_ARG1} -qversion
+                      OUTPUT_VARIABLE EC_COMPILER_VERSION )
+
+        string(REGEX REPLACE ".*V([0-9]+)\\.([0-9]+).*" "\\1.\\2" EC_COMPILER_VERSION ${EC_COMPILER_VERSION} )
+
+    endif()
+
+    if( NOT EC_COMPILER_VERSION STREQUAL "?.?" )
+        set(CMAKE_C_COMPILER_VERSION "${EC_COMPILER_VERSION}" )
+    endif()
+
+endif()
+
+############################################################################################
+# c compiler tests
+
+if( CMAKE_C_COMPILER_LOADED )
+
+	check_c_source_compiles(
+		  " typedef int foo_t;
+			static inline foo_t static_foo(){return 0;}
+			foo_t foo(){return 0;}
+			int main(int argc, char *argv[]){return 0;}
+		  " EC_HAVE_C_INLINE )
+
+endif()
+
+############################################################################################
+# c++ compiler tests
+
+if( CMAKE_CXX_COMPILER_LOADED )
+
+    # check for __FUNCTION__
+	check_cxx_source_compiles( "#include <iostream>\nint main(int argc, char* argv[]) { std::cout << __FUNCTION__ << std::endl; }"
+		EC_HAVE_FUNCTION_DEF )
+
+    # check for c++ abi, usually present in GNU compilers
+	check_cxx_source_compiles( "#include <cxxabi.h>\n int main() { char * type; int status; char * r = abi::__cxa_demangle(type, 0, 0, &status); }"
+		EC_HAVE_CXXABI_H )
+
+    # check for bool
+	check_cxx_source_compiles( "int main() { bool aflag = true; }"
+		EC_HAVE_CXX_BOOL )
+
+    # check for sstream
+	check_cxx_source_compiles( "#include <sstream>\nint main() { std::stringstream s; }"
+		EC_HAVE_CXX_SSTREAM )
+
+endif()
+
+############################################################################################
+# enable warnings
+
+if( CMAKE_COMPILER_IS_GNUCC )
+
+    cmake_add_c_flags("-pipe") # use pipe for faster compilation
+
+    if( ENABLE_WARNINGS )
+        cmake_add_c_flags("-Wall")
+        #    cmake_add_c_flags("-Wextra")
+    endif()
+
+endif()
+
+if( CMAKE_COMPILER_IS_GNUCXX )
+
+   cmake_add_cxx_flags("-pipe") # use pipe for faster compilation
+
+    if( ENABLE_WARNINGS )
+        cmake_add_cxx_flags("-Wall")
+        #    cmake_add_cxx_flags("-Wextra")
+    endif()
+
+endif()
+
diff --git a/cmake/ecbuild_check_cxx11.cmake b/cmake/ecbuild_check_cxx11.cmake
new file mode 100644
index 0000000..8ab084a
--- /dev/null
+++ b/cmake/ecbuild_check_cxx11.cmake
@@ -0,0 +1,67 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to check for cxx11 features
+# uses macros from the project github.com/UCL/GreatCMakeCookOff
+
+function( ecbuild_check_cxx11 )
+
+	# parse parameters
+
+	set( options PRINT )
+	set( single_value_args FEATURES REQUIRED )
+	set( multi_value_args  )
+
+	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+	if(_PAR_UNPARSED_ARGUMENTS)
+		message(FATAL_ERROR "Unknown keywords given to ecbuild_check_cxx11(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+	endif()
+
+	include( ${ECBUILD_MACROS_DIR}/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake )
+
+	cxx11_find_all_features( ALL_FEATURES ) # list all available features to check
+
+	if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then searhc for all features
+
+		cxx11_feature_check()
+
+	else()
+
+		foreach( _f ${_p_FEATURES} )
+			cxx11_feature_check( ${_f} )
+		endforeach()
+
+		foreach( _f ${_p_REQUIRED} )
+			cxx11_feature_check( REQUIRED ${_f} )
+		endforeach()
+
+	endif()
+
+	foreach( f ${ALL_FEATURES} )
+		# message( "HAS_CXX11_${FEAT}" )
+		string( TOUPPER ${f} FEAT )
+		if( HAS_CXX11_${FEAT} )
+		   list( APPEND CXX11_SUPPORTED_FEATURES ${f} )
+		else()
+		   list( APPEND CXX11_NOT_SUPPORTED_FEATURES ${f} )
+		endif()
+	endforeach()
+
+	set( CXX11_SUPPORTED_FEATURES     ${CXX11_SUPPORTED_FEATURES}     PARENT_SCOPE )
+	set( CXX11_NOT_SUPPORTED_FEATURES ${CXX11_NOT_SUPPORTED_FEATURES} PARENT_SCOPE )
+
+	if( _p_PRINT )
+		if( CXX11_SUPPORTED_FEATURES )
+			join( CXX11_SUPPORTED_FEATURES " " CXX11_SUPPORTED_FEATURES_STR )
+			message( STATUS "Found C++11 features: ${CXX11_SUPPORTED_FEATURES_STR}" )
+		endif()
+	endif()
+
+endfunction( ecbuild_check_cxx11 )
diff --git a/cmake/ecbuild_check_cxx_source.cmake b/cmake/ecbuild_check_cxx_source.cmake
new file mode 100644
index 0000000..a6ab49e
--- /dev/null
+++ b/cmake/ecbuild_check_cxx_source.cmake
@@ -0,0 +1,154 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro that runs the given C++ code and returns its output
+
+macro( ecbuild_check_cxx_source_return SOURCE )
+
+    set( options )
+    set( single_value_args VAR  OUTPUT )
+    set( multi_value_args  INCLUDES LIBS DEFINITIONS )
+
+    cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_p_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_check_cxx_source_return(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _p_VAR OR NOT _p_OUTPUT )
+      message(FATAL_ERROR "The call to ecbuild_check_cxx_source_return() doesn't specify either SOURCE, VAR or OUTPUT")
+    endif()
+
+    set( _msg "Testing ${_p_VAR}:" )
+
+    if( NOT DEFINED ${_p_VAR} )
+
+        set(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${_p_VAR} ${CMAKE_REQUIRED_FLAGS}")
+
+        set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES)
+        if(CMAKE_REQUIRED_LIBRARIES)
+            list( APPEND __add_libs ${CMAKE_REQUIRED_LIBRARIES} )
+        endif()
+        if( _p_LIBS )
+            list( APPEND __add_libs ${_p_LIBS} )
+        endif()
+        if( __add_libs )
+            set(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${__add_libs}")
+        endif()
+
+        set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES)
+        if(CMAKE_REQUIRED_INCLUDES)
+            list( APPEND __add_incs ${CMAKE_REQUIRED_INCLUDES} )
+        endif()
+        if( _p_INCLUDES )
+            list( APPEND __add_incs ${_p_INCLUDES} )
+        endif()
+        if( __add_libs )
+            set(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
+        endif()
+    
+        # write the source file
+    
+        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_p_VAR}.cxx" "${SOURCE}\n" )
+
+        message( STATUS "${_msg}" )
+        try_run( ${_p_VAR}_EXITCODE ${_p_VAR}_COMPILED
+          ${CMAKE_BINARY_DIR}
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_p_VAR}.cxx
+          COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+          CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+          -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+          "${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
+          "${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
+          COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
+          RUN_OUTPUT_VARIABLE     run_OUTPUT )
+   
+	  # debug_var( ${_p_VAR}_COMPILED )
+	  # debug_var( ${_p_VAR}_EXITCODE )
+
+        # if it did not compile make the return value fail code of 1
+
+        if( NOT ${_p_VAR}_COMPILED )
+          message( STATUS "${_msg} failed to compile" )
+        endif()
+
+        if( "${${_p_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN" )
+          message( STATUS "${_msg} failed to run" )
+        endif()
+
+        # if the return value was 0 then it worked
+        if( ${_p_VAR}_COMPILED AND "${${_p_VAR}_EXITCODE}" EQUAL 0 )
+    
+          message(STATUS "${_msg} Success")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+            "Performing C++ SOURCE FILE Test ${_p_VAR} succeded with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C++ SOURCE FILE Run ${_p_VAR} succeded with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_p_VAR}}\n"
+            "Source file was:\n${SOURCE}\n")
+
+          set( ${_p_VAR}     1              CACHE INTERNAL "Test ${_p_VAR}")
+          set( ${_p_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_p_VAR} output")
+    
+        else()
+    
+          if(CMAKE_CROSSCOMPILING AND "${${_p_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+            set(${_p_VAR} "${${_p_VAR}_EXITCODE}")
+            set(${OUTPUT} "")
+          else()
+            set(${_p_VAR} "" CACHE INTERNAL "Test ${_p_VAR}")
+            set(${_p_OUTPUT} "" CACHE INTERNAL "Test ${_p_VAR} output")
+          endif()
+    
+          message(STATUS "Test ${_p_VAR} - Failed")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
+            "Performing C++ SOURCE FILE Test ${_p_VAR} failed with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing C++ SOURCE FILE Run ${_p_VAR} failed with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_p_VAR}_EXITCODE}\n"
+            "Source file was:\n${SOURCE}\n")
+        endif()
+    
+    endif()
+
+endmacro()
+
+##############################################################################
+# macro that only adds a cxx flag if compiler supports it
+
+macro( cmake_add_cxx_flags m_cxx_flags )
+
+  set( options )
+  set( single_value_args BUILD )
+  set( multi_value_args )
+
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if( NOT DEFINED N_CXXFLAG )
+    set( N_CXXFLAG 0 )
+  endif()
+
+  math( EXPR N_CXXFLAG '${N_CXXFLAG}+1' )
+
+  check_cxx_compiler_flag( ${m_cxx_flags} CXX_FLAG_TEST_${N_CXXFLAG} )
+
+  if( CXX_FLAG_TEST_${N_CXXFLAG} )
+    if( _PAR_BUILD )
+      set( CMAKE_CXX_FLAGS_${_PAR_BUILD} "${CMAKE_CXX_FLAGS_${_PAR_BUILD}} ${m_cxx_flags}" )
+    else()
+      set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${m_cxx_flags}" )
+      # message( STATUS "C++ FLAG [${m_cxx_flags}] added" )
+    endif()
+  else()
+	message( STATUS "Unrecognised CXX flag [${m_cxx_flags}] -- skipping" )
+  endif()
+
+endmacro()
diff --git a/cmake/ecbuild_check_fortran_source.cmake b/cmake/ecbuild_check_fortran_source.cmake
new file mode 100644
index 0000000..ff2212a
--- /dev/null
+++ b/cmake/ecbuild_check_fortran_source.cmake
@@ -0,0 +1,148 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro that runs the given Fortran code and returns its output
+
+macro( ecbuild_check_fortran_source_return SOURCE )
+
+    message( WARNING "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 )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_check_fortran_source_return(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_VAR OR NOT _PAR_OUTPUT )
+      message(FATAL_ERROR "The call to ecbuild_check_fortran_source_return() doesn't specify either SOURCE, VAR or OUTPUT")
+    endif()
+
+
+    if( NOT DEFINED ${_PAR_VAR} )
+
+        set(MACRO_CHECK_FUNCTION_DEFINITIONS "-D${_PAR_VAR} ${CMAKE_REQUIRED_FLAGS}")
+
+        set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES)
+        if( CMAKE_REQUIRED_LIBRARIES )
+            list( APPEND __add_libs ${CMAKE_REQUIRED_LIBRARIES} )
+        endif()
+        if( _PAR_LIBS )
+            list( APPEND __add_libs ${_PAR_LIBS} )
+        endif()
+        if( __add_libs )
+            set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES "-DLINK_LIBRARIES:STRING=${__add_libs}")
+        endif()
+
+        set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES)
+        if( CMAKE_REQUIRED_INCLUDES )
+            list( APPEND __add_incs ${CMAKE_REQUIRED_INCLUDES} )
+        endif()
+        if( _PAR_INCLUDES )
+            list( APPEND __add_incs ${_PAR_INCLUDES} )
+        endif()
+        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" )
+
+        message( STATUS "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
+          COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+          CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
+          -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
+          "${CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES}"
+          "${CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES}"
+          COMPILE_OUTPUT_VARIABLE compile_OUTPUT 
+          RUN_OUTPUT_VARIABLE     run_OUTPUT )
+    
+        # if it did not compile make the return value fail code of 1
+        if( NOT ${_PAR_VAR}_COMPILED )
+          set( ${_PAR_VAR}_EXITCODE 1 )
+        endif()
+    
+        # if the return value was 0 then it worked
+        if("${${_PAR_VAR}_EXITCODE}" EQUAL 0)
+    
+          message(STATUS "Performing Test ${_PAR_VAR} - Success")
+          file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
+            "Performing Fortran SOURCE FILE Test ${_PAR_VAR} succeded with the following compile output:\n"
+            "${compile_OUTPUT}\n" 
+            "Performing Fortran SOURCE FILE Run ${_PAR_VAR} succeded with the following run output:\n"
+            "${run_OUTPUT}\n" 
+            "Return value: ${${_PAR_VAR}}\n"
+            "Source file was:\n${SOURCE}\n")
+
+          set( ${_PAR_VAR}     1              CACHE INTERNAL "Test ${_PAR_VAR}")
+          set( ${_PAR_OUTPUT} "${run_OUTPUT}" CACHE INTERNAL "Test ${_PAR_VAR} output")
+    
+        else()
+    
+          if(CMAKE_CROSSCOMPILING AND "${${_PAR_VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
+            set(${_PAR_VAR} "${${_PAR_VAR}_EXITCODE}")
+            set(${OUTPUT} "")
+          else()
+            set(${_PAR_VAR} "" CACHE INTERNAL "Test ${_PAR_VAR}")
+            set(${_PAR_OUTPUT} "" CACHE INTERNAL "Test ${_PAR_VAR} output")
+          endif()
+    
+          message(STATUS "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"
+            "${compile_OUTPUT}\n" 
+            "Performing C 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")
+        endif()
+    
+    endif()
+
+endmacro()
+
+##############################################################################
+# macro that only adds a Fortran flag if compiler supports it
+
+include( CheckFortranCompilerFlag )
+macro( cmake_add_fortran_flags m_fortran_flags )
+
+  set( options )
+  set( single_value_args BUILD )
+  set( multi_value_args )
+
+  cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if( NOT DEFINED N_FortranFLAG )
+    set( N_FortranFLAG 0 )
+  endif()
+
+  math( EXPR N_FortranFLAG '${N_FortranFLAG}+1' )
+
+  check_fortran_compiler_flag( ${m_fortran_flags} Fortran_FLAG_TEST_${N_FortranFLAG} )
+
+  if( Fortran_FLAG_TEST_${N_FortranFLAG} )
+    if( _PAR_BUILD )
+      set( CMAKE_Fortran_FLAGS_${_PAR_BUILD} "${CMAKE_Fortran_FLAGS_${_PAR_BUILD}} ${m_fortran_flags}" )
+    else()
+      set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${m_fortran_flags}" )
+      # message( STATUS "Fortran FLAG [${m_fortran_flags}] added" )
+    endif()
+  else()
+    message( STATUS "Unrecognised Fortran flag [${m_fortran_flags}] -- skipping" )
+  endif()
+
+endmacro()
+
diff --git a/cmake/ecbuild_check_functions.cmake b/cmake/ecbuild_check_functions.cmake
new file mode 100644
index 0000000..4741b88
--- /dev/null
+++ b/cmake/ecbuild_check_functions.cmake
@@ -0,0 +1,124 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# os capability checks
+
+if( ENABLE_OS_FUNCTIONS_TEST )
+    
+    ### symbol checks ##################
+
+    check_symbol_exists( fseek        "stdio.h"                         EC_HAVE_FSEEK  )
+    check_symbol_exists( fseeko       "stdio.h"                         EC_HAVE_FSEEKO )
+    check_symbol_exists( ftello       "stdio.h"                         EC_HAVE_FTELLO )
+    check_symbol_exists( lseek        "sys/types.h;unistd.h"            EC_HAVE_LSEEK  )
+    check_symbol_exists( ftruncate    "sys/types.h;unistd.h"            EC_HAVE_FTRUNCATE  )
+    check_symbol_exists( open         "sys/types.h;sys/stat.h;fcntl.h"  EC_HAVE_OPEN   )
+    check_symbol_exists( fopen        "stdio.h"                         EC_HAVE_FOPEN  )
+    check_symbol_exists( flock        "sys/file.h"                      EC_HAVE_FLOCK  )
+    check_symbol_exists( mmap         "sys/mman.h"                      EC_HAVE_MMAP   )
+    
+    check_symbol_exists( posix_memalign "stdlib.h"                      EC_HAVE_POSIX_MEMALIGN )
+    
+    check_symbol_exists( F_GETLK      "fcntl.h"                         EC_HAVE_F_GETLK  )
+    check_symbol_exists( F_SETLK      "fcntl.h"                         EC_HAVE_F_SETLK  )
+    check_symbol_exists( F_SETLKW     "fcntl.h"                         EC_HAVE_F_SETLKW  )
+     
+    check_symbol_exists( F_GETLK64     "fcntl.h"                        EC_HAVE_F_GETLK64  )
+    check_symbol_exists( F_SETLK64     "fcntl.h"                        EC_HAVE_F_SETLK64  )
+    check_symbol_exists( F_SETLKW64    "fcntl.h"                        EC_HAVE_F_SETLKW64  )
+    
+    check_symbol_exists( MAP_ANONYMOUS "sys/mman.h"                     EC_HAVE_MAP_ANONYMOUS )
+    check_symbol_exists( MAP_ANON      "sys/mman.h"                     EC_HAVE_MAP_ANON )
+
+    ### include files checks ##################
+
+    check_include_files( assert.h       EC_HAVE_ASSERT_H      )
+    check_include_files( stdlib.h       EC_HAVE_STDLIB_H      )
+    check_include_files( unistd.h       EC_HAVE_UNISTD_H      )
+    check_include_files( string.h       EC_HAVE_STRING_H      )
+    check_include_files( strings.h      EC_HAVE_STRINGS_H     )
+    check_include_files( sys/stat.h     EC_HAVE_SYS_STAT_H    )
+    check_include_files( sys/time.h     EC_HAVE_SYS_TIME_H    )
+    check_include_files( sys/types.h    EC_HAVE_SYS_TYPES_H   )
+    check_include_files( malloc.h       EC_HAVE_MALLOC_H      )
+    check_include_files( sys/malloc.h   EC_HAVE_SYS_MALLOC_H  )
+    
+    check_include_files("sys/param.h;sys/mount.h" EC_HAVE_SYS_MOUNT_H )
+    check_include_files("sys/vfs.h"               EC_HAVE_SYS_VFS_H )
+
+    ### capability checks ##################
+
+    # test off_t
+    check_c_source_compiles( "#include <sys/types.h>\nint main(){ off_t l=0; return 0;}\n" EC_HAVE_OFFT )
+    # test off64_t
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <stdio.h>\n#include <sys/types.h>\nint main(){ off64_t l=0; return 0;}\n" EC_HAVE_OFF64T  )
+    # test struct stat
+    check_c_source_compiles( "#include <sys/stat.h>\nint main(){ struct stat s; return 0; }"   EC_HAVE_STRUCT_STAT )
+    # test struct stat64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/stat.h>\nint main(){ struct stat64 s; return 0; }" EC_HAVE_STRUCT_STAT64 )
+    # test stat
+    check_c_source_compiles( "#include <sys/stat.h>\nint main(){ struct stat s;	stat(\"\",&s); return 0; }"    EC_HAVE_STAT )
+    # test stat64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/stat.h>\nint main(){ struct stat64 s; stat64(\"\",&s); return 0; }"  EC_HAVE_STAT64 )
+    # test fstat
+    check_c_source_compiles( "#include <sys/stat.h>\nint main(){ struct stat s; fstat(1,&s); return 0; }" EC_HAVE_FSTAT )
+    # test fstat64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/stat.h>\nint main(){ struct stat64 s; fstat64(1,&s); return 0; }" EC_HAVE_FSTAT64 )
+    # test fseeko64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <stdio.h>\n#include <sys/types.h>\nint main(){FILE* file;off64_t l=0;fseeko64(file,l,SEEK_CUR);return 0;}\n" EC_HAVE_FSEEKO64 )
+   
+    # test for ftello64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <stdio.h>\n#include <sys/types.h>\nint main(){FILE* file;off64_t l = ftello64(file);return 0;}\n"  EC_HAVE_FTELLO64 )
+    
+    # test for lseek64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/types.h>\n#include <unistd.h>\nint main(){off64_t h = lseek64(0,0,SEEK_SET);return 0;}\n"  EC_HAVE_LSEEK64 )
+    # test for open64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <fcntl.h>\nint main(){int fd = open64(\"name\",O_RDWR|O_CREAT,0777);return 0;}\n" EC_HAVE_OPEN64 )
+    # test for fopen64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <stdio.h>\nint main(){FILE* file = fopen64(\"name\",\"w\");return 0;}\n"  EC_HAVE_FOPEN64 )
+    # test for ftruncate64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <unistd.h>\n#include <sys/types.h>\nint main(){ftruncate64(0,(off64_t)0);return 0;}\n" EC_HAVE_FTRUNCATE64 )
+    # test for flock64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <fcntl.h>\nint main(){struct flock64 l;return 0;}\n" EC_HAVE_FLOCK64 )
+    # test for mmap64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/mman.h>\nint main(){void* addr = mmap64(0,10,PROT_READ|PROT_WRITE,MAP_PRIVATE,10,0); return 0;}\n" EC_HAVE_MMAP64 )
+    # test for struct statvfs
+    check_c_source_compiles( "#include <sys/statvfs.h>\nint main(){ struct statvfs v; }" EC_HAVE_STRUCT_STATVFS )
+    # test for struct statvfs64
+    check_c_source_compiles( "#define _LARGEFILE64_SOURCE\n#include <sys/statvfs.h>\nint main(){ struct statvfs64 v; }" EC_HAVE_STRUCT_STATVFS64 )
+        
+    # test for fsync
+    check_symbol_exists(fsync "unistd.h" EC_HAVE_FSYNC)
+    # test for fdatasync
+    check_symbol_exists(fdatasync "unistd.h" EC_HAVE_FDATASYNC)
+    # test for dirfd
+    check_c_source_compiles( "#include <sys/types.h>\n#include <dirent.h>\nint main(){ DIR *dirp; int i = dirfd(dirp); }\n" EC_HAVE_DIRFD )
+    # test for sys/proc.h
+    check_c_source_compiles( "#include <sys/proc.h>\nint main(){ return 0; }\n" EC_HAVE_SYSPROC )
+    # test for procfs
+    check_c_source_compiles( "#include <sys/procfs.h>\nint main(){ return 0; }\n" EC_HAVE_SYSPROCFS )
+    # test for backtrace
+    check_c_source_compiles( "#include <unistd.h>\n#include <execinfo.h>\n int main(){ void ** buffer; int i = backtrace(buffer, 256); }\n" EC_HAVE_EXECINFO_BACKTRACE )
+           
+    #### reentrant funtions support  #############
+
+    # test for gmtime_r
+    check_c_source_compiles( "#include <time.h>\nint main(){ time_t now; time(&now); struct tm t; gmtime_r(&now,&t); }\n" EC_HAVE_GMTIME_R )
+    # test for getpwuid_r
+    check_c_source_compiles( "#include <unistd.h>\n#include <sys/types.h>\n#include <pwd.h>\nint main(){ char buf[4096]; struct passwd pwbuf; struct passwd *pwbufp = 0; getpwuid_r(getuid(), &pwbuf, buf, sizeof(buf), &pwbufp); }\n" EC_HAVE_GETPWUID_R )
+    # test for getpwnam_r
+    check_c_source_compiles( "#include <sys/types.h>\n#include <pwd.h>\nint main(){ struct passwd p; char line[1024]; int n = getpwnam_r(\"user\",&p,line,sizeof(line),0); }\n" EC_HAVE_GETPWNAM_R )    
+    # test for readdir_r
+    check_c_source_compiles( "#include <dirent.h>\nint main(){ DIR *dirp; struct dirent *entry; struct dirent **result; int i = readdir_r(dirp, entry, result); }\n" EC_HAVE_READDIR_R )
+    # test for gethostbyname_r
+    check_c_source_compiles( "#include <netdb.h>\nint main(){ const char *name; struct hostent *ret; char *buf; struct hostent **result; size_t buflen; int *h_errnop; int i = gethostbyname_r(name,ret,buf,buflen,result,h_errnop); }\n" EC_HAVE_GETHOSTBYNAME_R )
+
+endif()
+
+
diff --git a/cmake/ecbuild_check_os.cmake b/cmake/ecbuild_check_os.cmake
new file mode 100644
index 0000000..6c9d524
--- /dev/null
+++ b/cmake/ecbuild_check_os.cmake
@@ -0,0 +1,353 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# check size of pointer
+
+if( NOT DEFINED CMAKE_SIZEOF_VOID_P)
+	message( FATAL_ERROR "CMake could not check sizeof void* to infer addressing mode of the OS -- try to upgrade to a more recent CMake" )
+endif()
+
+math( EXPR EC_OS_BITS "${CMAKE_SIZEOF_VOID_P} * 8" )
+
+# we only support 32 and 64 bit operating systems
+if( NOT EC_OS_BITS EQUAL "32" AND NOT EC_OS_BITS EQUAL "64" )
+	message( FATAL_ERROR "operating system ${CMAKE_SYSTEM} ${EC_OS_BITS} bits -- ecbuild only supports 32 or 64 bit OS's" )
+endif()
+
+############################################################################################
+# For 64 bit architectures enable PIC (position-independent code)
+
+if( ${EC_OS_BITS} EQUAL 64 )
+	set( CMAKE_POSITION_INDEPENDENT_CODE ON )
+endif()
+
+############################################################################################
+# check architecture architecture
+
+if( ENABLE_OS_TYPES_TEST )
+
+	set( EC_SIZEOF_PTR ${CMAKE_SIZEOF_VOID_P} )
+
+	check_type_size( char           EC_SIZEOF_CHAR        )
+	check_type_size( short          EC_SIZEOF_SHORT       )
+	check_type_size( int            EC_SIZEOF_INT         )
+	check_type_size( long           EC_SIZEOF_LONG        )
+	check_type_size( "long long"    EC_SIZEOF_LONG_LONG   )
+	check_type_size( float          EC_SIZEOF_FLOAT       )
+	check_type_size( double         EC_SIZEOF_DOUBLE      )
+	check_type_size( "long double"  EC_SIZEOF_LONG_DOUBLE )
+	check_type_size( size_t         EC_SIZEOF_SIZE_T      )
+	check_type_size( ssize_t        EC_SIZEOF_SSIZE_T     )
+	check_type_size( off_t          EC_SIZEOF_OFF_T       )
+
+	message( STATUS "sizeof void*  [${EC_SIZEOF_PTR}]" )
+	message( STATUS "sizeof off_t  [${EC_SIZEOF_OFF_T}]" )
+	message( STATUS "sizeof int    [${EC_SIZEOF_INT}]" )
+	message( STATUS "sizeof short  [${EC_SIZEOF_SHORT}]" )
+	message( STATUS "sizeof long   [${EC_SIZEOF_LONG}]" )
+	message( STATUS "sizeof size_t [${EC_SIZEOF_SIZE_T}]" )
+	message( STATUS "sizeof float  [${EC_SIZEOF_FLOAT}]" )
+	message( STATUS "sizeof double [${EC_SIZEOF_DOUBLE}]" )
+	message( STATUS "sizeof long long   [${EC_SIZEOF_LONG_LONG}]" )
+	message( STATUS "sizeof long double [${EC_SIZEOF_LONG_DOUBLE}]" )
+
+#	message( STATUS "system sizeof :" )
+#	message( STATUS "  void*  [${EC_SIZEOF_PTR}]  size_t [${EC_SIZEOF_SIZE_T}]  off_t  [${EC_SIZEOF_OFF_T}]   short  [${EC_SIZEOF_SHORT}]" )
+#	message( STATUS "  int    [${EC_SIZEOF_INT}]  long   [${EC_SIZEOF_LONG}]  long long   [${EC_SIZEOF_LONG_LONG}]" )
+#	message( STATUS "  float  [${EC_SIZEOF_FLOAT}]  double [${EC_SIZEOF_DOUBLE}]  long double [${EC_SIZEOF_LONG_DOUBLE}]" )
+
+endif()
+
+############################################################################################
+# check for large file support
+
+# ensure we use 64bit access to files even on 32bit os -- aka Large File Support
+# by making off_t 64bit and stat behave as stat64
+
+if( ENABLE_LARGE_FILE_SUPPORT )
+
+	check_type_size( off_t EC_SIZEOF_OFF_T )
+
+	if( EC_SIZEOF_OFF_T LESS "8" )
+
+	if( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
+		add_definitions( -D_FILE_OFFSET_BITS=64 )
+	endif()
+
+	if( ${CMAKE_SYSTEM_NAME} MATCHES "AIX" )
+		add_definitions( -D_LARGE_FILES=64 )
+	endif()
+
+	get_directory_property( __compile_defs COMPILE_DEFINITIONS )
+
+	if( __compile_defs )
+		foreach( def ${__compile_defs} )
+			list( APPEND CMAKE_REQUIRED_DEFINITIONS -D${def} )
+		endforeach()
+	endif()
+
+#	ecbuild_check_c_source_return( "#include <stdio.h>\n#include <sys/types.h>\nint main(){printf(\"%ld\",sizeof(off_t));return 0;}"
+#		VAR  check_off_t_final
+#		OUTPUT __sizeof_off_t_final )
+#	if( NOT check_off_t_final OR __sizeof_off_t_final LESS "8" )
+#		message( FATAL_ERROR "operating system ${CMAKE_SYSTEM} ${EC_OS_BITS} bits -- sizeof off_t [${__sizeof_off_t_final}]" )
+#	endif()
+
+	endif()
+
+endif()
+
+############################################################################################
+# check endiness
+
+if( ENABLE_OS_ENDINESS_TEST )
+
+	test_big_endian( _BIG_ENDIAN )
+
+	if( _BIG_ENDIAN )
+		set( EC_BIG_ENDIAN    1 )
+	else()
+		set( EC_LITTLE_ENDIAN 1 )
+	endif()
+
+	check_c_source_runs(
+		 "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;
+		 }" IEEE_BE )
+
+	if( "${IEEE_BE}" STREQUAL "" )
+		set( IEEE_BE 0 CACHE INTERNAL "Test IEEE_BE")
+	endif()
+
+	check_c_source_runs(
+		 "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;
+		 }" IEEE_LE )
+
+	if( "${IEEE_BE}" STREQUAL "" )
+		set( IEEE_LE 0 CACHE INTERNAL "Test IEEE_LE")
+	endif()
+
+	if( EC_BIG_ENDIAN )
+		message( STATUS "system is Big Endian [${EC_BIG_ENDIAN}] IEEE BE [${IEEE_BE}]" )
+	endif()
+	if( EC_LITTLE_ENDIAN )
+		message( STATUS "system is Little Endian [${EC_LITTLE_ENDIAN}] IEEE LE [${IEEE_LE}]" )
+	endif()
+
+endif()
+
+############################################################################################
+# check operating system
+
+set( EC_OS_NAME "UNKNOWN" )
+
+### Unix's -- Proper operating systems
+
+if( UNIX )
+
+	### APPLE ###
+
+	if( APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
+		set( EC_OS_NAME "macosx" )
+	endif()
+
+	### Linux ###
+
+	if( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
+
+		set( EC_OS_NAME "linux" )
+
+		# recent linkers default to --enable-new-dtags
+		# which then adds both RPATH and RUNPATH to executables
+		# thus invalidating RPATH setting, and making LD_LIBRARY_PATH take precedence
+		# to be sure, use tool 'readelf -a <exe> | grep PATH' to see what paths are built-in
+		# see:
+		#  * http://blog.qt.digia.com/blog/2011/10/28/rpath-and-runpath
+		#  * http://www.cmake.org/Wiki/CMake_RPATH_handling
+		#  * man ld
+		#  * http://blog.tremily.us/posts/rpath
+		#  * http://fwarmerdam.blogspot.co.uk/2010/12/rpath-runpath-and-ldlibrarypath.html
+		set(CMAKE_EXE_LINKER_FLAGS     "${CMAKE_EXE_LINKER_FLAGS}    -Wl,--disable-new-dtags")
+		set(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--disable-new-dtags")
+		set(CMAKE_MODULE_LINKER_FLAGS  "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--disable-new-dtags")
+
+	endif()
+
+	### Solaris ###
+
+	if( ${CMAKE_SYSTEM_NAME} MATCHES "SunOS" )
+		set( EC_OS_NAME "solaris" )
+	endif()
+
+	### AIX ###
+
+	if( ${CMAKE_SYSTEM_NAME} MATCHES "AIX" )
+
+		set( EC_OS_NAME "aix" )
+
+		set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -bbigtoc" )
+
+		if( CMAKE_C_COMPILER_ID MATCHES "GNU" )
+			set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker" )
+		endif()
+
+		if( CMAKE_COMPILER_IS_GNUCC )
+			if( EC_OS_BITS EQUAL "64" )
+				cmake_add_c_flags("-maix64")
+			endif()
+			if( EC_OS_BITS EQUAL "32" )
+				cmake_add_c_flags("-maix32")
+			endif()
+		endif()
+
+		if( CMAKE_COMPILER_IS_GNUCXX )
+			if( EC_OS_BITS EQUAL "64" )
+				cmake_add_cxx_flags("-maix64")
+			endif()
+			if( EC_OS_BITS EQUAL "32" )
+				cmake_add_cxx_flags("-maix32")
+			endif()
+		endif()
+
+		if( CMAKE_C_COMPILER_ID MATCHES "XL" )
+
+			cmake_add_c_flags("-qpic=large")
+#            cmake_add_c_flags("-qweaksymbol")
+
+			if(EC_OS_BITS EQUAL "32" )
+				cmake_add_c_flags("-q32")
+			endif()
+
+			if(${CMAKE_BUILD_TYPE} MATCHES "Release" OR ${CMAKE_BUILD_TYPE} MATCHES "Production" )
+					cmake_add_c_flags("-qstrict")
+					cmake_add_c_flags("-qinline")
+			endif()
+
+			if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+					cmake_add_c_flags("-qfullpath")
+					cmake_add_c_flags("-qkeepparm")
+			endif()
+
+		endif()
+
+		if( CMAKE_CXX_COMPILER_ID MATCHES "XL" )
+
+			cmake_add_cxx_flags("-qpic=large")
+			cmake_add_cxx_flags("-bmaxdata:0x40000000")
+			cmake_add_cxx_flags("-qrtti")
+			cmake_add_cxx_flags("-qfuncsect")
+
+#           cmake_add_cxx_flags("-qweaksymbol")
+
+			if(EC_OS_BITS EQUAL "32" )
+				cmake_add_cxx_flags("-q32")
+			endif()
+
+			if(${CMAKE_BUILD_TYPE} MATCHES "Release" OR ${CMAKE_BUILD_TYPE} MATCHES "Production" )
+					cmake_add_cxx_flags("-qstrict")
+					cmake_add_cxx_flags("-qinline")
+			endif()
+
+			if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
+					cmake_add_cxx_flags("-qfullpath")
+					cmake_add_cxx_flags("-qkeepparm")
+			endif()
+
+		endif()
+
+		if( CMAKE_Fortran_COMPILER_ID MATCHES "XL" )
+
+			cmake_add_fortran_flags("-qxflag=dealloc_cfptr")
+			cmake_add_fortran_flags("-qextname")
+			cmake_add_fortran_flags("-qdpc=e")
+			cmake_add_fortran_flags("-bmaxdata:0x40000000")
+			cmake_add_fortran_flags("-bloadmap:loadmap -bmap:loadmap")
+
+			if(EC_OS_BITS EQUAL "32" )
+				cmake_add_fortran_flags("-q32")
+			endif()
+		endif()
+
+	endif()
+
+endif()
+
+### Windows -- are you sure?
+
+if( WIN32 )
+
+	### Cygwin
+
+	if( CYGWIN )
+
+		set( EC_OS_NAME "cygwin" )
+		message( WARNING "Building on Cygwin should work but is untested -- proceed at your own risk" )
+
+	else()
+
+		message( FATAL_ERROR "ecBuild can only build on Windows using Cygwin" )
+
+	endif()
+
+endif()
+
+### final warning / error
+
+if( ${EC_OS_NAME} MATCHES "UNKNOWN" )
+	if( DISABLE_OS_CHECK )
+		message( WARNING "ecBuild is untested for this operating system: [${CMAKE_SYSTEM_NAME}]" )
+	else()
+		message( FATAL_ERROR "ecBuild is untested for this operating system: [${CMAKE_SYSTEM_NAME}]" )
+	endif()
+endif()
+
+
diff --git a/cmake/ecbuild_config.h.in b/cmake/ecbuild_config.h.in
new file mode 100644
index 0000000..37172d5
--- /dev/null
+++ b/cmake/ecbuild_config.h.in
@@ -0,0 +1,168 @@
+/*
+ * (C) Copyright 1996-2014 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 @PROJECT_NAME at _ecbuild_config_h
+#define @PROJECT_NAME at _ecbuild_config_h
+
+/* cpu arch info */
+
+#cmakedefine EC_BIG_ENDIAN       @EC_BIG_ENDIAN@
+#cmakedefine EC_LITTLE_ENDIAN    @EC_LITTLE_ENDIAN@
+
+/* compiler support */
+
+#cmakedefine EC_HAVE_FUNCTION_DEF
+
+/* os capability checks */
+
+/* --- symbols --- */
+
+#cmakedefine EC_HAVE_FSEEK
+#cmakedefine EC_HAVE_FSEEKO
+#cmakedefine EC_HAVE_FTELLO
+#cmakedefine EC_HAVE_LSEEK
+#cmakedefine EC_HAVE_FTRUNCATE
+#cmakedefine EC_HAVE_OPEN
+#cmakedefine EC_HAVE_FOPEN
+#cmakedefine EC_HAVE_FLOCK
+#cmakedefine EC_HAVE_MMAP
+
+#cmakedefine EC_HAVE_POSIX_MEMALIGN
+
+#cmakedefine EC_HAVE_F_GETLK
+#cmakedefine EC_HAVE_F_SETLKW
+#cmakedefine EC_HAVE_F_SETLK
+
+#cmakedefine EC_HAVE_F_GETLK64
+#cmakedefine EC_HAVE_F_SETLKW64
+#cmakedefine EC_HAVE_F_SETLK64
+
+#cmakedefine EC_HAVE_MAP_ANONYMOUS
+#cmakedefine EC_HAVE_MAP_ANON
+
+/* --- include files --- */
+
+#cmakedefine EC_HAVE_ASSERT_H
+#cmakedefine EC_HAVE_STDLIB_H
+#cmakedefine EC_HAVE_UNISTD_H
+#cmakedefine EC_HAVE_STRING_H
+#cmakedefine EC_HAVE_STRINGS_H
+#cmakedefine EC_HAVE_SYS_STAT_H
+#cmakedefine EC_HAVE_SYS_TIME_H
+#cmakedefine EC_HAVE_SYS_TYPES_H
+#cmakedefine EC_HAVE_MALLOC_H
+#cmakedefine EC_HAVE_SYS_MALLOC_H
+
+#cmakedefine EC_HAVE_MALLOC_H
+#cmakedefine EC_HAVE_SYS_MALLOC_H
+
+#cmakedefine EC_HAVE_SYS_MOUNT_H
+#cmakedefine EC_HAVE_SYS_VFS_H
+
+/* --- capabilities --- */
+
+#cmakedefine EC_HAVE_OFFT
+#cmakedefine EC_HAVE_OFF64T
+
+#cmakedefine EC_HAVE_STRUCT_STAT
+#cmakedefine EC_HAVE_STRUCT_STAT64
+#cmakedefine EC_HAVE_STAT
+#cmakedefine EC_HAVE_STAT64
+#cmakedefine EC_HAVE_FSTAT
+#cmakedefine EC_HAVE_FSTAT64
+
+#cmakedefine EC_HAVE_FSEEKO64
+#cmakedefine EC_HAVE_FTELLO64
+#cmakedefine EC_HAVE_LSEEK64
+#cmakedefine EC_HAVE_OPEN64
+#cmakedefine EC_HAVE_FOPEN64
+#cmakedefine EC_HAVE_FTRUNCATE64
+#cmakedefine EC_HAVE_FLOCK64
+#cmakedefine EC_HAVE_MMAP64
+
+#cmakedefine EC_HAVE_STRUCT_STATVFS
+#cmakedefine EC_HAVE_STRUCT_STATVFS64
+#cmakedefine EC_HAVE_STATVFS
+#cmakedefine EC_HAVE_STATVFS64
+
+#cmakedefine EC_HAVE_FSYNC
+#cmakedefine EC_HAVE_FDATASYNC
+#cmakedefine EC_HAVE_DIRFD
+#cmakedefine EC_HAVE_SYSPROC
+#cmakedefine EC_HAVE_SYSPROCFS
+
+#cmakedefine EC_HAVE_EXECINFO_BACKTRACE
+
+/* --- asynchronous IO support --- */
+
+#cmakedefine EC_HAVE_AIOCB
+#cmakedefine EC_HAVE_AIO64CB
+
+/* --- reentrant funtions support --- */
+
+#cmakedefine EC_HAVE_GMTIME_R
+#cmakedefine EC_HAVE_GETPWUID_R
+#cmakedefine EC_HAVE_GETPWNAM_R
+#cmakedefine EC_HAVE_READDIR_R
+#cmakedefine EC_HAVE_GETHOSTBYNAME_R
+
+/* --- c compiler support --- */
+
+#cmakedefine EC_HAVE_C_INLINE
+
+/* --- c++ compiler support --- */
+
+#cmakedefine EC_HAVE_FUNCTION_DEF
+
+#cmakedefine EC_HAVE_CXXABI_H
+#cmakedefine EC_HAVE_CXX_BOOL
+
+#cmakedefine EC_HAVE_CXX_SSTREAM
+
+/* config info */
+
+#define @PNAME at _OS_NAME          "@CMAKE_SYSTEM@"
+#define @PNAME at _OS_BITS          @EC_OS_BITS@
+#define @PNAME at _OS_BITS_STR      "@EC_OS_BITS@"
+#define @PNAME at _OS_STR           "@EC_OS_NAME at .@EC_OS_BITS@"
+#define @PNAME at _OS_VERSION       "@CMAKE_SYSTEM_VERSION@"
+#define @PNAME at _SYS_PROCESSOR    "@CMAKE_SYSTEM_PROCESSOR@"
+
+#define @PNAME at _BUILD_TIMESTAMP  "@EC_BUILD_TIMESTAMP@"
+#define @PNAME at _BUILD_TYPE       "@CMAKE_BUILD_TYPE@"
+
+#define @PNAME at _C_COMPILER_ID      "@CMAKE_C_COMPILER_ID@"
+#define @PNAME at _C_COMPILER_VERSION "@CMAKE_C_COMPILER_VERSION@"
+
+#define @PNAME at _CXX_COMPILER_ID      "@CMAKE_CXX_COMPILER_ID@"
+#define @PNAME at _CXX_COMPILER_VERSION "@CMAKE_CXX_COMPILER_VERSION@"
+
+#define @PNAME at _C_COMPILER       "@CMAKE_C_COMPILER@"
+#define @PNAME at _C_FLAGS          "@EC_C_FLAGS@"
+
+#define @PNAME at _CXX_COMPILER     "@CMAKE_CXX_COMPILER@"
+#define @PNAME at _CXX_FLAGS        "@EC_CXX_FLAGS@"
+
+#cmakedefine EC_HAVE_FORTRAN
+
+#ifdef EC_HAVE_FORTRAN
+
+#define @PNAME at _Fortran_COMPILER_ID      "@CMAKE_Fortran_COMPILER_ID@"
+#define @PNAME at _Fortran_COMPILER_VERSION "@CMAKE_Fortran_COMPILER_VERSION@"
+
+#define @PNAME at _Fortran_COMPILER "@CMAKE_Fortran_COMPILER@"
+#define @PNAME at _Fortran_FLAGS    "@EC_Fortran_FLAGS@"
+
+#endif
+
+#cmakedefine BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY
+#cmakedefine BOOST_UNIT_TEST_FRAMEWORK_LINKED
+
+#endif /* @PROJECT_NAME at _ecbuild_config_h */
diff --git a/cmake/ecbuild_debug_var.cmake b/cmake/ecbuild_debug_var.cmake
new file mode 100644
index 0000000..63a5104
--- /dev/null
+++ b/cmake/ecbuild_debug_var.cmake
@@ -0,0 +1,35 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for exporting a variable to parent scope
+
+macro( set_parent_scope VAR )
+
+	set( ${VAR} ${${VAR}} PARENT_SCOPE )
+
+endmacro( set_parent_scope )
+
+##############################################################################
+# macro for debugging a cmake variable
+
+macro( debug_var VAR )
+
+    message( STATUS "${VAR} [${${VAR}}]" )
+
+endmacro( debug_var )
+
+##############################################################################
+# macro for debugging a environment variable within cmake
+
+macro( debug_env_var VAR )
+
+    message( STATUS "ENV ${VAR} [$ENV{${VAR}}]" )
+
+endmacro( debug_env_var )
+
diff --git a/cmake/ecbuild_declare_project.cmake b/cmake/ecbuild_declare_project.cmake
new file mode 100644
index 0000000..570d04f
--- /dev/null
+++ b/cmake/ecbuild_declare_project.cmake
@@ -0,0 +1,134 @@
+# (C) Copyright 1996-2014 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.
+
+# macro to initialize a project
+
+macro( ecbuild_declare_project )
+
+	string( TOUPPER ${PROJECT_NAME} PNAME )
+
+	# reset the lists of targets (executables, libs, tests & resources)
+
+	set( ${PROJECT_NAME}_ALL_EXES "" CACHE INTERNAL "" )
+	set( ${PROJECT_NAME}_ALL_LIBS "" CACHE INTERNAL "" )
+
+	# if git project get its HEAD SHA1
+	# leave it here so we may use ${PNAME}_GIT_SHA1 on the version file
+
+	if( EXISTS ${PROJECT_SOURCE_DIR}/.git )
+		get_git_head_revision( GIT_REFSPEC ${PNAME}_GIT_SHA1 )
+		if( ${PNAME}_GIT_SHA1 )
+		  string( SUBSTRING "${${PNAME}_GIT_SHA1}" 0 7 ${PNAME}_GIT_SHA1_SHORT )
+#		  debug_var( ${PNAME}_GIT_SHA1 )
+#		  debug_var( ${PNAME}_GIT_SHA1_SHORT )
+        else()
+          message( STATUS "Could not get git-sha1 for project ${PNAME}")
+        endif()
+	endif()
+
+	# read and parse project version file
+	if( EXISTS ${PROJECT_SOURCE_DIR}/VERSION.cmake )
+		include( ${PROJECT_SOURCE_DIR}/VERSION.cmake )
+	else()
+		set( ${PROJECT_NAME}_VERSION_STR "0.0.0" )
+	endif()
+
+	string( REPLACE "." " " _version_list ${${PROJECT_NAME}_VERSION_STR} ) # dots to spaces
+
+	separate_arguments( _version_list )
+
+	list( GET _version_list 0 ${PNAME}_MAJOR_VERSION )
+	list( GET _version_list 1 ${PNAME}_MINOR_VERSION )
+	list( GET _version_list 2 ${PNAME}_PATCH_VERSION )
+
+	# cleanup patch version of any extra qualifiers ( -dev -rc1 ... )
+
+	string( REGEX REPLACE "^([0-9]+).*" "\\1" ${PNAME}_PATCH_VERSION "${${PNAME}_PATCH_VERSION}" )
+
+	set( ${PNAME}_VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}.${${PNAME}_PATCH_VERSION}" )
+
+	set( ${PNAME}_VERSION_STR "${${PROJECT_NAME}_VERSION_STR}" ) # ignore caps
+
+#    debug_var( ${PNAME}_VERSION )
+#    debug_var( ${PNAME}_VERSION_STR )
+#    debug_var( ${PNAME}_MAJOR_VERSION )
+#    debug_var( ${PNAME}_MINOR_VERSION )
+#    debug_var( ${PNAME}_PATCH_VERSION )
+
+	# install dirs for this project
+
+	if( NOT DEFINED INSTALL_BIN_DIR )
+		set( INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
+	endif()
+
+	if( NOT DEFINED INSTALL_LIB_DIR )
+		set( INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
+	endif()
+
+	if( NOT DEFINED INSTALL_INCLUDE_DIR )
+		set( INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
+	endif()
+
+	if( NOT DEFINED INSTALL_DATA_DIR )
+		set( INSTALL_DATA_DIR share/${PROJECT_NAME} CACHE PATH "Installation directory for data files")
+	endif()
+
+	if( NOT DEFINED INSTALL_CMAKE_DIR )
+		set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake CACHE PATH "Installation directory for CMake files")
+	endif()
+
+	# warnings for non-relocatable projects
+
+	foreach( p LIB BIN INCLUDE DATA CMAKE )
+		if( IS_ABSOLUTE ${INSTALL_${p}_DIR} )
+			message( WARNING "Defining INSTALL_${p}_DIR as absolute path '${INSTALL_${p}_DIR}' makes this build non-relocatable, possibly breaking the installation of RPMS and DEB packages" )
+		endif()
+	endforeach()
+
+	# make relative paths absolute ( needed later on ) and cache them ...
+	foreach( p LIB BIN INCLUDE DATA CMAKE )
+
+		set( var INSTALL_${p}_DIR )
+
+		if( NOT IS_ABSOLUTE "${${var}}" )
+			set( ${PNAME}_FULL_INSTALL_${p}_DIR "${CMAKE_INSTALL_PREFIX}/${${var}}" CACHE INTERNAL "${PNAME} ${p} full install path" )
+		else()
+			message( WARNING "Setting an absolute path for ${VAR} in project ${PNAME}, breakes generation of relocatable binary packages (rpm,deb,...)" )
+			set( ${PNAME}_FULL_INSTALL_${p}_DIR "${${var}}" CACHE INTERNAL "${PNAME} ${p} full install path" )
+		endif()
+
+#        debug_var( ${PNAME}_FULL_INSTALL_${p}_DIR )
+
+	endforeach()
+
+	# correctly set CMAKE_INSTALL_RPATH
+
+	if( ENABLE_RPATHS )
+
+		file( RELATIVE_PATH relative_rpath ${${PNAME}_FULL_INSTALL_BIN_DIR} ${${PNAME}_FULL_INSTALL_LIB_DIR} )
+
+#		debug_var( relative_rpath )
+
+		ecbuild_append_to_rpath( ${relative_rpath} )
+
+	endif()
+
+#	debug_var( CMAKE_INSTALL_RPATH )
+
+	# print project header
+
+	message( STATUS "---------------------------------------------------------" )
+
+	if( ${PNAME}_GIT_SHA1_SHORT )
+		message( STATUS "[${PROJECT_NAME}] (${${PNAME}_VERSION_STR}) [${${PNAME}_GIT_SHA1_SHORT}]" )
+	else()
+		message( STATUS "[${PROJECT_NAME}] (${${PNAME}_VERSION_STR})" )
+	endif()
+
+endmacro( ecbuild_declare_project )
+
diff --git a/cmake/ecbuild_define_build_types.cmake b/cmake/ecbuild_define_build_types.cmake
new file mode 100644
index 0000000..9ec2ef0
--- /dev/null
+++ b/cmake/ecbuild_define_build_types.cmake
@@ -0,0 +1,110 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# define a Production build type
+
+# NOTE: gcc does not guarrante that -O3 performs better than -O2
+#       -- it can perform worse due to assembly code bloating.
+#   Moreover for gcc 4.1.2 we found that -O3 remove the parser code generated from Lex/Yacc
+#   and therefore in production mode we downgrade to -O2 if the compiler is GCC (for all versions).
+
+
+if(CMAKE_COMPILER_IS_GNUCXX)
+    set( CMAKE_CXX_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "Flags used by the C++ compiler during Production builds." FORCE )
+else()
+    set( CMAKE_CXX_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Flags used by the C++ compiler during Production builds." FORCE )
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCC)
+    set( CMAKE_C_FLAGS_PRODUCTION "-O2 -g" CACHE STRING "Flags used by the C compiler during Production builds." FORCE )
+else()
+    set( CMAKE_C_FLAGS_PRODUCTION "-O3 -g" CACHE STRING "Flags used by the C compiler during Production builds." FORCE )
+endif()
+
+set( CMAKE_EXE_LINKER_FLAGS_PRODUCTION "" CACHE STRING "Flags used for linking binaries during Production builds." FORCE )
+set( CMAKE_SHARED_LINKER_FLAGS_PRODUCTION "" CACHE STRING "Flags used by the shared libraries linker during Production builds." FORCE )
+set( CMAKE_MODULE_LINKER_FLAGS_PRODUCTION "" CACHE STRING "Flags used by the static libraries linker during Production builds." FORCE )
+
+mark_as_advanced(
+    CMAKE_CXX_FLAGS_PRODUCTION
+    CMAKE_C_FLAGS_PRODUCTION
+    CMAKE_EXE_LINKER_FLAGS_PRODUCTION
+	CMAKE_SHARED_LINKER_FLAGS_PRODUCTION
+	CMAKE_MODULE_LINKER_FLAGS_PRODUCTION )
+
+############################################################################################
+# fixes for specific compilers
+
+### remove -Mipa=fast from PGI compilers in RELEASE mode
+
+if( CMAKE_C_COMPILER_ID STREQUAL "PGI" )
+  set(CMAKE_C_FLAGS_RELEASE "-fast -O3")
+endif()
+
+if( CMAKE_CXX_COMPILER_ID STREQUAL "PGI" )
+  set(CMAKE_CXX_FLAGS_RELEASE "-fast -O3")
+endif()
+
+if( CMAKE_Fortran_COMPILER_ID STREQUAL "PGI" )
+  set(CMAKE_Fortran_FLAGS_RELEASE "-fast -O3")
+endif()
+
+############################################################################################
+# define default build type
+
+set( _BUILD_TYPE_MSG "Build type options are: [ None | Debug | Bit | Production | Release | RelWithDebInfo ]" )
+
+if( NOT ECBUILD_DEFAULT_BUILD_TYPE )
+	set( ECBUILD_DEFAULT_BUILD_TYPE "RelWithDebInfo" )
+endif()
+
+if(NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE ${ECBUILD_DEFAULT_BUILD_TYPE} CACHE STRING  ${_BUILD_TYPE_MSG}  FORCE )
+endif()
+
+# capitalize the build type for easy use with conditionals
+string( TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_CAPS )
+
+# correct capitatlization of the build type
+
+if( CMAKE_BUILD_TYPE_CAPS STREQUAL "NONE" )
+  set(CMAKE_BUILD_TYPE None CACHE STRING ${_BUILD_TYPE_MSG} FORCE )
+endif()
+
+if( CMAKE_BUILD_TYPE_CAPS STREQUAL "DEBUG" )
+  set(CMAKE_BUILD_TYPE Debug CACHE STRING ${_BUILD_TYPE_MSG} FORCE )
+endif()
+
+if( CMAKE_BUILD_TYPE_CAPS STREQUAL "BIT" )
+  set(CMAKE_BUILD_TYPE Bit CACHE STRING ${_BUILD_TYPE_MSG} FORCE )
+endif()
+
+if( CMAKE_BUILD_TYPE_CAPS STREQUAL "PRODUCTION" )
+  set(CMAKE_BUILD_TYPE Production CACHE STRING ${_BUILD_TYPE_MSG} FORCE )
+endif()
+
+if( CMAKE_BUILD_TYPE_CAPS STREQUAL "RELEASE" )
+  set(CMAKE_BUILD_TYPE Release CACHE STRING ${_BUILD_TYPE_MSG} FORCE )
+endif()
+
+if( CMAKE_BUILD_TYPE_CAPS STREQUAL "RELWITHDEBINFO" )
+  set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING ${_BUILD_TYPE_MSG} FORCE )
+endif()
+
+# fail if build type is not one of the defined ones
+if( NOT CMAKE_BUILD_TYPE MATCHES "None"  AND
+	NOT CMAKE_BUILD_TYPE MATCHES "Debug" AND
+	NOT CMAKE_BUILD_TYPE MATCHES "Bit" AND
+	NOT CMAKE_BUILD_TYPE MATCHES "Production" AND
+    NOT CMAKE_BUILD_TYPE MATCHES "Release"  AND
+    NOT CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" )
+    message( FATAL_ERROR "CMAKE_BUILD_TYPE is not recognized. ${_BUILD_TYPE_MSG}" )
+endif()
+
+
diff --git a/cmake/ecbuild_define_options.cmake b/cmake/ecbuild_define_options.cmake
new file mode 100644
index 0000000..f0a7d6e
--- /dev/null
+++ b/cmake/ecbuild_define_options.cmake
@@ -0,0 +1,29 @@
+# (C) Copyright 1996-2014 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.
+
+# general options
+
+option( BUILD_SHARED_LIBS       "build shared libraries when possible"            ON  )
+
+option( ENABLE_RPATHS           "when installing insert RPATHS into binaries"     ON  )
+option( ENABLE_WARNINGS         "enable compiler warnings"                        OFF )
+
+option( ENABLE_LARGE_FILE_SUPPORT "build with large file support"   ON  )
+
+option( ENABLE_OS_TESTS          "Run all OS tests" ON )
+
+option( DEVELOPER_MODE           "activates developer mode"               OFF )
+option( CHECK_UNUSED_FILES       "check for unused project files"         ON )
+
+include( CMakeDependentOption ) # make options depend on one another
+
+cmake_dependent_option( ENABLE_OS_TYPES_TEST     "Run sizeof tests on C types" ON "ENABLE_OS_TESTS" OFF)
+cmake_dependent_option( ENABLE_OS_ENDINESS_TEST  "Run OS endiness tests"       ON "ENABLE_OS_TESTS" OFF)
+cmake_dependent_option( ENABLE_OS_FUNCTIONS_TEST "Run OS functions tests"      ON "ENABLE_OS_TESTS" OFF)
+
+mark_as_advanced( ENABLE_OS_TYPES_TEST ENABLE_OS_ENDINESS_TEST ENABLE_OS_FUNCTIONS_TEST  )
diff --git a/cmake/ecbuild_define_paths.cmake b/cmake/ecbuild_define_paths.cmake
new file mode 100644
index 0000000..08a92cf
--- /dev/null
+++ b/cmake/ecbuild_define_paths.cmake
@@ -0,0 +1,49 @@
+# (C) Copyright 1996-2012 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.
+
+# define project paths
+
+file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
+file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
+
+#######################################################################################################
+
+# setup library building rpaths (both in build dir and then when installed)
+
+set( CMAKE_SKIP_BUILD_RPATH              FALSE ) # use full RPATHs for the build tree
+set( CMAKE_BUILD_WITH_INSTALL_RPATH      FALSE ) # when building, don't use the install RPATH already (but later on when installing)
+set( CMAKE_INSTALL_RPATH_USE_LINK_PATH   TRUE  ) # add the automatic parts to RPATH which point to dirs outside build tree
+
+if( ENABLE_RPATHS )
+    
+    # install with this RPATH 
+    if( IS_ABSOLUTE ${INSTALL_LIB_DIR} )
+        set( CMAKE_INSTALL_RPATH "${INSTALL_LIB_DIR}/lib" )
+    else()
+        set( CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}/lib" ) 
+    endif()
+    
+    # the RPATH to be used when installing, but only if it's not a system directory
+    # list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${INSTALL_LIB_DIR}" isSystemDir)
+    # if("${isSystemDir}" STREQUAL "-1")
+    #    set(CMAKE_INSTALL_RPATH "${INSTALL_LIB_DIR}")
+    # endif()
+
+ENDIF()
+
+# Always include srcdir and builddir in include path
+# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
+# in about every subdir
+
+set( CMAKE_INCLUDE_CURRENT_DIR OFF )
+
+# put the include dirs which are in the source or build tree
+# before all other include dirs, so the headers in the sources
+# are prefered over the already installed ones (since cmake 2.4.1)
+
+set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
diff --git a/cmake/ecbuild_enable_fortran.cmake b/cmake/ecbuild_enable_fortran.cmake
new file mode 100644
index 0000000..70ce435
--- /dev/null
+++ b/cmake/ecbuild_enable_fortran.cmake
@@ -0,0 +1,53 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+
+# macro for enabling the fortan language
+
+macro( ecbuild_enable_fortran )
+
+    set( options REQUIRED  )
+    set( single_value_args MODULE_DIRECTORY )
+    set( multi_value_args  )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_enable_fortran(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    enable_language( Fortran )
+
+    if( DEFINED _PAR_REQUIRED )
+      if( NOT CMAKE_Fortran_COMPILER OR NOT CMAKE_Fortran_COMPILER_WORKS )
+          message( FATAL_ERROR "Fortran compiler required by project ${PROJECT_NAME} but does not seem to work" )
+      endif()
+    endif()
+
+    if( CMAKE_Fortran_COMPILER_LOADED )
+        include(CheckFortranFunctionExists)
+		if( CMAKE_C_COMPILER_LOADED )
+			include(FortranCInterface)
+		endif()
+		set( EC_HAVE_FORTRAN 1 )
+    endif()
+
+    if( DEFINED _PAR_MODULE_DIRECTORY )
+        set( CMAKE_Fortran_MODULE_DIRECTORY  ${_PAR_MODULE_DIRECTORY} CACHE PATH "directory for all fortran modules." )
+    else()
+        set( CMAKE_Fortran_MODULE_DIRECTORY  ${PROJECT_BINARY_DIR}/fortran CACHE PATH "directory for all fortran modules." )
+    endif()
+
+	file( MAKE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY} )
+
+    include_directories( ${CMAKE_Fortran_MODULE_DIRECTORY} )
+
+    install( CODE "EXECUTE_PROCESS (COMMAND \"${CMAKE_COMMAND}\" -E copy_directory \"${CMAKE_Fortran_MODULE_DIRECTORY}/\${BUILD_TYPE}\" \"${INSTALL_INCLUDE_DIR}\")" )
+
+endmacro( ecbuild_enable_fortran )
diff --git a/cmake/ecbuild_find_fortranlibs.cmake b/cmake/ecbuild_find_fortranlibs.cmake
new file mode 100644
index 0000000..8d1ea36
--- /dev/null
+++ b/cmake/ecbuild_find_fortranlibs.cmake
@@ -0,0 +1,130 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to find fortran (static) link libraries
+
+
+macro( ecbuild_find_fortranlibs )
+
+    # parse parameters
+
+    set( options REQUIRED )
+	set( single_value_args COMPILER )
+    set( multi_value_args  )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_python(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+	if( NOT FORTRANLIBS_FOUND ) # don't repeat search
+
+		if( _PAR_COMPILER )
+			set( __known_fcomp 0 )
+		endif()
+
+		if( _PAR_COMPILER MATCHES "gfortran" )
+			set( WITH_LIBGFORTRAN 1 )
+			set( __known_fcomp 1 )
+		endif()
+
+		if( _PAR_COMPILER MATCHES "pgi" )
+			set( WITH_PGI_FORTRAN 1 )
+			set( __known_fcomp 1 )
+		endif()
+
+		if( _PAR_COMPILER MATCHES "xlf" )
+			set( WITH_XL_FORTRAN 1 )
+			set( __known_fcomp 1 )
+		endif()
+
+		if( _PAR_COMPILER MATCHES "intel" )
+			message( FATAL_ERROR "searching for intel libraries has not been implemented" )
+			set( __known_fcomp 1 )
+		endif()
+
+		if( _PAR_COMPILER AND NOT __known_fcomp )
+			message( FATAL_ERROR "unknown fortran compiler ${_PAR_COMPILER}" )
+		endif()
+
+		### set path from environment variables
+
+		foreach( _fortran_lib PGI XLF LIBGFORTRAN )
+			if( NOT ${_fortran_lib}_PATH AND NOT "$ENV{${_fortran_lib}_PATH}" STREQUAL "" )
+				set( ${_fortran_lib}_PATH "$ENV{${_fortran_lib}_PATH}" )
+			endif()
+		endforeach()
+
+		set( _flibs_found 0 )
+
+		### default is to search for gfortran
+
+		if( NOT WITH_PGI_FORTRAN AND NOT WITH_LIBGFORTRAN AND NOT WITH_XL_FORTRAN )
+			message( WARNING "Finding fortran libs for unspecified Fortran compiler: default search [ gfortran ]" )
+			set( WITH_LIBGFORTRAN 1 )
+		endif()
+
+		### actual search ...
+
+		if( WITH_PGI_FORTRAN OR DEFINED PGI_PATH )
+
+			find_package(PGIFortran)
+
+			if( LIBPGIFORTRAN_FOUND )
+				set( FORTRAN_LIBRARIES ${PGIFORTRAN_LIBRARIES} )
+				set( _flibs_found 1 )
+				set( _flibs_txt "PGI" )
+			endif()
+
+		endif()
+
+		if( WITH_LIBGFORTRAN OR DEFINED LIBGFORTRAN_PATH )
+
+			find_package(LibGFortran)
+
+			if( LIBGFORTRAN_FOUND )
+				set( FORTRAN_LIBRARIES ${GFORTRAN_LIBRARIES} )
+				set( _flibs_found 1 )
+				set( _flibs_txt "gfortran" )
+			endif()
+
+		endif()
+
+		if( WITH_XL_FORTRAN OR DEFINED XLF_PATH )
+
+			find_package(XLFortranLibs)
+
+			if( LIBXLFORTRAN_FOUND )
+				set( FORTRAN_LIBRARIES ${XLFORTRAN_LIBRARIES} )
+				set( _flibs_found 1 )
+				set( _flibs_txt "XLF" )
+			endif()
+
+		endif()
+
+		### set found
+
+		if( _flibs_found )
+			set( FORTRANLIBS_FOUND 1 CACHE INTERNAL "Fortran libraries found" )
+			set( FORTRANLIBS_NAME ${_flibs_txt}  CACHE INTERNAL "Fortran library name" )
+			set( FORTRAN_LIBRARIES ${FORTRAN_LIBRARIES} CACHE INTERNAL "Fortran libraries" )
+			message( STATUS "Found Fortran libraries: ${_flibs_txt}" )
+		else()
+			set( FORTRANLIBS_FOUND 0 )
+			if( _PAR_REQUIRED )
+			   message( FATAL_ERROR "Failed to find Fortran libraries" )
+			else()
+			   message( STATUS "Failed to find Fortran libraries" )
+			endif()
+		endif()
+
+	endif( NOT FORTRANLIBS_FOUND )
+
+endmacro( ecbuild_find_fortranlibs )
diff --git a/cmake/ecbuild_find_lexyacc.cmake b/cmake/ecbuild_find_lexyacc.cmake
new file mode 100644
index 0000000..373b81c
--- /dev/null
+++ b/cmake/ecbuild_find_lexyacc.cmake
@@ -0,0 +1,60 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to find python
+
+# OUTPUT:
+#
+# BISON_FOUND or YACC_FOUND
+# FLEX_FOUND or LEX_FOUND
+#
+# BISON_EXECUTABLE or YACC_EXECUTABLE
+# FLEX_EXECUTABLE or LEX_EXECUTABLE
+
+macro( ecbuild_find_lexyacc )
+
+	# find preferably bison or else yacc
+
+	if( NOT SKIP_BISON )
+
+		find_package( BISON 2.3 )
+		find_package( FLEX )
+
+	endif()
+
+	if( NOT BISON_FOUND AND NOT SKIP_YACC )
+
+		find_package( YACC )
+		find_package( LEX  )
+
+	endif()
+
+	if( NOT YACC_FOUND AND NOT BISON_FOUND ) # neither bison nor yacc were found
+		message( FATAL_ERROR "neither bison or yacc were found - at least one is required (together with its lexical analyser" )
+	endif()
+
+	if( NOT YACC_FOUND ) # check for both bison & flex together
+		if( BISON_FOUND AND NOT FLEX_FOUND )
+			message( FATAL_ERROR "both bison and flex are required - flex not found" )
+		endif()
+		if( FLEX_FOUND AND NOT BISON_FOUND )
+			message( FATAL_ERROR "both bison and flex are required - bison not found" )
+		endif()
+	endif()
+
+	if( NOT BISON_FOUND ) # check for both yacc & lex together
+		if( YACC_FOUND AND NOT LEX_FOUND )
+			message( FATAL_ERROR "both yacc and lex are required - lex not found" )
+		endif()
+		if( LEX_FOUND AND NOT YACC_FOUND )
+			message( FATAL_ERROR "both yacc and lex are required - yacc not found" )
+		endif()
+	endif()
+
+endmacro( ecbuild_find_lexyacc )
diff --git a/cmake/ecbuild_find_mpi.cmake b/cmake/ecbuild_find_mpi.cmake
new file mode 100644
index 0000000..b617d11
--- /dev/null
+++ b/cmake/ecbuild_find_mpi.cmake
@@ -0,0 +1,117 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to find MPI
+# uses the canonical find_package( MPI )
+# but does more checks
+
+macro( ecbuild_find_mpi )
+
+    # parse parameters
+
+    set( options REQUIRED )
+	set( single_value_args )
+    set( multi_value_args  )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_mpi(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    # if user defined compilers are MPI compliant, then we use them ...
+
+	# C compiler
+
+	if( CMAKE_C_COMPILER_LOADED AND NOT MPI_C_COMPILER )
+
+		include(CheckCSourceCompiles)
+
+		check_c_source_compiles("
+			#include <mpi.h>
+			int main(int argc, char* argv[])
+			{
+			int rank;
+			MPI_Init(&argc, &argv); 
+			MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
+			MPI_Finalize();
+			return 0;
+			}
+			"
+		    C_COMPILER_SUPPORTS_MPI )
+
+		if( C_COMPILER_SUPPORTS_MPI )
+			message( STATUS "C compiler supports MPI -- ${CMAKE_C_COMPILER}" )
+			set( MPI_C_COMPILER ${CMAKE_C_COMPILER} )
+		endif()
+
+    endif()
+
+	# CXX compiler
+
+	if( CMAKE_CXX_COMPILER_LOADED AND NOT MPI_CXX_COMPILER )
+
+		include(CheckCXXSourceCompiles)
+
+		check_cxx_source_compiles("
+			#include <mpi.h>
+			 #include <iostream>
+		     int main(int argc, char* argv[])
+		     {
+		       MPI_Init(&argc, &argv); int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Finalize();
+		       return 0;
+		     }
+		     "
+		     CXX_COMPILER_SUPPORTS_MPI )
+
+		if( CXX_COMPILER_SUPPORTS_MPI )
+			message( STATUS "C++ compiler supports MPI -- ${CMAKE_CXX_COMPILER}" )
+			set( MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER} )
+		endif()
+
+    endif()
+
+	# Fortran compiler
+
+	if( CMAKE_Fortran_COMPILER_LOADED AND NOT MPI_Fortran_COMPILER )
+
+		include(CheckFortranSourceCompiles)
+
+		check_fortran_source_compiles("
+			program main
+			use MPI
+			integer ierr
+			call MPI_INIT( ierr )
+			call MPI_FINALIZE( ierr )
+			end
+			"
+		Fortran_COMPILER_SUPPORTS_MPI )
+
+		if( Fortran_COMPILER_SUPPORTS_MPI )
+			message( STATUS "Fortran compiler supports MPI (F90) -- ${CMAKE_Fortran_COMPILER}" )
+			set( MPI_Fortran_COMPILER ${CMAKE_Fortran_COMPILER} )
+			set( MPI_Fortran_FOUND TRUE )
+		endif()
+
+    endif()
+
+    # canonical MPI search
+
+	find_package( MPI )
+
+    # hide these variables from UI
+
+    mark_as_advanced( MPI_LIBRARY MPI_EXTRA_LIBRARY )
+
+    # find_package with Cray compiler did not send MPI_Fortran_FOUND
+    if( Fortran_COMPILER_SUPPORTS_MPI )
+    	set( MPI_Fortran_FOUND TRUE )
+    endif()
+
+endmacro( ecbuild_find_mpi )
diff --git a/cmake/ecbuild_find_package.cmake b/cmake/ecbuild_find_package.cmake
new file mode 100644
index 0000000..95a2126
--- /dev/null
+++ b/cmake/ecbuild_find_package.cmake
@@ -0,0 +1,173 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding a subproject directory
+##############################################################################
+
+macro( ecbuild_find_package )
+
+    set( options REQUIRED QUIET EXACT )
+    set( single_value_args NAME VERSION )
+    set( multi_value_args )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_package(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_NAME  )
+      message(FATAL_ERROR "The call to ecbuild_find_package() doesn't specify the NAME.")
+    endif()
+
+    if( _PAR_EXACT AND NOT _PAR_VERSION )
+      message(FATAL_ERROR "Call to ecbuild_find_package() requests EXACT but doesn't specify VERSION.")
+    endif()
+
+	# debug_var( _PAR_NAME )
+
+    string( TOUPPER ${_PAR_NAME} PNAME )
+
+    set( _${PNAME}_version "" )
+    if( _PAR_VERSION )
+        set( _${PNAME}_version ${_PAR_VERSION} )
+        if( _PAR_EXACT )
+            set( _${PNAME}_version ${_PAR_VERSION} EXACT )
+        endif()
+    endif()
+
+	# check developer mode (search in cmake cache )
+
+	if( NOT ${DEVELOPER_MODE} )
+		set( NO_DEV_BUILD_DIRS NO_CMAKE_PACKAGE_REGISTRY NO_CMAKE_BUILDS_PATH )
+	endif()
+
+	# search user defined paths first
+
+	if( ${_PAR_NAME}_PATH OR ${PNAME}_PATH )
+
+		# debug_var( ${_PAR_NAME}_PATH )
+		# debug_var( ${PNAME}_PATH )
+
+		# 1) search using CONFIG mode -- try to locate a configuration file provided by the package (package-config.cmake)
+
+		if( NOT ${_PAR_NAME}_FOUND )
+			find_package( ${_PAR_NAME} ${_${PNAME}_version} NO_MODULE QUIET HINTS ${${PNAME}_PATH} ${_PAR_NAME}_PATH NO_DEFAULT_PATH )
+		endif()
+
+		# 2) search using a file Find<package>.cmake if it exists ( macro should itself take *_PATH into account )
+
+		if( NOT ${_PAR_NAME}_FOUND )
+			find_package( ${_PAR_NAME} ${_${PNAME}_version} MODULE QUIET )
+		endif()
+
+		# is <package>_PATH was given and we don't find anything then we FAIL
+
+		if( NOT ${_PAR_NAME}_FOUND )
+			if( ${_PAR_NAME}_PATH )
+				message( FATAL_ERROR "${_PAR_NAME}_PATH was provided by user but package ${_PAR_NAME} wasn't found" )
+			endif()
+			if( ${PNAME}_PATH )
+				message( FATAL_ERROR "${PNAME}_PATH was provided by user but package ${PNAME} wasn't found" )
+			endif()
+		endif()
+
+	endif()
+
+	# 3) search developer cache and recently configured packages in the CMake GUI
+
+	if( NOT ${_PAR_NAME}_FOUND )
+
+		find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET NO_MODULE HINTS ENV ${PNAME}_PATH
+				${NO_DEV_BUILD_DIRS}
+				NO_CMAKE_ENVIRONMENT_PATH
+				NO_SYSTEM_ENVIRONMENT_PATH
+				NO_CMAKE_SYSTEM_PATH
+				NO_CMAKE_SYSTEM_PACKAGE_REGISTRY )
+
+	endif()
+
+	# 4) search special ECMWF paths
+
+	if( NOT ${_PAR_NAME}_FOUND )
+
+		set( _ecmwf_paths ) # clear variable
+		ecbuild_list_extra_search_paths( ${_PAR_NAME} _ecmwf_paths )
+
+		if( _ecmwf_paths )
+			find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET NO_MODULE PATHS ${_ecmwf_paths} NO_DEFAULT_PATH )
+		endif()
+
+	endif()
+
+	# 5) search system paths, for <package>-config.cmake
+
+	if( NOT ${_PAR_NAME}_FOUND )
+
+		find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET NO_MODULE ${NO_DEV_BUILD_DIRS} )
+
+	endif()
+
+	# 6) search system paths, using Find<package>.cmake if it exists
+
+	if( NOT ${_PAR_NAME}_FOUND )
+
+		find_package( ${_PAR_NAME} ${_${PNAME}_version} QUIET MODULE )
+
+	endif()
+
+    # check version found is acceptable
+
+    if( ${_PAR_NAME}_FOUND )
+        set( _version_acceptable 1 )
+        if( _PAR_VERSION )
+            if( ${_PAR_NAME}_VERSION )
+                if( _PAR_EXACT )
+                    if( NOT ${_PAR_NAME}_VERSION VERSION_EQUAL _PAR_VERSION )
+                        message( STATUS "${PROJECT_NAME} requires (exactly) ${_PAR_NAME} = ${_PAR_VERSION} -- found ${${_PAR_NAME}_VERSION}" )
+                        set( _version_acceptable 0 )
+                    endif()
+                else()
+                    if( _PAR_VERSION VERSION_LESS ${_PAR_NAME}_VERSION OR _PAR_VERSION VERSION_EQUAL ${_PAR_NAME}_VERSION )
+                        set( _version_acceptable 1 )
+                    else()
+                        message( WARNING "${PROJECT_NAME} requires ${_PAR_NAME} >= ${_PAR_VERSION} -- found ${${_PAR_NAME}_VERSION}" )
+                        set( _version_acceptable 0 )
+                    endif()
+                endif()
+            else()
+                message( WARNING "${PROJECT_NAME} found ${_PAR_NAME} but no version information, so cannot check if satisfies ${_PAR_VERSION}" )
+                set( _version_acceptable 0 )
+            endif()
+        endif()
+    endif()
+
+    if( ${_PAR_NAME}_FOUND )
+
+        if( _version_acceptable )
+            set( ${PNAME}_FOUND ${${_PAR_NAME}_FOUND} )
+        else()
+            set( ${PNAME}_FOUND 0 )
+            set( ${_PAR_NAME}_FOUND 0 )
+        endif()
+
+    endif()
+
+	### final messages
+
+	if( NOT ${_PAR_NAME}_FOUND )
+		if( NOT _PAR_QUIET )
+			message( WARNING "FAILED to find package ${_PAR_NAME}" )
+		endif()
+		if( _PAR_REQUIRED )
+			message( FATAL_ERROR "${PROJECT_NAME} requires package ${_PAR_NAME} but no suitable version was found" )
+		endif()
+	endif()
+
+endmacro()
diff --git a/cmake/ecbuild_find_perl.cmake b/cmake/ecbuild_find_perl.cmake
new file mode 100644
index 0000000..2d0cd02
--- /dev/null
+++ b/cmake/ecbuild_find_perl.cmake
@@ -0,0 +1,45 @@
+# (C) Copyright 1996-2014 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.
+
+# OUTPUT:
+
+macro( ecbuild_find_perl )
+
+    # parse parameters
+
+    set( options REQUIRED )
+    set( single_value_args )
+    set( multi_value_args  )
+
+    cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_p_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_perl(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+	find_package( Perl )
+
+    if( NOT PERL_EXECUTABLE AND _p_REQUIRED )
+        message( FATAL_ERROR "Failed to find Perl (REQUIRED)" )
+    endif()
+
+    if( PERL_EXECUTABLE )
+
+		execute_process( COMMAND ${PERL_EXECUTABLE} -V:version OUTPUT_VARIABLE  perl_version_output_variable  RESULT_VARIABLE  perl_version_return )
+		if( NOT perl_version_return )
+			string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION ${perl_version_output_variable})
+		endif()
+
+		# from cmake 2.8.8 onwards
+		if( NOT PERL_VERSION_STRING )
+			set( PERL_VERSION_STRING ${PERL_VERSION} )
+		endif()
+
+	endif()
+
+endmacro( ecbuild_find_perl )
\ No newline at end of file
diff --git a/cmake/ecbuild_find_python.cmake b/cmake/ecbuild_find_python.cmake
new file mode 100644
index 0000000..d207ee8
--- /dev/null
+++ b/cmake/ecbuild_find_python.cmake
@@ -0,0 +1,131 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to find python
+
+# OUTPUT:
+#   PYTHONINTERP_FOUND
+#   PYTHONLIBS_FOUND
+#   PYTHON_INCLUDE_DIRS
+#   PYTHON_LIBRARIES
+#   PYTHON_SITE_PACKAGES
+
+macro( ecbuild_find_python )
+
+    # parse parameters
+
+    set( options REQUIRED )
+    set( single_value_args VERSION )
+    set( multi_value_args  )
+
+    cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_p_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_find_python(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    # find python executable
+
+    find_package( PythonInterp )
+
+    if( NOT PYTHONINTERP_FOUND AND _p_REQUIRED )
+        message( FATAL_ERROR "Failed to find any Python interpreter (REQUIRED)" )
+    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()
+
+    # message( STATUS "Python version ${PYTHON_VERSION_STRING}" )
+    # debug_var(PYTHON_VERSION_MAJOR)
+    # debug_var(PYTHON_VERSION_MINOR)
+    # 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 )
+                message( FATAL_ERROR "Required python version at least ${_p_VERSION} but found only ${PYTHON_VERSION_STRING}" )
+            else()
+                message( WARNING "Looking for python version at least ${_p_VERSION} but found only ${PYTHON_VERSION_STRING}\nMarking Python as NOTFOUND" )
+            endif()
+        endif()
+    endif()
+
+    if( PYTHONINTERP_FOUND )
+
+        # find pythonn config
+
+        if( PYTHON_EXECUTABLE AND EXISTS ${PYTHON_EXECUTABLE}-config )
+            set(PYTHON_CONFIG ${PYTHON_EXECUTABLE}-config CACHE PATH "" FORCE)
+        else()
+            find_program( PYTHON_CONFIG NAMES python-config python-config${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} )
+        endif()
+
+        # find python libs
+
+        # The OpenBSD python packages have python-config's 
+        # that don't reliably report linking flags that will work.
+        
+        if( PYTHON_CONFIG AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+            
+            execute_process(COMMAND "${PYTHON_CONFIG}" --ldflags
+                            OUTPUT_VARIABLE PYTHON_LIBRARIES
+                            OUTPUT_STRIP_TRAILING_WHITESPACE
+                            ERROR_QUIET)
+
+            execute_process(COMMAND "${PYTHON_CONFIG}" --includes
+                            OUTPUT_VARIABLE PYTHON_INCLUDE_DIR
+                            OUTPUT_STRIP_TRAILING_WHITESPACE
+                            ERROR_QUIET)
+
+#           debug_var(PYTHON_LIBRARIES)
+#           debug_var(PYTHON_INCLUDE_DIR)
+
+            string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
+            string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
+            
+            separate_arguments(PYTHON_INCLUDE_DIR)
+
+        else() # revert to finding pythonlibs the standard way (cmake macro)
+            
+            find_package(PythonLibs)
+            if( PYTHON_INCLUDE_PATH AND NOT PYTHON_INCLUDE_DIR )
+                set(PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}")
+            endif()
+
+        endif()
+
+        # set output variables
+
+        find_package_handle_standard_args( PythonLibs DEFAULT_MSG PYTHON_INCLUDE_DIR PYTHON_LIBRARIES )
+
+        set( PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR} )
+        set( PYTHON_INCLUDE_PATH ${PYTHON_INCLUDE_DIR} )
+
+        list( REMOVE_DUPLICATES PYTHON_INCLUDE_DIRS )
+
+        # find where python site-packages are ...
+
+        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()
+
+#    debug_var( PYTHONINTERP_FOUND )
+#    debug_var( PYTHON_EXECUTABLE )
+#    debug_var( PYTHONLIBS_FOUND )
+#    debug_var( PYTHON_INCLUDE_DIRS )
+#    debug_var( PYTHON_LIBRARIES )
+#    debug_var( PYTHON_SITE_PACKAGES )
+
+endmacro( ecbuild_find_python )
diff --git a/cmake/ecbuild_generate_config_headers.cmake b/cmake/ecbuild_generate_config_headers.cmake
new file mode 100644
index 0000000..abf9aac
--- /dev/null
+++ b/cmake/ecbuild_generate_config_headers.cmake
@@ -0,0 +1,47 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# generates the config header fot the project with the system introspection done by CMake
+
+function( ecbuild_generate_config_headers )
+
+    # parse parameters
+
+    set( options )
+	set( single_value_args DESTINATION )
+    set( multi_value_args  )
+
+	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_config_headers(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+	# generate list of compiler flags
+
+	string( TOUPPER ${PROJECT_NAME} PNAME )
+
+	get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
+
+	foreach( lang ${langs} )
+		set( EC_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+	endforeach()
+
+	configure_file( ${ECBUILD_MACROS_DIR}/ecbuild_config.h.in  ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ecbuild_config.h   )
+
+	# install ecbuild configuration
+
+	set( _destination ${INSTALL_INCLUDE_DIR} )
+	if( _p_DESTINATION )
+		set( _destination ${_p_DESTINATION} )
+	endif()
+
+	install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ecbuild_config.h DESTINATION ${_destination} )
+
+endfunction( ecbuild_generate_config_headers )
diff --git a/cmake/ecbuild_generate_rpc.cmake b/cmake/ecbuild_generate_rpc.cmake
new file mode 100644
index 0000000..5bd4f76
--- /dev/null
+++ b/cmake/ecbuild_generate_rpc.cmake
@@ -0,0 +1,73 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to process rpcgen files
+
+macro( ecbuild_generate_rpc )
+
+    set( options )
+    set( single_value_args SOURCE TARGET_H TARGET_C )
+    set( multi_value_args DEPENDANT )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_rpc(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_SOURCE  )
+      message(FATAL_ERROR "The call to ecbuild_generate_rpc() doesn't specify the SOURCE file.")
+    endif()
+
+# optional
+#    if( NOT _PAR_DEPENDANT )
+#      message(FATAL_ERROR "The call to ecbuild_generate_rpc() doesn't specify the DEPENDANT files.")
+#    endif()
+
+    if( NOT DEFINED _PAR_TARGET_H AND NOT DEFINED _PAR_TARGET_C )
+      message(FATAL_ERROR "The call to ecbuild_generate_rpc() doesn't specify the _PAR_TARGET_H or _PAR_TARGET_C files.")
+    endif()
+
+    find_package( RPCGEN REQUIRED )
+
+    if( DEFINED _PAR_TARGET_H )
+
+        add_custom_command(
+          OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_H}
+          COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_SOURCE}
+          COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_H}
+          COMMAND ${RPCGEN_EXECUTABLE} -h -o ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_H} ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_SOURCE}
+          DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_SOURCE} )
+
+      if( DEFINED _PAR_DEPENDANT )
+        foreach( file ${_PAR_DEPENDANT} )
+            set_source_files_properties( ${file} PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_H}" )
+        endforeach()
+      endif()
+
+    endif()
+
+    if( DEFINED _PAR_TARGET_C )
+
+        add_custom_command(
+          OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_C}
+          COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_SOURCE}
+          COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_C}
+          COMMAND ${RPCGEN_EXECUTABLE} -c -o ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_C} ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_SOURCE}
+          DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_PAR_SOURCE} )
+
+      if( DEFINED _PAR_DEPENDANT )
+        foreach( file ${_PAR_DEPENDANT} )
+            set_source_files_properties( ${file} PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${_PAR_TARGET_C}" )
+        endforeach()
+      endif()
+
+    endif()
+
+endmacro( ecbuild_generate_rpc )
diff --git a/cmake/ecbuild_generate_yy.cmake b/cmake/ecbuild_generate_yy.cmake
new file mode 100644
index 0000000..391bed1
--- /dev/null
+++ b/cmake/ecbuild_generate_yy.cmake
@@ -0,0 +1,113 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro to process lex/yacc files
+
+macro( ecbuild_generate_yy )
+
+	ecbuild_find_lexyacc() # find [ yacc|byson ] and [ lex|flex ]
+
+	ecbuild_find_perl( REQUIRED )
+
+    set( options )
+	set( single_value_args YYPREFIX YACC LEX LEX_FLAGS YACC_FLAGS FLEX_FLAGS BISON_FLAGS )
+    set( multi_value_args  DEPENDANT )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_generate_yy(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_YYPREFIX  )
+      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the YYPREFIX.")
+    endif()
+
+    if( NOT _PAR_YACC  )
+      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the YACC file.")
+    endif()
+
+    if( NOT _PAR_LEX  )
+      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the LEX file.")
+    endif()
+
+    if( NOT _PAR_DEPENDANT )
+      message(FATAL_ERROR "The call to ecbuild_generate_yy() doesn't specify the DEPENDANT files.")
+    endif()
+
+    set( BASE ${_PAR_YYPREFIX}_${_PAR_YACC} )
+
+	## default flags
+
+	if( NOT _PAR_LEX_FLAGS )
+		set( _PAR_LEX_FLAGS "" )
+	endif()
+
+	if( NOT _PAR_FLEX_FLAGS )
+		set( _PAR_FLEX_FLAGS "-l" )
+	endif()
+
+	if( NOT _PAR_YACC_FLAGS )
+		set( _PAR_YACC_FLAGS "-t" )
+	endif()
+
+	if( NOT _PAR_BISON_FLAGS )
+		set( _PAR_BISON_FLAGS "-t" )
+	endif()
+
+#    debug_var( BASE )
+
+    set( ${BASE}yy_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC}.tmp.c )
+    set( ${BASE}yl_tmp_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX}.tmp.c )
+
+    set( ${BASE}yy_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_YACC}.c )
+    set( ${BASE}yl_target ${CMAKE_CURRENT_BINARY_DIR}/${_PAR_LEX}.c )
+
+    add_custom_target( ${_PAR_YYPREFIX}_${DEPENDANT} SOURCES ${_PAR_YACC}.y ${_PAR_LEX}.l )
+
+    if( BISON_FOUND )
+		bison_target( ${BASE}_parser  ${_PAR_YACC}.y  ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_BISON_FLAGS}" )
+	else()
+		yacc_target( ${BASE}_parser  ${_PAR_YACC}.y   ${${BASE}yy_tmp_target} COMPILE_FLAGS "${_PAR_YACC_FLAGS}" )
+    endif()
+
+    if( FLEX_FOUND )
+		flex_target(  ${BASE}_scanner ${_PAR_LEX}.l   ${${BASE}yl_tmp_target} COMPILE_FLAGS "${_PAR_FLEX_FLAGS}" )
+        add_flex_bison_dependency(${BASE}_scanner ${BASE}_parser)
+    else()
+		lex_target(  ${BASE}_scanner ${_PAR_LEX}.l   ${${BASE}yl_tmp_target} COMPILE_FLAGS "${_PAR_LEX_FLAGS}" )
+        add_lex_yacc_dependency(${BASE}_scanner ${BASE}_parser)
+    endif()
+
+    set_source_files_properties(${${BASE}yy_tmp_target} GENERATED)
+    set_source_files_properties(${${BASE}yl_tmp_target} GENERATED)
+
+    add_custom_command(OUTPUT  ${${BASE}yy_target}
+                       COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yy_tmp_target} ${${BASE}yy_target}
+                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yy_target}
+                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.c/\\.c/g' ${${BASE}yy_target}
+                       DEPENDS ${${BASE}yy_tmp_target}
+    )
+
+    add_custom_command(OUTPUT  ${${BASE}yl_target}
+                       COMMAND ${CMAKE_COMMAND} -E copy ${${BASE}yl_tmp_target} ${${BASE}yl_target}
+                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/yy/${_PAR_YYPREFIX}/g' ${${BASE}yl_target}
+                       COMMAND ${PERL_EXECUTABLE} -pi -e 's/\\.tmp\\.c/\\.c/g' ${${BASE}yl_target}
+                       DEPENDS ${${BASE}yl_tmp_target}
+    )
+
+    set_source_files_properties(${${BASE}yy_target} GENERATED)
+    set_source_files_properties(${${BASE}yl_target} GENERATED)
+
+    foreach( file ${_PAR_DEPENDANT} )
+        set_source_files_properties( ${file} PROPERTIES
+                                    OBJECT_DEPENDS "${${BASE}yy_target};${${BASE}yl_target}" )
+    endforeach()
+
+endmacro( ecbuild_generate_yy )
diff --git a/cmake/ecbuild_get_date.cmake b/cmake/ecbuild_get_date.cmake
new file mode 100644
index 0000000..4db2e84
--- /dev/null
+++ b/cmake/ecbuild_get_date.cmake
@@ -0,0 +1,32 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# get date macro
+
+macro(ecbuild_get_date RESULT)
+    if(UNIX)
+        execute_process(COMMAND "date" "+%d/%m/%Y" OUTPUT_VARIABLE ${RESULT})
+        string(REGEX REPLACE "(..)/(..)/(....).*" "\\3.\\2.\\1" ${RESULT} ${${RESULT}})
+    else()
+        message(SEND_ERROR "date not implemented")
+    endif()
+endmacro(ecbuild_get_date)
+
+############################################################################################
+# get timestamp
+
+macro(ecbuild_get_timestamp RESULT)
+    if(UNIX)
+        execute_process(COMMAND "date" "+%Y/%m/%d/%H/%M/%S" OUTPUT_VARIABLE _timestamp)
+        string(REGEX REPLACE "(....)/(..)/(..)/(..)/(..)/(..).*" "\\1\\2\\3\\4\\5\\6" ${RESULT} ${_timestamp})
+    else()
+        message(SEND_ERROR "timestamp not implemented")
+    endif()
+endmacro(ecbuild_get_timestamp)
+
diff --git a/cmake/ecbuild_get_resources.cmake b/cmake/ecbuild_get_resources.cmake
new file mode 100644
index 0000000..bf48ecf
--- /dev/null
+++ b/cmake/ecbuild_get_resources.cmake
@@ -0,0 +1,52 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for adding a test
+##############################################################################
+
+macro( ecbuild_get_resources )
+
+    set( options                )
+    set( single_value_args TO_DIR  )
+    set( multi_value_args  LIST )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+        message(FATAL_ERROR "Unknown keywords given to ecbuild_get_resources(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_LIST )
+        message( FATAL_ERROR "Missing parameter LIST of resources in macro ecbuild_get_resources()" )
+    endif()
+
+    if( NOT _PAR_TO_DIR )
+		set( _PAR_TO_DIR ${CMAKE_CURRENT_BINARY_DIR} )
+	endif()
+	
+    list( LENGTH _PAR_LIST _rsize )
+    math( EXPR _max "${_rsize}-1" )
+    foreach( i RANGE 0 ${_max} 2 )
+
+        math( EXPR in "${i}+1" )
+
+        list( GET _PAR_LIST ${i}  r  )
+        list( GET _PAR_LIST ${in} rh )
+
+#        debug_var( r  )
+#        debug_var( rh )
+
+        get_filename_component( rf ${r} NAME )
+
+        file( DOWNLOAD ${r} ${_PAR_TO_DIR}/${rf} EXPECTED_HASH SHA1=${rh} )
+
+    endforeach()
+		
+
+endmacro()
diff --git a/cmake/ecbuild_get_test_data.cmake b/cmake/ecbuild_get_test_data.cmake
new file mode 100644
index 0000000..d5c7345
--- /dev/null
+++ b/cmake/ecbuild_get_test_data.cmake
@@ -0,0 +1,163 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# function for downloading test data
+
+function( _download_test_data _p_NAME _p_DIRNAME )
+
+    # TODO: make that 'at ecmwf'
+    #if(1)
+    #unset(ENV{no_proxy})
+    #unset(ENV{NO_PROXY})
+    #set(ENV{http_proxy} "http://proxy.ecmwf.int:3333")
+    #endif()
+
+    find_program( CURL_PROGRAM curl )
+
+    if( CURL_PROGRAM )
+
+        add_custom_command( OUTPUT ${_p_NAME}
+            COMMAND ${CURL_PROGRAM} --silent --show-error --fail --output ${_p_NAME} http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME} )
+
+    else()
+
+        find_program( WGET_PROGRAM wget )
+
+        if( WGET_PROGRAM )
+
+           add_custom_command( OUTPUT ${_p_NAME}
+               COMMAND ${WGET_PROGRAM} -nv --fail -O ${_p_NAME} http://download.ecmwf.org/test-data/${_p_DIRNAME}/${_p_NAME} )
+
+        endif()
+
+    endif()
+
+endfunction()
+
+
+##############################################################################
+# function for getting test data
+#
+# examples:
+#
+## no check done
+#    ecbuild_get_test_data( NAME msl.grib NOCHECK )
+#
+## checksum agains remote md5 file
+#    ecbuild_get_test_data( NAME msl.grib )
+#
+## checksum agains local md5
+#    ecbuild_get_test_data( NAME msl.grib MD5 f69ca0929d1122c7878d19f32401abe9 )
+#
+## checksum agains local sha1
+#    ecbuild_get_test_data( NAME msl.grib SHA1 5a8e8c57c510b64e31863ca47cfc3b65971089d9 )
+
+function( ecbuild_get_test_data )
+
+    set( options NOCHECK )
+    set( single_value_args TARGET URL NAME DIRNAME MD5 SHA1)
+    set( multi_value_args  )
+
+    cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_p_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_get_test_data(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    file( RELATIVE_PATH currdir ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
+
+    ### check parameters
+
+    if( NOT _p_NAME )
+      message(FATAL_ERROR "ecbuild_get_test_data() expects a NAME")
+    endif()
+
+    if( NOT _p_TARGET )
+      string( REGEX REPLACE "[^A-Za-z0-9_]" "_" _p_TARGET "test_data_${_p_NAME}")
+#      string( REGEX REPLACE "[^A-Za-z0-9_]" "_" _p_TARGET "${_p_NAME}")
+#      set( _p_TARGET ${_p_NAME} )
+    endif()
+
+    if( NOT _p_DIRNAME )
+      set( _p_DIRNAME ${PROJECT_NAME}/${currdir} )
+    endif()
+
+#    debug_var( _p_TARGET )
+#    debug_var( _p_NAME )
+#    debug_var( _p_URL )
+#    debug_var( _p_DIRNAME )
+
+    # download the data
+
+    _download_test_data( ${_p_NAME} ${_p_DIRNAME} )
+
+    # perform the checksum if requested
+
+    set( _deps ${_p_NAME} )
+
+    if( NOT _p_NOCHECK )
+
+        find_program( MD5SUM md5sum )
+
+        if( MD5SUM AND NOT _p_MD5 AND NOT _p_SHA1) # use remote md5
+
+#            message( STATUS " ---  getting MD5 sum " )
+
+            add_custom_command( OUTPUT ${_p_NAME}.localmd5
+                                COMMAND md5sum ${_p_NAME} > ${_p_NAME}.localmd5 )
+
+            add_custom_command(	OUTPUT ${_p_NAME}.ok
+                                COMMAND diff ${_p_NAME}.md5 ${_p_NAME}.localmd5 && touch ${_p_NAME}.ok )
+
+            _download_test_data( ${_p_NAME}.md5 ${_p_DIRNAME} )
+
+            list( APPEND _deps ${_p_NAME}.md5 ${_p_NAME}.localmd5 ${_p_NAME}.ok )
+
+        endif()
+
+        if( MD5SUM AND _p_MD5 )
+
+#            message( STATUS " ---  computing MD5 sum [${_p_MD5}]" )
+
+            add_custom_command( OUTPUT ${_p_NAME}.localmd5
+                                COMMAND ${MD5SUM} ${_p_NAME} > ${_p_NAME}.localmd5 )
+
+            add_custom_command( OUTPUT ${_p_NAME}.ok
+                                COMMAND diff ${_p_NAME}.md5 ${_p_NAME}.localmd5 && touch ${_p_NAME}.ok )
+
+            configure_file( "${ECBUILD_MACROS_DIR}/md5.in" ${_p_NAME}.md5 @ONLY )
+
+            list( APPEND _deps ${_p_NAME}.localmd5 ${_p_NAME}.ok )
+
+        endif()
+
+        if( _p_SHA1 )
+
+            message( STATUS " ---  computing SHA1 sum [${_p_SHA1}]" )
+
+            find_program( SHASUM NAMES sha1sum shasum )
+            if( SHASUM )
+                add_custom_command( OUTPUT ${_p_NAME}.localsha1
+                                    COMMAND ${SHASUM} ${_p_NAME} > ${_p_NAME}.localsha1 )
+
+                add_custom_command( OUTPUT ${_p_NAME}.ok
+                                    COMMAND diff ${_p_NAME}.sha1 ${_p_NAME}.localsha1 && touch ${_p_NAME}.ok )
+
+                configure_file( "${ECBUILD_MACROS_DIR}/sha1.in" ${_p_NAME}.sha1 @ONLY )
+
+                list( APPEND _deps ${_p_NAME}.localsha1 ${_p_NAME}.ok )
+            endif()
+
+        endif()
+
+    endif()
+
+    add_custom_target( ${_p_TARGET} DEPENDS ${_deps} )
+
+endfunction(ecbuild_get_test_data)
diff --git a/cmake/ecbuild_install_package.cmake b/cmake/ecbuild_install_package.cmake
new file mode 100644
index 0000000..d0df710
--- /dev/null
+++ b/cmake/ecbuild_install_package.cmake
@@ -0,0 +1,265 @@
+# (C) Copyright 1996-2014 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.
+
+###############################################################################
+
+macro( ecbuild_install_project )
+
+
+    set( options )
+    set( single_value_args NAME DESCRIPTION )
+    set( multi_value_args  COMPONENTS )
+
+    cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+    if(_PAR_UNPARSED_ARGUMENTS)
+      message(FATAL_ERROR "Unknown keywords given to ecbuild_install_project(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+    if( NOT _PAR_NAME  )
+      message(FATAL_ERROR "The call to ecbuild_install_project() doesn't specify the NAME.")
+    endif()
+
+    ### PACKAGING ########################################################
+
+    string( TOUPPER ${PROJECT_NAME} PNAME )
+    string( TOLOWER ${PROJECT_NAME} LNAME )
+    
+    # components
+
+#    if( DEFINED _PAR_COMPONENTS )
+#        set(CPACK_COMPONENTS_ALL   "${_PAR_COMPONENTS}")
+#    else()
+#        set(CPACK_COMPONENTS_ALL   "${PROJECT_NAME}")
+#    endif()
+    
+    # name, version, etc ...
+
+    set(CPACK_PACKAGE_NAME      "${_PAR_NAME}")
+    set(CPACK_PACKAGE_VERSION   "${${PNAME}_VERSION_STR}")
+
+    set(CPACK_PACKAGE_FILE_NAME   "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
+
+    set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ECMWF") # required for DEB
+
+#    set(CPACK_ARCHIVE_COMPONENT_INSTALL "ON")
+#    set(CPACK_RPM_COMPONENT_INSTALL "ON")
+
+#    set(CPACK_GENERATOR        "TGZ;RPM;DEB")
+    set(CPACK_GENERATOR        "TGZ")
+    set(CPACK_SOURCE_GENERATOR "TGZ")
+    set(CPACK_PACKAGE_VENDOR   "ECMWF")
+
+    # short description
+
+    if( _PAR_DESCRIPTION )
+        set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_PAR_DESCRIPTION}" )
+    else()
+        set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${_PAR_NAME} misses a description" )
+    endif()
+
+    # long description
+
+    if( EXISTS ${PROJECT_SOURCE_DIR}/INSTALL )
+        set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/INSTALL")
+    endif()
+    if( EXISTS ${PROJECT_SOURCE_DIR}/LICENSE )
+        set(CPACK_RESOURCE_FILE_LICENSE    "${PROJECT_SOURCE_DIR}/LICENSE")
+    endif()
+
+    # set(CPACK_PACKAGE_EXECUTABLES ${ECBUILD_ALL_EXES})
+    
+    # what to pack and not
+
+    set(CPACK_SOURCE_IGNORE_FILES
+        /build/
+        /\\\\.git/
+        /\\\\.svn/
+        CMakeLists.txt.user
+        \\\\.swp$
+        p4config
+    )
+
+    # skip the files that were declared as DONT_PACK
+
+    list( APPEND CPACK_SOURCE_IGNORE_FILES ${ECBUILD_DONT_PACK_FILES} )
+
+    # cpack config file
+
+    # set(CPACK_INSTALL_CMAKE_PROJECTS "${${PROJECT_NAME}_BINARY_DIR}" "${PROJECT_NAME}" "${CPACK_COMPONENTS_ALL}" "*" )
+
+    include( CPack )
+
+    ### EXPORTS ########################################################
+ 
+    # TOP-LEVEL PROJECT EXPORT
+
+    if( ${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME} )
+
+        # exports the package for use from the build-tree -- inserts <package> into the CMake user package registry
+    
+        export( PACKAGE ${PROJECT_NAME} )
+         
+        set( _template_config "${ECBUILD_MACROS_DIR}/project-config.cmake.in" )
+        if( EXISTS ${LNAME}-config.cmake.in )
+            set( _template_config "${LNAME}-config.cmake.in" )
+        endif()
+    
+        set( _template_config_version "${ECBUILD_MACROS_DIR}/project-config-version.cmake.in" )
+        if( EXISTS ${LNAME}-config-version.cmake.in )
+            set( _template_config_version "${LNAME}-config-version.cmake.in" )
+        endif()
+    
+        # project-config-version.cmake -- format ([0-9]+).([0-9]+).([0-9]+)
+    
+        set( PACKAGE_VERSION "${${PNAME}_VERSION}" ) 
+        
+		configure_file( "${_template_config_version}" "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" @ONLY )
+		install( FILES "${PROJECT_BINARY_DIR}/${LNAME}-config-version.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
+
+        # prepare imutable variables (don't depend on install path)
+                        
+        set( CONF_LIBRARIES ${${PROJECT_NAME}_ALL_LIBS} )
+        if( ${PNAME}_LIBRARIES )
+            set( CONF_LIBRARIES ${${PNAME}_LIBRARIES} )
+        endif()
+                    
+        set( CONF_DEFINITIONS "" )
+        if( ${PNAME}_DEFINITIONS )
+           set( CONF_DEFINITIONS ${${PNAME}_DEFINITIONS} )
+        endif()
+
+        set( CONF_TPL_LIBRARIES   "" )
+        set( CONF_TPL_DEFINITIONS "" )
+        foreach( _tpl ${${PNAME}_TPLS} )
+            string( TOUPPER ${_tpl} TPL )
+            if( ${_tpl}_INCLUDE_DIRS )
+                list( APPEND CONF_TPL_LIBRARIES   ${${_tpl}_LIBRARIES} )
+            elseif( ${_tpl}_INCLUDE_DIR )
+                list( APPEND CONF_TPL_LIBRARIES   ${${_tpl}_LIBRARY} )
+            elseif( ${TPL}_LIBRARIES )
+                list( APPEND CONF_TPL_LIBRARIES   ${${TPL}_LIBRARIES} )
+            elseif( ${TPL}_INCLUDE_DIR )
+                list( APPEND CONF_TPL_LIBRARIES   ${${TPL}_LIBRARY} )
+            endif()
+
+            if( ${_tpl}_DEFINITIONS )
+                list( APPEND CONF_TPL_DEFINITIONS ${${_tpl}_DEFINITIONS} )
+            elseif( ${TPL}_DEFINITIONS )
+                list( APPEND CONF_TPL_DEFINITIONS ${${TPL}_DEFINITIONS} )
+            endif()
+        endforeach()
+   
+        # project-config.cmake @ build tree
+
+        set( CONF_TPLS ${${PNAME}_TPLS} )
+
+        set( CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" )
+        if( ${PNAME}_INCLUDE_DIRS )
+            set( CONF_INCLUDE_DIRS ${${PNAME}_INCLUDE_DIRS} )
+        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()
+
+		set( CONF_IMPORT_FILE "${LNAME}-import.cmake" )
+		if( EXISTS "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in" )
+			configure_file( "${PROJECT_SOURCE_DIR}/${CONF_IMPORT_FILE}.in" 
+                            "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" @ONLY )
+			install( FILES "${PROJECT_BINARY_DIR}/${CONF_IMPORT_FILE}" 
+                     DESTINATION "${INSTALL_CMAKE_DIR}" )
+		endif()
+
+        set( _lname_config "${PROJECT_BINARY_DIR}/${LNAME}-config.cmake")
+
+		set( _is_build_dir_export ON )
+        configure_file( "${_template_config}" "${_lname_config}" @ONLY )
+
+        file( REMOVE ${_lname_config}.tpls.in )
+
+        foreach( _tpl ${${PNAME}_TPLS} )
+            string( TOUPPER ${_tpl} TPL )
+            if( ${TPL}_IMPORT_FILE )
+                 set( __import_file "${${TPL}_IMPORT_FILE}" )
+                 file( APPEND "${_lname_config}.tpls.in" "if( NOT ${TPL}_IMPORT_FILE )\n" )
+                 file( APPEND "${_lname_config}.tpls.in" "    include( \"${__import_file}\" OPTIONAL )\n" )
+                 file( APPEND "${_lname_config}.tpls.in" "endif()\n" )
+            endif()
+        endforeach()
+
+        if( EXISTS "${_lname_config}.tpls.in" )
+            configure_file( "${_lname_config}.tpls.in" "${_lname_config}.tpls" @ONLY )
+			install( FILES "${_lname_config}.tpls" DESTINATION "${INSTALL_CMAKE_DIR}" )
+		endif()
+
+        # project-config.cmake @ install tree
+        
+        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}" )
+     
+        # install the export
+    
+        if( ${PROJECT_NAME}_ALL_EXES OR ${PROJECT_NAME}_ALL_LIBS )
+            install( EXPORT ${PROJECT_NAME}-targets DESTINATION "${INSTALL_CMAKE_DIR}" )
+        endif()
+    
+    else() ### SUB-PROJECT EXPORT
+
+        set( ${PNAME}_FOUND  TRUE  PARENT_SCOPE )
+        set( ${PROJECT_NAME}_FOUND  TRUE  PARENT_SCOPE )
+
+        set( ${PNAME}_VERSION ${${PNAME}_VERSION} PARENT_SCOPE )
+        set( ${PROJECT_NAME}_VERSION ${${PNAME}_VERSION} PARENT_SCOPE )
+
+        if( ${PNAME}_INCLUDE_DIRS )
+            set( ${PNAME}_INCLUDE_DIRS ${${PNAME}_INCLUDE_DIRS} PARENT_SCOPE )
+        endif()
+        
+        if( ${PNAME}_LIBRARIES )
+            set( ${PNAME}_LIBRARIES ${${PNAME}_LIBRARIES} PARENT_SCOPE )
+        endif()
+                
+        if( ${PNAME}_DEFINITIONS )
+            set( ${PNAME}_DEFINITIONS ${${PNAME}_DEFINITIONS} PARENT_SCOPE )
+        endif()
+
+    endif()
+
+endmacro( ecbuild_install_project )
diff --git a/cmake/ecbuild_links_target.cmake b/cmake/ecbuild_links_target.cmake
new file mode 100644
index 0000000..dd26576
--- /dev/null
+++ b/cmake/ecbuild_links_target.cmake
@@ -0,0 +1,74 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# macro for adding a link to library on a development system
+
+set( EC_ALL_EXES "" CACHE INTERNAL "" )
+set( EC_ALL_LIBS "" CACHE INTERNAL "" )
+
+macro( ecbuild_link_exe TARGET  FILENAME )
+
+    if( DEFINED EC_LINK_DIR )
+       add_custom_target(${TARGET}_link
+          COMMAND ${CMAKE_COMMAND} -E make_directory ${EC_LINK_DIR}
+          COMMAND ${CMAKE_COMMAND} -E make_directory ${EC_LINK_DIR}/bin
+          COMMAND ${CMAKE_COMMAND} -E remove ${EC_LINK_DIR}/bin/${FILENAME}
+          COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/bin/${FILENAME} ${EC_LINK_DIR}/bin/${FILENAME}
+          DEPENDS ${TARGET}
+          COMMENT "link ${EC_LINK_DIR}/bin/${FILENAME}" )
+    endif()
+
+    set( EC_ALL_EXES ${EC_ALL_EXES} ${TARGET} CACHE INTERNAL "" )
+
+endmacro( ecbuild_link_exe  )
+
+###############################################################################
+# macro for adding a link to library on a development system
+
+macro( ecbuild_link_lib  TARGET  FILENAME )
+
+    if( DEFINED EC_LINK_DIR )
+       add_custom_target(${TARGET}_link
+          COMMAND ${CMAKE_COMMAND} -E make_directory ${EC_LINK_DIR}
+          COMMAND ${CMAKE_COMMAND} -E make_directory ${EC_LINK_DIR}/lib
+          COMMAND ${CMAKE_COMMAND} -E remove ${EC_LINK_DIR}/lib/${FILENAME}
+          COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/lib/${FILENAME} ${EC_LINK_DIR}/lib/${FILENAME}
+          DEPENDS ${TARGET}
+          COMMENT "link ${EC_LINK_DIR}/lib/${FILENAME}" )
+    endif()
+
+    set( EC_ALL_LIBS ${EC_ALL_LIBS} ${TARGET} CACHE INTERNAL "" )
+
+endmacro( ecbuild_link_lib  )
+
+############################################################################################
+# define make links target
+
+macro( ecbuild_define_links_target )
+
+  if( DEFINED EC_LINK_DIR )
+
+    foreach( lib ${EC_ALL_LIBS} )
+      list( APPEND ec_link_libs ${lib}_link )
+    endforeach()
+    foreach( exe ${EC_ALL_EXES} )
+      list( APPEND ec_link_exes ${exe}_link )
+    endforeach()
+
+    add_custom_target( links DEPENDS ${ec_link_libs} ${ec_link_exes} )
+
+     #   debug_var( EC_ALL_EXES )
+     #   debug_var( ec_link_exes )
+
+     #  debug_var( EC_ALL_LIBS )
+     #   debug_var( ec_link_libs )
+
+  endif()
+
+endmacro(ecbuild_define_links_target)
diff --git a/cmake/ecbuild_list_extra_search_paths.cmake b/cmake/ecbuild_list_extra_search_paths.cmake
new file mode 100644
index 0000000..57ad169
--- /dev/null
+++ b/cmake/ecbuild_list_extra_search_paths.cmake
@@ -0,0 +1,86 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+#
+# macro for adding search paths to CMAKE_PREFIX_PATH
+# for example the ECMWF /usr/local/apps paths
+#
+# usage: ecbuild_search_paths( netcdf4 )
+
+function( ecbuild_list_extra_search_paths pkg var )
+
+	# debug_var( pkg )
+	# debug_var( var )
+
+	string( TOUPPER ${pkg} _PKG )
+
+	# PKG_PATH (upper case)
+
+	if( DEFINED ${_PKG}_PATH )
+		list( APPEND ${var} ${${_PKG}_PATH} )
+	endif()
+
+	# PKG_PATH (lower case)
+
+	if( DEFINED ${pkg}_PATH )
+		list( APPEND ${var} ${${pkg}_PATH} )
+	endif()
+
+	# fixes BOOST_ROOT taking precedence on the search for location
+	if( ${pkg} STREQUAL "boost" )
+		if( BOOST_ROOT OR BOOSTROOT OR DEFINED ENV{BOOST_ROOT} OR DEFINED ENV{BOOSTROOT} )
+			set( CMAKE_PREFIX_PATH ${BOOST_ROOT} ${BOOSTROOT} $ENV{BOOST_ROOT} $ENV{BOOSTROOT} ${CMAKE_PREFIX_PATH} )
+		endif()
+	endif()
+
+	# directories under /usr/local/apps/${pkg}
+
+	foreach( _apps /usr/local/apps/${pkg} /usr/local/lib/metaps/lib/${pkg} )
+
+		if( EXISTS ${_apps} )
+
+			 file( GLOB ps ${_apps}/[0-9]* )
+			 list( SORT ps )
+			 list( REVERSE ps ) # reversing will give us the newest versions first
+			 foreach( p ${ps} )
+				 if( IS_DIRECTORY ${p} )
+					  list( APPEND ${var}  ${p} )
+					  if( EXISTS ${p}/LP64 )
+						  list( APPEND ${var} ${p}/LP64 )
+					  endif()
+				 endif()
+			 endforeach()
+
+			 foreach( p ${_apps} ${_apps}/current ${_apps}/stable ${_apps}/new ${_apps}/next ${_apps}/prev )
+			   if( EXISTS ${p} )
+				   list( APPEND ${var} ${p} )
+			   endif()
+			   if( EXISTS ${p}/LP64 )
+				   list( APPEND ${var} ${p}/LP64 )
+			   endif()
+			 endforeach()
+
+		endif()
+
+	endforeach()
+
+	# sanitize the list
+
+	if( ${var} )
+		list( REMOVE_DUPLICATES ${var} )
+	endif()
+
+	# define it out of the function
+
+	set( ${var} ${${var}} PARENT_SCOPE )
+
+#	debug_var( ${var} )
+
+endfunction()
+
diff --git a/cmake/ecbuild_list_macros.cmake b/cmake/ecbuild_list_macros.cmake
new file mode 100644
index 0000000..4b7bcb0
--- /dev/null
+++ b/cmake/ecbuild_list_macros.cmake
@@ -0,0 +1,26 @@
+# (C) Copyright 1996-2014 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.
+
+function(JOIN _listname _glue _output )
+
+	set( _return "" )
+
+	foreach( VAL ${${_listname}} )
+		set(_return "${_return}${_glue}${VAL}")
+	endforeach()
+
+	string(LENGTH "${_glue}" _glue_len)
+	string(LENGTH "${_return}" _return_len)
+
+	math(EXPR _return_len ${_return_len}-${_glue_len})
+	string(SUBSTRING "${_return}" ${_glue_len} ${_return_len} _return)
+
+	set(${_output} "${_return}" PARENT_SCOPE)
+
+endfunction()
+
diff --git a/cmake/ecbuild_print_summary.cmake b/cmake/ecbuild_print_summary.cmake
new file mode 100644
index 0000000..a3985ae
--- /dev/null
+++ b/cmake/ecbuild_print_summary.cmake
@@ -0,0 +1,109 @@
+# (C) Copyright 1996-2014 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.
+
+macro( ecbuild_print_summary )
+
+    if( EXISTS ${PROJECT_SOURCE_DIR}/project_summary.cmake )
+
+		message( STATUS "---------------------------------------------------------" )
+		message( STATUS "Project ${PROJECT_NAME} summary" )
+		message( STATUS "---------------------------------------------------------" )
+
+		include( ${PROJECT_SOURCE_DIR}/project_summary.cmake )
+
+    endif()
+
+    if( ${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME} )
+
+        ecbuild_define_links_target()
+
+        get_property( langs GLOBAL PROPERTY ENABLED_LANGUAGES )
+
+		message( STATUS "---------------------------------------------------------" )
+		message( STATUS "Build summary" )
+		message( STATUS "---------------------------------------------------------" )
+
+		message( STATUS "system : [${BUILD_SITE}] [${CMAKE_SYSTEM}] [${EC_OS_NAME}.${EC_OS_BITS}]" )
+		message( STATUS "processor        : [${CMAKE_SYSTEM_PROCESSOR}]" )
+		message( STATUS "cmake            : [${CMAKE_COMMAND}] (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION})" )
+		message( STATUS "build type       : [${CMAKE_BUILD_TYPE}]" )
+		message( STATUS "timestamp        : [${EC_BUILD_TIMESTAMP}]" )
+		message( STATUS "install prefix   : [${CMAKE_INSTALL_PREFIX}]" )
+    if( EC_LINK_DIR )
+		message( STATUS "links prefix     : [${EC_LINK_DIR}]" )
+    endif()
+        message( STATUS "---------------------------------------------------------" )
+
+        foreach( lang ${langs} )
+		  message( STATUS "${lang} -- ${CMAKE_${lang}_COMPILER_ID} ${CMAKE_${lang}_COMPILER_VERSION}"  )
+		  message( STATUS "    compiler   : ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+		  message( STATUS "    link flags : ${CMAKE_${lang}_LINK_FLAGS}" )
+		endforeach()
+
+	message( STATUS "linker : ${CMAKE_LINKER}")
+	message( STATUS "ar     : ${CMAKE_AR}")
+	message( STATUS "ranlib : ${CMAKE_RANLIB}")
+	message( STATUS "link flags" )
+	message( STATUS "    executable [${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXEC_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
+	message( STATUS "    shared lib [${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
+	message( STATUS "    static lib [${CMAKE_MODULE_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}]" )
+	message( STATUS "install rpath  : ${CMAKE_INSTALL_RPATH}" )
+
+	get_directory_property( defs COMPILE_DEFINITIONS )
+
+	message( STATUS "common definitions: ${defs}" )
+
+        message( STATUS "---------------------------------------------------------" )
+
+    endif()
+
+	### FEATURE SUMMARY
+
+  if( ${CMAKE_VERSION} VERSION_LESS "2.8.6" )
+    debug_var( CMAKE_VERSION )
+    message( STATUS without include_quiet )
+    feature_summary( WHAT ALL )
+  else()
+    debug_var( CMAKE_VERSION )
+    message( STATUS with include_quiet )
+    feature_summary( WHAT ALL INCLUDE_QUIET_PACKAGES )
+  endif()
+
+	### WARNINGS
+
+    # issue warnings / errors in case there are unused project files
+    ecbuild_warn_unused_files()
+
+    # issue a warning that 'make install' mighty be broken for old cmakes
+    if( ${CMAKE_VERSION} VERSION_LESS "2.8.3" )
+
+        message( STATUS " +++ WARNING +++ WARNING +++ WARNING +++" )
+        message( STATUS " +++ " )
+		message( STATUS " +++ This CMake version [${CMAKE_VERSION}] is rather OLD !!" )
+        message( STATUS " +++ " )
+        message( STATUS " +++ We work hard to keep CMake backward compatibility (support >= 2.6.4)" )
+        message( STATUS " +++ but there are some limits inherent to older versions." )
+        message( STATUS " +++ " )
+        message( STATUS " +++ You will be able to build the software... " )
+        message( STATUS " +++ " )
+        message( STATUS " +++ But: " )
+        message( STATUS " +++     * the 'make install' target most likely will NOT WORK" )
+        message( STATUS " +++     * if you want to install these binaries you might need to copy them by yourself" )
+        message( STATUS " +++     * the binaries are in '${CMAKE_BINARY_DIR}' /lib and /bin" )
+        message( STATUS " +++     * copying headers will take substantially more work, and you might end up copying files that won't be needed" )
+        message( STATUS " +++ " )
+        message( STATUS " +++ Therefore, we recommend that you:  " )
+        message( STATUS " +++     * upgrade to a newer CMake with version at least >= 2.8.3" )
+        message( STATUS " +++     * remove this build directory '${CMAKE_BINARY_DIR}'" )
+        message( STATUS " +++     * rerun a newer cmake on an new empty build directory" )
+        message( STATUS " +++ " )
+        message( STATUS " +++ WARNING +++ WARNING +++ WARNING +++" )
+
+    endif()
+
+endmacro( ecbuild_print_summary )
diff --git a/cmake/ecbuild_project_files.cmake b/cmake/ecbuild_project_files.cmake
new file mode 100644
index 0000000..f304772
--- /dev/null
+++ b/cmake/ecbuild_project_files.cmake
@@ -0,0 +1,73 @@
+# (C) Copyright 1996-2014 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.
+
+# resert the variable on each configure
+set( EC_UNUSED_FILES "" CACHE INTERNAL "unused files" )
+
+##############################################################################
+# finds project files and adds them to the passed variable
+
+macro( ecbuild_find_files_recursive aFileList )
+
+list( APPEND ecbuild_project_extensions c cc cpp cxx ) # for the moment skip ( h hh )
+
+# first find all the files in the directory
+foreach( aExt ${ecbuild_project_extensions} )
+
+    file( GLOB_RECURSE listFilesWithExt *.${aExt})
+
+    list( LENGTH  listFilesWithExt sizeFilesWithExt )
+    if( sizeFilesWithExt GREATER 0 )
+      set( ${aFileList} ${${aFileList}} ${listFilesWithExt} )
+    endif()
+
+endforeach()
+
+endmacro()
+
+##############################################################################
+# finds the unused files on all the project
+function( ecbuild_find_project_files )
+
+  ecbuild_find_files_recursive( cwdFiles )
+
+  # this list will be kept
+  set( EC_PROJECT_FILES ${EC_PROJECT_FILES} ${cwdFiles} CACHE INTERNAL "" )
+  # this list will be progressevely emptied
+  set( EC_UNUSED_FILES  ${EC_UNUSED_FILES}  ${cwdFiles} CACHE INTERNAL "" )
+
+endfunction()
+
+##############################################################################
+# removed used files from unused list
+macro( ecbuild_declare_project_files )
+
+  foreach( _afile ${ARGV} )
+
+    # debug_var( _afile )
+
+    get_property( _src_gen SOURCE ${_afile} PROPERTY GENERATED )
+
+    if( NOT _src_gen )
+
+    	get_filename_component( _abspath ${_afile} ABSOLUTE )
+
+    	# check for existance of all declared files
+	    if( EXISTS ${_abspath} )
+    	    list( REMOVE_ITEM EC_UNUSED_FILES ${_abspath} )
+	    else()
+			message( FATAL_ERROR "In directory ${CMAKE_CURRENT_SOURCE_DIR} file ${_afile} was declared in CMakeLists.txt but not found" )
+    	endif()
+    endif()
+
+  endforeach()
+
+  # rewrite the unused file list in cache
+  set( EC_UNUSED_FILES ${EC_UNUSED_FILES} CACHE INTERNAL "unused files" )
+
+endmacro()
diff --git a/cmake/ecbuild_requires_macro_version.cmake b/cmake/ecbuild_requires_macro_version.cmake
new file mode 100644
index 0000000..dbdcc05
--- /dev/null
+++ b/cmake/ecbuild_requires_macro_version.cmake
@@ -0,0 +1,15 @@
+# (C) Copyright 1996-2014 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.
+
+macro( ecbuild_requires_macro_version req_vrs )
+
+	if( ECBUILD_MACRO_VERSION VERSION_LESS ${req_vrs} )
+		message( FATAL_ERROR "${PROJECT_NAME} needs ecbuild macro version >= ${req_vrs}" )
+	endif()
+
+endmacro()
diff --git a/cmake/ecbuild_separate_sources.cmake b/cmake/ecbuild_separate_sources.cmake
new file mode 100644
index 0000000..71d56b3
--- /dev/null
+++ b/cmake/ecbuild_separate_sources.cmake
@@ -0,0 +1,63 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# macro for separating sources sccording to language
+##############################################################################
+
+macro( ecbuild_separate_sources )
+
+	set( options )
+	set( single_value_args TARGET  )
+	set( multi_value_args  SOURCES )
+
+	cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+	if(_PAR_UNPARSED_ARGUMENTS)
+	  message(FATAL_ERROR "Unknown keywords given to ecbuild_separate_sources(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+	endif()
+
+	if( NOT _PAR_TARGET  )
+	  message(FATAL_ERROR "The call to ecbuild_separate_sources() doesn't specify the TARGET.")
+	endif()
+
+	if( NOT _PAR_SOURCES )
+	  message(FATAL_ERROR "The call to ecbuild_separate_sources() doesn't specify the SOURCES.")
+	endif()
+
+	foreach( src ${_PAR_SOURCES} )
+		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)")
+			list( APPEND ${_PAR_TARGET}_c_srcs ${src} )
+		endif()
+	endforeach()
+
+	foreach( src ${_PAR_SOURCES} )
+		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} )
+		endif()
+	endforeach()
+
+#    debug_var( ${_PAR_TARGET}_h_srcs )
+#    debug_var( ${_PAR_TARGET}_c_srcs )
+#    debug_var( ${_PAR_TARGET}_cxx_srcs )
+#    debug_var( ${_PAR_TARGET}_f_srcs )
+
+endmacro( ecbuild_separate_sources  )
+
diff --git a/cmake/ecbuild_setup_test_framework.cmake b/cmake/ecbuild_setup_test_framework.cmake
new file mode 100644
index 0000000..de9e11b
--- /dev/null
+++ b/cmake/ecbuild_setup_test_framework.cmake
@@ -0,0 +1,40 @@
+ecbuild_add_option( FEATURE TESTS
+					DEFAULT ON
+					DESCRIPTION "Enable the unit tests" )
+
+if( ENABLE_TESTS )
+
+	# Try to find compiled boost
+
+	if( BOOST_ROOT OR BOOSTROOT OR DEFINED ENV{BOOST_ROOT} OR DEFINED ENV{BOOSTROOT} )
+		set( CMAKE_PREFIX_PATH ${BOOST_ROOT} ${BOOSTROOT} $ENV{BOOST_ROOT} $ENV{BOOSTROOT} ${CMAKE_PREFIX_PATH} )
+	endif()
+
+	ecbuild_add_extra_search_paths( boost ) # also respects BOOST_ROOT
+
+	set( Boost_USE_MULTITHREADED  ON )
+#   set( Boost_DEBUG              ON )
+
+	find_package( Boost 1.47.0 COMPONENTS unit_test_framework test_exec_monitor )
+
+	set( ECBUILD_BOOST_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/include" )
+
+	if( Boost_FOUND AND Boost_UNIT_TEST_FRAMEWORK_LIBRARY AND Boost_TEST_EXEC_MONITOR_LIBRARY )
+
+		set( BOOST_UNIT_TEST_FRAMEWORK_LINKED 1 )
+
+		# message( STATUS "Boost unit test framework -- FOUND [${Boost_UNIT_TEST_FRAMEWORK_LIBRARY}]" )
+
+	else()
+
+		set( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY 1 )
+
+		list( APPEND ECBUILD_BOOST_HEADER_DIRS "${CMAKE_CURRENT_LIST_DIR}/contrib/boost-1.55/include" )
+
+		# comment out this when ecbuild paks boost unit test inside...
+		message( WARNING "Boost unit test framework -- NOT FOUND : deactivating tests, ENABLE_TESTS = OFF" )
+		set( ENABLE_TESTS OFF )
+
+	endif()
+
+endif()
diff --git a/cmake/ecbuild_system.cmake b/cmake/ecbuild_system.cmake
new file mode 100644
index 0000000..7ef7cfb
--- /dev/null
+++ b/cmake/ecbuild_system.cmake
@@ -0,0 +1,192 @@
+# (C) Copyright 1996-2014 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.
+
+########################################################################################################
+# disallow in-source build
+
+if( EXISTS ${CMAKE_SOURCE_DIR}/CMakeCache.txt ) # check for failed attempts to build within the source tree
+   message( FATAL_ERROR "Project ${PROJECT_NAME} contains a CMakeCache.txt inside source tree [${CMAKE_SOURCE_DIR}/CMakeCache.txt].\n Please remove it and
+   make sure that source tree is prestine and clean of unintended files, before retrying." )
+endif()
+
+get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH)
+get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH)
+
+if(${srcdir} STREQUAL ${bindir})
+  message("######################################################")
+  message("You are attempting to build in your Source Directory.")
+  message("You must run cmake from a build directory.")
+  message("######################################################")
+	message( FATAL_ERROR "${PROJECT_NAME} requires an out of source build.\n Please create a separate build directory and run 'cmake path/to/project [options]' from there.")
+endif()
+
+########################################################################################################
+# ecbuild versioning support
+
+set( ECBUILD_CMAKE_MINIMUM "2.8.4" )
+if( ${CMAKE_VERSION} VERSION_LESS ${ECBUILD_CMAKE_MINIMUM} )
+  message(FATAL_ERROR "${PROJECT_NAME} requires at least CMake ${ECBUILD_CMAKE_MINIMUM} -- you are using ${CMAKE_COMMAND} [${CMAKE_VERSION}]\n Please, get a newer version of CMake @ www.cmake.org" )
+endif()
+
+set( ECBUILD_MACRO_VERSION "1.3" )
+
+########################################################################################################
+# include our cmake macros, but only do so if this is the top project
+if( ${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME} )
+
+	site_name( BUILD_SITE ) # hostname of where we build
+
+	set( ECBUILD_PROJECTS  "" CACHE INTERNAL "list of ecbuild (sub)projects that use ecbuild" )
+
+	set( ECBUILD_MACROS_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "where ecbuild system is" )
+
+	# clear the build dir exported targets file (only on the top project)
+
+	set( TOP_PROJECT_TARGETS_FILE "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-targets.cmake" CACHE INTERNAL "" )
+	file( REMOVE ${TOP_PROJECT_TARGETS_FILE} )
+
+	# add backport support for versions up too 2.8.4
+	if( ${CMAKE_VERSION} VERSION_LESS "2.8" )
+		set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/2.8" ${CMAKE_MODULE_PATH} )
+	endif()
+
+	# add extra macros from external contributions
+	set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/contrib" )
+
+	# would bring FindEigen in, so for the moment keep it out
+	# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/contrib/GreatCMakeCookOff" )
+
+	include(CTest)                 # add cmake testing support
+	enable_testing()
+	add_custom_target( check COMMAND ${CMAKE_CTEST_COMMAND} -V )
+
+	############################################################################################
+	# define valid build types
+
+	include(ecbuild_define_build_types)
+
+	############################################################################################
+	# add cmake macros
+
+	include(AddFileDependencies)
+
+	include(CheckTypeSize)
+	include(CheckIncludeFile)
+	include(CheckIncludeFiles)
+
+	include(CheckFunctionExists)
+	include(CheckSymbolExists)
+
+	include(CheckCCompilerFlag)
+	include(CheckCSourceCompiles)
+	include(CheckCSourceRuns)
+
+	include(CMakeParseArguments)
+
+	# include(CMakePrintSystemInformation) # available in cmake 2.8.4
+
+	if( CMAKE_CXX_COMPILER_LOADED )
+		include(CheckIncludeFileCXX)
+		include(CheckCXXCompilerFlag)
+		include(CheckCXXSourceCompiles)
+		include(CheckCXXSourceRuns)
+	endif()
+
+	if( CMAKE_Fortran_COMPILER_LOADED )
+		include(CheckFortranFunctionExists)
+		if( CMAKE_C_COMPILER_LOADED )
+			include(FortranCInterface)
+		endif()
+		set( EC_HAVE_FORTRAN 1 )
+	endif()
+
+	include(FeatureSummary) # support features in cmake
+
+	include(TestBigEndian)
+
+	############################################################################################
+	# backport of cmake > 2.8.4 functions
+
+	if( "${CMAKE_VERSION}" VERSION_LESS "2.8.6" )
+		include( ${CMAKE_CURRENT_LIST_DIR}/2.8/CMakePushCheckState.cmake )
+	else()
+		include(CMakePushCheckState)
+	endif()
+
+	############################################################################################
+	# add our macros
+
+	include( ecbuild_debug_var )
+	include( ecbuild_list_macros )
+
+	include( ecbuild_check_c_source )
+
+	if( CMAKE_CXX_COMPILER_LOADED )
+		include( ecbuild_check_cxx_source )
+		include( ecbuild_check_cxx11 )
+	endif()
+
+	if( CMAKE_Fortran_COMPILER_LOADED )
+		include( ecbuild_check_fortran_source )
+	endif()
+
+	include( ecbuild_requires_macro_version )
+	include( ecbuild_get_date )
+	include( ecbuild_add_persistent )
+	include( ecbuild_generate_config_headers )
+	include( ecbuild_generate_rpc )
+	include( ecbuild_generate_yy )
+	include( ecbuild_add_option )
+	include( ecbuild_add_library )
+	include( ecbuild_add_executable )
+	include( ecbuild_append_to_rpath )
+	include( ecbuild_get_test_data )
+	include( ecbuild_add_cxx11_flags )
+	include( ecbuild_add_test )
+	include( ecbuild_add_resources )
+	include( ecbuild_get_resources )
+	include( ecbuild_project_files )
+	include( ecbuild_declare_project )
+	include( ecbuild_install_package )
+	include( ecbuild_separate_sources )
+	include( ecbuild_find_package )
+	include( ecbuild_use_package )
+	include( ecbuild_list_extra_search_paths )
+	include( ecbuild_add_extra_search_paths )
+	include( ecbuild_print_summary )
+	include( ecbuild_warn_unused_files )
+	include( ecbuild_find_mpi )
+	include( ecbuild_find_perl )
+	include( ecbuild_find_python )
+	include( ecbuild_find_lexyacc )
+	include( ecbuild_find_fortranlibs )
+	include( ecbuild_enable_fortran )
+
+	include( ${CMAKE_CURRENT_LIST_DIR}/contrib/GetGitRevisionDescription.cmake )
+
+	############################################################################################
+	# kickstart the build system
+
+	include( ecbuild_define_options )               # define build options
+	include( ecbuild_check_compiler )               # check for compiler characteristics
+	include( ecbuild_check_os )                     # check for os characteristics
+	include( ecbuild_check_functions )              # check for available functions
+	include( ecbuild_define_paths )                 # define installation paths
+	include( ecbuild_links_target )                 # define the links target
+	include( ecbuild_setup_test_framework )         # setup test framework
+
+	############################################################################################
+	# define the build timestamp
+
+	if( NOT DEFINED EC_BUILD_TIMESTAMP )
+		ecbuild_get_timestamp( EC_BUILD_TIMESTAMP )
+		set( EC_BUILD_TIMESTAMP  "${EC_BUILD_TIMESTAMP}" CACHE INTERNAL "Build timestamp" )
+	endif()
+
+endif()
+
diff --git a/cmake/ecbuild_use_package.cmake b/cmake/ecbuild_use_package.cmake
new file mode 100644
index 0000000..9be319b
--- /dev/null
+++ b/cmake/ecbuild_use_package.cmake
@@ -0,0 +1,202 @@
+# (C) Copyright 1996-2014 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.
+
+##############################################################################
+# function for adding a subproject directory
+##############################################################################
+
+macro( ecbuild_use_package )
+
+    set( options            REQUIRED QUIET EXACT )
+    set( single_value_args  PROJECT VERSION )
+    set( multi_value_args )
+
+	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+	if(_p_UNPARSED_ARGUMENTS)
+	  message(FATAL_ERROR "Unknown keywords given to ecbuild_use_package(): \"${_p_UNPARSED_ARGUMENTS}\"")
+    endif()
+
+	if( NOT _p_PROJECT  )
+      message(FATAL_ERROR "The call to ecbuild_use_package() doesn't specify the PROJECT.")
+    endif()
+
+	if( _p_EXACT AND NOT _p_VERSION )
+      message(FATAL_ERROR "Call to ecbuild_use_package() requests EXACT but doesn't specify VERSION.")
+    endif()
+
+    # try to find the package as a subproject and build it
+
+	string( TOUPPER ${_p_PROJECT} PNAME )
+
+    # user defined dir with subprojects
+
+    if( NOT DEFINED ${PNAME}_SOURCE AND DEFINED SUBPROJECT_DIRS )
+        foreach( dir ${SUBPROJECT_DIRS} )
+			if( EXISTS ${dir}/${_p_PROJECT} AND EXISTS ${dir}/${_p_PROJECT}/CMakeLists.txt )
+				set( ${PNAME}_SOURCE "${dir}/${_p_PROJECT}" )
+            endif()
+        endforeach()
+    endif()
+
+    # user defined path to subproject
+
+    if( DEFINED ${PNAME}_SOURCE )
+
+        if( NOT EXISTS ${${PNAME}_SOURCE} OR NOT EXISTS ${${PNAME}_SOURCE}/CMakeLists.txt )
+			message( FATAL_ERROR "User defined source directory '${${PNAME}_SOURCE}' for project '${_p_PROJECT}' does not exist or does not contain a CMakeLists.txt file." )
+        endif()
+
+		set( ${PNAME}_subproj_dir_ "${${PNAME}_SOURCE}" )
+
+    else() # default is 'dropped in' subdirectory named as project
+
+		if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT} AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}/CMakeLists.txt )
+			set( ${PNAME}_subproj_dir_ "${CMAKE_CURRENT_SOURCE_DIR}/${_p_PROJECT}" )
+        endif()
+
+    endif()
+
+    # check if was already added as subproject ...
+
+    set( _just_added 0 )
+    set( _do_version_check 0 )
+    set( _source_description "" )
+
+	list( FIND ECBUILD_PROJECTS ${_p_PROJECT} _ecbuild_project_${PNAME} )
+
+    if( NOT _ecbuild_project_${PNAME} EQUAL "-1" )
+		set( ${PNAME}_previous_subproj_ 1 )
+    else()
+		set( ${PNAME}_previous_subproj_ 0 )
+    endif()
+
+    # solve capitalization issues
+    
+	if( ${_p_PROJECT}_FOUND AND NOT ${PNAME}_FOUND )
+        set( ${PNAME}_FOUND 1 ) 
+    endif()
+	if( ${PNAME}_FOUND AND NOT ${_p_PROJECT}_FOUND )
+		set( ${_p_PROJECT}_FOUND 1 )
+    endif()
+
+    # Case 1) project was NOT added as subproject and is NOT FOUND
+
+	if( NOT ${PNAME}_FOUND AND NOT ${PNAME}_previous_subproj_ )
+
+            # check if SUBPROJDIR is set
+
+			if( DEFINED ${PNAME}_subproj_dir_ )
+
+                # check version is acceptable
+                set( _just_added 1 )
+                set( _do_version_check 1 )
+				set( _source_description "sub-project ${_p_PROJECT} (sources)" )
+
+                # add as a subproject
+
+				set( ${PNAME}_subproj_dir_ ${${PNAME}_subproj_dir_} CACHE PATH "Path to ${_p_PROJECT} source directory" )
+
+				set( ECBUILD_PROJECTS ${ECBUILD_PROJECTS} ${_p_PROJECT} CACHE INTERNAL "" )
+
+				add_subdirectory( ${${PNAME}_subproj_dir_} ${_p_PROJECT} )
+
+                set( ${PNAME}_FOUND 1 )
+				set( ${_p_PROJECT}_VERSION ${${PNAME}_VERSION} )
+
+            endif()
+
+    endif()
+
+    # Case 2) project was already added as subproject, so is already FOUND -- BUT must check version acceptable
+
+	if( ${PNAME}_previous_subproj_ )
+
+        if( NOT ${PNAME}_FOUND )
+			message( FATAL_ERROR "${_p_PROJECT} was already included as sub-project but ${PNAME}_FOUND isn't set -- this is likely a BUG in ecbuild" )
+        endif()
+
+        # check version is acceptable
+        set( _do_version_check 1 )
+		set( _source_description "already existing sub-project ${_p_PROJECT} (sources)" )
+
+    endif()
+
+    # Case 3) project was NOT added as subproject, but is FOUND -- so it was previously found as a binary ( either build or install tree )
+
+	if( ${PNAME}_FOUND AND NOT ${PNAME}_previous_subproj_ AND NOT _just_added )
+
+        # check version is acceptable
+        set( _do_version_check 1 )
+		set( _source_description "previously found package ${_p_PROJECT} (binaries)" )
+
+    endif()
+
+    # test version for Cases 1,2,3
+
+	# debug_var( _p_PROJECT )
+	# debug_var( _p_VERSION )
+    # debug_var( _just_added )
+    # debug_var( ${PNAME}_FOUND )
+	# debug_var( ${PNAME}_previous_subproj_ )
+
+	if( _p_VERSION AND _do_version_check )
+			if( _p_EXACT )
+				if( NOT ${_p_PROJECT}_VERSION VERSION_EQUAL _p_VERSION )
+					message( FATAL_ERROR "${PROJECT_NAME} requires (exactly) ${_p_PROJECT} = ${_p_VERSION} -- detected as ${_source_description} ${${_p_PROJECT}_VERSION}" )
+                endif()
+            else()
+				if( _p_VERSION VERSION_LESS ${_p_PROJECT}_VERSION OR _p_VERSION VERSION_EQUAL ${_p_PROJECT}_VERSION )
+					message( STATUS "${PROJECT_NAME} requires ${_p_PROJECT} >= ${_p_VERSION} -- detected as ${_source_description} ${${_p_PROJECT}_VERSION}" )
+				else()
+					message( FATAL_ERROR "${PROJECT_NAME} requires ${_p_PROJECT} >= ${_p_VERSION} -- detected only ${_source_description} ${${_p_PROJECT}_VERSION}" )
+                endif()
+            endif()
+    endif()
+
+    # Case 4) is NOT FOUND so far, NOT as sub-project (now or before), and NOT as binary neither 
+    #         so try to find precompiled binaries or a build tree
+
+    if( NOT ${PNAME}_FOUND )
+
+        set( _opts )
+		if( _p_VERSION )
+			list( APPEND _opts VERSION ${_p_VERSION} )
+        endif()
+		if( _p_EXACT )
+            list( APPEND _opts EXACT )
+        endif()
+		if( _p_REQUIRED )
+            list( APPEND _opts REQUIRED )
+        endif()
+    
+		ecbuild_find_package( NAME ${_p_PROJECT} ${_opts} )
+
+		if( ${_p_PROJECT}_FOUND )
+
+			set( ${PNAME}_FOUND ${${_p_PROJECT}_FOUND} )
+
+			message( STATUS "[${_p_PROJECT}] (${${_p_PROJECT}_VERSION})" )
+
+            message( STATUS "   ${PNAME}_INCLUDE_DIRS : [${${PNAME}_INCLUDE_DIRS}]" )
+            if( ${PNAME}_DEFINITIONS )
+                message( STATUS "   ${PNAME}_DEFINITIONS : [${${PNAME}_DEFINITIONS}]" )
+            endif()
+            message( STATUS "   ${PNAME}_LIBRARIES : [${${PNAME}_LIBRARIES}]" )
+
+        endif()
+
+    endif()
+
+### for when we change this macro to a function()
+#	set_parent_scope( ${PNAME}_FOUND )
+#	set_parent_scope( ${_p_PROJECT}_FOUND )
+#	set_parent_scope( ${PNAME}_VERSION )
+#	set_parent_scope( ${_p_PROJECT}_VERSION )
+
+endmacro()
diff --git a/cmake/ecbuild_version.h.in b/cmake/ecbuild_version.h.in
new file mode 100644
index 0000000..d274bf6
--- /dev/null
+++ b/cmake/ecbuild_version.h.in
@@ -0,0 +1,20 @@
+/*
+ * (C) Copyright 1996-2014 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 ecbuild_version_h
+#define ecbuild_version_h
+
+#define ECBUILD_VERSION "@ECBUILD_VERSION@"
+
+#define ECBUILD_MAJOR_VERSION @ECBUILD_MAJOR_VERSION@
+#define ECBUILD_MINOR_VERSION @ECBUILD_MINOR_VERSION@
+#define ECBUILD_PATCH_VERSION @ECBUILD_PATCH_VERSION@
+
+#endif // ecbuild_version_h
diff --git a/cmake/ecbuild_warn_unused_files.cmake b/cmake/ecbuild_warn_unused_files.cmake
new file mode 100644
index 0000000..a839da7
--- /dev/null
+++ b/cmake/ecbuild_warn_unused_files.cmake
@@ -0,0 +1,58 @@
+# (C) Copyright 1996-2014 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.
+
+############################################################################################
+# print warnings about unused files
+
+macro( ecbuild_warn_unused_files )
+
+    if( ${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME} ) # only for top level project
+    
+      # if cache file with unused files exists remove it
+      set( UNUSED_FILE "${CMAKE_BINARY_DIR}/UnusedFiles.txt" )
+      if( EXISTS ${UNUSED_FILE} )
+              file( REMOVE ${UNUSED_FILE} )
+      endif()
+    
+      if( CHECK_UNUSED_FILES ) # to check or not to check...
+    
+          if( NOT DEFINED UNUSED_FILES_LEVEL ) # to err or not...
+              set( UNUSED_FILES_LEVEL "ERROR" )
+          endif()
+    
+          # if unused files where found, put the list on the file
+          list( LENGTH MARS_UNUSED_FILES MARS_LENGTH_UNUSED_FILES )
+          if( MARS_LENGTH_UNUSED_FILES )
+    
+            message( STATUS "")
+            message( STATUS " !!!--- ${UNUSED_FILES_LEVEL} ---!!! ")
+            message( STATUS " !!!--- ${UNUSED_FILES_LEVEL} ---!!! ")
+            message( STATUS "")
+            message( STATUS " Unused source files found:")
+            foreach( AFILE ${MARS_UNUSED_FILES} )
+              message( STATUS "     ${AFILE}")
+              file( APPEND ${UNUSED_FILE} "${AFILE}\n" )
+            endforeach()
+            message( STATUS "")
+            message( STATUS " List dumped to ${UNUSED_FILE}")
+            message( STATUS "")
+            message( STATUS " !!!--- ${UNUSED_FILES_LEVEL} ---!!! ")
+            message( STATUS " !!!--- ${UNUSED_FILES_LEVEL} ---!!! ")
+            message( STATUS "")
+    
+            if( UNUSED_FILES_LEVEL STREQUAL "ERROR" )
+                message( FATAL_ERROR "\n Aborted build system configuration. \n Add unused files to the build system or remove them." )
+            endif()
+    
+          endif()
+    
+      endif()
+    
+    endif()
+
+endmacro( ecbuild_warn_unused_files )
diff --git a/cmake/include/ecbuild/boost_test_framework.h b/cmake/include/ecbuild/boost_test_framework.h
new file mode 100644
index 0000000..4bb7d96
--- /dev/null
+++ b/cmake/include/ecbuild/boost_test_framework.h
@@ -0,0 +1,16 @@
+/*
+ * (C) Copyright 1996-2014 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.
+ */
+
+#ifdef BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY
+#include <boost/test/included/unit_test.hpp>
+#else
+#include <boost/test/unit_test.hpp>
+#endif
+
diff --git a/cmake/md5.in b/cmake/md5.in
new file mode 100644
index 0000000..bf8aeb0
--- /dev/null
+++ b/cmake/md5.in
@@ -0,0 +1 @@
+ at _p_MD5@  @_p_NAME@
diff --git a/cmake/project-config-version.cmake.in b/cmake/project-config-version.cmake.in
new file mode 100644
index 0000000..802a2fe
--- /dev/null
+++ b/cmake/project-config-version.cmake.in
@@ -0,0 +1,12 @@
+set(PACKAGE_VERSION "@PACKAGE_VERSION@")
+
+# check whether the requested PACKAGE_FIND_VERSION is compatible
+
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+  set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+    set(PACKAGE_VERSION_EXACT TRUE)
+  endif()
+endif()
\ No newline at end of file
diff --git a/cmake/project-config.cmake.in b/cmake/project-config.cmake.in
new file mode 100644
index 0000000..a2a35dd
--- /dev/null
+++ b/cmake/project-config.cmake.in
@@ -0,0 +1,68 @@
+# Config file for the @PROJECT_NAME@ package
+# Defines the following variables:
+#
+#  @PNAME at _INCLUDE_DIRS - include directories
+#  @PNAME at _DEFINITIONS  - preprocessor definitions
+#  @PNAME at _LIBRARIES    - libraries to link against
+#
+# Also defines @PROJECT_NAME@ third-party library dependencies:
+#  @PNAME at _TPLS             - package names of  third-party library dependencies
+#  @PNAME at _TPL_INCLUDE_DIRS - include directories
+#  @PNAME at _TPL_DEFINITIONS  - preprocessor definitions
+#  @PNAME at _TPL_LIBRARIES    - libraries to link against
+
+# compute paths
+
+get_filename_component(@PNAME at _CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+set( @PNAME at _SELF_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@" )
+set( @PNAME at _SELF_DEFINITIONS  "@CONF_DEFINITIONS@" )
+set( @PNAME at _SELF_LIBRARIES    "@CONF_LIBRARIES@" )
+
+set( @PNAME at _TPLS             "@CONF_TPLS@" )
+
+set( @PNAME at _TPL_INCLUDE_DIRS "@CONF_TPL_INCLUDE_DIRS@" )
+set( @PNAME at _TPL_DEFINITIONS  "@CONF_TPL_DEFINITIONS@" )
+set( @PNAME at _TPL_LIBRARIES    "@CONF_TPL_LIBRARIES@" )
+
+# include paths as absolute paths
+set( @PNAME at _INCLUDE_DIRS "" )
+foreach( path ${@PNAME at _SELF_INCLUDE_DIRS} )
+	get_filename_component( abspath ${path} ABSOLUTE )
+	list( APPEND @PNAME at _INCLUDE_DIRS ${abspath} )
+endforeach()
+list( APPEND @PNAME at _INCLUDE_DIRS ${@PNAME at _TPL_INCLUDE_DIRS} )
+
+set( @PNAME at _DEFINITIONS      ${@PNAME at _SELF_DEFINITIONS} ${@PNAME at _TPL_DEFINITIONS} )
+set( @PNAME at _LIBRARIES        ${@PNAME at _SELF_LIBRARIES}  ${@PNAME at _TPL_LIBRARIES} )
+
+
+if( EXISTS ${@PNAME at _CMAKE_DIR}/@CONF_IMPORT_FILE@ )
+  set( @PNAME at _IMPORT_FILE "${@PNAME at _CMAKE_DIR}/@CONF_IMPORT_FILE@" )
+  debug_var( @PNAME at _IMPORT_FILE )
+  include( ${@PNAME at _IMPORT_FILE} )
+endif()
+
+# insert definitions for IMPORTED targets
+
+if( NOT @PROJECT_NAME at _BINARY_DIR )
+
+	set( IS_BUILD_DIR_EXPORT @_is_build_dir_export@ )
+
+	if( IS_BUILD_DIR_EXPORT )
+		include( "@TOP_PROJECT_TARGETS_FILE@" OPTIONAL )
+	else()
+		include( "${@PNAME at _CMAKE_DIR}/@CMAKE_PROJECT_NAME at -targets.cmake" )
+	endif()
+
+endif()
+
+# here goes the imports of the TPL's
+
+include( ${CMAKE_CURRENT_LIST_FILE}.tpls OPTIONAL )
+
+# publish this file as imported
+
+set( @PNAME at _IMPORT_FILE ${CMAKE_CURRENT_LIST_FILE} )
+mark_as_advanced( @PNAME at _IMPORT_FILE )
+
diff --git a/cmake/sg.pl b/cmake/sg.pl
new file mode 100755
index 0000000..455161b
--- /dev/null
+++ b/cmake/sg.pl
@@ -0,0 +1,573 @@
+#!/usr/bin/perl
+#!/usr/local/share/perl56
+
+# (C) Copyright 1996-2014 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.
+
+use strict;
+
+#use Data::Dumper;
+use File::Basename;
+
+#$Data::Dumper::Indent = 1;
+# $ARGV[0] = "test.cc";
+# $ARGV[0] = "/usr/include/g++-3/stl_pair.h";
+# $ARGV[0] = "/usr/include/g++-3/stl_vector.h";
+# $ARGV[0] = "/usr/include/g++-3/stl_list.h";
+# $ARGV[0] = "/usr/include/g++-3/stl_map.h";
+# $ARGV[0] = "x.cc";
+# $ARGV[0] = "/usr/include/g++-3/std/bastring.h";
+
+# script takes 3 parameters:
+# (1) file to process
+my $file = $ARGV[0];
+# (2) [optional] directory to place the generated .b file
+my $base = $ARGV[1];
+# (3) [optional] c++ namespace 
+my $namespace = $ARGV[2];
+
+# no argv[1] passed, take basedir from file
+if( $base eq "" )
+{
+	$base = dirname($file);
+}
+
+# no argv[1] passed, take basedir from file
+if( $namespace eq "" )
+{
+    $namespace = "eclib"
+}
+
+my @c = parser::parse($file);
+#print Dumper(\@c);
+
+
+foreach my $c ( @c )
+{
+	my $n = $c->name;
+	open(STDOUT,">$base/$n.b") || die "$base/$n.b: $!";
+
+	my @init1;
+	push @init1, map { "$_(b)" } $c->super;
+	push @init1, map { "$_(b(\&$_))" } $c->members;
+
+	my $col1;
+	$col1=":\n" if(@init1);
+	my $init1 = join(",\n",map {"\t$_"} @init1);
+
+	my @init2;
+	push @init2, map { "$_(b(\"$n\"))" } $c->super;
+	push @init2, map { "$_(b(\"$n\",\"$_\"))" } $c->members;
+
+	my $col2;
+	$col2=":\n" if(@init2);
+	my $init2 = join(",\n",map {"\t$_"} @init2);
+
+
+	my @s = map { "${_}::describe(s,depth+1)"      } $c->super;
+	my @m = map { "${namespace}::_describe(s,depth+1,\"$_\",$_)" } $c->members;
+	my $d = join(";\n\t","${namespace}::_startClass(s,depth,specName())", at s, at m,"${namespace}::_endClass(s,depth,specName())");
+
+	my @s = map { "${_}::_export(h)"      } $c->super;
+	my @m = map { "${namespace}::_export(h,\"$_\",$_)" } $c->members;
+	my $D = join(";\n\t","${namespace}::_startClass(h,\"$n\")", at s, at m,"${namespace}::_endClass(h,\"$n\")");
+
+	my $spec = "\"$n\"";
+	my @tmpl = $c->template;
+
+	my $spec_type = "const char*";
+
+	if(@tmpl)
+	{
+		$spec_type = "std::string";
+		my $x = join("+ ',' + ",  map { "Traits<$_>::name()"; } @tmpl);
+		$spec = <<"EOS";
+        std::string("$n<\") + $x + ">"
+EOS
+		$spec =~ s/\n/ /g;
+	}
+
+	my $isa = "${namespace}::Isa::add(t,specName());";
+	foreach my $s ( $c->super )
+	{
+		$isa = "${s}::isa(t);$isa";
+	}
+
+	my $schema;
+	@s = map { "${_}::schema(s)"      } $c->super;
+	@m = map { $a=$_->[0]; $b=$_->[1]; "s.member(\"$a\",member_size($n,$a),member_offset($n,$a),\"$b\")" } $c->members_types;
+	$schema = join(";\n\t","s.start(specName(),sizeof($n))", at s, at m,"s.end(specName())");
+
+	print <<"EOF";
+
+${n}(${namespace}::Bless& b)$col1$init1
+{
+}
+
+${n}(${namespace}::Evolve b)$col2$init2
+{
+}
+
+static ${spec_type} specName()      { return ${spec}; }
+static void isa(TypeInfo* t)  { ${isa} }
+static ${namespace}::Isa* isa()             { return ${namespace}::Isa::get(specName());  }
+
+static void schema(${namespace}::Schema& s)
+{
+	$schema;
+}
+
+EOF
+
+if(!$c->has_method("describe"))
+{
+print <<"EOF";
+
+void describe(std::ostream& s,int depth = 0) const {
+	$d;
+}
+
+
+EOF
+}
+
+print <<"EOF";
+
+void _export(${namespace}::Exporter& h) const { 
+	$D;
+}
+
+
+EOF
+
+}
+if(0)
+{
+foreach my $c ( @c )
+{
+	my $n = $c->name;
+	open(OUT,">${n}.b");
+	select OUT;
+	print "static void schema(${namespace}::Schema& s) {\n";
+	foreach my $x ( $c->super )
+	{
+		print "${x}::schema(s);\n";
+		#print "s(\"$x\", 0,sizeof($x));\n";
+	}
+	foreach my $x ( $c->members )
+	{
+		print "s(\"${n}::$x\",offsetof($n,$x),sizeof(&(($n*)0)->$x));\n";
+	}
+	print "}\n";
+}
+}
+package parser;
+use Carp;
+my @TOKENS;
+sub parse {
+	my ($file) = @_;
+	local $/ = undef;
+	open(IN,"<$file") || croak "$file: $!";
+	my $x = <IN>;
+	close(IN);
+	$x =~ s/^#.*$//mg;
+	$x =~ s/\/\/.*$//mg;
+	@TOKENS =
+		grep { length($_);                }
+		map  { /\W/ ? split('',$_) :  $_; }
+		map  { s/\s//g; $_;               }
+		split(/\b/, $x );
+
+	my @c;
+	my $x;
+	while($x = consume_until("(typedef|template|class|struct)"))
+	{
+		if($x eq 'typedef')
+		{
+			consume_until(";");
+			next;
+		}
+
+		if($x eq 'template')
+		{
+			push @c, parse_template();
+		}
+		else
+		{
+			push @c, parse_class();
+		}
+	}
+	return grep { defined $_; } @c;
+}
+
+sub parse_template {
+	my @tmp = template_args();
+	return parse_class(@tmp) if(next_is("(class|struct)"));
+}
+sub template_args {
+	my @tmp;
+	expect_next("<");
+	for(;;)
+	{
+		expect_next("(class|bool|int)");
+		push @tmp, next_ident();
+		if(next_is("="))
+		{
+			my $x = consume_until('(,|\>|\<)');
+			unshift @TOKENS,$x;
+			while($x eq '<')
+			{
+				consume_block('<','>');
+				$x = consume_until('(,|\>|\<)');
+				unshift @TOKENS,$x;
+			}
+		}
+		last unless(next_is(","));
+	}
+	expect_next(">");
+	return @tmp;
+}
+sub parse_class {
+	my (@tmp) = @_;
+	my $self = {};
+	my $name = next_ident();
+	$self->{name}     = $name;
+	$self->{template} = \@tmp if(@tmp);
+	# Foreward declaration
+	return if(next_is(";"));
+	if(next_is(":"))
+	{
+		for(;;)
+		{
+			ignore_while("(public|private|protected|virtual)");
+			push @{$self->{super}}, next_ident();
+			last unless(next_is(","));
+		}
+	}
+	expect_next('{');
+	while(!peek_next('}'))
+	{
+		# print "... : $TOKENS[0], $TOKENS[1], ... \n";
+		if(next_is('\/'))
+		{
+			if(next_is('\*'))
+			{
+				while(!next_is('\/'))
+				{
+					consume_until('\*');
+				}
+				next;
+			}
+			else
+			{
+				unshift @TOKENS, "/";	
+			}
+
+		}
+
+		if(next_is("(public|private|protected)"))
+		{
+			expect_next(":");
+			next;
+		}
+
+		if(next_is("friend"))
+		{
+			my $x = consume_until("(;|{)");
+			if($x eq "{")
+			{
+				unshift @TOKENS, $x;
+				consume_block('{','}');
+			}
+			next;
+		}
+
+		# next_is("explicit");
+		if(next_is("(typedef|using|typename|enum)"))
+		{
+			consume_until(";");
+			next;
+		}
+		if(next_is("(class|struct)"))
+		{
+			push @{$self->{classes}}, parse_class();
+			next;
+		}
+		my %m;
+		while(next_is("template"))
+		{
+			push @{ $m{template} } , template_args();
+		}
+
+		my @x;
+#		push @x,"~" while(next_is('\~'));
+
+		$m{explicit} = 1 if(next_is("explicit"));
+		$m{static}   = 1 if(next_is("static"));
+		$m{virtual}  = 1 if(next_is("virtual"));
+		my $x;
+		while($x = next_is_ident())
+		{
+			# print "--- : $x\n";
+			push @x, $x;
+			push @x,'*' while(next_is('\*'));
+			push @x,'&' while(next_is('\&'));
+			$m{name} = $x;
+			# int a,b,*c; does not work
+			my $s;
+			if($s = next_is('(,|;|=)'))
+			{
+				pop @x;
+				$m{type} = make_type(@x);
+				if(exists $m{static})
+				{
+					push @{$self->{class_members}}, \%m;
+				}
+				else
+				{
+					push @{$self->{members}}, \%m;
+				}
+				consume_until(";") if($s eq '=');
+				last;
+			}
+			if(peek_next('\('))
+			{
+				pop @x;
+				$m{type} = make_type(@x);
+				my @args = consume_block('(',')');
+				shift @args;
+				pop @args;
+				my @a;
+				my $n = 0;
+				my @z;
+				foreach my $a ( @args )
+				{
+					if($a eq ',' && $n == 0)
+					{
+						push @a, make_type(@z);
+						@z = ();
+						next;
+					}
+					$n++ if($a eq '<');	
+					$n++ if($a eq '(');	
+					$n-- if($a eq ')');	
+					$n-- if($a eq '>');	
+					push @z,$a;
+				}
+				push @a, make_type(@z) if(@z);
+				$m{const} = 1 if(next_is("const"));
+				$m{args}  = \@a;
+				if(exists $m{static})
+				{
+					push @{$self->{class_methods}}, \%m;
+				}
+				else
+				{
+					push @{$self->{methods}}, \%m;
+				}
+				# print "f: $x\n";
+
+				if(next_is(':'))
+				{
+					# print "{: $TOKENS[0]\n";
+					consume_until('\{');
+					unshift @TOKENS, '{';
+					consume_block('{','}');
+					# print "}: $TOKENS[0]\n";
+				}
+				else
+				{
+					if(peek_next('\{'))
+					{
+						consume_block('{','}');
+					}
+					else
+					{
+						if(next_is("="))
+						{
+							expect_next("0");
+							$m{abstract} = 1;
+						}
+						expect_next(";");
+					}
+				}
+				last;
+			}
+		}
+
+	}
+	expect_next("}");
+	expect_next(";");
+	return bless($self,"class");
+}
+sub consume_until {
+	my ($r) = @_;
+	while(@TOKENS)
+	{
+		my $x = shift @TOKENS;
+		return $x if($x =~ /^$r$/);
+	}
+	return undef;
+}
+sub consume_block {
+	my ($bra,$ket) = @_;
+	my $n = 0;
+	my @x;
+	croak "@TOKENS" unless($bra eq $TOKENS[0]);
+	while(@TOKENS)
+	{
+		my $x = shift @TOKENS;
+		$n++ if($x eq $bra);
+		$n-- if($x eq $ket);
+		push @x,$x;
+		return @x if($n == 0);
+	}
+}
+sub ignore_while {
+	my ($r) = @_;
+	while(@TOKENS)
+	{
+		return unless($TOKENS[0] =~ /^$r$/);
+		shift @TOKENS;
+	}
+}
+sub expect_next {
+	my ($r) = @_;
+	my $ident = shift @TOKENS;
+	croak "$ident is not $r" unless($ident =~ /^$r$/);
+	return $ident;
+}
+sub next_ident {
+	my $x = next_is_ident();
+	croak "not an ident " unless($x);
+	return $x;
+}
+sub next_is {
+	my ($r) = @_;
+	if($TOKENS[0] =~ /^$r$/)
+	{
+		return shift @TOKENS;
+	}
+	return undef;
+}
+sub next_is_ident {
+	my $op = next_is("operator");
+	if($op)
+	{
+		my $x;
+		if($x = next_is("(new|delete)"))
+		{
+			$op .= " $x";
+			if(next_is('\['))
+			{
+				expect_next('\]');
+				$op .= "[]";
+			}
+			return $op;
+		}
+
+		if(next_is('\('))
+		{
+			expect_next('\)');
+			$op .= "()";
+		}
+		my $z;
+		while($z = next_is('[\-+/\*\[\]<>=!]'))
+		{
+			$op .= $z;
+		}
+		return $op;
+	}
+	my $y = next_is('\~');
+	my $x = next_is('\w+');
+	if($x)
+	{
+		$x = "$y$x";
+		if(peek_next("<"))
+		{
+			my @x = consume_block("<",">");
+			$x .= join("", at x);
+		}
+
+		if(next_is(":"))
+		{
+			if(next_is(":"))
+			{
+				my $z = next_is_ident();
+				return "${x}::${z}";
+			}
+			else
+			{
+				unshift @TOKENS, ":";
+			}
+		}
+	}
+	return $x;
+}
+sub peek_next {
+	my ($r) = @_;
+	if($TOKENS[0] =~ /^$r$/)
+	{
+		return 1;
+	}
+	return 0;
+}
+sub make_type {
+	my (@a) = @_;
+	my $p;
+	my @x;
+	foreach my $a ( @a )
+	{
+		push @x, " " if($p =~ /^(\w+|\&|\*)$/ && $a =~ /^\w+$/);
+		push @x, $a;
+		$p = $a;
+	}
+	my $s = join('', at x);
+	$s =~ s/>>/> >/g;
+	return $s;
+}
+package class;
+sub name {
+	my ($self) = @_;
+	return $self->{name};
+}
+sub super {
+	my ($self) = @_;
+	return $self->{super} ? @{$self->{super}} : ();
+}
+
+sub members {
+	my ($self) = @_;
+	my @x = $self->{members} ? @{$self->{members}} : ();
+	return map { $_->{name} } @x;
+}
+
+sub methods {
+	my ($self) = @_;
+	my @x = $self->{methods} ? @{$self->{methods}} : ();
+	return map { $_->{name} } @x;
+}
+
+sub has_method {
+	my ($self,$name) = @_;
+	return grep { $_ eq $name } $self->methods;
+}
+
+sub members_types {
+	my ($self) = @_;
+	my @x = $self->{members} ? @{$self->{members}} : ();
+	return map { [ $_->{name}, $_->{type} ]  } @x;
+}
+
+sub template {
+	my ($self) = @_;
+	return $self->{template} ? @{$self->{template}} : ();
+}
+1;
+
+
diff --git a/cmake/sha1.in b/cmake/sha1.in
new file mode 100644
index 0000000..8e744a7
--- /dev/null
+++ b/cmake/sha1.in
@@ -0,0 +1 @@
+ at _p_SHA1@  @_p_NAME@
diff --git a/compile.sh b/compile.sh
new file mode 100755
index 0000000..376f2af
--- /dev/null
+++ b/compile.sh
@@ -0,0 +1,321 @@
+#!/bin/ksh
+
+
+. ./version.sh
+version="${MAGICS_PACKAGE_VERSION}"
+subdir="."
+
+metview=off
+if test "x$1" = x"mv4" -o "x$1" = x"mv4d"; then
+  compile="--enable-metview "
+  metview=on
+fi
+
+
+debug=off
+if test "x$1" = x"debug" -o "x$1" = x"mv4d"; then
+  compile="${compile}--enable-debug "
+#  export CXXFLAGS="${CXXFLAGS} -g -DOBS_DEBUG_ -DDRIVERS_DEBUG_"
+  export CXXFLAGS="${CXXFLAGS} -g"
+  debug=on
+  subdir="debug"
+fi
+
+export CXX=g++ 
+export CC=gcc 
+export F77=pgf90
+export FC=pgf90
+
+if test "x$1" = x"in" -o "x$1" = x"ip" -o "x$1" = x"id"; then
+  compile="--enable-metview "
+  metview=on
+  export CXX=icpc 
+  export CC=icc
+  export F77=ifort
+  export FC=ifort
+  intel_common="-O3 -xhost -opt-report -vec-report3"
+  if test "x$1" = x"ip"; then
+    intel_common="-O3 -xhost -opt-report -vec-report3 -parallel -par-report3"
+  fi
+  if test "x$1" = x"id"; then
+    intel_common="-guide -parallel"
+  fi
+  export CFLAGS="${intel_common}"
+  export CXXFLAGS="${intel_common}"
+fi
+
+if test x"$OS_VERSION" = "xrhel63"; then
+  export F77=gfortran
+  export FC=gfortran
+fi
+
+
+echo ""
+echo " ++++++++++++++++++++++++++++++++++++++++++++++++++"
+echo ""
+started="`date`"
+echo "  BUILDING  Magics version ${version}  starting ${started}"
+echo ""
+echo " ++++++++++++++++++++++++++++++++++++++++++++++++++"
+echo ""
+echo " CC =${CC}"
+echo " CXX=${CXX}"
+echo " F77=${F77}"
+echo " FC =${FC}"
+echo ""
+
+./bootstrap
+
+apps_path="/usr/local/apps/Magics/${version}"
+
+exp="--disable-exception "
+static_common=" ${exp}--enable-static --disable-shared"
+shared_common=" --disable-static --enable-shared"
+
+case "${OS_VERSION}" in
+   # 32bit Linux
+   suse91)
+	if test "x$debug" = x"off"; then
+	   export CXXFLAGS="${CXXFLAGS} -mtune=native -O2"
+	fi
+	# STATIC
+	./configure.ecmwf --prefix=${apps_path} --disable-cairo --enable-bufr --enable-spot ${static_common}
+	make clean
+	make quiet
+
+	# SHARED
+	./configure.ecmwf --prefix=${apps_path} --disable-cairo --enable-json --enable-bufr --enable-spot ${shared_common}
+	make clean
+	make quiet
+   ;;
+   sles11)
+        if test "x$CC" = "x"; then
+	   export CC=gcc
+	fi
+	if test "x$debug" = "xoff" -a "x$CC" = "xgcc"; then
+	   export CXXFLAGS="${CXXFLAGS} -mtune=native -O2"
+	fi
+	export PATH=/usr/local/apps/qt/4.6.2\-64/bin:${PATH}
+	export GNU_MODE=64
+	export PGI_MODE=64
+	export GRIB_API_MODE=64
+	export OBJECT_MODE=64
+	use pgi
+	use grib_api
+
+	if test "x$CC" = "xicc"; then            # intel
+	  . /usr/local/apps/intel/current/bin/ifortvars.sh intel64
+	  . /usr/local/apps/intel/current/bin/iccvars.sh intel64
+	  export INTEL_LICENSE_FILE='28518 at papercup'
+	  bash ./configure.ecmwf --prefix=${apps_path}_intel --enable-bufr --enable-spot --enable-json --enable-odb ${compile}${shared_common} --enable-python && \
+	  make clean && \
+	  make -j 4
+	else   # gcc
+	  # STATIC
+	  ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-spot ${static_common} && \
+	  make clean && \
+	  make quiet && \
+	  ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-spot --enable-json --enable-odb ${compile}${shared_common} --enable-python && \
+	  make clean && \
+	  make quiet
+	fi
+   ;;
+   rhel6)
+           ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-odb ${static_common} && \
+           make clean && make quiet
+           ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-odb ${compile}${shared_common} --enable-python --enable-json && \
+           make clean && make quiet
+   ;;
+   opensuse113)
+	export PATH=/usr/local/apps/python/current/bin/:$PATH
+	export GNU_MODE=64
+	export PGI_MODE=64
+	export GRIB_API_MODE=64
+	export OBJECT_MODE=64
+	use pgi
+	use grib_api
+
+	if test "x$debug" = "xoff"; then
+	   export CXXFLAGS="${CXXFLAGS} -mtune=native -O3"
+#	   subdir="release"
+#	   rm -rf ${subdir}
+#	   mkdir ${subdir}
+#	   cd ${subdir}
+#	   mkdir -p src/drivers/MgQ
+#	   ../
+	   ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-odb --enable-spot ${static_common} && \
+	   make clean && \
+	   make quiet
+	   ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-odb --enable-spot ${compile}${shared_common} --enable-python && \
+	   make clean && \
+	   make quiet
+#	   cd -
+	else
+	   export CXXFLAGS="${CXXFLAGS} -O0 -g"
+#	   subdir="debug"
+#	   rm -rf ${subdir}
+#	   mkdir ${subdir}
+#	   cd ${subdir}
+#	   mkdir -p src/drivers/MgQ
+#	   ../
+	   ./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-odb --enable-spot ${compile}--enable-static --enable-python && \
+	   make clean && \
+	   make quiet
+#	   cd -
+	fi
+
+	#
+	#   M E T V I E W
+	#
+	if test "x$metview" = "xon" ; then
+	    cd ../metview && ./bootstrap
+	    if test "x$debug" = x"off"; then
+	      ./configure.ecmwf --enable-ecregrid --enable-experimental --with-magics-home=${apps_path} && make clean && make
+	    else
+	      rm -rf debug
+	      mkdir debug
+	      cd debug
+	      ../configure.ecmwf --enable-debug --enable-qtdebug --enable-ecregrid --enable-experimental --with-magics-home=${apps_path} && make clean && make
+	    fi
+	fi
+   ;;
+
+   opensuse103)
+	if test "x$debug" = x"off"; then
+	   export CXXFLAGS="${CXXFLAGS} -mtune=native -O2"
+	fi
+	#
+	# STATIC
+	#
+	./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-spot ${compile}${static_common} \
+	&& make clean && make quiet
+
+	#
+	# SHARED
+	#
+	export CXXFLAGS="-g ${CXXFLAGS}"
+	./configure.ecmwf --prefix=${apps_path} --enable-bufr --enable-spot ${compile}${shared_common} \
+	   --enable-json --enable-odb --enable-python \
+	&& make clean && make quiet
+   ;;
+   
+   #########################################################
+   #
+   # IBM Server
+   #
+   #	*** C1B ***
+   #	ssh -X c1b
+   #	module unload c
+   #	module load c++/vacpp/12.0.0.0_b01
+   #	PROJ4 --> bash configure --disable-shared CC=xlC_r --prefix=/perm/graphics/cgm/proj4
+   #	./configure CPPFLAGS="-I/perm/graphics/cgm/boost_1_49_0/" LDFLAGS=-L/usr/local/lib/metaps/lib/grib_api/jasper/lib --with-grib-api=/usr/local/lib/metaps/lib/grib_api/1.9.16 --disable-netcdf --with-proj4=/perm/graphics/cgm/proj4 CXX=xlC_r LD=xlC_r
+
+   #	Base=/usr/local/apps/vacpp/vacpp12.eval/
+   #	export PATH=$Base/usr/vacpp/bin:$PATH
+   #	export LIBPATH=$Base/usr/lib:/usr/lib:/usr/local/lib
+   aix)
+    use vacpp12100
+
+    export AR=/usr/bin/ar 
+    export LD=/usr/bin/ld
+    export NM='/usr/bin/nm -B'
+    export CC=xlc_r
+    export CXX=xlC_r
+    export F77=xlf
+    export FC=xlf90
+#    export CXXFLAGS="-g -O2"
+#    export CFLAGS="-g -O2"
+
+    /bin/bash ./configure.ecmwf --prefix=${apps_path} --disable-python --enable-raster --disable-cairo --enable-bufr ${compile} --enable-static --disable-shared ; gmake clean ;  gmake -j 4 && gmake install
+###    /bin/bash ./configure.ecmwf --prefix=${apps_path} --disable-raster --disable-cairo --enable-bufr ${compile} --enable-static --enable-python ; gmake clean ;  gmake -j 4 && gmake install
+
+#    export GRIB_API_MODE=64
+#    export OBJECT_MODE=64
+###    /bin/bash ./configure.ecmwf --prefix=${apps_path}_${OBJECT_MODE} --enable-metview --disable-raster --disable-cairo --enable-bufr --enable-static --disable-shared ${compile} ; gmake clean ;  gmake -j 4 && gmake install
+#    /bin/bash ./configure.ecmwf --prefix=${apps_path}_${OBJECT_MODE} --enable-metview --disable-raster --disable-cairo --enable-bufr --enable-static ${compile} ; gmake clean ;  gmake -j 4 && gmake install
+   ;;
+
+   hpux11)
+	./configure.ecmwf CXX=aC++ CC=aCC F77=f90 GREP=egrep LD=ld
+   ;;
+
+	#######################################################
+    #
+    #  MAC OS X 
+    #
+    #  sudo port install cairo pango pkgconfig swig swig-python py-numpy p5-xml-simple curl boost netcdf gcc46 qt4-mac openmotif grib_api pdksh gv proj
+    #  export PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/X11R6/lib/pkgconfig:/local/lib/pkgconfig:/opt/local/lib/pkgconfig"
+    #  export RSYNC_PROXY=http://proxy.ecmwf.int:2222
+    #  export OS_VERSION=mac
+
+   mac)
+    export MACOSX_DEPLOYMENT_TARGET=10.8
+    ./configure ${compile} CXX="g++-mp-4.6" CC="gcc-mp-4.6" F77="gfortran-mp-4.6" \
+    && make clean  \
+    && make
+#      --enable-json --enable-python \
+#   cd ../metview
+#   ./configure --with-magics-home=/usr/local --with-grib-api=/opt/local/ LDFLAGS=-L/opt/local/lib LIBS=-lpng CXX=g++-mp-4.6 CC=gcc-mp-4.6 F77=gfortran-mp-4.6 --disable-ui
+   ;;
+
+
+   *)
+      if test "x${1}" = "xintel"; then
+	echo ""
+	echo "    I N T E L "
+	echo ""
+	compile=" --enable-metview "
+	./configure CXX="icpc" CC="icc" F77="ifort" ${compile} CXXFLAGS="${CXXFLAGS} -Wall -DOBS_DEBUG_ -DDRIVERS_DEBUG_" LIBS="-lgfortran" --libdir=/usr/local/lib64 \
+	    --enable-json --enable-bufr --enable-python
+#	&& make clean \
+#	&& make && sudo make install
+
+#	cd ../metview &&./bootstrap && \
+#	./configure CXX="icpc" CC="icc" F77="ifort" --enable-experimental --enable-ecregrid --enable-qtdebug --with-grib-api=/usr && make clean && make
+
+      else
+
+	echo ""
+	echo "SETUP choosen for OUTSIDE the centre!!!"
+	echo ""
+	export F77=gfortran
+	export FC=gfortran
+
+	if test "x$debug" = x"off"; then
+	   export CXXFLAGS="${CXXFLAGS} -mtune=native -O2 -ftree-vectorizer-verbose=1" #  -Wdisabled-optimization"
+	else
+	   export CXXFLAGS="${CXXFLAGS} -g -O0 -Wextra -Wdisabled-optimization"  # -Wfloat-equal -Wshadow
+	fi 
+	compile=" --enable-metview "
+	./configure ${compile} CXXFLAGS="${CXXFLAGS} -Wall -DOBS_DEBUG_ -DDRIVERS_DEBUG_" --libdir=/usr/local/lib64 --enable-bufr --enable-python \
+	&& make clean  \
+	&& make && sudo make install
+
+	if test -f apps/MagMLInterpretor/magmlx ; then
+	  cd ../metview &&./bootstrap && \
+	   ./configure --enable-experimental --enable-ecregrid --enable-qtdebug --with-grib-api=/usr && make clean && make
+	else
+	   echo ""
+	   echo "    Magics++ did NOT build!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+	   echo ""
+	fi
+      fi
+   ;;
+esac
+
+
+echo ""
+echo " ++++++++++++++++++++++++++++++++++++++++++++++++++"
+echo ""
+echo "  FINISHED BUILDING  Magics version ${version}" 
+if test "x$debug" = x"on"; then
+echo ""
+echo "            D E B U G  version" 
+fi
+echo ""
+echo "  Started  ${started}"
+echo ""
+echo "  Finished `date`"
+echo ""
+echo " ++++++++++++++++++++++++++++++++++++++++++++++++++"
+echo ""
diff --git a/config/README b/config/README
deleted file mode 100644
index 12bf2c6..0000000
--- a/config/README
+++ /dev/null
@@ -1 +0,0 @@
-This file is necessary for bootstrap to work ;-)
diff --git a/config/config.guess b/config/config.guess
deleted file mode 100755
index 666c5ad..0000000
--- a/config/config.guess
+++ /dev/null
@@ -1,1511 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
-
-timestamp='2009-11-20'
-
-# 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 2 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# 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 Per Bothner.  Please send patches (context
-# diff format) to <config-patches at gnu.org> and include a ChangeLog
-# entry.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
-#
-# 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
-
-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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 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_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 tupples: *-*-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 ;;
-    *: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'`
-	exit ;;
-    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:*:[456])
-	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:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    amd64)
-		echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_MACHINE}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	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}-gnu`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/[-(].*//'`-gnu
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	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="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu${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-gnu
-	else
-	    echo ${UNAME_MACHINE}-${VENDOR}-linux-gnueabi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	exit ;;
-    cris:Linux:*:*)
-	echo cris-axis-linux-gnu
-	exit ;;
-    crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
-	exit ;;
-    frv:Linux:*:*)
-    	echo frv-${VENDOR}-linux-gnu
-	exit ;;
-    i*86:Linux:*:*)
-	LIBC=gnu
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}"
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	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-gnu"; exit; }
-	;;
-    or32:Linux:*:*)
-	echo or32-${VENDOR}-linux-gnu
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-${VENDOR}-linux-gnu
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-${VENDOR}-linux-gnu
-	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-gnu ;;
-	  PA8*) echo hppa2.0-${VENDOR}-linux-gnu ;;
-	  *)    echo hppa-${VENDOR}-linux-gnu ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-${VENDOR}-linux-gnu
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-${VENDOR}-linux-gnu
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
-	exit ;;
-    sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
-	exit ;;
-    x86_64:Linux:*:*)
-	echo x86_64-${VENDOR}-linux-gnu
-	exit ;;
-    xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-${VENDOR}-linux-gnu
-	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-${VENDOR}-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-${VENDOR}-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 ;;
-    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
-	case $UNAME_PROCESSOR in
-	    i386)
-		eval $set_cc_for_build
-		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
-		      UNAME_PROCESSOR="x86_64"
-		  fi
-		fi ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
-	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 ;;
-    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 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-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 2a55a50..0000000
--- a/config/config.sub
+++ /dev/null
@@ -1,1705 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
-
-timestamp='2009-11-20'
-
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# 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 2 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# 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.
-
-
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
-#
-# 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 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-dietlibc | linux-newlib* | 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/'`
-    ;;
-  *)
-    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*)
-		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 \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-	| bfin \
-	| c4x | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | 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 \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nios | nios2 \
-	| ns16k | ns32k \
-	| or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-	| pyramid \
-	| 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 | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e \
-	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-		# Motorola 68HC11/12.
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-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-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| 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-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
-	| 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-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nios-* | nios2-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-	| pyramid-* \
-	| 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-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
-	| 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
-		;;
-	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)
-		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'm not sure what "Sysv32" means.  Should this be sysv3.2?
-	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
-		;;
-	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-/'`
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	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
-		;;
-	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)	basic_machine=powerpc-unknown
-		;;
-	ppc-*)	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)
-		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
-		;;
-	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
-		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
-	tile*)
-		basic_machine=tile-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
-		;;
-	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* \
-	      | -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* \
-	      | -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* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -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
-		;;
-	-kaos*)
-		os=-kaos
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-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
-		;;
-	# 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
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-        mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		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 df8eea7..0000000
--- a/config/depcomp
+++ /dev/null
@@ -1,630 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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 outputing 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
-
-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"
-
-# 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
-
-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 -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## 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).
-## - 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 -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## 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.
-  tr ' ' '
-' < "$tmpdepfile" |
-## 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.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -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 -eq 0; then :
-  else
-    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 ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-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.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  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 -eq 0; then :
-  else
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    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.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-  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 -eq 0; then :
-  else
-     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,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
-    sed -ne '2,${
-	       s/^ *//
-	       s/ \\*$//
-	       s/$/:/
-	       p
-	     }' "$tmpdepfile" >> "$depfile"
-  else
-    echo "#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.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # 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.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#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:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    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"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    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::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$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 6781b98..0000000
--- a/config/install-sh
+++ /dev/null
@@ -1,520 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2009-04-28.21; # 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
-	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
-  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
-  trap '(exit $?); exit' 1 2 13 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 starting with `-'.
-  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
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
-
-    # 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-writeable 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 -z "$d" && 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 100755
index a72f2fd..0000000
--- a/config/ltmain.sh
+++ /dev/null
@@ -1,8406 +0,0 @@
-# Generated from ltmain.m4sh.
-
-# ltmain.sh (GNU libtool) 2.2.6b
-# 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 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
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long 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.
-# 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.2.6b
-#       automake:		$automake_version
-#       autoconf:		$autoconf_version
-#
-# Report bugs to <bug-libtool at gnu.org>.
-
-PROGRAM=ltmain.sh
-PACKAGE=libtool
-VERSION=2.2.6b
-TIMESTAMP=""
-package_revision=1.3017
-
-# 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
-
-# NLS nuisances: We save the old values to restore during execute mode.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-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
-
-$lt_unset CDPATH
-
-
-
-
-
-: ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SED="/bin/sed"}
-: ${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_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 "X${1}" | $Xsed -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 "X${1}" | $Xsed -e "$basename"`
-}
-
-# Generated shell functions inserted here.
-
-# 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"
-
-# The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-case $progname in
-  -*) progname=./$progname ;;
-esac
-
-# 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=:
-     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'
-
-# 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${mode+: }$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_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname${mode+: }$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 "X$my_directory_path" | $Xsed -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e '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 "X$my_tmpdir" | $Xsed
-}
-
-
-# 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 "X$1" | $Xsed -e "$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 "X$1" | $Xsed \
-	    -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_version
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $SED -n '/^# '$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 ()
-{
-    $SED -n '/^# Usage:/,/# -h/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    $ECHO
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
-}
-
-# func_help
-# Echo long help message to standard output and exit.
-func_help ()
-{
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-        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 --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
-	p
-     }' < "$progpath"
-    exit $?
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
-    func_error "missing argument for $1"
-    exit_cmd=exit
-}
-
-exit_cmd=:
-
-
-
-
-
-# Check that we have a working $ECHO.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-# $mode is unset
-nonopt=
-execute_dlfiles=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
-
-# 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_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
-}
-
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
-{
-
-  # 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
-
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
-    opt="$1"
-    shift
-
-    case $opt in
-      --config)		func_config					;;
-
-      --debug)		preserve_args="$preserve_args $opt"
-			func_echo "enabling shell trace mode"
-			opt_debug='set -x'
-			$opt_debug
-			;;
-
-      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			execute_dlfiles="$execute_dlfiles $1"
-			shift
-			;;
-
-      --dry-run | -n)	opt_dry_run=:					;;
-      --features)       func_features					;;
-      --finish)		mode="finish"					;;
-
-      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			case $1 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
-
-			mode="$1"
-			shift
-			;;
-
-      --preserve-dup-deps)
-			opt_duplicate_deps=:				;;
-
-      --quiet|--silent)	preserve_args="$preserve_args $opt"
-			opt_silent=:
-			;;
-
-      --verbose| -v)	preserve_args="$preserve_args $opt"
-			opt_silent=false
-			;;
-
-      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
-			preserve_args="$preserve_args $opt $1"
-			func_enable_tag "$1"	# tagname is set here
-			shift
-			;;
-
-      # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-			func_opt_split "$opt"
-			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
-			shift
-			;;
-
-      -\?|-h)		func_usage					;;
-      --help)		opt_help=:					;;
-      --version)	func_version					;;
-
-      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
-
-      *)		nonopt="$opt"
-			break
-			;;
-    esac
-  done
-
-
-  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_duplicate_deps
-      ;;
-  esac
-
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
-
-# 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
-}
-
-
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-$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
-
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
-
-
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$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=$mode' for more information."
-}
-
-
-# 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_ltwrapper_scriptname_result=""
-    if func_ltwrapper_executable_p "$1"; then
-	func_dirname_and_basename "$1" "" "."
-	func_stripname '' '.exe' "$func_basename_result"
-	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-    fi
-}
-
-# 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_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_quote_for_eval "$arg"
-	CC_quoted="$CC_quoted $func_quote_for_eval_result"
-      done
-      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 "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
-      # 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_quote_for_eval "$arg"
-	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
-	    done
-	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
-	      # 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}"
-    }
-}
-
-# 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="$pie_flag $arg"
-	  continue
-	  ;;
-
-	-shared | -static | -prefer-pic | -prefer-non-pic)
-	  later="$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_quote_for_eval "$arg"
-	    lastarg="$lastarg $func_quote_for_eval_result"
-	  done
-	  IFS="$save_ifs"
-	  func_stripname ' ' '' "$lastarg"
-	  lastarg=$func_stripname_result
-
-	  # Add the arguments to base_compile.
-	  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_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
-    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 | *.obj | *.sx)
-      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 "X$srcfile" | $Xsed -e 's%^.*/%%' -e '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="$removelist $output_obj"
-      $ECHO "$srcfile" > "$lockfile"
-    fi
-
-    $opt_dry_run || $RM $removelist
-    removelist="$removelist $lockfile"
-    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
-    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="$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="$command -o $obj"
-      fi
-
-      # Suppress compiler output if we already did a PIC compilation.
-      command="$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 "$mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
-    # We need to display help for each of the modes.
-    case $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 building PIC objects only
-  -prefer-non-pic   try to building 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
-
-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 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
-  -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
-
-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 \`$mode'"
-        ;;
-    esac
-
-    $ECHO
-    $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
-}
-
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
-
-
-# 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 $execute_dlfiles; do
-      test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
-
-      dir=
-      case $file in
-      *.la)
-	# 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="$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
-      -*) ;;
-      *)
-	# 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_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
-    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 "$mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
-    $opt_debug
-    libdirs="$nonopt"
-    admincmds=
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
-
-      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="$admincmds
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
-
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $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 "X----------------------------------------------------------------------" | $Xsed
-    exit $EXIT_SUCCESS
-}
-
-test "$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.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; 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="$install_prog$func_quote_for_eval_result"
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    for arg
-    do
-      if test -n "$dest"; then
-	files="$files $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f)
-	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
-	;;
-      -g | -m | -o)
-	prev=$arg
-	;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      install_prog="$install_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 -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="$staticlibs $file"
-	;;
-
-      *.la)
-	# 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="$current_libdirs $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
-	  esac
-	fi
-
-	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
-	dir="$dir$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -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 "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
-	  else
-	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "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_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="$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 "X$lib" | $Xsed -e '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 "X$relink_command" | $Xsed -e '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 "X$file$stripped_ext" | $Xsed -e "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_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $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 "$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
-
-/* 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 "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	  for progfile in $progfiles; do
-	    func_verbose "extracting global C symbols from \`$progfile'"
-	    $opt_dry_run || eval "$NM $progfile | $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"
-	  $opt_dry_run || {
-	    eval '$ECHO ": $name " >> "$nlist"'
-	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-	  }
-	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;
-"
-	  case $host in
-	  *cygwin* | *mingw* | *cegcc* )
-	    $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */"
-	    lt_dlsym_const= ;;
-	  *osf5*)
-	    echo >> "$output_objdir/$my_dlsyms" "\
-/* This system does not cope well with relocations in const data */"
-	    lt_dlsym_const= ;;
-	  *)
-	    lt_dlsym_const=const ;;
-	  esac
-
-	  $ECHO >> "$output_objdir/$my_dlsyms" "\
-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="$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 "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-	  else
-	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  fi
-	  ;;
-	*)
-	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "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.
-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
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
-	$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_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
-    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 | $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 | $NL2SP`
-    done
-
-    func_extract_archives_result="$my_oldobjs"
-}
-
-
-
-# func_emit_wrapper_part1 [arg=no]
-#
-# Emit the first part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part1 ()
-{
-	func_emit_wrapper_part1_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part1_arg1=$1
-	fi
-
-	$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.
-Xsed='${SED} -e 1s/^X//'
-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
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
-"
-	$ECHO "\
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
-  done
-"
-}
-# end: func_emit_wrapper_part1
-
-# func_emit_wrapper_part2 [arg=no]
-#
-# Emit the second part of a libtool wrapper script on stdout.
-# For more information, see the description associated with
-# func_emit_wrapper(), below.
-func_emit_wrapper_part2 ()
-{
-	func_emit_wrapper_part2_arg1=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_part2_arg1=$1
-	fi
-
-	$ECHO "\
-
-  # Usually 'no', except on cygwin/mingw when embedded into
-  # the cwrapper.
-  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_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 \"X\$thisdir\" | \$Xsed -e '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"
-
-	# 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $ECHO "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	$ECHO "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2* | *-cegcc*)
-	  $ECHO "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
-	  ;;
-
-	*)
-	  $ECHO "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
-	  ;;
-	esac
-	$ECHO "\
-      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
-      exit 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\
-"
-}
-# end: func_emit_wrapper_part2
-
-
-# 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=no
-	if test -n "$1" ; then
-	  func_emit_wrapper_arg1=$1
-	fi
-
-	# split this up so that func_emit_cwrapperexe_src
-	# can call each part independently.
-	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
-	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
-}
-
-
-# func_to_host_path arg
-#
-# Convert paths to host format when used with build tools.
-# Intended for use with "native" mingw (where libtool itself
-# is running under the msys shell), or in the following cross-
-# build environments:
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-# where wine is equipped with the `winepath' executable.
-# In the native mingw case, the (msys) shell automatically
-# converts paths for any non-msys applications it launches,
-# but that facility isn't available from inside the cwrapper.
-# Similar accommodations are necessary for $host mingw and
-# $build cygwin.  Calling this function does no harm for other
-# $host/$build combinations not listed above.
-#
-# ARG is the path (on $build) that should be converted to
-# the proper representation for $host. The result is stored
-# in $func_to_host_path_result.
-func_to_host_path ()
-{
-  func_to_host_path_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        case $build in
-          *mingw* ) # actually, msys
-            # awkward: cmd appends spaces to result
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_path_tmp1=`cygpath -w "$1"`
-            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # 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_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
-            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
-              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
-                $SED -e "$lt_sed_naive_backslashify"`
-            else
-              # Allow warning below.
-              func_to_host_path_result=""
-            fi
-            ;;
-        esac
-        if test -z "$func_to_host_path_result" ; then
-          func_error "Could not determine host path corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback:
-          func_to_host_path_result="$1"
-        fi
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_path
-
-# func_to_host_pathlist arg
-#
-# Convert pathlists to host format when used with build tools.
-# See func_to_host_path(), above. This function supports the
-# following $build/$host combinations (but does no harm for
-# combinations not listed here):
-#    $build          $host
-#    mingw (msys)    mingw  [e.g. native]
-#    cygwin          mingw
-#    *nix + wine     mingw
-#
-# 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.
-#
-# ARG is a pathlist (on $build) that should be converted to
-# the proper representation on $host. The result is stored
-# in $func_to_host_pathlist_result.
-func_to_host_pathlist ()
-{
-  func_to_host_pathlist_result="$1"
-  if test -n "$1" ; then
-    case $host in
-      *mingw* )
-        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-        # 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_to_host_pathlist_tmp2="$1"
-        # Once set for this call, this variable should not be
-        # reassigned. It is used in tha fallback case.
-        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
-          $SED -e 's|^:*||' -e 's|:*$||'`
-        case $build in
-          *mingw* ) # Actually, msys.
-            # Awkward: cmd appends spaces to result.
-            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
-            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
-              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          *cygwin* )
-            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
-            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
-              $SED -e "$lt_sed_naive_backslashify"`
-            ;;
-          * )
-            # unfortunately, winepath doesn't convert pathlists
-            func_to_host_pathlist_result=""
-            func_to_host_pathlist_oldIFS=$IFS
-            IFS=:
-            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
-              IFS=$func_to_host_pathlist_oldIFS
-              if test -n "$func_to_host_pathlist_f" ; then
-                func_to_host_path "$func_to_host_pathlist_f"
-                if test -n "$func_to_host_path_result" ; then
-                  if test -z "$func_to_host_pathlist_result" ; then
-                    func_to_host_pathlist_result="$func_to_host_path_result"
-                  else
-                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
-                  fi
-                fi
-              fi
-              IFS=:
-            done
-            IFS=$func_to_host_pathlist_oldIFS
-            ;;
-        esac
-        if test -z "$func_to_host_pathlist_result" ; then
-          func_error "Could not determine the host path(s) corresponding to"
-          func_error "  '$1'"
-          func_error "Continuing, but uninstalled executables may not work."
-          # Fallback. This may break if $1 contains DOS-style drive
-          # specifications. The fix is not to complicate the expression
-          # below, but for the user to provide a working wine installation
-          # with winepath so that path translation in the cross-to-mingw
-          # case works properly.
-          lt_replace_pathsep_nix_to_dos="s|:|;|g"
-          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
-            $SED -e "$lt_replace_pathsep_nix_to_dos"`
-        fi
-        # Now, add the leading and trailing path separators back
-        case "$1" in
-          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
-            ;;
-        esac
-        case "$1" in
-          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
-            ;;
-        esac
-        ;;
-    esac
-  fi
-}
-# end: func_to_host_pathlist
-
-# 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.
-
-   Currently, it simply execs the wrapper *script* "$SHELL $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
-*/
-EOF
-	    cat <<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-# define setmode _setmode
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-#  include <io.h>
-#  define HAVE_SETENV
-#  ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-#  endif
-# 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>
-
-#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
-
-#ifdef _MSC_VER
-# define S_IXUSR _S_IEXEC
-# define stat _stat
-# ifndef _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#endif
-
-#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 */
-
-#ifdef __CYGWIN__
-# define FOPEN_WB "wb"
-#endif
-
-#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)
-
-#undef LTWRAPPER_DEBUGPRINTF
-#if defined DEBUGWRAPPER
-# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
-static void
-ltwrapper_debugprintf (const char *fmt, ...)
-{
-    va_list args;
-    va_start (args, fmt);
-    (void) vfprintf (stderr, fmt, args);
-    va_end (args);
-}
-#else
-# define LTWRAPPER_DEBUGPRINTF(args)
-#endif
-
-const char *program_name = NULL;
-
-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_fatal (const char *message, ...);
-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_opt_process_env_set (const char *arg);
-void lt_opt_process_env_prepend (const char *arg);
-void lt_opt_process_env_append (const char *arg);
-int lt_split_name_value (const char *arg, char** name, char** value);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-
-static const char *script_text_part1 =
-EOF
-
-	    func_emit_wrapper_part1 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-	    cat <<EOF
-
-static const char *script_text_part2 =
-EOF
-	    func_emit_wrapper_part2 yes |
-	        $SED -e 's/\([\\"]\)/\\\1/g' \
-	             -e 's/^/  "/' -e 's/$/\\n"/'
-	    echo ";"
-
-	    cat <<EOF
-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_pathlist "$temp_rpath"
-	      cat <<EOF
-const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
-EOF
-	    else
-	      cat <<"EOF"
-const char * LIB_PATH_VALUE   = "";
-EOF
-	    fi
-
-	    if test -n "$dllsearchpath"; then
-              func_to_host_pathlist "$dllsearchpath:"
-	      cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_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-"
-#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
-
-static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-
-static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
-
-static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
-static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
-  /* argument is putenv-style "foo=bar", value of foo is set to bar */
-
-static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
-static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
-  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
-
-static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
-static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
-  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
-
-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]));
-  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
-  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
-
-  /* very simple arg parsing; don't want to rely on getopt */
-  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"
-	  printf ("%s", script_text_part1);
-	  printf ("%s", script_text_part2);
-	  return 0;
-	}
-    }
-
-  newargz = XMALLOC (char *, argc + 1);
-  tmp_pathspec = find_executable (argv[0]);
-  if (tmp_pathspec == NULL)
-    lt_fatal ("Couldn't find %s", argv[0]);
-  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
-			  tmp_pathspec));
-
-  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
-  LTWRAPPER_DEBUGPRINTF (("(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;
-
-  LTWRAPPER_DEBUGPRINTF (("(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 */
-  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
-
-  newargc=0;
-  for (i = 1; i < argc; i++)
-    {
-      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
-        {
-          if (argv[i][env_set_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_set_opt_len + 1;
-              lt_opt_process_env_set (p);
-            }
-          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_set (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_set_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
-        {
-          if (argv[i][env_prepend_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_prepend_opt_len + 1;
-              lt_opt_process_env_prepend (p);
-            }
-          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_prepend_opt);
-          continue;
-        }
-      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
-        {
-          if (argv[i][env_append_opt_len] == '=')
-            {
-              const char *p = argv[i] + env_append_opt_len + 1;
-              lt_opt_process_env_append (p);
-            }
-          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
-            {
-              lt_opt_process_env_append (argv[++i]); /* don't copy */
-            }
-          else
-            lt_fatal ("%s missing required argument", env_append_opt);
-          continue;
-        }
-      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 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 ("Unrecognized option in %s namespace: '%s'",
-                    ltwrapper_option_prefix, argv[i]);
-        }
-      /* otherwise ... */
-      newargz[++newargc] = xstrdup (argv[i]);
-    }
-  newargz[++newargc] = NULL;
-
-  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
-  for (i = 0; i < newargc; i++)
-    {
-      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
-    }
-
-EOF
-
-	    case $host_os in
-	      mingw*)
-		cat <<"EOF"
-  /* execv doesn't actually work on mingw as expected on unix */
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
-  if (rval == -1)
-    {
-      /* failed to start process */
-      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, 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 ("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;
-
-  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  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;
-
-  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
-			  path ? (*path ? path : "EMPTY!") : "NULL!"));
-  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;
-
-  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
-			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
-
-  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 ("getcwd failed");
-		  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 ("getcwd failed");
-  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)
-    {
-      LTWRAPPER_DEBUGPRINTF (("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
-	{
-	  char *errstr = strerror (errno);
-	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
-	}
-    }
-  XFREE (tmp_pathspec);
-
-  if (!has_symlinks)
-    {
-      return xstrdup (pathspec);
-    }
-
-  tmp_pathspec = realpath (pathspec, buf);
-  if (tmp_pathspec == 0)
-    {
-      lt_fatal ("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;
-}
-
-static void
-lt_error_core (int exit_status, const char *mode,
-	       const char *message, va_list ap)
-{
-  fprintf (stderr, "%s: %s: ", program_name, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-  va_end (ap);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-  {
-#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;
-}
-
-int
-lt_split_name_value (const char *arg, char** name, char** value)
-{
-  const char *p;
-  int len;
-  if (!arg || !*arg)
-    return 1;
-
-  p = strchr (arg, (int)'=');
-
-  if (!p)
-    return 1;
-
-  *value = xstrdup (++p);
-
-  len = strlen (arg) - strlen (*value);
-  *name = XMALLOC (char, len);
-  strncpy (*name, arg, len-1);
-  (*name)[len - 1] = '\0';
-
-  return 0;
-}
-
-void
-lt_opt_process_env_set (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
-    }
-
-  lt_setenv (name, value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_prepend (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 0);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_opt_process_env_append (const char *arg)
-{
-  char *name = NULL;
-  char *value = NULL;
-  char *new_value = NULL;
-
-  if (lt_split_name_value (arg, &name, &value) != 0)
-    {
-      XFREE (name);
-      XFREE (value);
-      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
-    }
-
-  new_value = lt_extend_str (getenv (name), value, 1);
-  lt_setenv (name, new_value);
-  XFREE (new_value);
-  XFREE (name);
-  XFREE (value);
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  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)
-{
-  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
-                          (name ? name : "<NULL>"),
-                          (value ? value : "<NULL>")));
-
-  if (name && *name && value && *value)
-    {
-      char *new_value = lt_extend_str (getenv (name), value, 0);
-      lt_setenv (name, new_value);
-      XFREE (new_value);
-    }
-}
-
-
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# 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
-    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
-	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
-	      dlfiles="$dlfiles $arg"
-	    else
-	      dlprefiles="$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="$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="$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="$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="$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 "*) ;;
-	    *) rpath="$rpath $arg" ;;
-	    esac
-	  else
-	    case "$xrpath " in
-	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
-	    esac
-	  fi
-	  prev=
-	  continue
-	  ;;
-	shrext)
-	  shrext_cmds="$arg"
-	  prev=
-	  continue
-	  ;;
-	weak)
-	  weak_libs="$weak_libs $arg"
-	  prev=
-	  continue
-	  ;;
-	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
-	  prev=
-	  func_append compile_command " $qarg"
-	  func_append finalize_command " $qarg"
-	  continue
-	  ;;
-	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$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
-	;;
-
-      -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"
-	dir=$func_stripname_result
-	if test -z "$dir"; 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
-	# 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 "*) ;;
-	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
-	  ;;
-	esac
-	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
-	  case :$dllsearchpath: in
-	  *":$dir:"*) ;;
-	  ::) dllsearchpath=$dir;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$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*)
-	    # 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="$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="$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)
-	compiler_flags="$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)
-	compiler_flags="$compiler_flags $arg"
-	func_append compile_command " $arg"
-	func_append finalize_command " $arg"
-	case "$new_inherited_linker_flags " in
-	    *" $arg "*) ;;
-	    * ) new_inherited_linker_flags="$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_fatal_error "only absolute run-paths are allowed"
-	  ;;
-	esac
-	case "$xrpath " in
-	*" $dir "*) ;;
-	*) xrpath="$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="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$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="$arg $wl$func_quote_for_eval_result"
-	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-	  linker_flags="$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"
-	;;
-
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-        func_append compile_command " $arg"
-        func_append finalize_command " $arg"
-        compiler_flags="$compiler_flags $arg"
-        continue
-        ;;
-
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
-	;;
-
-      *.$objext)
-	# A standard object.
-	objs="$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="$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="$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.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
-	continue
-	;;
-
-      *.la)
-	# A libtool-controlled library.
-
-	if test "$prev" = dlfiles; then
-	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
-	  prev=
-	elif test "$prev" = dlprefiles; then
-	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
-	  prev=
-	else
-	  deplibs="$deplibs $arg"
-	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 \"X\${$shlibpath_var}\" \| \$Xsed -e \'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"
-    # 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_duplicate_deps ; then
-	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	esac
-      fi
-      libs="$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="$specialdeplibs $pre_post_deps" ;;
-	  esac
-	  pre_post_deps="$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=
-	  case $lib in
-	  *.la)	func_source "$lib" ;;
-	  esac
-
-	  # Collect preopened libtool deplibs, except any this library
-	  # has declared as weak libs
-	  for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
-	    case " $weak_libs " in
-	    *" $deplib_base "*) ;;
-	    *) deplibs="$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)
-	  if test "$linkmode,$pass" = "prog,link"; then
-	    compile_deplibs="$deplib $compile_deplibs"
-	    finalize_deplibs="$deplib $finalize_deplibs"
-	  else
-	    compiler_flags="$compiler_flags $deplib"
-	    if test "$linkmode" = lib ; then
-		case "$new_inherited_linker_flags " in
-		    *" $deplib "*) ;;
-		    * ) new_inherited_linker_flags="$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="$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"
-	    newlib_search_path="$newlib_search_path $func_stripname_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"
-	    newlib_search_path="$newlib_search_path $func_stripname_result"
-	    ;;
-	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
-	    ;;
-	  esac # linkmode
-	  continue
-	  ;; # -L
-	-R*)
-	  if test "$pass" = link; then
-	    func_stripname '-R' '' "$deplib"
-	    dir=$func_stripname_result
-	    # Make sure the xrpath contains only unique directories.
-	    case "$xrpath " in
-	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
-	    esac
-	  fi
-	  deplibs="$deplib $deplibs"
-	  continue
-	  ;;
-	*.la) lib="$deplib" ;;
-	*.$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 \"X$deplib\"" 2>/dev/null | $Xsed -e 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="$newdlprefiles $deplib"
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      newdlfiles="$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 "X$inherited_linker_flags" | $Xsed -e '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="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-	    esac
-	  done
-	fi
-	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e '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="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$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="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$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_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done
-	  continue
-	fi # $pass = conv
-
-
-	# Get the name of the library we link against.
-	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
-	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="$dlprefiles $lib $dependency_libs"
-	  else
-	    newdlfiles="$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 "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
-	  else
-	    dir="$libdir"
-	    absdir="$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="$notinst_path $abs_ladir"
-	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
-	    # Remove this search path later
-	    notinst_path="$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
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$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="$dlpreconveniencelibs $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
-	  fi
-	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="$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"
-	         newlib_search_path="$newlib_search_path $func_stripname_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_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$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="$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="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$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="$notinst_deplibs $lib"
-	      need_relink=no
-	    ;;
-	  *)
-	    if test "$installed" = no; then
-	      notinst_deplibs="$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="$compile_rpath $absdir"
-	      esac
-	      ;;
-	    esac
-	    case " $sys_lib_dlsearch_path " in
-	    *" $libdir "*) ;;
-	    *)
-	      case "$finalize_rpath " in
-	      *" $libdir "*) ;;
-	      *) finalize_rpath="$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 "$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$dir"
-		# Try looking first in the location we're being installed to.
-		if test -n "$inst_prefix_dir"; then
-		  case $libdir in
-		    [\\/]*)
-		      add_dir="$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="$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="$finalize_shlibpath$libdir:" ;;
-		esac
-	      fi
-	    fi
-	  fi
-
-	  if test "$linkmode" = prog || test "$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="$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="$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="$xrpath $temp_xrpath";;
-		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
-	      esac
-	    done
-	    dependency_libs="$temp_deplibs"
-	  fi
-
-	  newlib_search_path="$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"
-	    if $opt_duplicate_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	      esac
-	    fi
-	    tmp_libs="$tmp_libs $deplib"
-	  done
-
-	  if test "$link_all_deplibs" != no; then
-	    # Add the search paths of all dependency libraries
-	    for deplib in $dependency_libs; do
-	      case $deplib in
-	      -L*) path="$deplib" ;;
-	      *.la)
-	        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="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      linker_flags="$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 "X $new_inherited_linker_flags" | $Xsed -e '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="$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="$tmp_libs $deplib" ;;
-	      esac
-	      ;;
-	    *) tmp_libs="$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="$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="$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="$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
-	  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|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)
-	  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="$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="$libobjs $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
-
-      if test "$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="$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="$oldlibs $output_objdir/$libname.$libext"
-
-	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-      fi
-
-      # Eliminate all temporary directories.
-      #for path in $notinst_path; do
-      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
-      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
-      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "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
-	  temp_xrpath="$temp_xrpath -R$libdir"
-	  case "$finalize_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_rpath="$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="$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="$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*)
-	    # these systems don't actually have a c library (as such)!
-	    ;;
-	  *-*-rhapsody* | *-*-darwin1.[012])
-	    # Rhapsody C library is in the System framework
-	    deplibs="$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="$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="$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="$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="$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="$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="$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="$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="$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
-		      # 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-			esac
-		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-			 $SED -e 10q |
-			 $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$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="$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="$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 \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
-		       $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$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="$newdeplibs $a_deplib"
-	      ;;
-	    esac
-	  done # Gone through all deplibs.
-	  ;;
-	none | unknown | *)
-	  newdeplibs=""
-	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-	      -e 's/ -lc$//' -e '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 "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
-	    done
-	  fi
-	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
-	     $GREP . >/dev/null; then
-	    $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
-	  fi
-	  ;;
-	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 "X $newdeplibs" | $Xsed -e '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 "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	  deplibs=`$ECHO "X $deplibs" | $Xsed -e '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="$new_libs -L$path/$objdir" ;;
-	  esac
-	  ;;
-	esac
-      done
-      for deplib in $deplibs; do
-	case $deplib in
-	-L*)
-	  case " $new_libs " in
-	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$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
-	if test "$hardcode_into_libs" = yes; then
-	  # Hardcode the library paths
-	  hardcode_libdirs=
-	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$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
-		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_libdirs$hardcode_libdir_separator$libdir"
-		    ;;
-		  esac
-		fi
-	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
-	      fi
-	    elif test -n "$runpath_var"; then
-	      case "$perm_rpath " in
-	      *" $libdir "*) ;;
-	      *) perm_rpath="$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"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
-	  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="$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 "$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="$linknames $link"
-	done
-
-	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$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="$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 cmd in $cmds; do
-	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      func_len " $cmd"
-	      len=$func_len_result
-	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-		func_show_eval "$cmd" 'exit $?'
-		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 "X$include_expsyms" | $Xsed | $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="$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="$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="$generated $gentop"
-
-	    func_extract_archives $gentop $convenience
-	    libobjs="$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="$linker_flags $flag"
-	fi
-
-	# Make a backup of the uninstalled library when relinking
-	if test "$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
-	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-
-	  # 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
-	      $ECHO "$obj" >> $output
-	    done
-	    $ECHO ')' >> $output
-	    delfiles="$delfiles $output"
-	  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
-	      $ECHO "$obj" >> $output
-	    done
-	    delfiles="$delfiles $output"
-	    output=$firstobj\"$file_list_spec$output\"
-	  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.
-		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-		  else
-		    # All subsequent reloadable object files will link in
-		    # the last one created.
-		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$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~
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
-	      fi
-	      delfiles="$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 "$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 "X$include_expsyms" | $Xsed | $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="$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="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  libobjs="$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 "$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 "$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 "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
-	else
-	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
-
-	  func_extract_archives $gentop $convenience
-	  reload_conv_objs="$reload_objs $func_extract_archives_result"
-	fi
-      fi
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$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 "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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="$compile_command ${wl}-bind_at_load"
-	      finalize_command="$finalize_command ${wl}-bind_at_load"
-	    ;;
-	  esac
-	fi
-	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
-	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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="$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="$new_libs $deplib" ;;
-	  esac
-	  ;;
-	*) new_libs="$new_libs $deplib" ;;
-	esac
-      done
-      compile_deplibs="$new_libs"
-
-
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$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="$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_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) perm_rpath="$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="$dllsearchpath:$libdir";;
-	  esac
-	  case :$dllsearchpath: in
-	  *":$testbindir:"*) ;;
-	  ::) dllsearchpath=$testbindir;;
-	  *) dllsearchpath="$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_libdirs$hardcode_libdir_separator$libdir"
-		;;
-	      esac
-	    fi
-	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
-	  fi
-	elif test -n "$runpath_var"; then
-	  case "$finalize_perm_rpath " in
-	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$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 "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$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
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *cegcc)
-        # Disable wrappers for cegcc, we are cross compiling anyway.
-        wrappers_required=no
-        ;;
-      *)
-        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 "X$compile_command" | $Xsed -e '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=$?'
-
-	# 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="$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="$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 "X$link_command" | $Xsed -e '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 $?'
-	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 "X$compile_var$compile_command$compile_rpath" | $Xsed -e '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 "X$link_command" | $Xsed -e '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 $?'
-
-      # 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$ECHO "X$ECHO" | $Xsed -e "$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="$oldobjs $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
-
-      if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
-
-	func_extract_archives $gentop $addlibs
-	oldobjs="$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="$generated $gentop"
-
-	  func_extract_archives $gentop $dlprefiles
-	  oldobjs="$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="$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="$oldobjs $gentop/$newobj"
-	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
-	    esac
-	  done
-	fi
-	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
-	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 "X$relink_command" | $Xsed -e "$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"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
-		newdependency_libs="$newdependency_libs $libdir/$name"
-		;;
-	      *) newdependency_libs="$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="$newdlfiles $libdir/$name"
-		;;
-	      *) newdlfiles="$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="$newdlprefiles $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="$newdlfiles $abs"
-	    done
-	    dlfiles="$newdlfiles"
-	    newdlprefiles=
-	    for lib in $dlprefiles; do
-	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
-		*) abs=`pwd`"/$lib" ;;
-	      esac
-	      newdlprefiles="$newdlprefiles $abs"
-	    done
-	    dlprefiles="$newdlprefiles"
-	  fi
-	  $RM $output
-	  # place dlname in correct position for cygwin
-	  tdlname=$dlname
-	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
-	  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 "$mode" = link || test "$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="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
-      esac
-    done
-
-    test -z "$RM" && \
-      func_fatal_help "you must specify an RM program"
-
-    rmdirs=
-
-    origobjdir="$objdir"
-    for file in $files; do
-      func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	objdir="$origobjdir"
-      else
-	objdir="$dir/$origobjdir"
-      fi
-      func_basename "$file"
-      name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
-
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
-	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
-	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="$rmfiles $objdir/$n"
-	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-
-	  case "$mode" in
-	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
-	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
-	    esac
-	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${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="$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="$rmfiles $dir/$non_pic_object"
-	  fi
-	fi
-	;;
-
-      *)
-	if test "$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="$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="$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="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
-	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
-	    fi
-	  fi
-	fi
-	;;
-      esac
-      func_show_eval "$RM $rmfiles" 'exit_status=1'
-    done
-    objdir="$origobjdir"
-
-    # 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 "$mode" = uninstall || test "$mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
-
-test -z "$mode" && {
-  help="$generic_help"
-  func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$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 28055d2..0000000
--- a/config/missing
+++ /dev/null
@@ -1,376 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally 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
-
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-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
-
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# 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/py-compile b/config/py-compile
deleted file mode 100755
index 3f9d05b..0000000
--- a/config/py-compile
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/bin/sh
-# py-compile - Compile a Python program
-
-scriptversion=2009-04-28.21; # UTC
-
-# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009 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>.
-
-if [ -z "$PYTHON" ]; then
-  PYTHON=python
-fi
-
-basedir=
-destdir=
-files=
-while test $# -ne 0; do
-  case "$1" in
-    --basedir)
-      basedir=$2
-      if test -z "$basedir"; then
-        echo "$0: Missing argument to --basedir." 1>&2
-        exit 1
-      fi
-      shift
-      ;;
-    --destdir)
-      destdir=$2
-      if test -z "$destdir"; then
-        echo "$0: Missing argument to --destdir." 1>&2
-        exit 1
-      fi
-      shift
-      ;;
-    -h|--h*)
-      cat <<\EOF
-Usage: py-compile [--help] [--version] [--basedir DIR] [--destdir DIR] FILES..."
-
-Byte compile some python scripts FILES.  Use --destdir to specify any
-leading directory path to the FILES that you don't want to include in the
-byte compiled file.  Specify --basedir for any additional path information you
-do want to be shown in the byte compiled file.
-
-Example:
-  py-compile --destdir /tmp/pkg-root --basedir /usr/share/test test.py test2.py
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-      exit $?
-      ;;
-    -v|--v*)
-      echo "py-compile $scriptversion"
-      exit $?
-      ;;
-    *)
-      files="$files $1"
-      ;;
-  esac
-  shift
-done
-
-if test -z "$files"; then
-    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
-    exit 1
-fi
-
-# if basedir was given, then it should be prepended to filenames before
-# byte compilation.
-if [ -z "$basedir" ]; then
-    pathtrans="path = file"
-else
-    pathtrans="path = os.path.join('$basedir', file)"
-fi
-
-# if destdir was given, then it needs to be prepended to the filename to
-# byte compile but not go into the compiled file.
-if [ -z "$destdir" ]; then
-    filetrans="filepath = path"
-else
-    filetrans="filepath = os.path.normpath('$destdir' + os.sep + path)"
-fi
-
-$PYTHON -c "
-import sys, os, py_compile
-
-files = '''$files'''
-
-sys.stdout.write('Byte-compiling python modules...\n')
-for file in files.split():
-    $pathtrans
-    $filetrans
-    if not os.path.exists(filepath) or not (len(filepath) >= 3
-                                            and filepath[-3:] == '.py'):
-	    continue
-    sys.stdout.write(file)
-    sys.stdout.flush()
-    py_compile.compile(filepath, filepath + 'c', path)
-sys.stdout.write('\n')" || exit $?
-
-# this will fail for python < 1.5, but that doesn't matter ...
-$PYTHON -O -c "
-import sys, os, py_compile
-
-files = '''$files'''
-sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n')
-for file in files.split():
-    $pathtrans
-    $filetrans
-    if not os.path.exists(filepath) or not (len(filepath) >= 3
-                                            and filepath[-3:] == '.py'):
-	    continue
-    sys.stdout.write(file)
-    sys.stdout.flush()
-    py_compile.compile(filepath, filepath + 'o', path)
-sys.stdout.write('\n')" 2>/dev/null || :
-
-# 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 374f817..0000000
--- a/configure
+++ /dev/null
@@ -1,24673 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for MagPlus 2.
-#
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.
-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
-
-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"
-  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 \$(( 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 :
-  # 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.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-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 about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script 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_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 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=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
-  fi
-  $as_echo "$as_me: error: $1" >&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; }
-
-  # 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 -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-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
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# 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'"
-
-
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-$*
-_LT_EOF
-  exit 0
-fi
-
-# 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
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL $0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "$0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-as_awk_strverscmp='
-  # Use only awk features that work with 7th edition Unix awk (1978).
-  # My, what an old awk you have, Mr. Solaris!
-  END {
-    while (length(v1) && length(v2)) {
-      # Set d1 to be the next thing to compare from v1, and likewise for d2.
-      # Normally this is a single character, but if v1 and v2 contain digits,
-      # compare them as integers and fractions as strverscmp does.
-      if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) {
-	# Split v1 and v2 into their leading digit string components d1 and d2,
-	# and advance v1 and v2 past the leading digit strings.
-	for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue
-	for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue
-	d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1)
-	d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1)
-	if (d1 ~ /^0/) {
-	  if (d2 ~ /^0/) {
-	    # Compare two fractions.
-	    while (d1 ~ /^0/ && d2 ~ /^0/) {
-	      d1 = substr(d1, 2); len1--
-	      d2 = substr(d2, 2); len2--
-	    }
-	    if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) {
-	      # The two components differ in length, and the common prefix
-	      # contains only leading zeros.  Consider the longer to be less.
-	      d1 = -len1
-	      d2 = -len2
-	    } else {
-	      # Otherwise, compare as strings.
-	      d1 = "x" d1
-	      d2 = "x" d2
-	    }
-	  } else {
-	    # A fraction is less than an integer.
-	    exit 1
-	  }
-	} else {
-	  if (d2 ~ /^0/) {
-	    # An integer is greater than a fraction.
-	    exit 2
-	  } else {
-	    # Compare two integers.
-	    d1 += 0
-	    d2 += 0
-	  }
-	}
-      } else {
-	# The normal case, without worrying about digits.
-	d1 = substr(v1, 1, 1); v1 = substr(v1, 2)
-	d2 = substr(v2, 1, 1); v2 = substr(v2, 2)
-      }
-      if (d1 < d2) exit 1
-      if (d1 > d2) exit 2
-    }
-    # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10),
-    # which mishandles some comparisons of empty strings to integers.
-    if (length(v2)) exit 1
-    if (length(v1)) exit 2
-  }
-'
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, 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='MagPlus'
-PACKAGE_TARNAME='magplus'
-PACKAGE_VERSION='2'
-PACKAGE_STRING='MagPlus 2'
-PACKAGE_BUGREPORT=''
-PACKAGE_URL=''
-
-ac_unique_file="src/MagicsDouble.cc"
-# 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_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-MAGICS_MAC_FALSE
-MAGICS_MAC_TRUE
-MAGICS_PROJ4_FALSE
-MAGICS_PROJ4_TRUE
-MAGICS_THREADS_FALSE
-MAGICS_THREADS_TRUE
-MAGICS_ALLHEADERS_FALSE
-MAGICS_ALLHEADERS_TRUE
-MAGICS_PYTHON_FALSE
-MAGICS_PYTHON_TRUE
-MAGICS_RASTER_FALSE
-MAGICS_RASTER_TRUE
-MAGICS_TIFF_FALSE
-MAGICS_TIFF_TRUE
-MAGICS_CAIRO_FALSE
-MAGICS_CAIRO_TRUE
-MAGICS_QTDEBUG_FALSE
-MAGICS_QTDEBUG_TRUE
-MAGICS_QT_FALSE
-MAGICS_QT_TRUE
-MAGICS_METGRAM_FALSE
-MAGICS_METGRAM_TRUE
-MAGICS_NETCDF_FALSE
-MAGICS_NETCDF_TRUE
-MAGICS_GRIB_FALSE
-MAGICS_GRIB_TRUE
-MAGICS_SPOT_FALSE
-MAGICS_SPOT_TRUE
-MAGICS_EXCEPTION_FALSE
-MAGICS_EXCEPTION_TRUE
-MAGICS_ODB_FALSE
-MAGICS_ODB_TRUE
-MAGICS_JSON_FALSE
-MAGICS_JSON_TRUE
-MAGICS_BUFR_FALSE
-MAGICS_BUFR_TRUE
-MAGICS_APPS_FALSE
-MAGICS_APPS_TRUE
-MAGICS_32BIT_FALSE
-MAGICS_32BIT_TRUE
-MAGICS_METVIEW_FALSE
-MAGICS_METVIEW_TRUE
-LIBNAME
-MAGICS_3RDPARTY_LIBS
-MAGICS_3RDPARTY_INCLUDE
-GSVersion
-ghostscript_font_dir
-PSDelegate
-cairo
-CAIRO_LIBS
-CAIRO_CFLAGS
-PKG_CONFIG
-raster
-proj4
-spot
-bufr
-EMOS_LIB_PATH
-EMOS_LIB_NAME
-FORTRAN_LIB_PATH
-GRIBAPI_ROOT
-GRIBAPI_LIBS
-BOOST_LDFLAGS
-BOOST_CPPFLAGS
-odb
-ODB_PATH
-qt
-metview
-QT_VERSION
-QT_LIBS
-QT_LDFLAGS
-QT_LFLAGS
-QT_CPPFLAGS
-QT_INCPATH
-QT_CXXFLAGS
-QT_CFLAGS
-QT_DEFINES
-QT_VERSION_MAJOR
-RCC
-UIC
-MOC
-QMAKE
-QT_PATH
-FLIBS
-FLIB
-MAGICS_VISIBILITY
-CPPLIBS
-PLATFORM_DEFINES_MARS
-SHLIB_EXT
-AXX
-SWIG
-python
-NUMPY_INCLUDE
-pkgpyexecdir
-pyexecdir
-pkgpythondir
-pythondir
-PYTHON_PLATFORM
-PYTHON_EXEC_PREFIX
-PYTHON_PREFIX
-PYTHON_VERSION
-PYTHON
-PKGCONFIG_REQUIRES
-ac_ct_F77
-FFLAGS
-F77
-CXXCPP
-am__fastdepCXX_FALSE
-am__fastdepCXX_TRUE
-CXXDEPMODE
-ac_ct_CXX
-CXXFLAGS
-CXX
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-lt_ECHO
-RANLIB
-AR
-OBJDUMP
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-SED
-LIBTOOL
-EGREP
-GREP
-CPP
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-MAGICS_PACKAGE_VERSION_ADDENDUM
-MAGICS_PACKAGE_COPYRIGHT_PERIOD
-MAGICS_PACKAGE_RELEASE_DATE
-MAGICS_PACKAGE_VERSION
-MAGICS_PACKAGE_NAME
-MAGICS_LIBRARY_AGE
-MAGICS_LIBRARY_REVISION
-MAGICS_LIBRARY_CURRENT
-SITE_NAME
-target_os
-target_vendor
-target_cpu
-target
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-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
-with_site
-enable_silent_rules
-enable_static
-enable_dependency_tracking
-enable_shared
-with_pic
-enable_fast_install
-with_gnu_ld
-enable_libtool_lock
-enable_metview
-enable_threads
-enable_python
-enable_32_bits_addressing_mode
-enable_exception
-enable_allheaders
-enable_qt
-with_qt
-enable_qtdebug
-enable_raster
-with_gd
-enable_json
-enable_apps
-enable_bufr
-enable_odb
-with_odb
-enable_magnext
-with_boost
-with_boost_libdir
-enable_grib
-with_grib_api
-with_fortran_libraries
-with_emos_libraries
-with_emos_libname
-enable_spot
-with_spot
-enable_proj4
-with_proj4
-enable_netcdf
-with_netcdf
-enable_cairo
-with_gs_font_dir
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-CXX
-CXXFLAGS
-CCC
-CXXCPP
-F77
-FFLAGS
-QT_PATH
-QMAKE
-MOC
-UIC
-RCC
-PKG_CONFIG
-CAIRO_CFLAGS
-CAIRO_LIBS'
-
-
-# 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=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
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
-  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 MagPlus 2 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/magplus]
-  --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]
-  --target=TARGET   configure for building compilers for TARGET [HOST]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of MagPlus 2:";;
-   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-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
-  --enable-static[=PKGS]  build static libraries [default=no]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-metview	  enable Metview 4 interface. [default=no]
-
-  --enable-python	  enable Python interface. [default=no]
-  --enable-32-bits-addressing-mode
-                          Force 32 bits addressing mode on 64 bits machines
-  --enable-exception	  enable the use of all C++ exceptions (Not recommended for static library using PGF90!) [default=yes]
-  --enable-allheaders	  install all header files [default=no]
-  --enable-qt             enable Qt-based modules [default=no]
-  --enable-qtdebug             enable QDebug output in Qt-based modules [default=no]
-  --enable-raster         enable the GIF, PNG and JPEG output [default=yes]
-  --enable-json	          enable the JSON support (JSON) [default=yes]
-  --enable-apps	          enable the compilation of applications (magml) [default=yes]
-  --enable-bufr	          enable the BUFR support [default=no]
-  --enable-odb	          enable the ODB support [default=no]
-  --enable-magnext      enable update developments for metview (ECMWF only) [default=false]
-  --enable-grib	          enable the GRIB 1/2 support [default=yes]
-  --enable-spot	          enable the SPOT support for metgrams (ECMWF internal) [default=no]
-  --enable-proj4	          enable the Proj4 support for projections [default=yes]
-  --enable-netcdf	          enable the netCDF support [default=yes]
-  --enable-cairo          enable the Cairo library support [default=yes]
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-site             Name of installation site
-  --with-pic              try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-qt               Path to Qt [Look in PATH and /usr/local/Trolltech]
-  --with-gd               Prefix of GD libraries and headers.
-  --with-odb              Prefix of ODB libraries and headers.
-  --with-boost[=ARG]      use Boost library from a standard location
-                          (ARG=yes), from the specified location (ARG=<path>),
-                          or disable it (ARG=no) [ARG=yes]
-  --with-boost-libdir=LIB_DIR
-                          Force given directory for boost libraries. Note that
-                          this will override library path detection, so use
-                          this parameter only if default library detection
-                          fails and you know exactly where your boost
-                          libraries are located.
-  --with-grib-api         Prefix of GRIB API libraries and headers.
-  --with-fortran-libraries
-                          Locaction of Fortran runtime libraries required for
-                          EMOS library [default is /usr/lib]
-  --with-emos-libraries   Locaction of EMOS library [default is
-                          /usr/local/lib]
-  --with-emos-libname     Name of EMOS library [default is emosR64]
-  --with-spot             Prefix of SPOT libraries and headers.
-  --with-proj4            Prefix of Proj4 libraries and headers.
-  --with-netcdf           Prefix of NetCDF libraries and headers.
-  --with-gs-font-dir=DIR  Directory containing Ghostscript fonts.
-
-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
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
-  F77         Fortran 77 compiler command
-  FFLAGS      Fortran 77 compiler flags
-  QT_PATH     Path to the Qt installation
-  QMAKE       Qt Makefile generator command
-  MOC         Qt Meta Object Compiler command
-  UIC         Qt User Interface Compiler command
-  RCC         Qt Resource Compiler command
-  PKG_CONFIG  path to pkg-config utility
-  CAIRO_CFLAGS
-              C compiler flags for CAIRO, overriding pkg-config
-  CAIRO_LIBS  linker flags for CAIRO, overriding pkg-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 the package provider.
-_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
-MagPlus configure 2
-generated by GNU Autoconf 2.65
-
-Copyright (C) 2009 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_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; } >/dev/null && {
-	 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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.$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;}
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_mongrel
-
-# 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_header_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 ||
-	 $as_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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_c_check_func
-
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_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_cxx_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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_compile
-
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_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; } >/dev/null && {
-	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_cpp
-
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_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_cxx_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_cxx_try_link
-
-# 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; test "x$as_lineno_stack" = x && { as_lineno=; 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 ||
-	 $as_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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-  as_fn_set_status $ac_retval
-
-} # ac_fn_f77_try_link
-
-# ac_fn_cxx_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_cxx_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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_cxx_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_cxx_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err 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_cxx_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;}
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; 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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-
-} # ac_fn_cxx_check_header_mongrel
-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 MagPlus $as_me 2, which was
-generated by GNU Autoconf 2.65.  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
-
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    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
-
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    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
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      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
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      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
-  ac_site_file1=$CONFIG_SITE
-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"
-  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
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
-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.
-
-
-
-# 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 test "${ac_cv_build+set}" = set; 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 test "${ac_cv_host+set}" = set; 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
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if test "${ac_cv_target+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$target_alias" = x; then
-  ac_cv_target=$ac_cv_host
-else
-  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-
-# Source file containing package/library versioning information.
-. ${srcdir}/version.sh
-
-MAGICS_OUTPUTS="PS_EPS_PDF_SVG_KML"
-
-SITE_NAME="outside"
-
-# Check whether --with-site was given.
-if test "${with_site+set}" = set; then :
-  withval=$with_site; SITE_NAME="$with_site"
-
-fi
-
-
-
-
-if test "x$prefix" != xNONE; then
-  ac_default_prefix=${prefix}
-else
-  prefix=${ac_default_prefix}
-fi
-includedir=${prefix}/include/magics
-
-echo ""
-echo "configuring ${MAGICS_PACKAGE_NAME} ${MAGICS_PACKAGE_VERSION}${MAGICS_PACKAGE_VERSION_ADDENDUM} at ${SITE_NAME}"
-echo ""
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_VERSION "${MAGICS_PACKAGE_VERSION}"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_NAME "${MAGICS_PACKAGE_NAME}"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_RELEASE_DATE "${MAGICS_PACKAGE_RELEASE_DATE}"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_COPYRIGHT_PERIOD "${MAGICS_PACKAGE_COPYRIGHT_PERIOD}"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_INSTALL_PATH "${prefix}"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_SITE "${SITE_NAME}"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_TTF_PATH "share/magics/ttf/"
-_ACEOF
-
-
-
-
-
-ac_config_headers="$ac_config_headers src/magics_config.h"
-
-
-am__api_version='1.11'
-
-# 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 test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# 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 (
-   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
-   rm -f conftest.file
-   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
-
-   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; }
-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 --run true"; then
-  am_missing_run="$MISSING --run "
-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 test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_path_mkdir+set}" = set; 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
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-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 test "${ac_cv_prog_AWK+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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
-
-{ $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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; 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
-
-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=$MAGICS_PACKAGE_NAME
- VERSION="${MAGICS_PACKAGE_VERSION}${MAGICS_PACKAGE_VERSION_ADDENDUM}"
-
-
-# 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"}
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-# 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=0;;
-esac
-AM_BACKSLASH='\'
-
-
-
-# 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=no
-fi
-
-
-
-
-
-
-
-
-         # TEMPORARY !!!!
-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='\'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-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
-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 test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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_set_status 77
-as_fn_error "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 test "${ac_cv_objext+set}" = set; 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 test "${ac_cv_c_compiler_gnu+set}" = set; 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 test "${ac_cv_prog_cc_g+set}" = set; 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 test "${ac_cv_prog_cc_c89+set}" = set; 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>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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
-
-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 test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'.
-  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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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
-
-
-
-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 test "${ac_cv_prog_CPP+set}" = set; 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.$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.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f 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.$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.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f 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 grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; 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"
-      { test -f "$ac_path_GREP" && $as_test_x "$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 test "${ac_cv_path_EGREP+set}" = set; 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"
-      { test -f "$ac_path_EGREP" && $as_test_x "$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 ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; 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
-"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = x""yes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-  fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#	  define __EXTENSIONS__ 1
-	  $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-
-
-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.2.6b'
-macro_revision='1.3017'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-{ $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 test "${ac_cv_path_SED+set}" = set; 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"
-      { test -f "$ac_path_SED" && $as_test_x "$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 fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; 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"
-      { test -f "$ac_path_FGREP" && $as_test_x "$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 test "${lt_cv_path_LD+set}" = set; 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 test "${lt_cv_prog_gnu_ld+set}" = set; 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 test "${lt_cv_path_NM+set}" = set; 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 "$ac_tool_prefix"; then
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
-  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 test "${ac_cv_prog_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 -symbols" "link -dump -symbols"
-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 test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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
-
-
-  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 test "${lt_cv_nm_interface+set}" = set; 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:5518: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:5521: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:5524: 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 test "${lt_cv_sys_max_cmd_len+set}" = set; 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;
-    ;;
-
-  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
-    ;;
-
-  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"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$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"}, \
-      = c,a/b,, \
-    && 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 for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; 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
-  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 test "${ac_cv_prog_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${lt_cv_deplibs_check_method+set}" = set; 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.
-  if ( 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
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    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
-  ;;
-
-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]) 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 Linux ELF.
-linux* | k*bsd*-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_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}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 test "${ac_cv_prog_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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="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
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-
-
-
-
-
-
-
-
-
-
-
-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 test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# 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 test "${lt_cv_sys_global_symbol_pipe+set}" = set; 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};"\
-"     /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
-
-  # 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
-#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.  */
-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_save_LIBS="$LIBS"
-	  lt_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_save_LIBS"
-	  CFLAGS="$lt_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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# 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 6729 "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 test "${lt_cv_cc_needs_belf+set}" = set; 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
-  ;;
-sparc*-*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*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	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"
-
-
-  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 test "${ac_cv_prog_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${lt_cv_apple_cc_single_mod+set}" = set; 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 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 test "${lt_cv_ld_exported_symbols_list+set}" = set; 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; }
-    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" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-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" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-# Set options
-
-
-
-        enable_dlopen=no
-
-
-  enable_win32_dll=no
-
-
-            # 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
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
-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 test "${lt_cv_objdir+set}" = set; 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
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# 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'
-
-# 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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "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 test "${lt_cv_path_MAGIC_CMD+set}" = set; 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 test "${lt_cv_path_MAGIC_CMD+set}" = set; 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
-  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
-
-  { $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 test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; 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:7961: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:7965: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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=
-
-{ $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 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'
-      ;;
-
-    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
-  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)
-      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'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # 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*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	lt_prog_compiler_wl='-Wl,'
-	lt_prog_compiler_pic='-qpic'
-	lt_prog_compiler_static='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # 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=''
-	  ;;
-	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*)
-	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}: result: $lt_prog_compiler_pic" >&5
-$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
-
-
-
-#
-# 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 test "${lt_cv_prog_compiler_pic_works+set}" = set; 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:8300: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:8304: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 test "${lt_cv_prog_compiler_static_works+set}" = set; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:8405: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:8409: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:8460: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:8464: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_flag_spec_ld=
-  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
-  if test "$with_gnu_ld" = 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
-      *\ [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.9.1, 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 modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_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'
-      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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
-      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
-      ;;
-
-    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)
-      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=
-	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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# 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; $ECHO \"$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]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	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; $ECHO \"$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*)
-	  # 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=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
-	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_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 $compiler_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 $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'
-      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 $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
-      ;;
-
-    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 $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
-
-    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
-	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")) && (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.
-        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
-	}
-    }'
-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 "$aix_libpath"; then
-  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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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.
-	 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
-	}
-    }'
-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 "$aix_libpath"; then
-  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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec='$convenience'
-	  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.
-      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 `$ECHO "X$deplibs" | $Xsed -e '\''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'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes=yes
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  whole_archive_flag_spec=''
-  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=echo
-    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
-      ;;
-
-    freebsd1*)
-      ld_shlibs=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 -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 -fPIC ${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 -a "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared -fPIC ${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_flag_spec_ld='+b $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 -a "$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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds='$CC -shared -fPIC ${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'
-	  ;;
-	*)
-	  archive_cmds='$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='${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 $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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.
-        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) {}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
-      else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 ${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 ${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; }
-      $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
-	  archive_cmds_need_lc=no
-        else
-	  archive_cmds_need_lc=yes
-        fi
-        allow_undefined_flag=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5
-$as_echo "$archive_cmds_need_lc" >&6; }
-      ;;
-    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
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # 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 -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # 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; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-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
-  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
-  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=`$ECHO "X$lib" | $Xsed -e '\''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
-  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,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    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="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        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
-      ;;
-    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
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # 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
-  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
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-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[123]*) 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
-  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
-  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'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  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
-	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 Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  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
-  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 :
-  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
-
-  # 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;/^$/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
-  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
-  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
-  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
-    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
-  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
-  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 test "${ac_cv_lib_dl_dlopen+set}" = set; 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" = x""yes; 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" = x""yes; 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 test "${ac_cv_lib_dld_shl_load+set}" = set; 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" = x""yes; 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" = x""yes; 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 test "${ac_cv_lib_dl_dlopen+set}" = set; 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" = x""yes; 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 test "${ac_cv_lib_svld_dlopen+set}" = set; 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" = x""yes; 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 test "${ac_cv_lib_dld_dld_link+set}" = set; 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" = x""yes; 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 test "${lt_cv_dlopen_self+set}" = set; 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 10827 "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
-
-void fnord() { int i=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;
-      /* 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 test "${lt_cv_dlopen_self_static+set}" = set; 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 10923 "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
-
-void fnord() { int i=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;
-      /* 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:
-
-
-#AC_PROG_CC([xlc_r icc aCC gcc cc CC])
-: ${CXXFLAGS=""}                            # avoid '-g' - see http://www.gnu.org/software/autoconf/manual/autoconf.html#C_002b_002b-Compiler
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in xlC_r icpc aC++ g++ c++ CC
-  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 test "${ac_cv_prog_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$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
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in xlC_r icpc aC++ g++ c++ CC
-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 test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$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_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  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
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# 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 test "${ac_cv_cxx_compiler_gnu+set}" = set; 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_cxx_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_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_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_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-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
-
-depcc="$CXX"  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 test "${am_cv_CXX_dependencies_compiler_type+set}" = set; 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'.
-  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_CXX_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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  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 test "${ac_cv_prog_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$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
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-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 test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$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_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CXX" && break
-done
-
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  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
-    CXX=$ac_ct_CXX
-  fi
-fi
-
-  fi
-fi
-# 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 test "${ac_cv_cxx_compiler_gnu+set}" = set; 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_cxx_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_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
-fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_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_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-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
-
-depcc="$CXX"  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 test "${am_cv_CXX_dependencies_compiler_type+set}" = set; 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'.
-  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_CXX_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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
-
-
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_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; }
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_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_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err 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_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_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_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err 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_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f 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;}
-_lt_caught_CXX_error=yes; }
-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
-
-else
-  _lt_caught_CXX_error=yes
-fi
-
-
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$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.
-
-
-
-
-
-
-# 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_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++"}
-  compiler=$CC
-  compiler_CXX=$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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-
-  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_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-
-
-# 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 test "${lt_cv_path_LD+set}" = set; 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 test "${lt_cv_prog_gnu_ld+set}" = set; 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
-
-
-
-
-
-
-
-      # 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
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${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
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        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.
-        archive_cmds_CXX='$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 "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { $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; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=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.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${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
-	    hardcode_direct_CXX=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_CXX=yes
-	    hardcode_libdir_flag_spec_CXX='-L$libdir'
-	    hardcode_libdir_separator_CXX=
-	  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_CXX='${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_CXX=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_CXX='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-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 "$aix_libpath"; then
-  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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$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.
-	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-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 "$aix_libpath"; then
-  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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	    hardcode_libdir_flag_spec_CXX='${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_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    # Exported symbols can be pulled into shared objects from archives
-	    whole_archive_flag_spec_CXX='$convenience'
-	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$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
-	  allow_undefined_flag_CXX=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-        # as there is no search path for DLLs.
-        hardcode_libdir_flag_spec_CXX='-L$libdir'
-        allow_undefined_flag_CXX=unsupported
-        always_export_symbols_CXX=no
-        enable_shared_with_static_runtimes_CXX=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          archive_cmds_CXX='$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...
-          archive_expsym_cmds_CXX='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
-          ld_shlibs_CXX=no
-        fi
-        ;;
-      darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  whole_archive_flag_spec_CXX=''
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_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=echo
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="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_CXX="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}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$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}"
-      archive_expsym_cmds_CXX="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
-  ld_shlibs_CXX=no
-  fi
-
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[12]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        ld_shlibs_CXX=no
-        ;;
-
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=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
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$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; $ECHO "X$list" | $Xsed'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=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
-	    ld_shlibs_CXX=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        archive_cmds_CXX='$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; $ECHO "X$list" | $Xsed'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${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
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[3-9]*)
-	hardcode_direct_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${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_CXX='$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_CXX='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++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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.
-	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-	      fi
-	    fi
-	    link_all_deplibs_CXX=yes
-	    ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
-
-      linux* | k*bsd*-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.
-	    archive_cmds_CXX='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'
-	    archive_expsym_cmds_CXX='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; $ECHO "X$list" | $Xsed'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    old_archive_cmds_CXX='$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."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$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
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [1-5]* | *pgcpp\ [1-5]*)
-	      prelink_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-	      old_archive_cmds_CXX='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 | $NL2SP`~
-		$RANLIB $oldlib'
-	      archive_cmds_CXX='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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 will use weak symbols
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$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
-
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$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
-	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # 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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  xl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      archive_expsym_cmds_CXX='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
-	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	      compiler_needs_object_CXX=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='echo'
-
-	      # 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.
-	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  hardcode_libdir_flag_spec_CXX='-R$libdir'
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=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*)
-        ld_shlibs_CXX=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	  hardcode_direct_absolute_CXX=yes
-	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=echo
-	else
-	  ld_shlibs_CXX=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.
-	    archive_cmds_CXX='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'
-
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	        archive_expsym_cmds_CXX='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 "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-		;;
-	    esac
-
-	    hardcode_libdir_separator_CXX=:
-
-	    # 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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	      hardcode_libdir_separator_CXX=:
-
-	      # 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 "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    archive_expsym_cmds_CXX='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'
-
-	    hardcode_libdir_flag_spec_CXX='-R$libdir'
-	    hardcode_shlibpath_var_CXX=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?)
-		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    link_all_deplibs_CXX=yes
-
-	    output_verbose_link_cmd='echo'
-
-	    # 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.
-	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$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.
-	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared -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 "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='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 "\-L"'
-	      fi
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[0-5] | solaris2.[0-5].*) ;;
-		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$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.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
-	archive_cmds_need_lc_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
-	hardcode_libdir_separator_CXX=':'
-	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$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
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-    GCC_CXX="$GXX"
-    LD_CXX="$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_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_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
-  # 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 $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
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p 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_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
-	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${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_CXX"; then
-	   postdeps_CXX="${prev}${p}"
-	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-	 fi
-       fi
-       ;;
-
-    *.$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_CXX"; then
-	   predep_objects_CXX="$p"
-	 else
-	   predep_objects_CXX="$predep_objects_CXX $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
-	 else
-	   postdep_objects_CXX="$postdep_objects_CXX $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-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.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-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
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # 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
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-{ $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; }
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-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_CXX='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-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_CXX='-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
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    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_prog_compiler_pic_CXX=-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_prog_compiler_pic_CXX='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-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_prog_compiler_static_CXX='-Bstatic'
-	else
-	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--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
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      lt_prog_compiler_pic_CXX='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  xlc* | xlC*)
-	    # IBM XL 8.0 on PPC
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-qpic'
-	    lt_prog_compiler_static_CXX='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      lt_prog_compiler_pic_CXX='-KPIC'
-	      lt_prog_compiler_static_CXX='-Bstatic'
-	      lt_prog_compiler_wl_CXX='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    lt_prog_compiler_pic_CXX='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd*)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    lt_prog_compiler_wl_CXX='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    lt_prog_compiler_pic_CXX='-pic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	lt_prog_compiler_can_build_shared_CXX=no
-	;;
-    esac
-  fi
-
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
-
-
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -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:13811: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:13815: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_CXX=yes
-     fi
-   fi
-   $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $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 test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-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 test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=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:13910: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:13914: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_CXX=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_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&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 test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=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:13962: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:13966: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_CXX=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_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = 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; }
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  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
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-  ;;
-  cygwin* | mingw* | cegcc*)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-with_gnu_ld_CXX=$with_gnu_ld
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX 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; }
-      $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_CXX
-	pic_flag=$lt_prog_compiler_pic_CXX
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-        allow_undefined_flag_CXX=
-        if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 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
-	  archive_cmds_need_lc_CXX=no
-        else
-	  archive_cmds_need_lc_CXX=yes
-        fi
-        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5
-$as_echo "$archive_cmds_need_lc_CXX" >&6; }
-      ;;
-    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
-  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
-  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=`$ECHO "X$lib" | $Xsed -e '\''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
-  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,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    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="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        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
-      ;;
-    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
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # 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
-  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
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-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[123]*) 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
-  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
-  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'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  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
-	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 Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  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
-  save_LDFLAGS=$LDFLAGS
-  save_libdir=$libdir
-  eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-       LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  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
-
-  # 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;/^$/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
-  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
-  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
-  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
-    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
-  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
-  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_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != 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, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
-
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = 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"
-
-  CC=$lt_save_CC
-  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_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 -n "$ac_tool_prefix"; then
-  for ac_prog in ifort gfortran pgf90 pgf77 xlf90_r xlf90 xlf77_r f90 g77
-  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 test "${ac_cv_prog_F77+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 ifort gfortran pgf90 pgf77 xlf90_r xlf90 xlf77_r f90 g77
-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 test "${ac_cv_prog_ac_ct_F77+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_f77_compiler_gnu+set}" = set; 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 test "${ac_cv_prog_f77_g+set}" = set; 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 -n "$ac_tool_prefix"; then
-  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
-  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 test "${ac_cv_prog_F77+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
-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 test "${ac_cv_prog_ac_ct_F77+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${ac_cv_f77_compiler_gnu+set}" = set; 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 test "${ac_cv_prog_f77_g+set}" = set; 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
-
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-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
-
-
-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_flag_spec_ld_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
-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
-  CC=${F77-"f77"}
-  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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "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=
-
-{ $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 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'
-      ;;
-
-    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
-  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)
-      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'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # 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*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	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\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # 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=''
-	  ;;
-	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*)
-	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}: result: $lt_prog_compiler_pic_F77" >&5
-$as_echo "$lt_prog_compiler_pic_F77" >&6; }
-
-
-
-#
-# 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 test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; 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:15770: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:15774: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 test "${lt_cv_prog_compiler_static_works_F77+set}" = set; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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 test "${lt_cv_prog_compiler_c_o_F77+set}" = set; 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:15869: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:15873: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 test "${lt_cv_prog_compiler_c_o_F77+set}" = set; 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:15921: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:15925: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_flag_spec_ld_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
-  if test "$with_gnu_ld" = 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
-      *\ [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.9.1, 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 modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_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'
-      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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
-      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
-      ;;
-
-    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)
-      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=
-	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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# 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; $ECHO \"$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]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	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; $ECHO \"$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*)
-	  # 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=
-	  hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
-	  archive_cmds_F77='$LD -shared $libobjs $deplibs $compiler_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 $compiler_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 $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'
-      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 $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
-      ;;
-
-    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 $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
-
-    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
-	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")) && (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.
-        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
-	}
-    }'
-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 "$aix_libpath"; then
-  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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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.
-	 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
-	}
-    }'
-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 "$aix_libpath"; then
-  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 "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec_F77='$convenience'
-	  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.
-      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 `$ECHO "X$deplibs" | $Xsed -e '\''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'
-      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes_F77=yes
-      ;;
-
-    darwin* | rhapsody*)
-
-
-  archive_cmds_need_lc_F77=no
-  hardcode_direct_F77=no
-  hardcode_automatic_F77=yes
-  hardcode_shlibpath_var_F77=unsupported
-  whole_archive_flag_spec_F77=''
-  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=echo
-    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
-      ;;
-
-    freebsd1*)
-      ld_shlibs_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 -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 -fPIC ${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 -a "$with_gnu_ld" = no; then
-	archive_cmds_F77='$CC -shared -fPIC ${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_flag_spec_ld_F77='+b $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 -a "$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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared -fPIC ${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 $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat > conftest.$ac_ext <<_ACEOF
-int foo(void) {}
-_ACEOF
-if ac_fn_f77_try_link "$LINENO"; then :
-  archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 ${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 ${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; }
-      $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
-	  archive_cmds_need_lc_F77=no
-        else
-	  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*
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_F77" >&5
-$as_echo "$archive_cmds_need_lc_F77" >&6; }
-      ;;
-    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
-  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
-  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=`$ECHO "X$lib" | $Xsed -e '\''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
-  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,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    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="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        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
-      ;;
-    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
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # 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
-  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
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-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[123]*) 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
-  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
-  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'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  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
-	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 Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  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
-  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 :
-  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
-
-  # 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;/^$/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
-  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
-  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
-  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
-    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
-  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
-  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"
-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
-
-
-
-
-######################
-#
-# Checks for programs.
-#
-
-
-#LT_LANG([C++])
-
-#
-#  Generic Metview support  --enable-metview
-#
-# Check whether --enable-metview was given.
-if test "${enable_metview+set}" = set; then :
-  enableval=$enable_metview; metview=$enableval
-else
-  metview=no
-fi
-
-
-if test "x$metview" = "xyes" ; then
-
-  qt=yes
-fi
-
-##################################
-#
-#  T H R E A D I N G
-#
-# Check whether --enable-threads was given.
-if test "${enable_threads+set}" = set; then :
-  enableval=$enable_threads; threads=$enableval
-else
-  threads=yes
-fi
-
-
-if test "x$threads" = "xyes" ; then
-  $as_echo "#define MAGICS_THREADS 1" >>confdefs.h
-
-fi
-
-##################################
-#
-#  Enable PKG_CONFIG
-#
-case `${PKG_CONFIG:-pkg-config} --version` in
-0.?|0.?.?|0.1[0-7]|0.1[0-7].?) PKGCONFIG_REQUIRES="Requires"; ;;
-*) PKGCONFIG_REQUIRES="Requires.private"; ;;
-esac
-
-
-
-###############################################################################################
-#
-#   P Y T H O N   &   S W I G
-#
-#      --enable-python
-#
-# Check whether --enable-python was given.
-if test "${enable_python+set}" = set; then :
-  enableval=$enable_python; python=$enableval
-else
-  python=no
-fi
-
-
-
-if test "x$python" = "xyes"
-then
-  ### search for a python interpreter on the system abort if one not found
-  ### am_path_python sets many python vars - RTFM for more info
-
-
-
-
-        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 >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version >= 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_fn_error "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 test "${am_cv_pathless_PYTHON+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-
-	for am_cv_pathless_PYTHON in python python2 python3 python3.0 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 test "${ac_cv_path_PYTHON+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 test "${am_cv_python_version+set}" = set; 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 test "${am_cv_python_platform+set}" = set; 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
-
-
-
-
-                { $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 test "${am_cv_python_pythondir+set}" = set; 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 "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
-     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 test "${am_cv_python_pyexecdir+set}" = set; 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 "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
-     echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
-     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
-
-
-
-  { $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-python if you want to continue without NumPy." "$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()"`
-       CPPFLAGS="-I${NUMPY_INCLUDE} ${CPPFLAGS}"
-
-    fi
-  $as_echo "#define MAGICS_PYTHON 1" >>confdefs.h
-
-
-
-  # Extract the first word of "swig", so it can be a program name with args.
-set dummy swig; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_SWIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$SWIG"; then
-  ac_cv_prog_SWIG="$SWIG" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_SWIG="swig"
-    $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
-SWIG=$ac_cv_prog_SWIG
-if test -n "$SWIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
-$as_echo "$SWIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-
-#
-#  E N D   P Y T H O N  &  S W I G
-#
-##############################################################################################################
-
-
-
-##################################################
-#
-#  32 bit addressing  --enable-32bit
-#
-# Check whether --enable-32-bits-addressing-mode was given.
-if test "${enable_32_bits_addressing_mode+set}" = set; then :
-  enableval=$enable_32_bits_addressing_mode; enable_32_bits_addressing_mode='yes'
-else
-  enable_32_bits_addressing_mode='no'
-fi
-
-
-##################################################
-#
-#  Exception support  --enable-exception
-#
-# Check whether --enable-exception was given.
-if test "${enable_exception+set}" = set; then :
-  enableval=$enable_exception; exception=$enableval
-else
-  exception=yes
-fi
-
-if test "x$exception" = "xyes" ; then
-  $as_echo "#define MAGICS_EXCEPTION 1" >>confdefs.h
-
-fi
-
-#######################################################################
-#
-# Architecture dependent Compiler options
-#
-windows=no
-SHLIB_EXT=so
-LIBNAME=${LIBNAME:="lib"}
-PLATFORM_DEFINES_MARS=""
-
-
-
-case "${host}" in
-	x86_64*linux*)
-		if test "x$enable_32_bits_addressing_mode" = "xyes" ; then
-		echo " "
-		echo "You are on x86-64 and building a 32 bit version of Magics++."
-		echo " "
-		AXX="-m32"
-		CPPFLAGS="$CPPFLAGS -I/usr/include/freetype2 -I/usr/include -I/usr/X11R6/include -I/usr/local/include"
-		LDFLAGS="$LDFLAGS -L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib"
-		else
-		echo " "
-		echo "You are on x86-64 and building a 64 bit version of Magics++."
-		echo " "
-#		if test "x$SITE_NAME" = xecmwf; then
-#			libdir=${prefix}/lib64
-#		fi
-		AXX="-m64 -fPIC"
-		LIBNAME="lib64"
-		CPPFLAGS="$CPPFLAGS -Dlinux -I/usr/include/freetype2 -I/usr/include -I/usr/X11R6/include -I/usr/local/include"
-		CXXFLAGS="$CXXFLAGS"
-		LDFLAGS="$LDFLAGS -L/usr/local/lib64 -L/usr/X11R6/lib64"
-		PLATFORM_DEFINES_MARS="-DLITTLE -DLITTLE_END -DI64 -DR64 -Dlinux"
-		fi
-		;;
-	# Linux workstations x86
-	*86-*-linux* )
-		CPPFLAGS="$CPPFLAGS -Dlinux -I/usr/include/freetype2 -I/usr/include -I/usr/X11R6/include -I/usr/local/include"
-		LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -L/usr/local/lib"
-		AXX="-m32"
-		PLATFORM_DEFINES_MARS="-DLITTLE -DLITTLE_END -DI32 -DR64 -Dlinux"
-		;;
-	# IBM Server
-	*-ibm-aix* )
-		AXX="-mminimal-toc"
-		CPPFLAGS="${CPPFLAGS} -Daix -DMAGICS_AIX_XLC -I/usr/include/freetype2" # -I/usr/include/freetype2 -I/opt/freeware/include -I/usr/local/include"
-#		LDFLAGS="-L/usr/lib $LDFLAGS"
-		LDFLAGS="-L/usr/lib -Wl,-brtl $LDFLAGS"
-		LIBS="-lfreetype $LIBS -lpng -lz -liconv"  # for terralib
-		MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -lfreetype -lpng"
-		PLATFORM_DEFINES_MARS="-DI32 -DR64 -DREAL_8 -DREAL_BIGGER_THAN_INTEGER -DAIX"
-		;;
-    # MACs
-    *-darwin*)
-        CPPFLAGS="${CPPFLAGS} -DMAGICS_MAC_GCC"
-        LIBS="$LIBS -lpng -lcurl"
-        LDFLAGS="-L/usr/local/lib -L/opt/local/lib $LDFLAGS -lstdc++"
-        CPPFLAGS="-I/usr/local/include -I/opt/local/include $CPPFLAGS"
-        SHLIB_EXT=dylib
-        mac=true
-        $as_echo "#define MAGICS_MAC 1" >>confdefs.h
-
-        ;;
-    # HP - aCC
-    *-*-hpux* )
-		#AXX="-AA -Wp,-H30000"
-		PLATFORM_DEFINES_MARS="-DI64 -DR64 -Dhpux"
-		;;
-	*-*-cygwin* | *-*-mingw32*)
-		echo " "
-		echo "You try to install Magics++ on Windows!"
-		echo " "
-		echo " Please be aware that Windows is NOT a supported platform!!!"
-		echo " Following features will NOT work: BUFR decoding"
-		echo " "
-		CPPFLAGS="$CPPFLAGS -DMAGICS_WINDOWS_CYGWIN -I/usr/include/freetype2 -I/usr/include -I/usr/local/include"
-		AXX="-m32"
-		windows=yes
-		;;
-esac
-
-
-
-
-
-#
-# Compiler dependent Compiler options
-#
-MAGICS_VISIBILITY=""
-
-case "${CXX}" in
-	# GNU GCC
-	g++* )
-		CFLAGS="$CFLAGS $AXX -ansi -std=c99" # -fpermissive
-
-		CXXFLAGS=${CXXFLAGS:="-g -O2 -mtune=native"}
-		CXXFLAGS="$CXXFLAGS $AXX -fno-gnu-keywords -ansi -std=c++98 -Wno-deprecated -Wno-write-strings"
-		CPPLIBS="${CPPLIBS} -lstdc++"
-
-#		AC_LANG([C++])
-#		AC_COMPILE_IFELSE([
-#		#if defined(__GNUC__) && (__GNUC__ < 4 )
-#		#error "GCC < 4.0"
-#		#endif
-#		int main(){return 0;}], gcc4=yes)
-
-#		AC_MSG_RESULT(Test if GCC 4 ${gcc4})
-
-#		if test "x$gcc4" = "xyes" -a "x$metview" = xno; then
-#			  MAGICS_VISIBILITY="-fvisibility=hidden"
-#		fi
-
-		;;
-	# Intel compiler
-	icpc | icc )
-		#  -O3 -xhost -opt-report=3 -vec-report 3
-		#  -O3 -xhost -opt-report=3 -vec-report 3 -parallel -par-report3
-		#  -guide -parallel                                 # produces NO binary output!
-		intel_common="-static-intel -wr654 -wr1125 -wr1011"
-		CFLAGS="$CFLAGS ${intel_common}"
-		CXXFLAGS="$CXXFLAGS ${intel_common}"
-		# -static-intel does the job but if any libraries compiled with g++ are used this is needed
-		CPPLIBS="${CPPLIBS} -lstdc++"
-		;;
-	# IBM C++ compiler
-	xlC_r | xlC )
-		# -qtune=auto
-		#
-		# -qfuncsect   --> code bloat but later reduction?
-		#
-		# -qmkshrobj   --> no entry point message??? (570 MB)
-		#
-		# -qtemplateregistry=/scratch/graphics/cgm/magics/IBM/templateregistry
-		#
-	#	rm -f ${PWD}/templateregistry
-	#	CXXFLAGS="$CXXFLAGS -O2 -qtune=auto -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000 -qstrict -qtemplateregistry=${PWD}/templateregistry " # 560 MB
-	#	CXXFLAGS="$CXXFLAGS -O2 -qtune=auto -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000 -qtmplinst=none "       # 203 MB - does not work
-	#	CXXFLAGS="$CXXFLAGS -O3 -qsuppress=1540-1101 -DAIX -DNDEBUG -qcpluscmt -qinline=15 -qtune=auto -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000" # 220 MB - works
-		CXXFLAGS="${CXXFLAGS:-"-O3 -DNDEBUG -qinline=15 -qtune=auto"}"     # 21 Apr 2012 - works 174MB
-		CXXFLAGS="${CXXFLAGS:-"-O0 -DDEBUG  -qnoinline  -qNOOPTimize"}"    # 21 Apr 2012 - works 950MB
-		CXXFLAGS="$CXXFLAGS -qxflag=KeepUnqualifiedStaticCandidate -DBOOST_TYPEOF_NATIVE -DBOOST_TYPEOF_KEYWORD=__typeof__ -qsuppress=1540-1101 -DAIX -qcpluscmt -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000"
-	#	CXX="xlC $CXXFLAGS"
-		LD=xlC_r
-		CC=xlC_r
-		LDFLAGS="$LDFLAGS -Wl,-bbigtoc"  # -qmkshrobj
-		CFLAGS="$CFLAGS -qtune=auto -qstrict -qmaxmem=-1 -qarch=auto -bmaxdata:0x60000000"
-
-		CPPLIBS="${CPPLIBS} -lC"     # should strictly not nessecary when xlf is used
-		;;
-esac
-
-
-
-# end of C++
-
-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
-
-
-#
-# Which fortran compiler should be used?
-#
-# FLIBS is determined which Fortran compiler was used for Emoslib!!!
-#
-case "${F77}" in
-	*gfortran* )
-		FLIB="gfortran"
-		FLIBS="-l${FLIB}"
-		FFLAGS="${FFLAGS} ${AXX}"
-		;;
-	# Intel compiler 9.x
-	ifc | ifort)
-		FFLAGS="${FFLAGS}"
-		FLIBS="-lifcore -lifport"
-		;;
-	# Portland C++
-	pgf* )
-		FLIB="pgftnrtl','pgc','rt"             # for Python distutils
-		FLIBS="$FLIBS -lpgftnrtl -lpgc -lrt"   # PGI 7.1
-		case "${host}" in
-			x86_64*linux*)
-				FFLAGS="${FFLAGS} -tp amd64"
-				;;
-			# Linux workstations x86
-			*86-*-linux* )
-				FFLAGS="${FFLAGS} -tp px"
-				;;
-		esac
-		;;
-	# IBM fortran compiler
-	xlf* )
-		FLIB="xlf90"
-		FLIBS="-l${FLIB}"
-		FFLAGS="${FFLAGS} -qfixed=72 -q32"
-		;;
-	# all other C++ compilers ...
-	* )
-		if test "x${F77}" = "x"; then
-			echo "No Fortran compiler defined! Use F77=<name> to set one."
-			FLIBS=""
-		else
-		echo "Oops ... $F77 not supported yet"
-		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
-
-
-# end of F O R T R A N
-
-
-
-# Check whether --enable-allheaders was given.
-if test "${enable_allheaders+set}" = set; then :
-  enableval=$enable_allheaders; allheaders=$enableval
-else
-  allheaders=no
-fi
-
-
-######################################################################
-#
-#     Qt
-#
-######################################################################
-# Check whether --enable-qt was given.
-if test "${enable_qt+set}" = set; then :
-  enableval=$enable_qt; qt=$enableval
-fi
-
-
-if test "x$qt" = "xyes" ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt" >&5
-$as_echo_n "checking for Qt... " >&6; }
-  # Qt with AutoTroll.
-  # Build Qt apps with the autotools (Autoconf/Automake).
-# M4 macros.
-# This file is part of AutoTroll.
-# Copyright (C) 2006  Benoit Sigoure <benoit.sigoure at lrde.epita.fr>
-#
-# AutoTroll 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.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# In addition, as a special exception, the copyright holders of AutoTroll
-# give you unlimited permission to copy, distribute and modify the configure
-# scripts that are the output of Autoconf when processing the macros of
-# AutoTroll.  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
-# AutoTroll appear in them. The GNU General Public License (GPL) does govern
-# all other use of the material that constitutes AutoTroll.
-#
-# This special exception to the GPL applies to versions of AutoTroll
-# released by the copyright holders of AutoTroll.  Note that people who make
-# modified versions of AutoTroll are not obligated to grant this special
-# exception for their modified versions; it is their choice whether to do so.
-# The GNU General Public License gives permission to release a modified version
-# without this exception; this exception also makes it possible to release a
-# modified version which carries forward this exception.
-
- # ------------- #
- # DOCUMENTATION #
- # ------------- #
-
-# Disclaimer: Never tested with anything else than Qt 4.2! Feedback welcome.
-# Simply invoke AT_WITH_QT in your configure.ac. AT_WITH_QT can take
-# arguments which are documented in depth below. The default arguments are
-# equivalent to the default .pro file generated by qmake.
-#
-# Invoking AT_WITH_QT will do the following:
-#  - Add a --with-qt option to your configure
-#  - Find qmake, moc and uic and save them in the make variables $(QMAKE),
-#    $(MOC), $(UIC).
-#  - Save the path to Qt in $(QT_PATH)
-#  - Find the flags to use Qt, that is:
-#     * $(QT_DEFINES): -D's defined by qmake.
-#     * $(QT_CFLAGS): CFLAGS as defined by qmake (C?!)
-#     * $(QT_CXXFLAGS): CXXFLAGS as defined by qmake.
-#     * $(QT_INCPATH): -I's defined by qmake.
-#     * $(QT_CPPFLAGS): Same as $(QT_DEFINES) + $(QT_INCPATH)
-#     * $(QT_LFLAGS): LFLAGS defined by qmake.
-#     * $(QT_LDFLAGS): Same thing as $(QT_LFLAGS).
-#     * $(QT_LIBS): LIBS defined by qmake.
-#
-# You *MUST* invoke $(MOC) and/or $(UIC) where necessary. AutoTroll provides
-# you with Makerules to ease this, here is a sample Makefile.am to use with
-# AutoTroll which builds the code given in the chapter 7 of the Qt Tutorial:
-# http://doc.trolltech.com/4.2/tutorial-t7.html
-#
-# -------------------------------------------------------------------------
-# include $(top_srcdir)/build-aux/autotroll.mk
-#
-# ACLOCAL_AMFLAGS = -I build-aux
-#
-# bin_PROGRAMS = lcdrange
-# lcdrange_SOURCES =  $(BUILT_SOURCES) lcdrange.cpp lcdrange.h main.cpp
-# lcdrange_CXXFLAGS = $(QT_CXXFLAGS) $(AM_CXXFLAGS)
-# lcdrange_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS)
-# lcdrange_LDFLAGS  = $(QT_LDFLAGS) $(LDFLAGS)
-# lcdrange_LDADD    = $(QT_LIBS) $(LDADD)
-#
-# BUILT_SOURCES = lcdrange.moc.cpp
-# -------------------------------------------------------------------------
-#
-# Note that your MOC, UIC and QRC files *MUST* be listed manually in
-# BUILT_SOURCES. If you name them properly (eg: .moc.cc, .qrc.cc, .ui.cc -- of
-# course you can use .cpp or .cxx or .C rather than .cc) AutoTroll will build
-# them automagically for you (using implicit rules defined in autotroll.mk).
-
-
-
-
-
-
-
-# AT_WITH_QT([QT_modules], [QT_config], [QT_misc], [RUN-IF-FAILED], [RUN-IF-OK])
-# ------------------------------------------------------------------------------
-# Enable Qt support and add an option --with-qt to the configure script.
-#
-# The QT_modules argument is optional and defines extra modules to enable or
-# disable (it's equivalent to the QT variable in .pro files). Modules can be
-# specified as follows:
-#
-# AT_WITH_QT   => No argument -> No QT value.
-#                                Qmake sets it to "core gui" by default.
-# AT_WITH_QT([xml])   => QT += xml
-# AT_WITH_QT([+xml])  => QT += xml
-# AT_WITH_QT([-gui])  => QT -= gui
-# AT_WITH_QT([xml -gui +sql svg])  => QT += xml sql svg
-#                                     QT -= gui
-#
-# The QT_config argument is also optional and follows the same convention as
-# QT_modules. Instead of changing the QT variable, it changes the CONFIG
-# variable, which is used to tweak configuration and compiler options.
-#
-# The last argument, QT_misc (also optional) will be copied as-is the .pro
-# file used to guess how to compile Qt apps. You may use it to further tweak
-# the build process of Qt apps if tweaking the QT or CONFIG variables isn't
-# enough for you.
-#
-# RUN-IF-FAILED is arbitrary code to execute if Qt cannot be found or if any
-# problem happens.  If this argument is omitted, then AC_MSG_ERROR will be
-# called.  RUN-IF-OK is arbitrary code to execute if Qt was successfully found.
-
-
-# AT_REQUIRE_QT_VERSION(QT_version, RUN-IF-FAILED, RUN-IF-OK)
-# -----------------------------------------------------------
-# Check (using qmake) that Qt's version "matches" QT_version.
-# Must be run AFTER AT_WITH_QT. Requires autoconf 2.60.
-#
-# RUN-IF-FAILED is arbitrary code to execute if Qt cannot be found or if any
-# problem happens.  If this argument is omitted, then AC_MSG_ERROR will be
-# called.  RUN-IF-OK is arbitrary code to execute if Qt was successfully found.
-
-
-# _AT_TWEAK_PRO_FILE(QT_VAR, VALUE)
-# ---------------------------
-# @internal. Tweak the variable QT_VAR in the .pro.
-# VALUE is an IFS-separated list of value and each value is rewritten
-# as follows:
-#   +value  => QT_VAR += value
-#   -value  => QT_VAR -= value
-#    value  => QT_VAR += value
-
-
-  echo "$as_me: this is autotroll.m4 serial 4" >&5
-
-  test x"$TROLL" != x && echo 'ViM rox emacs.'
-
-
-# Check whether --with-qt was given.
-if test "${with_qt+set}" = set; then :
-  withval=$with_qt; QT_PATH=$withval
-fi
-
-
-  # this is a hack to get decent flow control with 'break'
-  for _qt_ignored in once; do
-
-  # Find Qt.
-
-  if test -d /usr/local/Trolltech; then
-    # Try to find the latest version.
-    tmp_qt_paths=`echo /usr/local/Trolltech/*/bin | tr ' ' '\n' | sort -nr \
-                                              | xargs | sed 's/  */:/g'`
-  fi
-  # Path to which recent MacPorts (~v1.7) install Qt4.
-  test -d /opt/local/libexec/qt4-mac/bin \
-    && tmp_qt_paths="$tmp_qt_paths:/opt/local/libexec/qt4-mac/bin"
-
-  # Find qmake.
-
-  for ac_prog in qmake qmake-qt4 qmake-qt3
-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 test "${ac_cv_path_QMAKE+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $QMAKE in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_QMAKE="$QMAKE" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$QT_DIR:$QT_PATH:$PATH:$tmp_qt_paths"
-for as_dir in $as_dummy
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_QMAKE="$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
-QMAKE=$ac_cv_path_QMAKE
-if test -n "$QMAKE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QMAKE" >&5
-$as_echo "$QMAKE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$QMAKE" && break
-done
-test -n "$QMAKE" || QMAKE="missing"
-
-  if test x"$QMAKE" = xmissing; then
-    as_fn_error "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
-    break
-  fi
-
-  # Find moc (Meta Object Compiler).
-
-  for ac_prog in moc moc-qt4 moc-qt3
-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 test "${ac_cv_path_MOC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MOC in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_MOC="$MOC" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$QT_PATH:$PATH:$tmp_qt_paths"
-for as_dir in $as_dummy
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_MOC="$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
-MOC=$ac_cv_path_MOC
-if test -n "$MOC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC" >&5
-$as_echo "$MOC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$MOC" && break
-done
-test -n "$MOC" || MOC="missing"
-
-  if test x"$MOC" = xmissing; then
-    as_fn_error "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
-    break
-  fi
-
-  # Find uic (User Interface Compiler).
-
-  for ac_prog in uic uic-qt4 uic-qt3 uic3
-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 test "${ac_cv_path_UIC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $UIC in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_UIC="$UIC" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$QT_PATH:$PATH:$tmp_qt_paths"
-for as_dir in $as_dummy
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_UIC="$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
-UIC=$ac_cv_path_UIC
-if test -n "$UIC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UIC" >&5
-$as_echo "$UIC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$UIC" && break
-done
-test -n "$UIC" || UIC="missing"
-
-  if test x"$UIC" = xmissing; then
-    as_fn_error "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
-    break
-  fi
-
-  # Find rcc (Qt Resource Compiler).
-
-  for ac_prog in rcc
-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 test "${ac_cv_path_RCC+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $RCC in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_RCC="$RCC" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$QT_PATH:$PATH:$tmp_qt_paths"
-for as_dir in $as_dummy
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_RCC="$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
-RCC=$ac_cv_path_RCC
-if test -n "$RCC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RCC" >&5
-$as_echo "$RCC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$RCC" && break
-done
-test -n "$RCC" || RCC="false"
-
-  if test x"$UIC" = xfalse; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.\
-  Try using --with-qt." >&5
-$as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.\
-  Try using --with-qt." >&2;}
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether host operating system is Darwin" >&5
-$as_echo_n "checking whether host operating system is Darwin... " >&6; }
-  at_darwin=no
-  at_qmake_args=
-  case $host_os in
-    darwin*)
-      at_darwin=yes
-      at_qmake_args='-spec macx-g++'
-      ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_darwin" >&5
-$as_echo "$at_darwin" >&6; }
-
-  # If we don't know the path to Qt, guess it from the path to qmake.
-  if test x"$QT_PATH" = x; then
-    QT_PATH=`dirname "$QMAKE"`
-  fi
-  if test x"$QT_PATH" = x; then
-    as_fn_error "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
-    break
-  fi
-
-
-  # Get ready to build a test-app with Qt.
-  if mkdir conftest.dir && cd conftest.dir; then :; else
-    as_fn_error "Cannot mkdir conftest.dir or cd to that directory." "$LINENO" 5
-    break
-  fi
-
-  cat >conftest.h <<_ASEOF
-#include <QObject>
-
-class Foo: public QObject
-{
-  Q_OBJECT;
-public:
-  Foo();
-  ~Foo() {}
-public Q_SLOTS:
-  void setValue(int value);
-Q_SIGNALS:
-  void valueChanged(int newValue);
-private:
-  int value_;
-};
-_ASEOF
-
-  cat >conftest.cpp <<_ASEOF
-#include "conftest.h"
-Foo::Foo()
-  : value_ (42)
-{
-  connect(this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
-}
-
-void Foo::setValue(int value)
-{
-  value_ = value;
-}
-
-int main()
-{
-  Foo f;
-}
-_ASEOF
-  if $QMAKE -project; then :; else
-    as_fn_error "Calling $QMAKE -project failed." "$LINENO" 5
-    break
-  fi
-
-  # Find the .pro file generated by qmake.
-  pro_file='conftest.dir.pro'
-  test -f $pro_file || pro_file=`echo *.pro`
-  if test -f "$pro_file"; then :; else
-    as_fn_error "Can't find the .pro file generated by Qmake." "$LINENO" 5
-    break
-  fi
-
- # Tweak the value of QT in the .pro file for +xmlpatterns.
-
-  qt_conf=''
-  for at_mod in +xmlpatterns; do
-    at_mod=`echo "$at_mod" | sed 's/^-//; tough
-                                  s/^+//; beef
-                                  :ough
-                                  s/^/QT -= /;n
-                                  :eef
-                                  s/^/QT += /'`
-    qt_conf="$qt_conf
-$at_mod"
-  done
-  echo "$qt_conf" | sed 1d >>"$pro_file"
-
-
-
-
-
-
-  echo "$as_me:$LINENO: Invoking $QMAKE on $pro_file" >&5
-  sed 's/^/| /' "$pro_file" >&5
-
-  if $QMAKE $at_qmake_args; then :; else
-    as_fn_error "Calling $QMAKE $at_qmake_args failed." "$LINENO" 5
-    break
-  fi
-
-  # QMake has a very annoying misfeature: sometimes it generates Makefiles
-  # where all the references to the files from the Qt installation are
-  # relative.  We can't use them as-is because if we take, say, a
-  # -I../../usr/include/Qt from that Makefile, the flag is invalid as soon
-  # as we use it in another (sub) directory.  So what this perl pass does is
-  # that it rewrite all relative paths to absolute paths.  Another problem
-  # when building on Cygwin is that QMake mixes paths with blackslashes and
-  # forward slashes and paths must be handled with extra care because of the
-  # stupid Windows drive letters.
-  echo "$as_me:$LINENO: fixing the Makefiles:" Makefile* >&5
-  cat >fixmk.pl <<\EOF
-use strict;
-use Cwd qw(cwd abs_path);
-# This variable is useful on Cygwin for the following reason: Say that you are
-# in `/' (that is, in fact you are in C:/cygwin, or something like that) if you
-# `cd ..' then obviously you remain in `/' (that is in C:/cygwin).  QMake
-# generates paths that are relative to C:/ (or another driver letter, whatever)
-# so the trick to get the `..' resolved properly is to prepend the absolute
-# path of the current working directory in a Windows-style.  C:/cygwin/../ will
-# properly become C:/.
-my $d = "";
-my $r2a = 0;
-my $b2f = 0;
-
-my $cygwin = 0;
-if ($^O eq "cygwin") {
-  $cygwin = 1;
-  $d = cwd();
-  $d = `cygpath --mixed '$d'`;
-  chomp($d);
-  $d .= "/";
-}
-
-sub rel2abs($)
-{
-  my $p = $d . shift;
-  # print "r2a p=$p";
-  -e $p || return $p;
-  if ($cygwin) {
-    $p = `cygpath --mixed '$p'`;
-    chomp($p);
-  }
-  else {
-    # Do not use abs_path on Cygwin: it incorrectly resolves the paths that are
-    # relative to C:/ rather than `/'.
-    $p = abs_path($p);
-  }
-  # print " -> $p\n";
-  ++$r2a;
-  return $p;
-}
-
-# Only useful on Cygwin.
-sub back2forward($)
-{
-  my $p = shift;
-  # print "b2f p=$p";
-  -e $p || return $p;
-  $p = `cygpath --mixed '$p'`;
-  chomp($p);
-  # print " -> $p\n";
-  ++$b2f;
-  return $p;
-}
-
-foreach my $mk (@ARGV)
-{
-  next if $mk =~ /~$/;
-  open(MK, $mk) or die("open $mk: $!");
-  # print "mk=$mk\n";
-  my $file = join("", <MK>);
-  close(MK) or die("close $mk: $!");
-  rename $mk, $mk . "~" or die("rename $mk: $!");
-  $file =~ s{(?:\.\.[\\/])+(?:[^"'\s:]+)}{rel2abs($&)}gse;
-  $file =~ s{(?:[a-zA-Z]:[\\/])?(?:[^"\s]+\\[^"\s:]+)+}
-            {back2forward($&)}gse if $cygwin;
-  open(MK, ">", $mk) or die("open >$mk: $!");
-  print MK $file;
-  close(MK) or die("close >$mk: $!");
-  print "$mk: updated $r2a relative paths and $b2f backslash-style paths\n";
-  $r2a = 0;
-  $b2f = 0;
-}
-EOF
-
-  perl >&5 -w fixmk.pl Makefile* ||
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: failed to fix the Makefiles generated by $QMAKE" >&5
-$as_echo "$as_me: WARNING: failed to fix the Makefiles generated by $QMAKE" >&2;}
-  rm -f fixmk.pl
-
-  # Try to compile a simple Qt app.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can build a simple Qt app" >&5
-$as_echo_n "checking whether we can build a simple Qt app... " >&6; }
-if test "${at_cv_qt_build+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_qt_build=ko
-  : ${MAKE=make}
-
-  if $MAKE >&5 2>&1; then
-    at_cv_qt_build='ok, looks like Qt 4'
-  else
-    echo "$as_me:$LINENO: Build failed, trying to #include <qobject.h> \
-instead" >&5
-    sed 's/<QObject>/<qobject.h>/' conftest.h > tmp.h && mv tmp.h conftest.h
-    if $MAKE >&5 2>&1; then
-      at_cv_qt_build='ok, looks like Qt 3'
-    else
-      # Sometimes (such as on Debian) build will fail because Qt hasn't been
-      # installed in debug mode and qmake tries (by default) to build apps in
-      # debug mode => Try again in release mode.
-      echo "$as_me:$LINENO: Build failed, trying to enforce release mode" \
-            >&5
-
-       # Tweak the value of CONFIG in the .pro file for +release.
-
-  qt_conf=''
-  for at_mod in +release; do
-    at_mod=`echo "$at_mod" | sed 's/^-//; tough
-                                  s/^+//; beef
-                                  :ough
-                                  s/^/CONFIG -= /;n
-                                  :eef
-                                  s/^/CONFIG += /'`
-    qt_conf="$qt_conf
-$at_mod"
-  done
-  echo "$qt_conf" | sed 1d >>"$pro_file"
-
-
-      sed 's/<qobject.h>/<QObject>/' conftest.h > tmp.h && mv tmp.h conftest.h
-      if $MAKE >&5 2>&1; then
-        at_cv_qt_build='ok, looks like Qt 4, release mode forced'
-      else
-        echo "$as_me:$LINENO: Build failed, trying to #include <qobject.h> \
-instead" >&5
-        sed 's/<QObject>/<qobject.h>/' conftest.h >tmp.h && mv tmp.h conftest.h
-        if $MAKE >&5 2>&1; then
-          at_cv_qt_build='ok, looks like Qt 3, release mode forced'
-        else
-          at_cv_qt_build=ko
-          echo "$as_me:$LINENO: failed program was:" >&5
-          sed 's/^/| /' conftest.h >&5
-          echo "$as_me:$LINENO: failed program was:" >&5
-          sed 's/^/| /' conftest.cpp >&5
-        fi # if make with Qt3-style #include and release mode forced.
-      fi # if make with Qt4-style #include and release mode forced.
-    fi # if make with Qt3-style #include.
-  fi # if make with Qt4-style #include.
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_qt_build" >&5
-$as_echo "$at_cv_qt_build" >&6; }
-  if test x"$at_cv_qt_build" = xko; then
-    as_fn_error "Cannot build a test Qt program" "$LINENO" 5
-    break
-  fi
-  QT_VERSION_MAJOR=`echo "$at_cv_qt_build" | sed 's/[^0-9]*//g'`
-
-
-  # This sed filter is applied after an expression of the form: /^FOO.*=/!d;
-  # It starts by removing the beginning of the line, removing references to
-  # SUBLIBS, removing unnecessary whitespaces at the beginning, and prefixes
-  # all variable uses by QT_.
-  qt_sed_filter='s///;
-                 s/$(SUBLIBS)//g;
-                 s/^ *//;
-                 s/\$(\([A-Z_][A-Z_]*\))/$(QT_\1)/g'
-
-  # Find the Makefile (qmake happens to generate a fake Makefile which invokes
-  # a Makefile.Debug or Makefile.Release). We we have both, we'll pick the
-  # Makefile.Release. The reason is that the main difference is that release
-  # uses -Os and debug -g. We can override -Os by passing another -O but we
-  # usually don't override -g.
-  if test -f Makefile.Release; then
-    at_mfile='Makefile.Release'
-  else
-    at_mfile='Makefile'
-  fi
-  if test -f $at_mfile; then :; else
-    as_fn_error "Cannot find the Makefile generated by qmake." "$LINENO" 5
-    break
-  fi
-
-  # Find the DEFINES of Qt (should have been named CPPFLAGS).
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the DEFINES to use with Qt" >&5
-$as_echo_n "checking for the DEFINES to use with Qt... " >&6; }
-if test "${at_cv_env_QT_DEFINES+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_env_QT_DEFINES=`sed "/^DEFINES[^A-Z=]*=/!d;$qt_sed_filter" $at_mfile`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_DEFINES" >&5
-$as_echo "$at_cv_env_QT_DEFINES" >&6; }
-  QT_DEFINES=$at_cv_env_QT_DEFINES
-
-
-  # Find the CFLAGS of Qt (We can use Qt in C?!)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the CFLAGS to use with Qt" >&5
-$as_echo_n "checking for the CFLAGS to use with Qt... " >&6; }
-if test "${at_cv_env_QT_CFLAGS+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_env_QT_CFLAGS=`sed "/^CFLAGS[^A-Z=]*=/!d;$qt_sed_filter" $at_mfile`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_CFLAGS" >&5
-$as_echo "$at_cv_env_QT_CFLAGS" >&6; }
-  QT_CFLAGS=$at_cv_env_QT_CFLAGS
-
-
-  # Find the CXXFLAGS of Qt.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the CXXFLAGS to use with Qt" >&5
-$as_echo_n "checking for the CXXFLAGS to use with Qt... " >&6; }
-if test "${at_cv_env_QT_CXXFLAGS+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS[^A-Z=]*=/!d;$qt_sed_filter" $at_mfile`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_CXXFLAGS" >&5
-$as_echo "$at_cv_env_QT_CXXFLAGS" >&6; }
-  QT_CXXFLAGS=$at_cv_env_QT_CXXFLAGS
-
-
-  # Find the INCPATH of Qt.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the INCPATH to use with Qt" >&5
-$as_echo_n "checking for the INCPATH to use with Qt... " >&6; }
-if test "${at_cv_env_QT_INCPATH+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_env_QT_INCPATH=`sed "/^INCPATH[^A-Z=]*=/!d;$qt_sed_filter" $at_mfile`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_INCPATH" >&5
-$as_echo "$at_cv_env_QT_INCPATH" >&6; }
-  QT_INCPATH=$at_cv_env_QT_INCPATH
-
-
-  QT_CPPFLAGS="$at_cv_env_QT_DEFINES $at_cv_env_QT_INCPATH"
-
-
-  # Find the LFLAGS of Qt (Should have been named LDFLAGS)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the LDFLAGS to use with Qt" >&5
-$as_echo_n "checking for the LDFLAGS to use with Qt... " >&6; }
-if test "${at_cv_env_QT_LDFLAGS+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_env_QT_LDFLAGS=`sed "/^LFLAGS[^A-Z=]*=/!d;$qt_sed_filter" $at_mfile`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_LDFLAGS" >&5
-$as_echo "$at_cv_env_QT_LDFLAGS" >&6; }
-  QT_LFLAGS=$at_cv_env_QT_LDFLAGS
-
-  QT_LDFLAGS=$at_cv_env_QT_LDFLAGS
-
-
-  # Find the LIBS of Qt.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the LIBS to use with Qt" >&5
-$as_echo_n "checking for the LIBS to use with Qt... " >&6; }
-if test "${at_cv_env_QT_LIBS+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  at_cv_env_QT_LIBS=`sed "/^LIBS[^A-Z]*=/!d;$qt_sed_filter" $at_mfile`
-   if test x$at_darwin = xyes; then
-     # Fix QT_LIBS: as of today Libtool (GNU Libtool 1.5.23a) doesn't handle
-     # -F properly. The "bug" has been fixed on 22 October 2006
-     # by Peter O'Gorman but we provide backward compatibility here.
-     at_cv_env_QT_LIBS=`echo "$at_cv_env_QT_LIBS" \
-                             | sed 's/^-F/-Wl,-F/;s/ -F/ -Wl,-F/g'`
-   fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_LIBS" >&5
-$as_echo "$at_cv_env_QT_LIBS" >&6; }
-  QT_LIBS=$at_cv_env_QT_LIBS
-
-
-  cd .. && rm -rf conftest.dir
-
-  # Run the user code
-
-
-  done  # end hack (useless for to be able to use break)
-
-
-  # this is a hack to get decent flow control with 'break'
-  for _qt_ignored in once; do
-
-  if test x"$QMAKE" = x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \$QMAKE is empty.\
-  Did you invoke AT_WITH_QT before AT_REQUIRE_QT_VERSION?" >&5
-$as_echo "$as_me: WARNING: \$QMAKE is empty.\
-  Did you invoke AT_WITH_QT before AT_REQUIRE_QT_VERSION?" >&2;}; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Qt version >= 4.6 is required" >&5
-$as_echo "$as_me: WARNING: Qt version >= 4.6 is required" >&2;}
-    break
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt's version" >&5
-$as_echo_n "checking for Qt's version... " >&6; }
-if test "${at_cv_QT_VERSION+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  echo "$as_me:$LINENO: Running $QMAKE --version:" >&5
-  $QMAKE --version >&5 2>&1
-  qmake_version_sed='/^.*\([0-9]\.[0-9]\.[0-9]\).*$/!d;s//\1/'
-  at_cv_QT_VERSION=`$QMAKE --version 2>&1 | sed "$qmake_version_sed"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_QT_VERSION" >&5
-$as_echo "$at_cv_QT_VERSION" >&6; }
-  if test x"$at_cv_QT_VERSION" = x; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot detect Qt's version." >&5
-$as_echo "$as_me: WARNING: Cannot detect Qt's version." >&2;}; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Qt version >= 4.6 is required" >&5
-$as_echo "$as_me: WARNING: Qt version >= 4.6 is required" >&2;}
-    break
-  fi
-  QT_VERSION=$at_cv_QT_VERSION
-
-  as_arg_v1=$QT_VERSION
-as_arg_v2=4.6
-awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null
-case $? in #(
-  1) :
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This package requires Qt 4.6 or above." >&5
-$as_echo "$as_me: WARNING: This package requires Qt 4.6 or above." >&2;}; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Qt version >= 4.6 is required" >&5
-$as_echo "$as_me: WARNING: Qt version >= 4.6 is required" >&2;}; break;  ;; #(
-  0) :
-     ;; #(
-  2) :
-     ;; #(
-  *) :
-     ;;
-esac
-
-  # Run the user code
-
-
-  done  # end hack (useless for to be able to use break)
-
-  $as_echo "#define MAGICS_QT 1" >>confdefs.h
-
-  CPPFLAGS="-I/usr/include/qt4 ${CPPFLAGS}"  ### for Ubuntu 11.04
-fi
-
-######################################################################
-#
-#     Qt debug
-#
-######################################################################
-# Check whether --enable-qtdebug was given.
-if test "${enable_qtdebug+set}" = set; then :
-  enableval=$enable_qtdebug; qtdebug=$enableval
-else
-  qtdebug=no
-fi
-
-
-if test "x${qt}" = xyes -a "x${qtdebug}" = xno ; then
-	CXXFLAGS="${CXXFLAGS} -DQT_NO_DEBUG_OUTPUT"
-fi
-
-
-#####################
-###  M E T V I E W
-
-if test "x$metview" = "xyes" ; then
-  allheaders=yes
-  $as_echo "#define MAGICS_METVIEW 1" >>confdefs.h
-
-fi
-
-
-
-
-#
-#  Raster graphics support
-#
-raster=yes
-# Check whether --enable-raster was given.
-if test "${enable_raster+set}" = set; then :
-  enableval=$enable_raster; raster=$enableval
-else
-  raster=yes
-fi
-
-if test "x$raster" = "xyes" ; then
-
-# Check whether --with-gd was given.
-if test "${with_gd+set}" = set; then :
-  withval=$with_gd; CPPFLAGS="-I${with_gd}/include ${CPPFLAGS}";LDFLAGS="-L${with_gd}/${LIBNAME} ${LDFLAGS}"
-
-fi
-
-  ac_fn_c_check_header_mongrel "$LINENO" "gd.h" "ac_cv_header_gd_h" "$ac_includes_default"
-if test "x$ac_cv_header_gd_h" = x""yes; then :
-   have_gd_h="yes"
-else
-   have_gd_h="no"
-fi
-
-
-
-  if test "x$have_gd_h" != "xyes"; then
-   echo
-   echo "   The GD library is required for raster file support in Magics to function."
-   echo "   You can get it from http://www.libgd.org . If your system"
-   echo "   has libgd installed, you probably miss the gd.h header file."
-   raster="no"
-  else
-   $as_echo "#define MAGICS_RASTER 1" >>confdefs.h
-
-  fi
-fi
-
-
-############################################
-#
-#  enable all headers
-#
-if test "x$allheaders" = "xyes" ; then
-  $as_echo "#define MAGICS_ALLHEADERS 1" >>confdefs.h
-
-fi
-
-#
-#  JSON support  --enable-json
-#
-# Check whether --enable-json was given.
-if test "${enable_json+set}" = set; then :
-  enableval=$enable_json; json=$enableval
-else
-  json=yes
-fi
-
-if test "x$json" = "xyes"  ; then
-  $as_echo "#define MAGICS_JSON 1" >>confdefs.h
-
-fi
-
-#
-#  apps compilation --enable-apps
-#
-# Check whether --enable-apps was given.
-if test "${enable_apps+set}" = set; then :
-  enableval=$enable_apps; apps=$enableval
-else
-  apps=yes
-fi
-
-
-#
-#  BUFR support  --enable-bufr
-#
-# Check whether --enable-bufr was given.
-if test "${enable_bufr+set}" = set; then :
-  enableval=$enable_bufr; bufr=$enableval
-else
-  bufr=no
-fi
-
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-##############################################################################
-##
-##  ODB support  --enable-odb
-##
-# Check whether --enable-odb was given.
-if test "${enable_odb+set}" = set; then :
-  enableval=$enable_odb; odb=$enableval
-else
-  odb=no
-fi
-
-
-if test "x$odb" = "xyes" ; then
-  $as_echo "#define MAGICS_ODB 1" >>confdefs.h
-
-  ODB_PATH="/usr/local"
-
-# Check whether --with-odb was given.
-if test "${with_odb+set}" = set; then :
-  withval=$with_odb; ODB_PATH="${with_odb}";CPPFLAGS="-I${with_odb}/include -I${with_odb}/include/eclib -I${with_odb}/include/odb_api ${CPPFLAGS}";LDFLAGS="-L${with_odb}/lib ${LDFLAGS}"
-
-fi
-
-
-#  AC_CHECK_LIB(Ec,link_eclib,,,)
-#  AC_CHECK_LIB(Odb,odb_init,,,)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for ODB libraries in ${ODB_PATH}/lib/" >&5
-$as_echo_n "checking Checking for ODB libraries in ${ODB_PATH}/lib/... " >&6; }
-  if test -f ${ODB_PATH}/lib/libOdb.so ; then
-    MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -L${ODB_PATH}/lib -lEc -lOdb"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: FAILED" >&5
-$as_echo "FAILED" >&6; }
-    as_fn_error "Could not find ODB library at ${ODB_PATH}/lib/libOdb.so" "$LINENO" 5
-  fi
-fi
-
-
-##############################################################################
-#
-# Update developments for metview (development)
-#
-# Check whether --enable-magnext was given.
-if test "${enable_magnext+set}" = set; then :
-  enableval=$enable_magnext; magnext=$enableval
-else
-  magnext=no
-fi
-
-
-if test "x$magnext" = "xyes" ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: ENABLED EXPERIMENTAL FEATURES FOR METVIEW (ECMWF)" >&5
-$as_echo "$as_me: ENABLED EXPERIMENTAL FEATURES FOR METVIEW (ECMWF)" >&6;}
-  CXXFLAGS="${CXXFLAGS} -DMAG_NEXT"
-fi
-
-
-#
-# freetype
-#
-if test "x$raster" = "xyes" ; then
-
-ac_fn_cxx_check_header_mongrel "$LINENO" "ft2build.h" "ac_cv_header_ft2build_h" "$ac_includes_default"
-if test "x$ac_cv_header_ft2build_h" = x""yes; then :
-  $as_echo "#define MAGICS_TTF 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not successfully compile with FreeType2 using the" >&5
-$as_echo "$as_me: WARNING: could not successfully compile with FreeType2 using the" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: default compiler flags; " >&5
-$as_echo "$as_me: WARNING: default compiler flags; " >&2;}
-fi
-
-
-fi
-
-
-#
-# TIFF
-#
-##AC_ARG_ENABLE(tiff, [[  --enable-tiff         enable the TIFF output [default=no]]],
-##tiff=$enableval, tiff=no)
-
-#if test "x$tiff" = "xyes" ; then
-
-#AC_CHECK_HEADER(tiffio.h,,
-#  AC_MSG_WARN([could not successfully compile with TIFF using the])
-#  AC_MSG_WARN([default compiler flags;])
-#  unset ac_cv_header_tiff_h)
-
-#  AC_DEFINE(MAGICS_TIFF, 1)
-#fi
-
-
-#
-# For XML parser expat
-#
-ac_fn_cxx_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default"
-if test "x$ac_cv_header_expat_h" = x""yes; then :
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not successfully compile with expat using the" >&5
-$as_echo "$as_me: WARNING: could not successfully compile with expat using the" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: default compiler flags;" >&5
-$as_echo "$as_me: WARNING: default compiler flags;" >&2;}
-  unset ac_cv_header_expat_h
-fi
-
-
-
-
-#
-# For  B O O S T
-#
-
-
-# Check whether --with-boost was given.
-if test "${with_boost+set}" = set; then :
-  withval=$with_boost;
-    if test "$withval" = "no"; then
-        want_boost="no"
-    elif test "$withval" = "yes"; then
-        want_boost="yes"
-        ac_boost_path=""
-    else
-        want_boost="yes"
-        ac_boost_path="$withval"
-    fi
-
-else
-  want_boost="yes"
-fi
-
-
-
-
-# Check whether --with-boost-libdir was given.
-if test "${with_boost_libdir+set}" = set; then :
-  withval=$with_boost_libdir;
-        if test -d "$withval"
-        then
-                ac_boost_lib_path="$withval"
-        else
-                as_fn_error "--with-boost-libdir expected directory name" "$LINENO" 5
-        fi
-
-else
-  ac_boost_lib_path=""
-
-fi
-
-
-if test "x$want_boost" = "xyes"; then
-    boost_lib_version_req=1.32
-    boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([0-9]*\.[0-9]*\)'`
-    boost_lib_version_req_major=`expr $boost_lib_version_req : '\([0-9]*\)'`
-    boost_lib_version_req_minor=`expr $boost_lib_version_req : '[0-9]*\.\([0-9]*\)'`
-    boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-    if test "x$boost_lib_version_req_sub_minor" = "x" ; then
-        boost_lib_version_req_sub_minor="0"
-        fi
-    WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+  $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boostlib >= $boost_lib_version_req" >&5
-$as_echo_n "checking for boostlib >= $boost_lib_version_req... " >&6; }
-    succeeded=no
-
-                        libsubdirs="lib"
-    ax_arch=`uname -m`
-    if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
-        libsubdirs="lib64 lib lib64"
-    fi
-
-                if test "$ac_boost_path" != ""; then
-        BOOST_CPPFLAGS="-I$ac_boost_path/include"
-        for ac_boost_path_tmp in $libsubdirs; do
-                if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
-                        BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
-                        break
-                fi
-        done
-    elif test "$cross_compiling" != yes; then
-        for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
-            if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
-                for libsubdir in $libsubdirs ; do
-                    if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
-                done
-                BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
-                BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
-                break;
-            fi
-        done
-    fi
-
-            if test "$ac_boost_lib_path" != ""; then
-       BOOST_LDFLAGS="-L$ac_boost_lib_path"
-    fi
-
-    CPPFLAGS_SAVED="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-    export CPPFLAGS
-
-    LDFLAGS_SAVED="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-    export LDFLAGS
-
-
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-    #include <boost/version.hpp>
-
-int
-main ()
-{
-
-    #if BOOST_VERSION >= $WANT_BOOST_VERSION
-    // Everything is okay
-    #else
-    #  error Boost version is too old
-    #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    succeeded=yes
-    found_system=yes
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-            if test "x$succeeded" != "xyes"; then
-        _version=0
-        if test "$ac_boost_path" != ""; then
-            if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
-                for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
-                    _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
-                    V_CHECK=`expr $_version_tmp \> $_version`
-                    if test "$V_CHECK" = "1" ; then
-                        _version=$_version_tmp
-                    fi
-                    VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
-                    BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
-                done
-            fi
-        else
-            if test "$cross_compiling" != yes; then
-                for ac_boost_path in /usr /usr/local /opt /opt/local ; do
-                    if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
-                        for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
-                            _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
-                            V_CHECK=`expr $_version_tmp \> $_version`
-                            if test "$V_CHECK" = "1" ; then
-                                _version=$_version_tmp
-                                best_path=$ac_boost_path
-                            fi
-                        done
-                    fi
-                done
-
-                VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
-                BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
-                if test "$ac_boost_lib_path" = ""; then
-                    for libsubdir in $libsubdirs ; do
-                        if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
-                    done
-                    BOOST_LDFLAGS="-L$best_path/$libsubdir"
-                fi
-            fi
-
-            if test "x$BOOST_ROOT" != "x"; then
-                for libsubdir in $libsubdirs ; do
-                    if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
-                done
-                if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
-                    version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
-                    stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
-                        stage_version_shorten=`expr $stage_version : '\([0-9]*\.[0-9]*\)'`
-                    V_CHECK=`expr $stage_version_shorten \>\= $_version`
-                    if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: We will use a staged boost library from $BOOST_ROOT" >&5
-$as_echo "$as_me: We will use a staged boost library from $BOOST_ROOT" >&6;}
-                        BOOST_CPPFLAGS="-I$BOOST_ROOT"
-                        BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
-                    fi
-                fi
-            fi
-        fi
-
-        CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-        export CPPFLAGS
-        LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-        export LDFLAGS
-
-        ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-        #include <boost/version.hpp>
-
-int
-main ()
-{
-
-        #if BOOST_VERSION >= $WANT_BOOST_VERSION
-        // Everything is okay
-        #else
-        #  error Boost version is too old
-        #endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        succeeded=yes
-        found_system=yes
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-        ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    fi
-
-    if test "$succeeded" != "yes" ; then
-        if test "$_version" = "0" ; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation." >&5
-$as_echo "$as_me: We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation." >&6;}
-        else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Your boost libraries seems to old (version $_version)." >&5
-$as_echo "$as_me: Your boost libraries seems to old (version $_version)." >&6;}
-        fi
-        # execute ACTION-IF-NOT-FOUND (if present):
-        as_fn_error "Boost library not found - if you use RPM do not forget boost-devel" "$LINENO" 5
-    else
-
-
-
-$as_echo "#define HAVE_BOOST /**/" >>confdefs.h
-
-        # execute ACTION-IF-FOUND (if present):
-        :
-    fi
-
-    CPPFLAGS="$CPPFLAGS_SAVED"
-    LDFLAGS="$LDFLAGS_SAVED"
-fi
-
-
-ac_fn_cxx_check_header_mongrel "$LINENO" "boost/math/complex.hpp" "ac_cv_header_boost_math_complex_hpp" "$ac_includes_default"
-if test "x$ac_cv_header_boost_math_complex_hpp" = x""yes; then :
-
-else
-  as_fn_error "could not successfully compile with Boost::Math package" "$LINENO" 5
-  unset ac_cv_header_boost_h
-fi
-
-
-
-### Boost.Filesystem
-#AC_CHECK_LIB([boost_system-mt], [main],
-#             [BOOST_FILESYSTEM_LIBS='-lboost_system-mt';LIBS="${LIBS} -lboost_system-mt"],
-#             [AC_MSG_ERROR([Boost.System not found])])
-#AC_CHECK_LIB([boost_filesystem-mt], [main],
-#             [BOOST_FILESYSTEM_LIBS="-lboost_filesystem-mt ${BOOST_FILESYSTEM_LIBS}"],
-#             [AC_MSG_ERROR([Boost.Filesystem not found])])
-#AC_SUBST([BOOST_FILESYSTEM_LIBS])
-#LIBS="$LIBS ${BOOST_FILESYSTEM_LIBS}"
-#MAGICS_3RDPARTY_LIBS="$MAGICS_3RDPARTY_LIBS ${BOOST_FILESYSTEM_LIBS}"
-
-########################################################
-#
-# Check for GRIB API
-#
-# We don't know whether GRIB API was built with jasper or openjeg requirements,
-# so we check for both
-
-# Check whether --enable-grib was given.
-if test "${enable_grib+set}" = set; then :
-  enableval=$enable_grib; grib=$enableval
-else
-  grib=yes
-fi
-
-
-if test "x${grib}" = "xyes" ; then
-
-{ $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 test "${ac_cv_lib_jasper_jas_stream_memopen+set}" = set; 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_cxx_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" = x""yes; then :
-  have_jasper="yes"
-else
-  have_jasper="no"
-fi
-
-if test "${have_jasper}" = "no"
-then
-	echo " "
-	echo "  No Jasper (JPEG 2000) library could be found!"
-	echo "    Your Magics++ programs should work nevertheless as long as"
-	echo "    your GribAPI installed does NOT require it! Compile GribAPI"
-	echo "    without Jasper support."
-	echo " "
-else
-	LIBS="${LIBS} -ljasper"
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for opj_decode in -lopenjpeg" >&5
-$as_echo_n "checking for opj_decode in -lopenjpeg... " >&6; }
-if test "${ac_cv_lib_openjpeg_opj_decode+set}" = set; 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_decode ();
-int
-main ()
-{
-return opj_decode ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_openjpeg_opj_decode=yes
-else
-  ac_cv_lib_openjpeg_opj_decode=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_decode" >&5
-$as_echo "$ac_cv_lib_openjpeg_opj_decode" >&6; }
-if test "x$ac_cv_lib_openjpeg_opj_decode" = x""yes; then :
-  have_openjpeg="yes"
-else
-  have_openjpeg="no"
-fi
-
-if test "${have_openjpeg}" = "no"
-then
-	echo " "
-	echo "  No openjpeg (JPEG 2000) library could be found!"
-	echo "    Your Magics++ programs should work nevertheless as long as"
-	echo "    your GribAPI installed does NOT require it! Compile GribAPI"
-	echo "    without openjpeg support."
-	echo " "
-else
-	LIBS="${LIBS} -lopenjpeg"
-fi
-
-
-
-
-# Check whether --with-grib-api was given.
-if test "${with_grib_api+set}" = set; then :
-  withval=$with_grib_api; GRIBAPI_ROOT="${with_grib_api}";CPPFLAGS="-I${with_grib_api}/include ${CPPFLAGS}";LDFLAGS="-L${with_grib_api}/${LIBNAME} -L${with_grib_api}/lib ${LDFLAGS}"; GRIBAPI_LIBS="-L${with_grib_api}/${LIBNAME} "
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grib_get_message in -lgrib_api" >&5
-$as_echo_n "checking for grib_get_message in -lgrib_api... " >&6; }
-if test "${ac_cv_lib_grib_api_grib_get_message+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgrib_api  $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 grib_get_message ();
-int
-main ()
-{
-return grib_get_message ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_grib_api_grib_get_message=yes
-else
-  ac_cv_lib_grib_api_grib_get_message=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_grib_api_grib_get_message" >&5
-$as_echo "$ac_cv_lib_grib_api_grib_get_message" >&6; }
-if test "x$ac_cv_lib_grib_api_grib_get_message" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGRIB_API 1
-_ACEOF
-
-  LIBS="-lgrib_api $LIBS"
-
-else
-  as_fn_error "Grib API could not be linked! Try setting --with-grib-api or add dependent libraries if necessary to configure call (\"LIBS=-lpng\")." "$LINENO" 5
-fi
-
-
-
-
-$as_echo "#define MAGICS_GRIB 1" >>confdefs.h
-
-fi
-
-#############################################################################################################
-#
-if test "x$bufr" = "xyes" -a "x$windows" = xno; then
-#
-#     E M O S L I B -- always DOUBLE precision !!!
-#
-# check if MvOBS files are prperly linked/copied from Metview
-if test -e src/MvObs/MvBufr.h ; then
-
-
-# Check whether --with-fortran-libraries was given.
-if test "${with_fortran_libraries+set}" = set; then :
-  withval=$with_fortran_libraries; FORTRAN_LIB_PATH=$with_fortran_libraries;LDFLAGS="-L$with_fortran_libraries $LDFLAGS"
-
-fi
-
-
-
-EMOS_LIB_NAME="emosR64"
-EMOS_LIB_PATH="/usr/local/lib"
-
-
-# Check whether --with-emos-libraries was given.
-if test "${with_emos_libraries+set}" = set; then :
-  withval=$with_emos_libraries; LDFLAGS="-L$with_emos_libraries $LDFLAGS";EMOS_LIB_PATH=${with_emos_libraries}
-
-fi
-
-
-
-# Check whether --with-emos-libname was given.
-if test "${with_emos_libname+set}" = set; then :
-  withval=$with_emos_libname; EMOS_LIB_NAME="$with_emos_libname"
-
-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
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $F77" >&5
-$as_echo_n "checking how to get verbose linking output from $F77... " >&6; }
-if test "${ac_cv_prog_f77_v+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-if ac_fn_f77_try_compile "$LINENO"; then :
-  ac_cv_prog_f77_v=
-# Try some options frequently used verbose output
-for ac_verb in -v -verbose --verbose -V -\#\#\#; do
-  cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-
-# Compile and link our simple test program by passing a flag (argument
-# 1 to this macro) to the Fortran compiler in order to get
-# "verbose" output that we can then parse for the Fortran linker
-# flags.
-ac_save_FFLAGS=$FFLAGS
-FFLAGS="$FFLAGS $ac_verb"
-eval "set x $ac_link"
-shift
-$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
-# gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
-# LIBRARY_PATH; skip all such settings.
-ac_f77_v_output=`eval $ac_link 5>&1 2>&1 |
-  grep -v 'Driving:' | grep -v "^[_$as_cr_Letters][_$as_cr_alnum]*="`
-$as_echo "$ac_f77_v_output" >&5
-FFLAGS=$ac_save_FFLAGS
-
-rm -rf conftest*
-
-# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
-# /foo, /bar, and /baz are search directories for the Fortran linker.
-# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
-ac_f77_v_output="`echo $ac_f77_v_output |
-	grep 'LPATH is:' |
-	sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_f77_v_output"
-
-# FIXME: we keep getting bitten by quoted arguments; a more general fix
-#        that detects unbalanced quotes in FLIBS should be implemented
-#        and (ugh) tested at some point.
-case $ac_f77_v_output in
-  # If we are using xlf then replace all the commas with spaces.
-  *xlfentry*)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/,/ /g'` ;;
-
-  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
-  # $LIBS confuse us, and the libraries appear later in the output anyway).
-  *mGLOB_options_string*)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;;
-
-  # Portland Group compiler has singly- or doubly-quoted -cmdline argument
-  # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4.
-  # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
-  *-cmdline\ * | *-ignore\ * | *-def\ *)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed "\
-	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
-
-  # If we are using Cray Fortran then delete quotes.
-  *cft90*)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"//g'` ;;
-esac
-
-
-  # look for -l* and *.a constructs in the output
-  for ac_arg in $ac_f77_v_output; do
-     case $ac_arg in
-	[\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
-	  ac_cv_prog_f77_v=$ac_verb
-	  break 2 ;;
-     esac
-  done
-done
-if test -z "$ac_cv_prog_f77_v"; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $F77" >&5
-$as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $F77" >&2;}
-fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5
-$as_echo "$as_me: WARNING: compilation failed" >&2;}
-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_v" >&5
-$as_echo "$ac_cv_prog_f77_v" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 libraries of $F77" >&5
-$as_echo_n "checking for Fortran 77 libraries of $F77... " >&6; }
-if test "${ac_cv_f77_libs+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$FLIBS" != "x"; then
-  ac_cv_f77_libs="$FLIBS" # Let the user override the test.
-else
-
-cat > conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-
-# Compile and link our simple test program by passing a flag (argument
-# 1 to this macro) to the Fortran compiler in order to get
-# "verbose" output that we can then parse for the Fortran linker
-# flags.
-ac_save_FFLAGS=$FFLAGS
-FFLAGS="$FFLAGS $ac_cv_prog_f77_v"
-eval "set x $ac_link"
-shift
-$as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5
-# gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH,
-# LIBRARY_PATH; skip all such settings.
-ac_f77_v_output=`eval $ac_link 5>&1 2>&1 |
-  grep -v 'Driving:' | grep -v "^[_$as_cr_Letters][_$as_cr_alnum]*="`
-$as_echo "$ac_f77_v_output" >&5
-FFLAGS=$ac_save_FFLAGS
-
-rm -rf conftest*
-
-# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
-# /foo, /bar, and /baz are search directories for the Fortran linker.
-# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
-ac_f77_v_output="`echo $ac_f77_v_output |
-	grep 'LPATH is:' |
-	sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_f77_v_output"
-
-# FIXME: we keep getting bitten by quoted arguments; a more general fix
-#        that detects unbalanced quotes in FLIBS should be implemented
-#        and (ugh) tested at some point.
-case $ac_f77_v_output in
-  # If we are using xlf then replace all the commas with spaces.
-  *xlfentry*)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/,/ /g'` ;;
-
-  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
-  # $LIBS confuse us, and the libraries appear later in the output anyway).
-  *mGLOB_options_string*)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;;
-
-  # Portland Group compiler has singly- or doubly-quoted -cmdline argument
-  # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4.
-  # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2".
-  *-cmdline\ * | *-ignore\ * | *-def\ *)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed "\
-	s/-cmdline  *'[^']*'/ /g; s/-cmdline  *\"[^\"]*\"/ /g
-	s/-ignore  *'[^']*'/ /g; s/-ignore  *\"[^\"]*\"/ /g
-	s/-def  *'[^']*'/ /g; s/-def  *\"[^\"]*\"/ /g"` ;;
-
-  # If we are using Cray Fortran then delete quotes.
-  *cft90*)
-    ac_f77_v_output=`echo $ac_f77_v_output | sed 's/"//g'` ;;
-esac
-
-
-
-ac_cv_f77_libs=
-
-# Save positional arguments (if any)
-ac_save_positional="$@"
-
-set X $ac_f77_v_output
-while test $# != 1; do
-  shift
-  ac_arg=$1
-  case $ac_arg in
-	[\\/]*.a | ?:[\\/]*.a)
-	    ac_exists=false
-  for ac_i in $ac_cv_f77_libs; do
-    if test x"$ac_arg" = x"$ac_i"; then
-      ac_exists=true
-      break
-    fi
-  done
-
-  if test x"$ac_exists" = xtrue; then :
-
-else
-  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
-fi
-	  ;;
-	-bI:*)
-	    ac_exists=false
-  for ac_i in $ac_cv_f77_libs; do
-    if test x"$ac_arg" = x"$ac_i"; then
-      ac_exists=true
-      break
-    fi
-  done
-
-  if test x"$ac_exists" = xtrue; then :
-
-else
-  if test "$ac_compiler_gnu" = yes; then
-  for ac_link_opt in $ac_arg; do
-    ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt"
-  done
-else
-  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
-fi
-fi
-	  ;;
-	  # Ignore these flags.
-	-lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \
-	  |-LANG:=* | -LIST:* | -LNO:*)
-	  ;;
-	-lkernel32)
-	  test x"$CYGWIN" != xyes && ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
-	  ;;
-	-[LRuYz])
-	  # These flags, when seen by themselves, take an argument.
-	  # We remove the space between option and argument and re-iterate
-	  # unless we find an empty arg or a new option (starting with -)
-	  case $2 in
-	     "" | -*);;
-	     *)
-		ac_arg="$ac_arg$2"
-		shift; shift
-		set X $ac_arg "$@"
-		;;
-	  esac
-	  ;;
-	-YP,*)
-	  for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
-	      ac_exists=false
-  for ac_i in $ac_cv_f77_libs; do
-    if test x"$ac_j" = x"$ac_i"; then
-      ac_exists=true
-      break
-    fi
-  done
-
-  if test x"$ac_exists" = xtrue; then :
-
-else
-  ac_arg="$ac_arg $ac_j"
-			       ac_cv_f77_libs="$ac_cv_f77_libs $ac_j"
-fi
-	  done
-	  ;;
-	-[lLR]*)
-	    ac_exists=false
-  for ac_i in $ac_cv_f77_libs; do
-    if test x"$ac_arg" = x"$ac_i"; then
-      ac_exists=true
-      break
-    fi
-  done
-
-  if test x"$ac_exists" = xtrue; then :
-
-else
-  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
-fi
-	  ;;
-	-zallextract*| -zdefaultextract)
-	  ac_cv_f77_libs="$ac_cv_f77_libs $ac_arg"
-	  ;;
-	  # Ignore everything else.
-  esac
-done
-# restore positional arguments
-set X $ac_save_positional; shift
-
-# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,
-# then we insist that the "run path" must be an absolute path (i.e. it
-# must begin with a "/").
-case `(uname -sr) 2>/dev/null` in
-   "SunOS 5"*)
-      ac_ld_run_path=`$as_echo "$ac_f77_v_output" |
-			sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
-      test "x$ac_ld_run_path" != x &&
-	if test "$ac_compiler_gnu" = yes; then
-  for ac_link_opt in $ac_ld_run_path; do
-    ac_cv_f77_libs="$ac_cv_f77_libs -Xlinker $ac_link_opt"
-  done
-else
-  ac_cv_f77_libs="$ac_cv_f77_libs $ac_ld_run_path"
-fi
-      ;;
-esac
-fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_libs" >&5
-$as_echo "$ac_cv_f77_libs" >&6; }
-FLIBS="$ac_cv_f77_libs"
-
-
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-as_ac_Lib=`$as_echo "ac_cv_lib_${EMOS_LIB_NAME}''_pbopen" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pbopen in -l${EMOS_LIB_NAME}" >&5
-$as_echo_n "checking for pbopen in -l${EMOS_LIB_NAME}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-l${EMOS_LIB_NAME}  $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 pbopen ();
-int
-main ()
-{
-return pbopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  eval "$as_ac_Lib=yes"
-else
-  eval "$as_ac_Lib=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-eval ac_res=\$$as_ac_Lib
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
-   if test "x$as_val" = x""yes; then :
-  echo "Emoslib found."
-else
-  as_fn_error "The double precision version of Emoslib (${EMOS_LIB_NAME}) could not be linked! Try setting --with-emos-libraries and --with-emos-libname." "$LINENO" 5
-fi
-
-
-$as_echo "#define MAGICS_BUFR 1" >>confdefs.h
-
-MAGICS_3RDPARTY_LIBS="-l${EMOS_LIB_NAME} $MAGICS_3RDPARTY_LIBS"
-
-
-
-else   # MvOBS link failed
-bufr="no"
-echo ""
-echo "  MvOBS source is not linked correctly! BUFR disabled."
-echo ""
-fi
-
-else               # no bufr
-  bufr="no"
-fi
-
-# endif BUFR
-
-
-
-#############################################################################################
-if test "x$SITE_NAME" = 'xecmwf'
-then
-  $as_echo "#define MAGICS_METGRAM 1" >>confdefs.h
-
-  metgram=yes
-
-  ################
-  #
-  #  Spot support  --enable-spot
-  #
-  # Check whether --enable-spot was given.
-if test "${enable_spot+set}" = set; then :
-  enableval=$enable_spot; spot=$enableval
-else
-  spot=no
-fi
-
-
-  if test "x$spot" = "xyes" ; then
-     $as_echo "#define MAGICS_SPOT 1" >>confdefs.h
-
-
-
-# Check whether --with-spot was given.
-if test "${with_spot+set}" = set; then :
-  withval=$with_spot; MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -L${with_spot}/lib"; CPPFLAGS="-I${with_spot}/include ${CPPFLAGS}";LDFLAGS="-L${with_spot}/lib ${LDFLAGS}"
-
-fi
-
-     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for spot_open_database in -lspot_database" >&5
-$as_echo_n "checking for spot_open_database in -lspot_database... " >&6; }
-if test "${ac_cv_lib_spot_database_spot_open_database+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lspot_database  $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 spot_open_database ();
-int
-main ()
-{
-return spot_open_database ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_spot_database_spot_open_database=yes
-else
-  ac_cv_lib_spot_database_spot_open_database=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_spot_database_spot_open_database" >&5
-$as_echo "$ac_cv_lib_spot_database_spot_open_database" >&6; }
-if test "x$ac_cv_lib_spot_database_spot_open_database" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSPOT_DATABASE 1
-_ACEOF
-
-  LIBS="-lspot_database $LIBS"
-
-else
-  as_fn_error "spot_database could not be linked! " "$LINENO" 5
-fi
-
-  fi
-
-fi
-###  end ECMWF metgrams
-
-
-############################################
-#
-# Proj4
-#
-# Check whether --enable-proj4 was given.
-if test "${enable_proj4+set}" = set; then :
-  enableval=$enable_proj4; proj4=$enableval
-else
-  proj4=yes
-fi
-
-
-if test "x$proj4" = "xyes" ; then
-
-# Check whether --with-proj4 was given.
-if test "${with_proj4+set}" = set; then :
-  withval=$with_proj4; MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -L${with_proj4}/lib";CPPFLAGS="-I${with_proj4}/include ${CPPFLAGS}";LDFLAGS="-L${with_proj4}/lib ${LDFLAGS}"
-
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pj_init in -lproj" >&5
-$as_echo_n "checking for pj_init in -lproj... " >&6; }
-if test "${ac_cv_lib_proj_pj_init+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lproj  $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 pj_init ();
-int
-main ()
-{
-return pj_init ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_proj_pj_init=yes
-else
-  ac_cv_lib_proj_pj_init=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_proj_pj_init" >&5
-$as_echo "$ac_cv_lib_proj_pj_init" >&6; }
-if test "x$ac_cv_lib_proj_pj_init" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPROJ 1
-_ACEOF
-
-  LIBS="-lproj $LIBS"
-
-else
-  as_fn_error "Proj4 could not be linked! " "$LINENO" 5
-fi
-
-  $as_echo "#define MAGICS_PROJ4 1" >>confdefs.h
-
-fi
-
-
-
-
-############################################
-#
-# Checks for other libraries.
-#
-
-if test "x$raster" = "xyes"  ; then
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdImagePng in -lgd" >&5
-$as_echo_n "checking for gdImagePng in -lgd... " >&6; }
-if test "${ac_cv_lib_gd_gdImagePng+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgd  $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 gdImagePng ();
-int
-main ()
-{
-return gdImagePng ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_gd_gdImagePng=yes
-else
-  ac_cv_lib_gd_gdImagePng=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_gd_gdImagePng" >&5
-$as_echo "$ac_cv_lib_gd_gdImagePng" >&6; }
-if test "x$ac_cv_lib_gd_gdImagePng" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGD 1
-_ACEOF
-
-  LIBS="-lgd $LIBS"
-
-else
-  as_fn_error "gdImagePng not defined - libGD not found or no PNG support" "$LINENO" 5
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdImageGif in -lgd" >&5
-$as_echo_n "checking for gdImageGif in -lgd... " >&6; }
-if test "${ac_cv_lib_gd_gdImageGif+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgd  $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 gdImageGif ();
-int
-main ()
-{
-return gdImageGif ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_gd_gdImageGif=yes
-else
-  ac_cv_lib_gd_gdImageGif=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_gd_gdImageGif" >&5
-$as_echo "$ac_cv_lib_gd_gdImageGif" >&6; }
-if test "x$ac_cv_lib_gd_gdImageGif" = x""yes; then :
-  $as_echo "#define MAGICS_GIF 1" >>confdefs.h
-
-	 have_gifs="yes"
-else
-  have_gifs="no"
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdImageGifAnimEnd in -lgd" >&5
-$as_echo_n "checking for gdImageGifAnimEnd in -lgd... " >&6; }
-if test "${ac_cv_lib_gd_gdImageGifAnimEnd+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgd  $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 gdImageGifAnimEnd ();
-int
-main ()
-{
-return gdImageGifAnimEnd ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_gd_gdImageGifAnimEnd=yes
-else
-  ac_cv_lib_gd_gdImageGifAnimEnd=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_gd_gdImageGifAnimEnd" >&5
-$as_echo "$ac_cv_lib_gd_gdImageGifAnimEnd" >&6; }
-if test "x$ac_cv_lib_gd_gdImageGifAnimEnd" = x""yes; then :
-  $as_echo "#define MAGICS_GIF_ANIMATED 1" >>confdefs.h
-
-	 have_gifs_ani="yes"
-else
-  have_gifs_ani="no"
-fi
-
-
- if test "${have_gifs}" = "no"
- then
-	echo " "
-	echo "   You have a old GD library with NO GIF support. Please consider"
-	echo "   upgrading to a more recent version (2.0.28 or newer)."
-	echo "   This version of GD will support only PNG and JPEG output."
-	echo " "
- else
- 	MAGICS_OUTPUTS="${MAGICS_OUTPUTS}_GIF"
- fi
- if test "${have_gifs_ani}" = "no"
- then
-	echo " "
-	echo "   You have a oldish GD library with NO animated GIF support. Please consider"
-	echo "   upgrading to a more recent version (2.0.32 or newer)."
-	echo "   This version of GD will support PNG, JPEG and (non-animated) GIF output."
-	echo " "
- else
- 	MAGICS_OUTPUTS="${MAGICS_OUTPUTS}_AGIF"
- fi
-fi
-
-
-ac_fn_cxx_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = x""yes; then :
-
-else
-  as_fn_error "could not find zlib.h. You might need to install zlib development packges (zlib-devel)" "$LINENO" 5
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress in -lz" >&5
-$as_echo_n "checking for compress in -lz... " >&6; }
-if test "${ac_cv_lib_z_compress+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lz  $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 compress ();
-int
-main ()
-{
-return compress ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_z_compress=yes
-else
-  ac_cv_lib_z_compress=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_z_compress" >&5
-$as_echo "$ac_cv_lib_z_compress" >&6; }
-if test "x$ac_cv_lib_z_compress" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBZ 1
-_ACEOF
-
-  LIBS="-lz $LIBS"
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FcInitLoadConfigAndFonts in -lfontconfig" >&5
-$as_echo_n "checking for FcInitLoadConfigAndFonts in -lfontconfig... " >&6; }
-if test "${ac_cv_lib_fontconfig_FcInitLoadConfigAndFonts+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfontconfig  $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 FcInitLoadConfigAndFonts ();
-int
-main ()
-{
-return FcInitLoadConfigAndFonts ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_fontconfig_FcInitLoadConfigAndFonts=yes
-else
-  ac_cv_lib_fontconfig_FcInitLoadConfigAndFonts=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_fontconfig_FcInitLoadConfigAndFonts" >&5
-$as_echo "$ac_cv_lib_fontconfig_FcInitLoadConfigAndFonts" >&6; }
-if test "x$ac_cv_lib_fontconfig_FcInitLoadConfigAndFonts" = x""yes; then :
-  ac_fn_cxx_check_header_mongrel "$LINENO" "fontconfig/fontconfig.h" "ac_cv_header_fontconfig_fontconfig_h" "$ac_includes_default"
-if test "x$ac_cv_header_fontconfig_fontconfig_h" = x""yes; then :
-  LIBS="-lfontconfig $LIBS"
-fi
-
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_key_create in -lpthread" >&5
-$as_echo_n "checking for pthread_key_create in -lpthread... " >&6; }
-if test "${ac_cv_lib_pthread_pthread_key_create+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread  $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 pthread_key_create ();
-int
-main ()
-{
-return pthread_key_create ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_pthread_pthread_key_create=yes
-else
-  ac_cv_lib_pthread_pthread_key_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_pthread_pthread_key_create" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_key_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_key_create" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPTHREAD 1
-_ACEOF
-
-  LIBS="-lpthread $LIBS"
-
-fi
-
-
-##AC_CHECK_LIB(tiff, TIFFOpen ,,AC_MSG_ERROR([tiff not found.]))
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate  in -lexpat" >&5
-$as_echo_n "checking for XML_ParserCreate  in -lexpat... " >&6; }
-if test "${ac_cv_lib_expat_XML_ParserCreate_+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lexpat  $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 XML_ParserCreate  ();
-int
-main ()
-{
-return XML_ParserCreate  ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_expat_XML_ParserCreate_=yes
-else
-  ac_cv_lib_expat_XML_ParserCreate_=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_expat_XML_ParserCreate_" >&5
-$as_echo "$ac_cv_lib_expat_XML_ParserCreate_" >&6; }
-if test "x$ac_cv_lib_expat_XML_ParserCreate_" = x""yes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEXPAT 1
-_ACEOF
-
-  LIBS="-lexpat $LIBS"
-
-else
-  as_fn_error "expat xml parser library not found." "$LINENO" 5
-fi
-
-
-
-#################################################################################
-#
-#   N E T C D F    (and CURL)
-#
-#################################################################################
-#
-#  netCDF support  --enable-netcdf
-#
-# Check whether --enable-netcdf was given.
-if test "${enable_netcdf+set}" = set; then :
-  enableval=$enable_netcdf; netcdf=$enableval
-else
-  netcdf=yes
-fi
-
-
-if test "x${netcdf}" = "xyes" ; then
-
-###   AC_MSG_NOTICE([for curl library sometimes needed by NetCDF])
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_easy_setopt in -lcurl" >&5
-$as_echo_n "checking for curl_easy_setopt in -lcurl... " >&6; }
-if test "${ac_cv_lib_curl_curl_easy_setopt+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurl  $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 curl_easy_setopt ();
-int
-main ()
-{
-return curl_easy_setopt ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_curl_curl_easy_setopt=yes
-else
-  ac_cv_lib_curl_curl_easy_setopt=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_curl_curl_easy_setopt" >&5
-$as_echo "$ac_cv_lib_curl_curl_easy_setopt" >&6; }
-if test "x$ac_cv_lib_curl_curl_easy_setopt" = x""yes; then :
-  have_curl="yes"
-else
-  have_curl="no"
-fi
-
-
-  # NetCDF can be built with a dependency on curl. Therefore, we add it to the libraries if it is
-  # installed; otherwise, issue a warning.
-  if test "${have_curl}" = "yes"
-  then
-    CURL_LIBS="${NETCDF_LIBS} -lcurl"
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No curl library - this is fine as long as your NetCDF library does not require it." >&5
-$as_echo "$as_me: WARNING: No curl library - this is fine as long as your NetCDF library does not require it." >&2;}
-  fi
-
-  #
-  # For netcdf header file
-  #
-
-# Check whether --with-netcdf was given.
-if test "${with_netcdf+set}" = set; then :
-  withval=$with_netcdf; CPPFLAGS="-I${with_netcdf}/include ${CPPFLAGS}";LDFLAGS="-L${with_netcdf}/lib ${LDFLAGS}"; NETCDF_LIBS="-L${with_netcdf}/lib "
-
-fi
-
-  ac_fn_cxx_check_header_mongrel "$LINENO" "netcdfcpp.h" "ac_cv_header_netcdfcpp_h" "$ac_includes_default"
-if test "x$ac_cv_header_netcdfcpp_h" = x""yes; then :
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not successfully compile with netcdfcpp.h!" >&5
-$as_echo "$as_me: WARNING: could not successfully compile with netcdfcpp.h!" >&2;}
-  unset ac_cv_header_netcdf_h
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ncvarid  in -lnetcdf" >&5
-$as_echo_n "checking for ncvarid  in -lnetcdf... " >&6; }
-if test "${ac_cv_lib_netcdf_ncvarid_+set}" = set; 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 ncvarid  ();
-int
-main ()
-{
-return ncvarid  ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  ac_cv_lib_netcdf_ncvarid_=yes
-else
-  ac_cv_lib_netcdf_ncvarid_=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_ncvarid_" >&5
-$as_echo "$ac_cv_lib_netcdf_ncvarid_" >&6; }
-if test "x$ac_cv_lib_netcdf_ncvarid_" = x""yes; then :
-  NETCDF_LIBS="${NETCDF_LIBS}-lnetcdf_c++ -lnetcdf ${CURL_LIBS}"
-else
-  as_fn_error "netcdf library not found." "$LINENO" 5
-fi
-
-  #AC_CHECK_LIB(netcdf_c++, nctypelen        ,echo "",AC_MSG_ERROR([netcdf_c++ library not found.]))
-
-  $as_echo "#define MAGICS_NETCDF 1" >>confdefs.h
-
-fi
-
-#################################################################################
-#
-#  Cairo support  --enable-cairo
-#
-# Check whether --enable-cairo was given.
-if test "${enable_cairo+set}" = set; then :
-  enableval=$enable_cairo; cairo=$enableval
-else
-  cairo=yes
-fi
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PKG_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
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_ac_pt_PKG_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
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  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
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; 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; }
-		PKG_CONFIG=""
-	fi
-
-fi
-
-if test "x$cairo" = "xyes" ; then
-
- MAGICS_OUTPUTS="${MAGICS_OUTPUTS}_PNG_CPS_CSVG_X"
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
-$as_echo_n "checking for CAIRO... " >&6; }
-
-if test -n "$CAIRO_CFLAGS"; then
-    pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$CAIRO_LIBS"; then
-    pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0" 2>&1`
-        else
-	        CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors "pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0" 2>&1`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$CAIRO_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-    echo ""
-    echo " Cairo/Pango library could not be found!"
-    echo " Please install cairo-devel and pango-devel ."
-    cairo=no
-
-elif test $pkg_failed = untried; then
-
-    echo ""
-    echo " Cairo/Pango library could not be found!"
-    echo " Please install cairo-devel and pango-devel ."
-    cairo=no
-
-else
-	CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
-	CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-   CFLAGS="$CAIRO_CFLAGS $CFLAGS"
-   CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
-   LIBS="$CAIRO_LIBS $LIBS"
-   LDFLAGS="$CAIRO_LDFLAGS $LDFLAGS"
-   $as_echo "#define MAGICS_CAIRO 1" >>confdefs.h
-
-
-fi
-
-  #
-  # NOT good code:
-  #   required since pkg-config returns non-lib options in LIBS!!!
-  #
-  if test "x${SITE_NAME}" = "xecmwf"; then
-     echo $LIBS > stupid_bug_fix_file_LIBS.txt
-     LIBS=`sed 's/-pthread/ /' stupid_bug_fix_file_LIBS.txt`;
-     rm -f stupid_bug_fix_file_LIBS.txt
-  fi
-
-fi
-
-
-
-#PKG_CHECK_MODULES(GDAL, [gdal >= 1.6.0],
-#  [
-#   CFLAGS="$GDAL_CFLAGS $CFLAGS"
-#   CPPFLAGS="$GDAL_CFLAGS $CPPFLAGS"
-#   LIBS="$GDAL_LIBS $LIBS"
-#   LDFLAGS="$GDAL_LDFLAGS $LDFLAGS"
-#   gdal=yes
-#   AC_DEFINE(MAGICS_GDAL, 1)
-#  ],
-#  [
-#    echo ""
-#    echo " GDAL library could not be found!"
-#    gdal=no
-#  ])
-#AC_SUBST(gdal)
-
-
-# Autoheader
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#############################################################################
-#
-#  P O S T S C R I P T
-#
-
-# Set Ghostscript font directory
-
-# Check whether --with-gs-font-dir was given.
-if test "${with_gs_font_dir+set}" = set; then :
-  withval=$with_gs_font_dir; with_gs_font_dir=$withval
-else
-  with_gs_font_dir='default'
-fi
-
-
-#
-# Check for Display Postscript
-#
-PSDelegateDefault='gs'
-# Extract the first word of ""$PSDelegateDefault"", so it can be a program name with args.
-set dummy "$PSDelegateDefault"; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_PSDelegate+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PSDelegate in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PSDelegate="$PSDelegate" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_PSDelegate="$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
-
-  test -z "$ac_cv_path_PSDelegate" && ac_cv_path_PSDelegate=""$PSDelegateDefault""
-  ;;
-esac
-fi
-PSDelegate=$ac_cv_path_PSDelegate
-if test -n "$PSDelegate"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PSDelegate" >&5
-$as_echo "$PSDelegate" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-have_gs='no'
-if test "$PSDelegate" != "$PSDelegateDefault"; then have_gs='yes' ; fi
-
-
-#
-# Test for GhostScriptfont directories
-#
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ghostscript fonts directory" >&5
-$as_echo_n "checking for Ghostscript fonts directory... " >&6; }
-ghostscript_font_dir=''
-if test "${with_gs_font_dir}" != 'default'
-then
-  ghostscript_font_dir="${with_gs_font_dir}/"
-else
-    for font_dir in '/usr/share/ghostscript/fonts/' '/usr/share/fonts/default/Type1/' "${prefix}/share/ghostscript/fonts/"
-    do
-      if test -f "${font_dir}/a010013l.pfb"
-      then
-        ghostscript_font_dir="${font_dir}"
-        break 1
-      fi
-    done
-
-    if test "${ghostscript_font_dir}x" = 'x'
-    then
-      if test "$PSDelegate" != 'gs'
-      then
-        ghostscript_font_dir=`echo "$PSDelegate" | sed -e 's:/bin/gs:/share/ghostscript/fonts:'`"/"
-      fi
-    fi
-fi
-
-if test "${ghostscript_font_dir}x" != 'x'
-then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ghostscript_font_dir" >&5
-$as_echo "$ghostscript_font_dir" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found! Some output drivers might NOT work!" >&5
-$as_echo "not found! Some output drivers might NOT work!" >&6; };
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define POSTSCRIPT_FONT_PATH "${ghostscript_font_dir}"
-_ACEOF
-
-
-if test $have_gs = 'yes'
-then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Ghostscript version" >&5
-$as_echo_n "checking for Ghostscript version... " >&6; }
-  if GSVersion=`$PSDelegate --version`
-  then
-    :
-  else
-    GSVersion=`$PSDelegate --help | sed -e '1q' | awk '{ print $3 }'`
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GSVersion" >&5
-$as_echo "$GSVersion" >&6; }
-fi
-
-#
-#  P O S T S C R I P T  -  E N D
-#
-
-
-
-MAGICS_3RDPARTY_INCLUDE="$CPPFLAGS"
-MAGICS_3RDPARTY_LIBS="$LIBS $GRIBAPI_LIBS $MAGICS_3RDPARTY_LIBS $NETCDF_LIBS"
-LIBS="$LIBS $NETCDF_LIBS"
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define MAGICS_OUTPUTS "${MAGICS_OUTPUTS}"
-_ACEOF
-
-
- if test "$metview"   = yes; then
-  MAGICS_METVIEW_TRUE=
-  MAGICS_METVIEW_FALSE='#'
-else
-  MAGICS_METVIEW_TRUE='#'
-  MAGICS_METVIEW_FALSE=
-fi
-
- if test "$bit"       = yes; then
-  MAGICS_32BIT_TRUE=
-  MAGICS_32BIT_FALSE='#'
-else
-  MAGICS_32BIT_TRUE='#'
-  MAGICS_32BIT_FALSE=
-fi
-
- if test "$apps"      = yes; then
-  MAGICS_APPS_TRUE=
-  MAGICS_APPS_FALSE='#'
-else
-  MAGICS_APPS_TRUE='#'
-  MAGICS_APPS_FALSE=
-fi
-
- if test "$bufr"      = yes; then
-  MAGICS_BUFR_TRUE=
-  MAGICS_BUFR_FALSE='#'
-else
-  MAGICS_BUFR_TRUE='#'
-  MAGICS_BUFR_FALSE=
-fi
-
- if test "$json"      = yes; then
-  MAGICS_JSON_TRUE=
-  MAGICS_JSON_FALSE='#'
-else
-  MAGICS_JSON_TRUE='#'
-  MAGICS_JSON_FALSE=
-fi
-
- if test "$odb"       = yes; then
-  MAGICS_ODB_TRUE=
-  MAGICS_ODB_FALSE='#'
-else
-  MAGICS_ODB_TRUE='#'
-  MAGICS_ODB_FALSE=
-fi
-
- if test "$exception" = yes; then
-  MAGICS_EXCEPTION_TRUE=
-  MAGICS_EXCEPTION_FALSE='#'
-else
-  MAGICS_EXCEPTION_TRUE='#'
-  MAGICS_EXCEPTION_FALSE=
-fi
-
- if test "$spot"      = yes; then
-  MAGICS_SPOT_TRUE=
-  MAGICS_SPOT_FALSE='#'
-else
-  MAGICS_SPOT_TRUE='#'
-  MAGICS_SPOT_FALSE=
-fi
-
- if test "$grib"      = yes; then
-  MAGICS_GRIB_TRUE=
-  MAGICS_GRIB_FALSE='#'
-else
-  MAGICS_GRIB_TRUE='#'
-  MAGICS_GRIB_FALSE=
-fi
-
- if test "$netcdf"    = yes; then
-  MAGICS_NETCDF_TRUE=
-  MAGICS_NETCDF_FALSE='#'
-else
-  MAGICS_NETCDF_TRUE='#'
-  MAGICS_NETCDF_FALSE=
-fi
-
- if test "$metgram"   = yes; then
-  MAGICS_METGRAM_TRUE=
-  MAGICS_METGRAM_FALSE='#'
-else
-  MAGICS_METGRAM_TRUE='#'
-  MAGICS_METGRAM_FALSE=
-fi
-
- if test "$qt"        = yes; then
-  MAGICS_QT_TRUE=
-  MAGICS_QT_FALSE='#'
-else
-  MAGICS_QT_TRUE='#'
-  MAGICS_QT_FALSE=
-fi
-
- if test "$qtdebug"   = no; then
-  MAGICS_QTDEBUG_TRUE=
-  MAGICS_QTDEBUG_FALSE='#'
-else
-  MAGICS_QTDEBUG_TRUE='#'
-  MAGICS_QTDEBUG_FALSE=
-fi
-
- if test "$cairo"     = yes; then
-  MAGICS_CAIRO_TRUE=
-  MAGICS_CAIRO_FALSE='#'
-else
-  MAGICS_CAIRO_TRUE='#'
-  MAGICS_CAIRO_FALSE=
-fi
-
- if test "$tiff"      = yes; then
-  MAGICS_TIFF_TRUE=
-  MAGICS_TIFF_FALSE='#'
-else
-  MAGICS_TIFF_TRUE='#'
-  MAGICS_TIFF_FALSE=
-fi
-
- if test "$raster"    = yes; then
-  MAGICS_RASTER_TRUE=
-  MAGICS_RASTER_FALSE='#'
-else
-  MAGICS_RASTER_TRUE='#'
-  MAGICS_RASTER_FALSE=
-fi
-
- if test "$python"    = yes; then
-  MAGICS_PYTHON_TRUE=
-  MAGICS_PYTHON_FALSE='#'
-else
-  MAGICS_PYTHON_TRUE='#'
-  MAGICS_PYTHON_FALSE=
-fi
-
-#AM_CONDITIONAL(MAGICS_GDAL,	test "$gdal"      = yes)
- if test "$allheaders"  = yes; then
-  MAGICS_ALLHEADERS_TRUE=
-  MAGICS_ALLHEADERS_FALSE='#'
-else
-  MAGICS_ALLHEADERS_TRUE='#'
-  MAGICS_ALLHEADERS_FALSE=
-fi
-
- if test "$threads"  = yes; then
-  MAGICS_THREADS_TRUE=
-  MAGICS_THREADS_FALSE='#'
-else
-  MAGICS_THREADS_TRUE='#'
-  MAGICS_THREADS_FALSE=
-fi
-
- if test "$proj4"  = yes; then
-  MAGICS_PROJ4_TRUE=
-  MAGICS_PROJ4_FALSE='#'
-else
-  MAGICS_PROJ4_TRUE='#'
-  MAGICS_PROJ4_FALSE=
-fi
-
- if test "$mac"  = yes; then
-  MAGICS_MAC_TRUE=
-  MAGICS_MAC_FALSE='#'
-else
-  MAGICS_MAC_TRUE='#'
-  MAGICS_MAC_FALSE=
-fi
-
-
-ac_config_files="$ac_config_files Makefile magics-config src/Makefile src/xml/Makefile src/common/Makefile src/basic/Makefile src/decoders/Makefile src/drivers/Makefile src/oda/Makefile src/visualisers/Makefile src/terralib/Makefile src/MvObs/Makefile src/libTable/Makefile src/libMagWrapper/Makefile src/web/Makefile tools/Makefile test/Makefile test/fortran/Makefile test/C/Makefile test/MagML/Makefile test/python/Makefile apps/Makefile apps/MagMLInterpretor/Makefile apps/metgram/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
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  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=
-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
-
-
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-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 -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_METVIEW_TRUE}" && test -z "${MAGICS_METVIEW_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_METVIEW\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_32BIT_TRUE}" && test -z "${MAGICS_32BIT_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_32BIT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_APPS_TRUE}" && test -z "${MAGICS_APPS_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_APPS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_BUFR_TRUE}" && test -z "${MAGICS_BUFR_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_BUFR\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_JSON_TRUE}" && test -z "${MAGICS_JSON_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_JSON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_ODB_TRUE}" && test -z "${MAGICS_ODB_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_ODB\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_EXCEPTION_TRUE}" && test -z "${MAGICS_EXCEPTION_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_EXCEPTION\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_SPOT_TRUE}" && test -z "${MAGICS_SPOT_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_SPOT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_GRIB_TRUE}" && test -z "${MAGICS_GRIB_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_GRIB\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_NETCDF_TRUE}" && test -z "${MAGICS_NETCDF_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_NETCDF\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_METGRAM_TRUE}" && test -z "${MAGICS_METGRAM_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_METGRAM\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_QT_TRUE}" && test -z "${MAGICS_QT_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_QT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_QTDEBUG_TRUE}" && test -z "${MAGICS_QTDEBUG_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_QTDEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_CAIRO_TRUE}" && test -z "${MAGICS_CAIRO_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_CAIRO\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_TIFF_TRUE}" && test -z "${MAGICS_TIFF_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_TIFF\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_RASTER_TRUE}" && test -z "${MAGICS_RASTER_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_RASTER\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_PYTHON_TRUE}" && test -z "${MAGICS_PYTHON_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_ALLHEADERS_TRUE}" && test -z "${MAGICS_ALLHEADERS_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_ALLHEADERS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_THREADS_TRUE}" && test -z "${MAGICS_THREADS_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_THREADS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_PROJ4_TRUE}" && test -z "${MAGICS_PROJ4_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_PROJ4\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${MAGICS_MAC_TRUE}" && test -z "${MAGICS_MAC_FALSE}"; then
-  as_fn_error "conditional \"MAGICS_MAC\" 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.
-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 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=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
-  fi
-  $as_echo "$as_me: error: $1" >&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 -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-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
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# 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 MagPlus $as_me 2, which was
-generated by GNU Autoconf 2.65.  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 the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-MagPlus config.status 2
-configured by $0, generated by GNU Autoconf 2.65,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2009 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=$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"` ;;
-    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
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# 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'
-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`'
-LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`'
-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`'
-predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-LD_F77='`$ECHO "X$LD_F77" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds_F77='`$ECHO "X$old_archive_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_F77='`$ECHO "X$compiler_F77" | $Xsed -e "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-GCC_F77='`$ECHO "X$GCC_F77" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_F77='`$ECHO "X$lt_prog_compiler_no_builtin_flag_F77" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_F77='`$ECHO "X$lt_prog_compiler_wl_F77" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_F77='`$ECHO "X$lt_prog_compiler_pic_F77" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static_F77='`$ECHO "X$lt_prog_compiler_static_F77" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_F77='`$ECHO "X$lt_cv_prog_compiler_c_o_F77" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc_F77='`$ECHO "X$archive_cmds_need_lc_F77" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_F77='`$ECHO "X$enable_shared_with_static_runtimes_F77" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_F77='`$ECHO "X$export_dynamic_flag_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec_F77='`$ECHO "X$whole_archive_flag_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_needs_object_F77='`$ECHO "X$compiler_needs_object_F77" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_F77='`$ECHO "X$old_archive_from_new_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_F77='`$ECHO "X$old_archive_from_expsyms_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_F77='`$ECHO "X$archive_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds_F77='`$ECHO "X$archive_expsym_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds_F77='`$ECHO "X$module_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds_F77='`$ECHO "X$module_expsym_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld_F77='`$ECHO "X$with_gnu_ld_F77" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag_F77='`$ECHO "X$allow_undefined_flag_F77" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag_F77='`$ECHO "X$no_undefined_flag_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_F77='`$ECHO "X$hardcode_libdir_flag_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_F77='`$ECHO "X$hardcode_libdir_flag_spec_ld_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator_F77='`$ECHO "X$hardcode_libdir_separator_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_F77='`$ECHO "X$hardcode_direct_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_absolute_F77='`$ECHO "X$hardcode_direct_absolute_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L_F77='`$ECHO "X$hardcode_minus_L_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_F77='`$ECHO "X$hardcode_shlibpath_var_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic_F77='`$ECHO "X$hardcode_automatic_F77" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath_F77='`$ECHO "X$inherit_rpath_F77" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs_F77='`$ECHO "X$link_all_deplibs_F77" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path_F77='`$ECHO "X$fix_srcfile_path_F77" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols_F77='`$ECHO "X$always_export_symbols_F77" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds_F77='`$ECHO "X$export_symbols_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms_F77='`$ECHO "X$exclude_expsyms_F77" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms_F77='`$ECHO "X$include_expsyms_F77" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds_F77='`$ECHO "X$prelink_cmds_F77" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec_F77='`$ECHO "X$file_list_spec_F77" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action_F77='`$ECHO "X$hardcode_action_F77" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_dirs_F77='`$ECHO "X$compiler_lib_search_dirs_F77" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects_F77='`$ECHO "X$predep_objects_F77" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects_F77='`$ECHO "X$postdep_objects_F77" | $Xsed -e "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-predeps_F77='`$ECHO "X$predeps_F77" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps_F77='`$ECHO "X$postdeps_F77" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path_F77='`$ECHO "X$compiler_lib_search_path_F77" | $Xsed -e "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# Quote evaled strings.
-for var in SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-OBJDUMP \
-deplibs_check_method \
-file_magic_cmd \
-AR \
-AR_FLAGS \
-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 \
-SHELL \
-ECHO \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
-lt_prog_compiler_pic \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-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_flag_spec_ld \
-hardcode_libdir_separator \
-fix_srcfile_path \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-finish_eval \
-old_striplib \
-striplib \
-compiler_lib_search_dirs \
-predep_objects \
-postdep_objects \
-predeps \
-postdeps \
-compiler_lib_search_path \
-LD_CXX \
-LD_F77 \
-compiler_CXX \
-compiler_F77 \
-lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_no_builtin_flag_F77 \
-lt_prog_compiler_wl_CXX \
-lt_prog_compiler_wl_F77 \
-lt_prog_compiler_pic_CXX \
-lt_prog_compiler_pic_F77 \
-lt_prog_compiler_static_CXX \
-lt_prog_compiler_static_F77 \
-lt_cv_prog_compiler_c_o_CXX \
-lt_cv_prog_compiler_c_o_F77 \
-export_dynamic_flag_spec_CXX \
-export_dynamic_flag_spec_F77 \
-whole_archive_flag_spec_CXX \
-whole_archive_flag_spec_F77 \
-compiler_needs_object_CXX \
-compiler_needs_object_F77 \
-with_gnu_ld_CXX \
-with_gnu_ld_F77 \
-allow_undefined_flag_CXX \
-allow_undefined_flag_F77 \
-no_undefined_flag_CXX \
-no_undefined_flag_F77 \
-hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_F77 \
-hardcode_libdir_flag_spec_ld_CXX \
-hardcode_libdir_flag_spec_ld_F77 \
-hardcode_libdir_separator_CXX \
-hardcode_libdir_separator_F77 \
-fix_srcfile_path_CXX \
-fix_srcfile_path_F77 \
-exclude_expsyms_CXX \
-exclude_expsyms_F77 \
-include_expsyms_CXX \
-include_expsyms_F77 \
-file_list_spec_CXX \
-file_list_spec_F77 \
-compiler_lib_search_dirs_CXX \
-compiler_lib_search_dirs_F77 \
-predep_objects_CXX \
-predep_objects_F77 \
-postdep_objects_CXX \
-postdep_objects_F77 \
-predeps_CXX \
-predeps_F77 \
-postdeps_CXX \
-postdeps_F77 \
-compiler_lib_search_path_CXX \
-compiler_lib_search_path_F77; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$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 \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
-old_archive_cmds_CXX \
-old_archive_cmds_F77 \
-old_archive_from_new_cmds_CXX \
-old_archive_from_new_cmds_F77 \
-old_archive_from_expsyms_cmds_CXX \
-old_archive_from_expsyms_cmds_F77 \
-archive_cmds_CXX \
-archive_cmds_F77 \
-archive_expsym_cmds_CXX \
-archive_expsym_cmds_F77 \
-module_cmds_CXX \
-module_cmds_F77 \
-module_expsym_cmds_CXX \
-module_expsym_cmds_F77 \
-export_symbols_cmds_CXX \
-export_symbols_cmds_F77 \
-prelink_cmds_CXX \
-prelink_cmds_F77; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
-  ;;
-esac
-
-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'
-
-
-
-
-
-
-
-
-_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
-    "src/magics_config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/magics_config.h" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "magics-config") CONFIG_FILES="$CONFIG_FILES magics-config" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "src/xml/Makefile") CONFIG_FILES="$CONFIG_FILES src/xml/Makefile" ;;
-    "src/common/Makefile") CONFIG_FILES="$CONFIG_FILES src/common/Makefile" ;;
-    "src/basic/Makefile") CONFIG_FILES="$CONFIG_FILES src/basic/Makefile" ;;
-    "src/decoders/Makefile") CONFIG_FILES="$CONFIG_FILES src/decoders/Makefile" ;;
-    "src/drivers/Makefile") CONFIG_FILES="$CONFIG_FILES src/drivers/Makefile" ;;
-    "src/oda/Makefile") CONFIG_FILES="$CONFIG_FILES src/oda/Makefile" ;;
-    "src/visualisers/Makefile") CONFIG_FILES="$CONFIG_FILES src/visualisers/Makefile" ;;
-    "src/terralib/Makefile") CONFIG_FILES="$CONFIG_FILES src/terralib/Makefile" ;;
-    "src/MvObs/Makefile") CONFIG_FILES="$CONFIG_FILES src/MvObs/Makefile" ;;
-    "src/libTable/Makefile") CONFIG_FILES="$CONFIG_FILES src/libTable/Makefile" ;;
-    "src/libMagWrapper/Makefile") CONFIG_FILES="$CONFIG_FILES src/libMagWrapper/Makefile" ;;
-    "src/web/Makefile") CONFIG_FILES="$CONFIG_FILES src/web/Makefile" ;;
-    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
-    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
-    "test/fortran/Makefile") CONFIG_FILES="$CONFIG_FILES test/fortran/Makefile" ;;
-    "test/C/Makefile") CONFIG_FILES="$CONFIG_FILES test/C/Makefile" ;;
-    "test/MagML/Makefile") CONFIG_FILES="$CONFIG_FILES test/MagML/Makefile" ;;
-    "test/python/Makefile") CONFIG_FILES="$CONFIG_FILES test/python/Makefile" ;;
-    "apps/Makefile") CONFIG_FILES="$CONFIG_FILES apps/Makefile" ;;
-    "apps/MagMLInterpretor/Makefile") CONFIG_FILES="$CONFIG_FILES apps/MagMLInterpretor/Makefile" ;;
-    "apps/metgram/Makefile") CONFIG_FILES="$CONFIG_FILES apps/metgram/Makefile" ;;
-    "python/Magics/Makefile") CONFIG_FILES="$CONFIG_FILES python/Magics/Makefile" ;;
-    "python/Magics/setup.py") CONFIG_FILES="$CONFIG_FILES python/Magics/setup.py" ;;
-    "rpms/Makefile") CONFIG_FILES="$CONFIG_FILES rpms/Makefile" ;;
-    "rpms/Magics.spec") CONFIG_FILES="$CONFIG_FILES rpms/Magics.spec" ;;
-    "docs/Magics.dox") CONFIG_FILES="$CONFIG_FILES docs/Magics.dox" ;;
-    "src/magics.pc") CONFIG_FILES="$CONFIG_FILES src/magics.pc" ;;
-
-  *) 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=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
-
-# 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 {' >"$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 >>"\$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 >>"\$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 < "$tmp/subs1.awk" > "$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 $(srcdir),
-# ${srcdir} and @srcdir@ 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[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
-s/:*$//
-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 >"$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_t=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; 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="$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 "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 >"$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 "$tmp/subs.awk" >$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' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$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 "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$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 "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$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 "$tmp/config.h" "$ac_file" \
-	|| as_fn_error "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$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
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 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"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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
-}
- ;;
-    "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
-# 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 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="CXX F77 "
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# 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
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# 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
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# 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
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# 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
-
-# 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
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that does not interpret backslashes.
-ECHO=$lt_ECHO
-
-# 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
-
-# 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
-
-# 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
-
-# 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
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# 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
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
-# 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
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# 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
-
-# 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# 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
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# 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##*/}"
-}
-
-# 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_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}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $* ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# 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 ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -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 file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-
-# 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 "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[^=]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$@"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1+=\$2"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$1=\$$1\$2"
-}
-
-_LT_EOF
-    ;;
-  esac
-
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: CXX
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds_CXX
-
-# A language specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object_CXX
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld_CXX
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# 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_CXX
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# 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_CXX
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# 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_CXX
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath_CXX
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path_CXX
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds_CXX
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec_CXX
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# The directories searched by this compiler when creating a shared library.
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# Dependencies to place before and after the objects being linked to
-# create a shared library.
-predep_objects=$lt_predep_objects_CXX
-postdep_objects=$lt_postdep_objects_CXX
-predeps=$lt_predeps_CXX
-postdeps=$lt_postdeps_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# ### END LIBTOOL TAG CONFIG: CXX
-_LT_EOF
-
-
-    cat <<_LT_EOF >> "$ofile"
-
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# The linker used to build libraries.
-LD=$lt_LD_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
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_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
-
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_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
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path_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
-
-# 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
-
- ;;
-
-  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 $?
-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
-
-
-echo ""
-echo "Magics++ is configured as follows for host type: $host"
-echo ""
-echo "Option            Configure option = Configured value"
-echo "------------------------------------------------------"
-echo "Shared libraries  --enable-shared=$enable_shared"
-echo "Static libraries  --enable-static=$enable_static   (--enable-exception=${exception})"
-echo ""
-echo "Python interface  --enable-python=$python"
-echo ""
-echo "GRIB              --enable-grib=$grib"
-echo "BUFR              --enable-bufr=$bufr"
-echo "netCDF            --enable-netcdf=$netcdf"
-if test "x$SITE_NAME" = 'xecmwf'
-then
- echo "ODB               --enable-odb=$odb"
- echo "SPOT              --enable-spot=$spot"
-fi
-echo ""
-
-if test "x${raster}" = "xyes"
-then
- echo "Raster (GIF,PNG)  --enable-raster=$raster"
-elif test "x${raster}" = "xno"
-then
- echo "Raster (GIF,PNG)  --enable-raster  FAILED"
-fi
-
-if test "x${cairo}" = "xyes"
-then
- echo "Cairo & Pango     --enable-cairo=$cairo"
-elif test "x${cairo}" = "xno"
-then
- echo "Cairo & Pango     --enable-cairo   FAILED"
-fi
-
-echo ""
-if test "x${have_gs}" != 'xno'
-then
-  echo "Ghostscript       $PSDelegate ($GSVersion)"
-else
-  echo "Ghostscript       gs NOT FOUND! Please check, because some functions might not work in the drivers!"
-fi
-if test "${ghostscript_font_dir}x" != 'x'
-then
-  echo "Ghostscript fonts --with-gs-font-dir=$with_gs_font_dir   $ghostscript_font_dir"
-else
-  echo "Ghostscript fonts  NOT FOUND check config.log"
-fi
-
-if test "x${metview}" = 'xyes'
-then
- echo ""
- echo "   METVIEW 4 enabled build in ${prefix} !!!"
- echo ""
- echo "Qt                --enable-qt=$qt"
-fi
-if test "x${metview}" = 'xyes' -a "x${grib}" = 'xno'
-then
- echo ""
- echo "   METVIEW 4 enabled build without Grib_API makes NO sense !!!"
- echo ""
-fi
-
-echo ""
-echo "Options used to compile and link:"
-echo " CXX     = $CXX"
-echo " CC      = $CC"
-echo " F77     = $F77"
-echo ""
-echo " CFLAGS  = $CFLAGS"
-echo " CPPFLAGS= $CPPFLAGS"
-echo " CXXFLAGS= $CXXFLAGS"
-echo " LDFLAGS = $LDFLAGS"
-echo " LIBS    = $LIBS"
-echo " FLIBS   = $FLIBS"
-echo ""
-echo " MAGICS_3RDPARTY_INCLUDE= $MAGICS_3RDPARTY_INCLUDE"
-echo " MAGICS_3RDPARTY_LIBS   = $MAGICS_3RDPARTY_LIBS"
-echo ""
-echo "Please ensure that the MAGPLUS_HOME environment variable is correctly defined!"
-echo ""
-echo "Magics++ will be installed in   ${prefix}"
-echo ""
-echo "Currently \$MAGPLUS_HOME is     $MAGPLUS_HOME"
-echo ""
-if test "x${cairo}" = "xno"
-then
-echo ""
-echo "  CAIRO LIBRARY NOT FOUND --- PNG and PDF support disabled!"
-echo "     (if you use RPM/DEB you might have forgotten to install cairo-devel and pango-devel packages!)"
-echo ""
-fi
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 560eb50..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,1152 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.59)
-AC_INIT(MagPlus,2)
-
-AC_CONFIG_AUX_DIR(config)
-AC_CONFIG_MACRO_DIR([m4])
-AC_CANONICAL_SYSTEM
-
-# Source file containing package/library versioning information.
-. ${srcdir}/version.sh
-
-MAGICS_OUTPUTS="PS_EPS_PDF_SVG_KML"
-
-SITE_NAME="outside"
-AC_ARG_WITH([site],
-       AS_HELP_STRING([--with-site],[Name of installation site]),
-       [SITE_NAME="$with_site"]
-)
-AC_SUBST(SITE_NAME)
-
-
-if test "x$prefix" != xNONE; then
-  ac_default_prefix=${prefix}
-else
-  prefix=${ac_default_prefix}
-fi
-includedir=${prefix}/include/magics
-
-echo ""
-echo "configuring ${MAGICS_PACKAGE_NAME} ${MAGICS_PACKAGE_VERSION}${MAGICS_PACKAGE_VERSION_ADDENDUM} at ${SITE_NAME}"
-echo ""
-
-AC_SUBST(MAGICS_LIBRARY_CURRENT)dnl
-AC_SUBST(MAGICS_LIBRARY_REVISION)dnl
-AC_SUBST(MAGICS_LIBRARY_AGE)dnl
-
-AC_SUBST(MAGICS_PACKAGE_NAME)dnl
-AC_SUBST(MAGICS_PACKAGE_VERSION)dnl
-AC_SUBST(MAGICS_PACKAGE_RELEASE_DATE)dnl
-AC_SUBST(MAGICS_PACKAGE_COPYRIGHT_PERIOD)dnl
-AC_SUBST(MAGICS_PACKAGE_VERSION_ADDENDUM)dnl
-
-AC_DEFINE_UNQUOTED(MAGICS_VERSION, "${MAGICS_PACKAGE_VERSION}")
-AC_DEFINE_UNQUOTED(MAGICS_NAME, "${MAGICS_PACKAGE_NAME}")
-AC_DEFINE_UNQUOTED(MAGICS_RELEASE_DATE, "${MAGICS_PACKAGE_RELEASE_DATE}")
-AC_DEFINE_UNQUOTED(MAGICS_COPYRIGHT_PERIOD, "${MAGICS_PACKAGE_COPYRIGHT_PERIOD}")
-AC_DEFINE_UNQUOTED(MAGICS_INSTALL_PATH, "${prefix}")
-AC_DEFINE_UNQUOTED(MAGICS_SITE, "${SITE_NAME}")
-AC_DEFINE_UNQUOTED(MAGICS_TTF_PATH, "share/magics/ttf/",[Path to TTF font files.])
-
-AC_SUBST(prefix)
-
-AC_CONFIG_SRCDIR(src/MagicsDouble.cc)
-AM_CONFIG_HEADER(src/magics_config.h)
-
-AM_INIT_AUTOMAKE($MAGICS_PACKAGE_NAME,"${MAGICS_PACKAGE_VERSION}${MAGICS_PACKAGE_VERSION_ADDENDUM}",[http://www.ecmwf.int/publications/manuals/magics/index.html])
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-
-AC_DISABLE_STATIC         # TEMPORARY !!!!
-AC_AIX
-LT_INIT
-#AC_PROG_CC([xlc_r icc aCC gcc cc CC])
-: ${CXXFLAGS=""}                            # avoid '-g' - see http://www.gnu.org/software/autoconf/manual/autoconf.html#C_002b_002b-Compiler
-AC_PROG_CXX([xlC_r icpc aC++ g++ c++ CC])
-AC_PROG_F77(ifort gfortran pgf90 pgf77 xlf90_r xlf90 xlf77_r f90 g77)
-
-
-######################
-#
-# Checks for programs.
-#
-
-AC_PROG_LIBTOOL
-#LT_LANG([C++])
-
-#
-#  Generic Metview support  --enable-metview
-#
-AC_ARG_ENABLE(metview, [[  --enable-metview	  enable Metview 4 interface. [default=no]]],
-  metview=$enableval, metview=no)
-
-if test "x$metview" = "xyes" ; then
-
-  qt=yes
-fi
-
-##################################
-#
-#  T H R E A D I N G 
-#
-AC_ARG_ENABLE(threads,,
-  threads=$enableval, threads=yes)
-
-if test "x$threads" = "xyes" ; then
-  AC_DEFINE(MAGICS_THREADS, 1)
-fi
-
-##################################
-#
-#  Enable PKG_CONFIG
-#
-case `${PKG_CONFIG:-pkg-config} --version` in
-[0.?|0.?.?|0.1[0-7]|0.1[0-7].?]) PKGCONFIG_REQUIRES="Requires"; ;;
-*) PKGCONFIG_REQUIRES="Requires.private"; ;;
-esac
-AC_SUBST(PKGCONFIG_REQUIRES)
-
-
-###############################################################################################
-#
-#   P Y T H O N   &   S W I G
-#
-#      --enable-python
-#
-AC_ARG_ENABLE(python, [[  --enable-python	  enable Python interface. [default=no]]],
-  python=$enableval, python=no)
-
-
-if test "x$python" = "xyes"
-then
-  ### search for a python interpreter on the system abort if one not found
-  ### am_path_python sets many python vars - RTFM for more info
-  AM_PATH_PYTHON([2.5])
-
-  AC_MSG_CHECKING(whether numpy is installed)
-   has_numpy=`$PYTHON -c "import numpy;print numpy" 2> /dev/null`
-   if test "x$has_numpy" = "x"
-    then
-       AC_MSG_RESULT(no)
-       AC_MSG_ERROR([NumPy is not installed. Use --disable-python if you want to continue without NumPy.])
-    else
-       AC_MSG_RESULT(yes)
-       NUMPY_INCLUDE=`$PYTHON -c "import numpy;print numpy.get_include()"`
-       CPPFLAGS="-I${NUMPY_INCLUDE} ${CPPFLAGS}"
-       AC_SUBST(NUMPY_INCLUDE)
-    fi
-  AC_DEFINE(MAGICS_PYTHON, 1)
-  AC_SUBST(python)
-
-  AC_CHECK_PROG(SWIG, swig, swig)
-fi
-
-#
-#  E N D   P Y T H O N  &  S W I G
-#
-##############################################################################################################
-
-
-
-##################################################
-#
-#  32 bit addressing  --enable-32bit
-#
-AC_ARG_ENABLE([32-bits-addressing-mode],
-        [AC_HELP_STRING([--enable-32-bits-addressing-mode],
-		                [Force 32 bits addressing mode on 64 bits machines])],
-        enable_32_bits_addressing_mode='yes', enable_32_bits_addressing_mode='no')
-
-##################################################
-#
-#  Exception support  --enable-exception
-#
-AC_ARG_ENABLE(exception, [[  --enable-exception	  enable the use of all C++ exceptions (Not recommended for static library using PGF90!) [default=yes]]],
-  exception=$enableval, exception=yes)
-if test "x$exception" = "xyes" ; then
-  AC_DEFINE(MAGICS_EXCEPTION, 1)
-fi
-
-#######################################################################
-#
-# Architecture dependent Compiler options
-#
-windows=no
-SHLIB_EXT=so
-LIBNAME=${LIBNAME:="lib"}
-PLATFORM_DEFINES_MARS=""
-
-
-
-case "${host}" in
-	x86_64*linux*)
-		if test "x$enable_32_bits_addressing_mode" = "xyes" ; then
-		echo " "
-		echo "You are on x86-64 and building a 32 bit version of Magics++."
-		echo " "
-		AXX="-m32"
-		CPPFLAGS="$CPPFLAGS -I/usr/include/freetype2 -I/usr/include -I/usr/X11R6/include -I/usr/local/include"
-		LDFLAGS="$LDFLAGS -L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib"
-		else
-		echo " "
-		echo "You are on x86-64 and building a 64 bit version of Magics++."
-		echo " "
-#		if test "x$SITE_NAME" = xecmwf; then
-#			libdir=${prefix}/lib64
-#		fi
-		AXX="-m64 -fPIC"
-		LIBNAME="lib64"
-		CPPFLAGS="$CPPFLAGS -Dlinux -I/usr/include/freetype2 -I/usr/include -I/usr/X11R6/include -I/usr/local/include"
-		CXXFLAGS="$CXXFLAGS"
-		LDFLAGS="$LDFLAGS -L/usr/local/lib64 -L/usr/X11R6/lib64"
-		PLATFORM_DEFINES_MARS="-DLITTLE -DLITTLE_END -DI64 -DR64 -Dlinux"
-		fi
-		;;
-	# Linux workstations x86
-	*86-*-linux* )
-		CPPFLAGS="$CPPFLAGS -Dlinux -I/usr/include/freetype2 -I/usr/include -I/usr/X11R6/include -I/usr/local/include"
-		LDFLAGS="$LDFLAGS -L/usr/X11R6/lib -L/usr/local/lib"
-		AXX="-m32"
-		PLATFORM_DEFINES_MARS="-DLITTLE -DLITTLE_END -DI32 -DR64 -Dlinux"
-		;;
-	# IBM Server
-	*-ibm-aix* )
-		AXX="-mminimal-toc"
-		CPPFLAGS="${CPPFLAGS} -Daix -DMAGICS_AIX_XLC -I/usr/include/freetype2" # -I/usr/include/freetype2 -I/opt/freeware/include -I/usr/local/include"
-#		LDFLAGS="-L/usr/lib $LDFLAGS"
-		LDFLAGS="-L/usr/lib -Wl,-brtl $LDFLAGS"
-		LIBS="-lfreetype $LIBS -lpng -lz -liconv"  # for terralib
-		MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -lfreetype -lpng"
-		PLATFORM_DEFINES_MARS="-DI32 -DR64 -DREAL_8 -DREAL_BIGGER_THAN_INTEGER -DAIX"
-		;;
-    # MACs
-    *-darwin*)
-        CPPFLAGS="${CPPFLAGS} -DMAGICS_MAC_GCC"
-        LIBS="$LIBS -lpng -lcurl"
-        LDFLAGS="-L/usr/local/lib -L/opt/local/lib $LDFLAGS -lstdc++"
-        CPPFLAGS="-I/usr/local/include -I/opt/local/include $CPPFLAGS"
-        SHLIB_EXT=dylib
-        mac=true
-        AC_DEFINE(MAGICS_MAC, 1)
-        ;;
-    # HP - aCC 
-    *-*-hpux* )
-		#AXX="-AA -Wp,-H30000"
-		PLATFORM_DEFINES_MARS="-DI64 -DR64 -Dhpux"
-		;;
-	*-*-cygwin* | *-*-mingw32*)
-		echo " "
-		echo "You try to install Magics++ on Windows!"
-		echo " "
-		echo " Please be aware that Windows is NOT a supported platform!!!"
-		echo " Following features will NOT work: BUFR decoding"
-		echo " "
-		CPPFLAGS="$CPPFLAGS -DMAGICS_WINDOWS_CYGWIN -I/usr/include/freetype2 -I/usr/include -I/usr/local/include"
-		AXX="-m32"
-		windows=yes
-		;;
-esac
-
-AC_SUBST(AXX)
-AC_SUBST(SHLIB_EXT)
-AC_SUBST(PLATFORM_DEFINES_MARS)
-
-#
-# Compiler dependent Compiler options
-#
-MAGICS_VISIBILITY=""
-
-case "${CXX}" in
-	# GNU GCC
-	g++* )
-		CFLAGS="$CFLAGS $AXX -ansi -std=c99" # -fpermissive
-
-		CXXFLAGS=${CXXFLAGS:="-g -O2 -mtune=native"}
-		CXXFLAGS="$CXXFLAGS $AXX -fno-gnu-keywords -ansi -std=c++98 -Wno-deprecated -Wno-write-strings"
-		CPPLIBS="${CPPLIBS} -lstdc++"
-
-#		AC_LANG([C++])
-#		AC_COMPILE_IFELSE([
-#		#if defined(__GNUC__) && (__GNUC__ < 4 )
-#		#error "GCC < 4.0"
-#		#endif
-#		int main(){return 0;}], gcc4=yes)
-
-#		AC_MSG_RESULT(Test if GCC 4 ${gcc4})
-
-#		if test "x$gcc4" = "xyes" -a "x$metview" = xno; then
-#			  MAGICS_VISIBILITY="-fvisibility=hidden"
-#		fi
-
-		;;
-	# Intel compiler
-	icpc | icc )
-		#  -O3 -xhost -opt-report=3 -vec-report 3
-		#  -O3 -xhost -opt-report=3 -vec-report 3 -parallel -par-report3
-		#  -guide -parallel                                 # produces NO binary output!
-		intel_common="-static-intel -wr654 -wr1125 -wr1011"
-		CFLAGS="$CFLAGS ${intel_common}"
-		CXXFLAGS="$CXXFLAGS ${intel_common}"
-		# -static-intel does the job but if any libraries compiled with g++ are used this is needed  
-		CPPLIBS="${CPPLIBS} -lstdc++"
-		;;
-	# IBM C++ compiler
-	xlC_r | xlC )
-		# -qtune=auto
-		#
-		# -qfuncsect   --> code bloat but later reduction?
-		#
-		# -qmkshrobj   --> no entry point message??? (570 MB)
-		#
-		# -qtemplateregistry=/scratch/graphics/cgm/magics/IBM/templateregistry
-		#
-	#	rm -f ${PWD}/templateregistry
-	#	CXXFLAGS="$CXXFLAGS -O2 -qtune=auto -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000 -qstrict -qtemplateregistry=${PWD}/templateregistry " # 560 MB
-	#	CXXFLAGS="$CXXFLAGS -O2 -qtune=auto -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000 -qtmplinst=none "       # 203 MB - does not work
-	#	CXXFLAGS="$CXXFLAGS -O3 -qsuppress=1540-1101 -DAIX -DNDEBUG -qcpluscmt -qinline=15 -qtune=auto -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000" # 220 MB - works
-		CXXFLAGS="${CXXFLAGS:-"-O3 -DNDEBUG -qinline=15 -qtune=auto"}"     # 21 Apr 2012 - works 174MB
-		CXXFLAGS="${CXXFLAGS:-"-O0 -DDEBUG  -qnoinline  -qNOOPTimize"}"    # 21 Apr 2012 - works 950MB
-		CXXFLAGS="$CXXFLAGS -qxflag=KeepUnqualifiedStaticCandidate -DBOOST_TYPEOF_NATIVE -DBOOST_TYPEOF_KEYWORD=__typeof__ -qsuppress=1540-1101 -DAIX -qcpluscmt -qmaxmem=-1 -qarch=auto -bmaxdata:0x80000000" 
-	#	CXX="xlC $CXXFLAGS"
-		LD=xlC_r
-		CC=xlC_r
-		LDFLAGS="$LDFLAGS -Wl,-bbigtoc"  # -qmkshrobj
-		CFLAGS="$CFLAGS -qtune=auto -qstrict -qmaxmem=-1 -qarch=auto -bmaxdata:0x60000000"
-
-		CPPLIBS="${CPPLIBS} -lC"     # should strictly not nessecary when xlf is used
-		;;
-esac
-
-AC_SUBST(CPPLIBS)
-AC_SUBST(MAGICS_VISIBILITY)
-# end of C++
-
-AC_LANG_PUSH(Fortran)
-
-#
-# Which fortran compiler should be used?
-#
-# FLIBS is determined which Fortran compiler was used for Emoslib!!!
-#
-case "${F77}" in
-	*gfortran* )
-		FLIB="gfortran"
-		FLIBS="-l${FLIB}"
-		FFLAGS="${FFLAGS} ${AXX}"
-		;;
-	# Intel compiler 9.x
-	ifc | ifort)
-		FFLAGS="${FFLAGS}"
-		FLIBS="-lifcore -lifport"
-		;;
-	# Portland C++
-	pgf* )
-		FLIB="pgftnrtl','pgc','rt"             # for Python distutils
-		FLIBS="$FLIBS -lpgftnrtl -lpgc -lrt"   # PGI 7.1
-		case "${host}" in
-			x86_64*linux*)
-				FFLAGS="${FFLAGS} -tp amd64"
-				;;
-			# Linux workstations x86
-			*86-*-linux* )
-				FFLAGS="${FFLAGS} -tp px"
-				;;
-		esac
-		;;
-	# IBM fortran compiler
-	xlf* )
-		FLIB="xlf90"
-		FLIBS="-l${FLIB}"
-		FFLAGS="${FFLAGS} -qfixed=72 -q32"
-		;;
-	# all other C++ compilers ...
-	* )
-		if test "x${F77}" = "x"; then
-			echo "No Fortran compiler defined! Use F77=<name> to set one."
-			FLIBS=""
-		else
-		echo "Oops ... $F77 not supported yet"
-		fi
-		;;
-esac
-AC_SUBST(FLIB)
-AC_SUBST(FLIBS)
-
-AC_LANG_POP
-
-# end of F O R T R A N 
-
-
-
-AC_ARG_ENABLE(allheaders, [[  --enable-allheaders	  install all header files [default=no]]],
-  allheaders=$enableval, allheaders=no)
-
-######################################################################
-#
-#     Qt
-#
-######################################################################
-AC_ARG_ENABLE(qt, [[  --enable-qt             enable Qt-based modules [default=no]]],
-  qt=$enableval)
-
-if test "x$qt" = "xyes" ; then
-  AC_MSG_CHECKING([for Qt])
-  # Qt with AutoTroll.
-  m4_include([m4/autotroll.m4])
-  AT_WITH_QT([+xmlpatterns])
-  AT_REQUIRE_QT_VERSION([4.6],
-       AC_MSG_WARN([Qt version >= 4.6 is required]))
-  AC_DEFINE(MAGICS_QT, 1)
-  CPPFLAGS="-I/usr/include/qt4 ${CPPFLAGS}"  ### for Ubuntu 11.04
-fi
-
-######################################################################
-#
-#     Qt debug
-#
-######################################################################
-AC_ARG_ENABLE(qtdebug, [[  --enable-qtdebug             enable QDebug output in Qt-based modules [default=no]]],
-      qtdebug=$enableval, qtdebug=no)
-
-if test "x${qt}" = xyes -a "x${qtdebug}" = xno ; then
-	CXXFLAGS="${CXXFLAGS} -DQT_NO_DEBUG_OUTPUT"
-fi
-
-
-#####################
-###  M E T V I E W
-
-if test "x$metview" = "xyes" ; then
-  allheaders=yes
-  AC_DEFINE(MAGICS_METVIEW, 1)
-fi
-AC_SUBST(metview)
-AC_SUBST(qt)
-
-
-#
-#  Raster graphics support
-#
-raster=yes
-AC_ARG_ENABLE(raster, [[  --enable-raster         enable the GIF, PNG and JPEG output [default=yes]]],
-  raster=$enableval, raster=yes)
-if test "x$raster" = "xyes" ; then
-  AC_ARG_WITH([gd],
-       [AS_HELP_STRING([--with-gd],
-       [Prefix of GD libraries and headers.])],
-       [CPPFLAGS="-I${with_gd}/include ${CPPFLAGS}";LDFLAGS="-L${with_gd}/${LIBNAME} ${LDFLAGS}"]
-  )
-  AC_CHECK_HEADER( gd.h,[ have_gd_h="yes" ],[ have_gd_h="no" ])
-
-  if test "x$have_gd_h" != "xyes"; then
-   echo
-   echo "   The GD library is required for raster file support in Magics to function."
-   echo "   You can get it from http://www.libgd.org . If your system"
-   echo "   has libgd installed, you probably miss the gd.h header file."
-   raster="no"
-  else
-   AC_DEFINE(MAGICS_RASTER, 1)
-  fi
-fi
-
-
-############################################
-#
-#  enable all headers
-#
-if test "x$allheaders" = "xyes" ; then
-  AC_DEFINE(MAGICS_ALLHEADERS, 1)
-fi
-
-#
-#  JSON support  --enable-json
-#
-AC_ARG_ENABLE(json, [[  --enable-json	          enable the JSON support (JSON) [default=yes]]],
-  json=$enableval, json=yes)
-if test "x$json" = "xyes"  ; then
-  AC_DEFINE(MAGICS_JSON, 1)
-fi
-
-#
-#  apps compilation --enable-apps
-#
-AC_ARG_ENABLE(apps, [[  --enable-apps	          enable the compilation of applications (magml) [default=yes]]],
-  apps=$enableval, apps=yes)
-
-#
-#  BUFR support  --enable-bufr
-#
-AC_ARG_ENABLE(bufr, [[  --enable-bufr	          enable the BUFR support [default=no]]],
-  bufr=$enableval, bufr=no)
-
-
-AC_LANG([C++])
-
-##############################################################################
-##
-##  ODB support  --enable-odb
-##
-AC_ARG_ENABLE(odb, [[  --enable-odb	          enable the ODB support [default=no]]],
-  odb=$enableval, odb=no)
-
-if test "x$odb" = "xyes" ; then
-  AC_DEFINE(MAGICS_ODB, 1)
-  ODB_PATH="/usr/local"
-  AC_ARG_WITH([odb],
-       [AS_HELP_STRING([--with-odb],
-       [Prefix of ODB libraries and headers.])],
-       [ODB_PATH="${with_odb}";CPPFLAGS="-I${with_odb}/include -I${with_odb}/include/eclib -I${with_odb}/include/odb_api ${CPPFLAGS}";LDFLAGS="-L${with_odb}/lib ${LDFLAGS}"]
-  )
-  AC_SUBST(ODB_PATH)
-#  AC_CHECK_LIB(Ec,link_eclib,,,)
-#  AC_CHECK_LIB(Odb,odb_init,,,)
-  AC_MSG_CHECKING([Checking for ODB libraries in ${ODB_PATH}/lib/])
-  if test -f ${ODB_PATH}/lib/libOdb.so ; then
-    MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -L${ODB_PATH}/lib -lEc -lOdb"
-    AC_MSG_RESULT([yes])
-  else
-    AC_MSG_RESULT([FAILED])
-    AC_MSG_ERROR([Could not find ODB library at ${ODB_PATH}/lib/libOdb.so])
-  fi
-fi
-AC_SUBST(odb)
-
-##############################################################################
-#
-# Update developments for metview (development)
-#
-AC_ARG_ENABLE(magnext, [[  --enable-magnext      enable update developments for metview (ECMWF only) [default=false]]],
-magnext=$enableval, magnext=no)
-
-if test "x$magnext" = "xyes" ; then
-  AC_MSG_NOTICE([ENABLED EXPERIMENTAL FEATURES FOR METVIEW (ECMWF)])
-  CXXFLAGS="${CXXFLAGS} -DMAG_NEXT"
-fi
-
-
-#
-# freetype
-#
-if test "x$raster" = "xyes" ; then
- AC_CHECK_HEADER(ft2build.h,AC_DEFINE(MAGICS_TTF,1),
-  AC_MSG_WARN([could not successfully compile with FreeType2 using the])
-  AC_MSG_WARN([default compiler flags; ]) )
-fi
-
-
-#
-# TIFF
-#
-##AC_ARG_ENABLE(tiff, [[  --enable-tiff         enable the TIFF output [default=no]]],
-##tiff=$enableval, tiff=no)
-
-#if test "x$tiff" = "xyes" ; then
-
-#AC_CHECK_HEADER(tiffio.h,,
-#  AC_MSG_WARN([could not successfully compile with TIFF using the])
-#  AC_MSG_WARN([default compiler flags;])
-#  unset ac_cv_header_tiff_h)
-
-#  AC_DEFINE(MAGICS_TIFF, 1)
-#fi
-
-
-#
-# For XML parser expat
-#
-AC_CHECK_HEADER(expat.h,,
-  AC_MSG_WARN([could not successfully compile with expat using the])
-  AC_MSG_WARN([default compiler flags;])
-  unset ac_cv_header_expat_h)
-
-
-#
-# For  B O O S T 
-#
-AX_BOOST_BASE(1.32,,AC_MSG_ERROR([Boost library not found - if you use RPM do not forget boost-devel]))
-AC_CHECK_HEADER(boost/math/complex.hpp,,
-  AC_MSG_ERROR([could not successfully compile with Boost::Math package])
-  unset ac_cv_header_boost_h)
-
-### Boost.Filesystem
-#AC_CHECK_LIB([boost_system-mt], [main],
-#             [BOOST_FILESYSTEM_LIBS='-lboost_system-mt';LIBS="${LIBS} -lboost_system-mt"],
-#             [AC_MSG_ERROR([Boost.System not found])])
-#AC_CHECK_LIB([boost_filesystem-mt], [main],
-#             [BOOST_FILESYSTEM_LIBS="-lboost_filesystem-mt ${BOOST_FILESYSTEM_LIBS}"],
-#             [AC_MSG_ERROR([Boost.Filesystem not found])])
-#AC_SUBST([BOOST_FILESYSTEM_LIBS])
-#LIBS="$LIBS ${BOOST_FILESYSTEM_LIBS}"
-#MAGICS_3RDPARTY_LIBS="$MAGICS_3RDPARTY_LIBS ${BOOST_FILESYSTEM_LIBS}"
-
-########################################################
-#
-# Check for GRIB API
-#
-# We don't know whether GRIB API was built with jasper or openjeg requirements,
-# so we check for both
-
-AC_ARG_ENABLE(grib, [[  --enable-grib	          enable the GRIB 1/2 support [default=yes]]],
-  grib=$enableval, grib=yes)
-
-if test "x${grib}" = "xyes" ; then
-
-AC_CHECK_LIB(jasper,jas_stream_memopen,[have_jasper="yes"], have_jasper="no")
-if test "${have_jasper}" = "no"
-then
-	echo " "
-	echo "  No Jasper (JPEG 2000) library could be found!"
-	echo "    Your Magics++ programs should work nevertheless as long as"
-	echo "    your GribAPI installed does NOT require it! Compile GribAPI"
-	echo "    without Jasper support."
-	echo " "
-else
-	LIBS="${LIBS} -ljasper"
-fi
-
-
-AC_CHECK_LIB(openjpeg,opj_decode,[have_openjpeg="yes"], have_openjpeg="no")
-if test "${have_openjpeg}" = "no"
-then
-	echo " "
-	echo "  No openjpeg (JPEG 2000) library could be found!"
-	echo "    Your Magics++ programs should work nevertheless as long as"
-	echo "    your GribAPI installed does NOT require it! Compile GribAPI"
-	echo "    without openjpeg support."
-	echo " "
-else
-	LIBS="${LIBS} -lopenjpeg"
-fi
-
-
-
-AC_ARG_WITH([grib-api],
-       [AS_HELP_STRING([--with-grib-api],
-       [Prefix of GRIB API libraries and headers.])],
-       [GRIBAPI_ROOT="${with_grib_api}";CPPFLAGS="-I${with_grib_api}/include ${CPPFLAGS}";LDFLAGS="-L${with_grib_api}/${LIBNAME} -L${with_grib_api}/lib ${LDFLAGS}"; GRIBAPI_LIBS="-L${with_grib_api}/${LIBNAME} "]
-)
-
-AC_CHECK_LIB(grib_api,grib_get_message,,AC_MSG_ERROR([Grib API could not be linked! Try setting --with-grib-api or add dependent libraries if necessary to configure call ("LIBS=-lpng").]))
-AC_SUBST(GRIBAPI_LIBS)
-AC_SUBST(GRIBAPI_ROOT)
-
-AC_DEFINE(MAGICS_GRIB, 1)
-fi
-
-#############################################################################################################
-#
-if test "x$bufr" = "xyes" -a "x$windows" = xno; then 
-#
-#     E M O S L I B -- always DOUBLE precision !!!
-#
-# check if MvOBS files are prperly linked/copied from Metview
-if test -e src/MvObs/MvBufr.h ; then
-
-AC_ARG_WITH([fortran-libraries],
-       [AS_HELP_STRING([--with-fortran-libraries],[Locaction of Fortran runtime libraries required for EMOS library @<:@default is /usr/lib@:>@])],
-       [FORTRAN_LIB_PATH=$with_fortran_libraries;LDFLAGS="-L$with_fortran_libraries $LDFLAGS"]
-)
-AC_SUBST(FORTRAN_LIB_PATH)
-
-EMOS_LIB_NAME="emosR64"
-EMOS_LIB_PATH="/usr/local/lib"
-
-AC_ARG_WITH([emos-libraries],
-       [AS_HELP_STRING([--with-emos-libraries],[Locaction of EMOS library @<:@default is /usr/local/lib@:>@])],
-       [LDFLAGS="-L$with_emos_libraries $LDFLAGS";EMOS_LIB_PATH=${with_emos_libraries}]
-)
-
-AC_ARG_WITH([emos-libname],
-       [AC_HELP_STRING([--with-emos-libname],[Name of EMOS library @<:@default is emosR64@:>@ ])],
-       [EMOS_LIB_NAME="$with_emos_libname"]
-)
-AC_F77_LIBRARY_LDFLAGS
-AC_CHECK_LIB(${EMOS_LIB_NAME},pbopen,echo "Emoslib found.",
-            AC_MSG_ERROR([The double precision version of Emoslib (${EMOS_LIB_NAME}) could not be linked! Try setting --with-emos-libraries and --with-emos-libname.]))
-
-AC_DEFINE(MAGICS_BUFR, 1)
-MAGICS_3RDPARTY_LIBS="-l${EMOS_LIB_NAME} $MAGICS_3RDPARTY_LIBS"
-AC_SUBST(EMOS_LIB_NAME)
-AC_SUBST(EMOS_LIB_PATH)
-
-else   # MvOBS link failed
-bufr="no"
-echo ""
-echo "  MvOBS source is not linked correctly! BUFR disabled."
-echo ""
-fi
-
-else               # no bufr
-  bufr="no"
-fi
-AC_SUBST(bufr)
-# endif BUFR
-
-
-
-#############################################################################################
-if test "x$SITE_NAME" = 'xecmwf'
-then
-  AC_DEFINE(MAGICS_METGRAM, 1)
-  metgram=yes
-
-  ################
-  #
-  #  Spot support  --enable-spot
-  #
-  AC_ARG_ENABLE(spot, [[  --enable-spot	          enable the SPOT support for metgrams (ECMWF internal) [default=no]]],
-    spot=$enableval, spot=no)
-
-  if test "x$spot" = "xyes" ; then
-     AC_DEFINE(MAGICS_SPOT, 1)
-
-     AC_ARG_WITH([spot],
-       [AS_HELP_STRING([--with-spot],
-       [Prefix of SPOT libraries and headers.])],
-       [MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -L${with_spot}/lib"; CPPFLAGS="-I${with_spot}/include ${CPPFLAGS}";LDFLAGS="-L${with_spot}/lib ${LDFLAGS}"]
-     )
-     AC_CHECK_LIB(spot_database,spot_open_database,,AC_MSG_ERROR([spot_database could not be linked! ]))
-  fi
-  AC_SUBST(spot)
-fi
-###  end ECMWF metgrams
-
-
-############################################
-#
-# Proj4
-#
-AC_ARG_ENABLE(proj4, [[  --enable-proj4	          enable the Proj4 support for projections [default=yes]]], proj4=$enableval, proj4=yes)
-
-if test "x$proj4" = "xyes" ; then
-  AC_ARG_WITH([proj4],
-       [AS_HELP_STRING([--with-proj4],
-       [Prefix of Proj4 libraries and headers.])],
-       [MAGICS_3RDPARTY_LIBS="${MAGICS_3RDPARTY_LIBS} -L${with_proj4}/lib";CPPFLAGS="-I${with_proj4}/include ${CPPFLAGS}";LDFLAGS="-L${with_proj4}/lib ${LDFLAGS}"]
-  )
-  AC_CHECK_LIB(proj,pj_init,,AC_MSG_ERROR([Proj4 could not be linked! ]))
-  AC_DEFINE(MAGICS_PROJ4, 1)
-fi
-AC_SUBST(proj4)
-
-
-
-############################################
-#
-# Checks for other libraries.
-#
-
-if test "x$raster" = "xyes"  ; then
-
- AC_CHECK_LIB(gd,gdImagePng,,AC_MSG_ERROR([gdImagePng not defined - libGD not found or no PNG support]))
- AC_CHECK_LIB(gd,gdImageGif,[AC_DEFINE(MAGICS_GIF)
-	 have_gifs="yes"] ,
-	 have_gifs="no")
- AC_CHECK_LIB(gd,gdImageGifAnimEnd,[AC_DEFINE(MAGICS_GIF_ANIMATED)
-	 have_gifs_ani="yes"] ,
-	 have_gifs_ani="no")
-
- if test "${have_gifs}" = "no"
- then
-	echo " "
-	echo "   You have a old GD library with NO GIF support. Please consider"
-	echo "   upgrading to a more recent version (2.0.28 or newer)."
-	echo "   This version of GD will support only PNG and JPEG output."
-	echo " "
- else
- 	MAGICS_OUTPUTS="${MAGICS_OUTPUTS}_GIF"
- fi
- if test "${have_gifs_ani}" = "no"
- then
-	echo " "
-	echo "   You have a oldish GD library with NO animated GIF support. Please consider"
-	echo "   upgrading to a more recent version (2.0.32 or newer)."
-	echo "   This version of GD will support PNG, JPEG and (non-animated) GIF output."
-	echo " "
- else
- 	MAGICS_OUTPUTS="${MAGICS_OUTPUTS}_AGIF"
- fi
-fi
-AC_SUBST(raster)
-
-AC_CHECK_HEADER(zlib.h,,AC_MSG_ERROR([could not find zlib.h. You might need to install zlib development packges (zlib-devel)]))
-AC_CHECK_LIB(z, compress)
-
-AC_CHECK_LIB([fontconfig], [FcInitLoadConfigAndFonts], [AC_CHECK_HEADER([fontconfig/fontconfig.h], [LIBS="-lfontconfig $LIBS"])])
-
-AC_CHECK_LIB(pthread,pthread_key_create)
-
-##AC_CHECK_LIB(tiff, TIFFOpen ,,AC_MSG_ERROR([tiff not found.]))
-AC_CHECK_LIB(expat, XML_ParserCreate ,,AC_MSG_ERROR([expat xml parser library not found.]))
-
-
-#################################################################################
-#
-#   N E T C D F    (and CURL)
-#
-#################################################################################
-#
-#  netCDF support  --enable-netcdf
-#
-AC_ARG_ENABLE(netcdf, [[  --enable-netcdf	          enable the netCDF support [default=yes]]],
-  netcdf=$enableval, netcdf=yes)
-
-if test "x${netcdf}" = "xyes" ; then
-
-###   AC_MSG_NOTICE([for curl library sometimes needed by NetCDF])
-  AC_CHECK_LIB(curl,curl_easy_setopt,  [have_curl="yes"], have_curl="no")
-
-  # NetCDF can be built with a dependency on curl. Therefore, we add it to the libraries if it is
-  # installed; otherwise, issue a warning.
-  if test "${have_curl}" = "yes"
-  then
-    CURL_LIBS="${NETCDF_LIBS} -lcurl"
-  else
-    AC_MSG_WARN([No curl library - this is fine as long as your NetCDF library does not require it.])
-  fi
-
-  #
-  # For netcdf header file
-  #
-  AC_ARG_WITH([netcdf],
-       [AS_HELP_STRING([--with-netcdf],
-       [Prefix of NetCDF libraries and headers.])],
-       [CPPFLAGS="-I${with_netcdf}/include ${CPPFLAGS}";LDFLAGS="-L${with_netcdf}/lib ${LDFLAGS}"; NETCDF_LIBS="-L${with_netcdf}/lib "]
-  )
-  AC_CHECK_HEADER(netcdfcpp.h,,
-  AC_MSG_WARN([could not successfully compile with netcdfcpp.h!])
-  unset ac_cv_header_netcdf_h)
-
-  AC_CHECK_LIB(netcdf,ncvarid ,NETCDF_LIBS="${NETCDF_LIBS}-lnetcdf_c++ -lnetcdf ${CURL_LIBS}",AC_MSG_ERROR([netcdf library not found.]))
-  #AC_CHECK_LIB(netcdf_c++, nctypelen        ,echo "",AC_MSG_ERROR([netcdf_c++ library not found.]))
-
-  AC_DEFINE(MAGICS_NETCDF, 1)
-fi
-
-#################################################################################
-#
-#  Cairo support  --enable-cairo
-#
-AC_ARG_ENABLE(cairo,[[  --enable-cairo          enable the Cairo library support [default=yes]]],
-  cairo=$enableval, cairo=yes)
-
-PKG_PROG_PKG_CONFIG
-
-if test "x$cairo" = "xyes" ; then
-
- MAGICS_OUTPUTS="${MAGICS_OUTPUTS}_PNG_CPS_CSVG_X"
- 
-  PKG_CHECK_MODULES(CAIRO, [pango >= 1.0.0 pangocairo >= 1.0.0 cairo >= 1.4.0],
-  [
-   CFLAGS="$CAIRO_CFLAGS $CFLAGS"
-   CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
-   LIBS="$CAIRO_LIBS $LIBS"
-   LDFLAGS="$CAIRO_LDFLAGS $LDFLAGS"
-   AC_DEFINE(MAGICS_CAIRO, 1)
-  ],
-  [
-    echo ""
-    echo " Cairo/Pango library could not be found!"
-    echo " Please install cairo-devel and pango-devel ."
-    cairo=no
-  ])  
-  
-  #
-  # NOT good code: 
-  #   required since pkg-config returns non-lib options in LIBS!!!
-  #
-  if test "x${SITE_NAME}" = "xecmwf"; then
-     echo $LIBS > stupid_bug_fix_file_LIBS.txt
-     LIBS=`sed 's/-pthread/ /' stupid_bug_fix_file_LIBS.txt`;
-     rm -f stupid_bug_fix_file_LIBS.txt
-  fi
-
-fi
-AC_SUBST(cairo)
-
-
-#PKG_CHECK_MODULES(GDAL, [gdal >= 1.6.0],
-#  [
-#   CFLAGS="$GDAL_CFLAGS $CFLAGS"
-#   CPPFLAGS="$GDAL_CFLAGS $CPPFLAGS"
-#   LIBS="$GDAL_LIBS $LIBS"
-#   LDFLAGS="$GDAL_LDFLAGS $LDFLAGS"
-#   gdal=yes
-#   AC_DEFINE(MAGICS_GDAL, 1)
-#  ],
-#  [
-#    echo ""
-#    echo " GDAL library could not be found!"
-#    gdal=no
-#  ])
-#AC_SUBST(gdal)
-
-
-# Autoheader
-AH_TEMPLATE(MAGICS_QT,           [Turn on Qt related modules.])
-AH_TEMPLATE(MAGICS_RASTER,       [Turn on raster file format support (GIF&PNG)])
-AH_TEMPLATE(MAGICS_TIFF,         [Turn on TIFF file format support])
-AH_TEMPLATE(MAGICS_CAIRO,        [Turn on the Cairo output support])
-AH_TEMPLATE(MAGICS_OUTPUTS,      [Gives the list of output formats])
-AH_TEMPLATE(MAGICS_TTF,          [Turn on the TTF support])
-AH_TEMPLATE(MAGICS_32BIT,        [Turn on 32 bit addressing])
-AH_TEMPLATE(MAGICS_BUFR,         [Turn off the BUFR support])
-AH_TEMPLATE(MAGICS_JSON,         [Turn on the JSON support])
-AH_TEMPLATE(MAGICS_ODB,          [Turn off the ODB support])
-AH_TEMPLATE(MAGICS_EXCEPTION,    [Turn on the use of Exceptions (not recommended used by Static library!)])
-AH_TEMPLATE(MAGICS_SPOT,         [Turn off the SPOT support])
-AH_TEMPLATE(MAGICS_NETCDF,       [Turn off the netCDF support])
-AH_TEMPLATE(MAGICS_GRIB,         [Turn off the GRIB 1/2 support])
-AH_TEMPLATE(MAGICS_METGRAM,      [Turn on metgram script support])
-AH_TEMPLATE(POSTSCRIPT_FONT_PATH,[Paths to PS fonts.])
-AH_TEMPLATE(MAGICS_VERSION,      [Version of Magics.])
-AH_TEMPLATE(MAGICS_LIBRARY_AGE,      [LIB_AGE of Magics.]) 
-AH_TEMPLATE(MAGICS_LIBRARY_CURRENT,  [LIB_CURRENT of Magics.])
-AH_TEMPLATE(MAGICS_LIBRARY_REVISION, [LIB_REVISION of Magics.])
-AH_TEMPLATE(MAGICS_NAME,         [Name of this package.])
-AH_TEMPLATE(MAGICS_RELEASE_DATE, [Release date of this version.])
-AH_TEMPLATE(MAGICS_COPYRIGHT_PERIOD, [Period of Copyright.])
-AH_TEMPLATE(MAGICS_INSTALL_PATH, [Install path.])
-AH_TEMPLATE(MAGICS_SITE,         [Name of installation site.])
-AH_TEMPLATE(MAGICS_GIF,          [Defines GIF output is supported.])
-AH_TEMPLATE(MAGICS_METVIEW,      [Installation used by metview])
-AH_TEMPLATE(MAGICS_GIF_ANIMATED, [Defines animated GIF output is supported.])
-AH_TEMPLATE(MAGICS_PYTHON,       [Enable Python interface (based on swik).])
-AH_TEMPLATE(MAGICS_ALLHEADERS,   [Install all header files.])
-AH_TEMPLATE(MAGICS_VISIBILITY,   [Sets visibility flags.])
-AH_TEMPLATE(MAGICS_THREADS,      [Turn on/off thread support.])
-AH_TEMPLATE(MAGICS_PROJ4,        [Turn on/off Proj4 support.])
-AH_TEMPLATE(MAGICS_MAC,          [Indicate if Mac is used.])
-
-
-
-#############################################################################
-#
-#  P O S T S C R I P T
-#
-
-# Set Ghostscript font directory
-AC_ARG_WITH(gs-font-dir,[AC_HELP_STRING([--with-gs-font-dir=DIR],[Directory containing Ghostscript fonts.])],
-			[with_gs_font_dir=$withval],[with_gs_font_dir='default'])
-
-#
-# Check for Display Postscript
-#
-PSDelegateDefault='gs'
-AC_PATH_PROG(PSDelegate, "$PSDelegateDefault", "$PSDelegateDefault")
-have_gs='no'
-if test "$PSDelegate" != "$PSDelegateDefault"; then have_gs='yes' ; fi
-
-
-#
-# Test for GhostScriptfont directories
-#
-AC_MSG_CHECKING(for Ghostscript fonts directory)
-ghostscript_font_dir=''
-if test "${with_gs_font_dir}" != 'default'
-then
-  ghostscript_font_dir="${with_gs_font_dir}/"
-else
-    for font_dir in '/usr/share/ghostscript/fonts/' '/usr/share/fonts/default/Type1/' "${prefix}/share/ghostscript/fonts/"
-    do
-      if test -f "${font_dir}/a010013l.pfb"
-      then
-        ghostscript_font_dir="${font_dir}"
-        break 1
-      fi
-    done
-
-    if test "${ghostscript_font_dir}x" = 'x'
-    then
-      if test "$PSDelegate" != 'gs'
-      then
-        ghostscript_font_dir=`echo "$PSDelegate" | sed -e 's:/bin/gs:/share/ghostscript/fonts:'`"/"
-      fi
-    fi
-fi
-
-if test "${ghostscript_font_dir}x" != 'x'
-then
-  AC_MSG_RESULT($ghostscript_font_dir)
-else
-  AC_MSG_RESULT(not found! Some output drivers might NOT work!);
-fi
-AC_SUBST(ghostscript_font_dir)
-AC_DEFINE_UNQUOTED(POSTSCRIPT_FONT_PATH, "${ghostscript_font_dir}")
-
-if test $have_gs = 'yes'
-then
-  AC_MSG_CHECKING(for Ghostscript version)
-  if GSVersion=`$PSDelegate --version`
-  then
-    :
-  else
-    GSVersion=`$PSDelegate --help | sed -e '1q' | awk '{ print $3 }'`
-  fi
-  AC_MSG_RESULT($GSVersion)
-fi
-AC_SUBST(GSVersion)
-#
-#  P O S T S C R I P T  -  E N D
-#
-
-
-
-MAGICS_3RDPARTY_INCLUDE="$CPPFLAGS"
-MAGICS_3RDPARTY_LIBS="$LIBS $GRIBAPI_LIBS $MAGICS_3RDPARTY_LIBS $NETCDF_LIBS"
-LIBS="$LIBS $NETCDF_LIBS"
-
-AC_SUBST(MAGICS_3RDPARTY_INCLUDE)
-AC_SUBST(MAGICS_3RDPARTY_LIBS)
-AC_SUBST(LIBNAME)
-AC_DEFINE_UNQUOTED(MAGICS_OUTPUTS, "${MAGICS_OUTPUTS}")
-
-AM_CONDITIONAL(MAGICS_METVIEW,	test "$metview"   = yes)
-AM_CONDITIONAL(MAGICS_32BIT,	test "$bit"       = yes)
-AM_CONDITIONAL(MAGICS_APPS,     test "$apps"      = yes)
-AM_CONDITIONAL(MAGICS_BUFR,     test "$bufr"      = yes)
-AM_CONDITIONAL(MAGICS_JSON,	test "$json"      = yes)
-AM_CONDITIONAL(MAGICS_ODB,	test "$odb"       = yes)
-AM_CONDITIONAL(MAGICS_EXCEPTION,test "$exception" = yes)
-AM_CONDITIONAL(MAGICS_SPOT,	test "$spot"      = yes)
-AM_CONDITIONAL(MAGICS_GRIB,	test "$grib"      = yes)
-AM_CONDITIONAL(MAGICS_NETCDF,	test "$netcdf"    = yes)
-AM_CONDITIONAL(MAGICS_METGRAM,	test "$metgram"   = yes)
-AM_CONDITIONAL(MAGICS_QT,       test "$qt"        = yes)
-AM_CONDITIONAL(MAGICS_QTDEBUG,  test "$qtdebug"   = no)
-AM_CONDITIONAL(MAGICS_CAIRO,	test "$cairo"     = yes)
-AM_CONDITIONAL(MAGICS_TIFF,	test "$tiff"      = yes)
-AM_CONDITIONAL(MAGICS_RASTER,	test "$raster"    = yes)
-AM_CONDITIONAL(MAGICS_PYTHON,	test "$python"    = yes)
-#AM_CONDITIONAL(MAGICS_GDAL,	test "$gdal"      = yes)
-AM_CONDITIONAL(MAGICS_ALLHEADERS, test "$allheaders"  = yes)
-AM_CONDITIONAL(MAGICS_THREADS, test "$threads"  = yes)
-AM_CONDITIONAL(MAGICS_PROJ4, test "$proj4"  = yes)
-AM_CONDITIONAL(MAGICS_MAC, test "$mac"  = yes)
-
-AC_CONFIG_FILES([Makefile
-		magics-config
-		src/Makefile
-		src/xml/Makefile
-		src/common/Makefile
-		src/basic/Makefile
-		src/decoders/Makefile
-		src/drivers/Makefile
-		src/oda/Makefile
-		src/visualisers/Makefile
-		src/terralib/Makefile
-		src/MvObs/Makefile
-		src/libTable/Makefile
-		src/libMagWrapper/Makefile
-		src/web/Makefile
-		tools/Makefile
-		test/Makefile
-		test/fortran/Makefile
-		test/C/Makefile
-		test/MagML/Makefile
-		test/python/Makefile
-		apps/Makefile
-		apps/MagMLInterpretor/Makefile
-		apps/metgram/Makefile
-		python/Magics/Makefile
-		python/Magics/setup.py
-		rpms/Makefile
-		rpms/Magics.spec
-		docs/Magics.dox
-		src/magics.pc
-		])
-AC_OUTPUT
-
-echo "" 
-echo "Magics++ is configured as follows for host type: $host"
-echo ""
-echo "Option            Configure option = Configured value"
-echo "------------------------------------------------------"
-echo "Shared libraries  --enable-shared=$enable_shared"
-echo "Static libraries  --enable-static=$enable_static   (--enable-exception=${exception})"
-echo ""
-echo "Python interface  --enable-python=$python"
-echo ""
-echo "GRIB              --enable-grib=$grib"
-echo "BUFR              --enable-bufr=$bufr"
-echo "netCDF            --enable-netcdf=$netcdf"
-if test "x$SITE_NAME" = 'xecmwf'
-then
- echo "ODB               --enable-odb=$odb"
- echo "SPOT              --enable-spot=$spot"
-fi
-echo ""
-
-if test "x${raster}" = "xyes"
-then
- echo "Raster (GIF,PNG)  --enable-raster=$raster"
-elif test "x${raster}" = "xno"
-then
- echo "Raster (GIF,PNG)  --enable-raster  FAILED"
-fi
-
-if test "x${cairo}" = "xyes"
-then
- echo "Cairo & Pango     --enable-cairo=$cairo"
-elif test "x${cairo}" = "xno"
-then
- echo "Cairo & Pango     --enable-cairo   FAILED"
-fi
-
-echo ""
-if test "x${have_gs}" != 'xno'
-then
-  echo "Ghostscript       $PSDelegate ($GSVersion)"
-else
-  echo "Ghostscript       gs NOT FOUND! Please check, because some functions might not work in the drivers!"
-fi
-if test "${ghostscript_font_dir}x" != 'x'
-then
-  echo "Ghostscript fonts --with-gs-font-dir=$with_gs_font_dir   $ghostscript_font_dir"
-else
-  echo "Ghostscript fonts  NOT FOUND check config.log"
-fi
-
-if test "x${metview}" = 'xyes'
-then
- echo ""
- echo "   METVIEW 4 enabled build in ${prefix} !!!"
- echo ""
- echo "Qt                --enable-qt=$qt"
-fi
-if test "x${metview}" = 'xyes' -a "x${grib}" = 'xno'
-then
- echo ""
- echo "   METVIEW 4 enabled build without Grib_API makes NO sense !!!"
- echo ""
-fi
-
-echo ""
-echo "Options used to compile and link:"
-echo " CXX     = $CXX"
-echo " CC      = $CC"
-echo " F77     = $F77"
-echo ""
-echo " CFLAGS  = $CFLAGS"
-echo " CPPFLAGS= $CPPFLAGS"
-echo " CXXFLAGS= $CXXFLAGS"
-echo " LDFLAGS = $LDFLAGS"
-echo " LIBS    = $LIBS"
-echo " FLIBS   = $FLIBS"
-echo ""
-echo " MAGICS_3RDPARTY_INCLUDE= $MAGICS_3RDPARTY_INCLUDE"
-echo " MAGICS_3RDPARTY_LIBS   = $MAGICS_3RDPARTY_LIBS"
-echo ""
-echo "Please ensure that the MAGPLUS_HOME environment variable is correctly defined!"
-echo ""
-echo "Magics++ will be installed in   ${prefix}"
-echo ""
-echo "Currently \$MAGPLUS_HOME is     $MAGPLUS_HOME"
-echo ""
-if test "x${cairo}" = "xno"
-then
-echo ""
-echo "  CAIRO LIBRARY NOT FOUND --- PNG and PDF support disabled!" 
-echo "     (if you use RPM/DEB you might have forgotten to install cairo-devel and pango-devel packages!)" 
-echo ""
-fi
diff --git a/configure.debug b/configure.debug
new file mode 100755
index 0000000..16ed714
--- /dev/null
+++ b/configure.debug
@@ -0,0 +1,163 @@
+#!/usr/bin/ksh
+
+git_home="/home/graphics/cgs/git"
+version="2.22.6"
+magics="next-debug"
+install_home="/tmp/cgs/Magics/$version"
+debug="on"
+bufr="on"
+netcdf="on"
+odb="on"
+grib="on"
+metview="off"
+cairo="on"
+regression="off"
+spot="on"
+build_home="/scratch/graphics/cgs/build/${OS_VERSION}"
+run="1"
+
+
+
+case "${OS_VERSION}" in    
+    opensuse113) # Local worksation
+        regression="off"
+        build_home="/tmp/cgs/magics_debug"
+        cmake="/usr/local/apps/cmake/current/bin/cmake"
+        boost="/usr/local/apps/boost/1.50.0"
+        proj4="/usr/local/apps/proj4/4.8.0/LP64"
+        python="/usr/local/apps/python/2.7.1-02"
+        netcdf_lib="/usr/local/apps/netcdf4/4.1.3/LP64"
+        odb_lib="/usr/local/apps/odb_api/0.9.31"
+        grib_lib="/usr/local/lib/metaps/lib/grib_api/1.11.0"
+        pgi_lib="/usr/local/apps/pgi/pgi-10.8/linux86-64/10.8/libso"
+        spot_lib="/usr/local/lib/metaps/lib/spot_database/new"
+        emos_lib="/usr/local/apps/libemos/000393"
+        run="4"
+    ;;
+    sles11) # lxab
+        cmake="/usr/local/apps/cmake/current/bin/cmake"
+        boost="/usr/local/apps/boost/1.50.0"
+        proj4="/usr/local/apps/proj4/4.8.0/LP64"
+        python="/usr/local/apps/python/2.7.1-02"
+        netcdf_lib="/usr/local/apps/netcdf4/4.1.3/LP64"
+        odb_lib="/usr/local/apps/odb_api/0.9.31"
+        grib_lib="/usr/local/lib/metaps/lib/grib_api/1.11.0"
+        emos_lib="/usr/local/apps/libemos/000393"
+        pgi_lib="/usr/local/apps/pgi/pgi-10.8/linux86-64/10.8/libso"
+        spot_lib="/usr/local/lib/metaps/lib/spot_database/new"
+        run="4"
+    ;;
+    rhel6) #ecgb
+        cmake="/usr/local/apps/cmake/current/bin/cmake"
+        boost="/usr/local/apps/boost/1.50.0"
+        proj4="/usr/local/apps/proj4/4.8.0/LP64"
+
+        python="/usr/local/apps/python/current"
+        odb_lib="/usr/local/apps/odb_api/0.9.31"
+        grib_lib="/usr/local/apps/grib_api/1.11.0"
+        spot_lib="/usr/local/apps/spot_database/new"
+        emos_lib="/usr/local/apps/libemos/000393"
+        run="10"
+    ;;
+
+ esac   
+    
+
+
+
+
+args="-DCMAKE_INSTALL_PREFIX=${install_home}"
+args=" $args -DCMAKE_MODULE_PATH=${git_home}/ecbuild/cmake"
+args=" $args -DMAGICS_BUILD=${magics} -DENABLE_STATIC_LIBRARY=OFF"
+args=" $args -DBOOST_ROOT=$boost"
+args=" $args -DPROJ4_PATH=$proj4"
+args=" $args -DENABLE_PYTHON=ON -DCMAKE_PREFIX_PATH=$python"
+
+if [[ $debug = "on" ]];then
+    args="$args -DCMAKE_BUILD_TYPE=Debug"
+    echo "Debug enabled"
+else
+    args="$args -DCMAKE_BUILD_TYPE=Production"
+    echo "Release Mode enabled"
+fi
+if [[ $regression = "on" ]];then
+    args="$args -DENABLE_REGRESSION=ON -DENABLE_REGRESSION_UPLOAD=on"
+    echo "Regression enabled"
+else
+    args="$args -DENABLE_REGRESSION=OFF"
+    echo "Regression disabled"
+fi
+if [[ $metview = "on" ]];then
+    args="$args -DENABLE_METVIEW=ON"
+    echo "Metview enabled"
+else
+    args="$args -DENABLE_MEVIEW=OFF"
+    echo "Metview not required"
+fi
+if [[ $cairo = "on" ]];then
+    args="$args -DENABLE_CAIRO=ON"
+    echo "Cairo enabled"
+else
+    args="$args -DENABLE_CAIRO=OFF"
+    echo "Cairo not required"
+fi
+if [[ $bufr = "on" ]];then
+    args=" $args -DENABLE_BUFR=ON"
+    if [[ $pgi_lib != "" ]];then
+        args=" $args -DWITH_PGI_FORTRAN=ON -DPGI_PATH=${pgi_lib}"
+    fi
+    if [[ $emos_lib != "" ]];then
+        args=" $args -DEMOS_PATH=${emos_lib}"
+    fi
+    echo "Bufr enabled"
+else
+    args="$args -DENABLE_BUFR=OFF"
+    echo "Bufr not required"
+fi
+if [[ $netcdf = "on" ]];then
+    args=" $args -DENABLE_NETCDF=ON "
+    echo "Netcdf enabled"
+    if [[ $netcdf_lib != "" ]];then
+        args=" $args -DNETCDF_PATH=${netcdf_lib}"
+    fi
+else
+    args="$args -DENABLE_NETCDF=OFF"
+    echo "NETCDF not required"
+fi
+if [[ $odb = "on" ]];then
+    args="$args -DENABLE_ODB=ON "
+    echo "ODB enabled"
+    if [[ $odb_lib != "" ]];then
+        args=" $args -DODB_API_PATH=${odb_lib}"
+    fi
+else
+    args="$args -DENABLE_ODB=OFF"
+    echo "ODB not required"
+fi
+if [[ $grib = "on" ]];then
+    args="$args -DENABLE_GRIB=ON "
+    echo "GRIB enabled"
+    if [[ $grib_lib != "" ]];then
+        args=" $args -DGRIB_API_PATH=${grib_lib}"
+    fi
+else
+    args="$args -DENABLE_GRIB=OFF"
+    echo "GRIB not required"
+fi
+if [[ $spot = "on" ]];then
+    args="$args -DENABLE_SPOT=ON "
+    echo "SPOT enabled"
+    if [[ $spot_lib != "" ]];then
+        args=" $args -DSPOT_PATH=${spot_lib}"
+    fi
+else
+    args="$args -DENABLE_SPOT=OFF"
+    echo "GRIB not required"
+fi
+
+mkdir -p ${build_home}
+cd ${build_home}
+
+echo $args
+$cmake ${git_home}/magics $args
+make -j ${run} install
diff --git a/configure.example b/configure.example
new file mode 100755
index 0000000..0301253
--- /dev/null
+++ b/configure.example
@@ -0,0 +1,125 @@
+#!/usr/bin/ksh
+
+home=".."
+version="2.21.1"
+install_home="../../$version"
+
+debug="off"
+bufr="on"
+netcdf="on"
+odb="off"
+grib="on"
+metview="off"
+cairo="on"
+spot="off"
+regression="off"
+static_lib="off"
+
+cmake="/usr/local/apps/cmake/current/bin/cmake"
+boost="/usr/local/apps/boost/1.50.0"
+
+proj4="/usr/local/apps/proj4/4.8.0/LP64"
+python="/usr/local/apps/python/2.7.1-02"
+netcdf_lib="/usr/local/apps/netcdf4/4.1.3/LP64"
+odb_lib="/usr/local/apps/odb_api/0.9.31"
+grib_lib="/usr/local/lib/metaps/lib/grib_api/1.11.0"
+pgi_lib="/usr/local/apps/pgi/pgi-10.8/linux86-64/10.8/libso"
+spot_lib="/usr/local/lib/metaps/lib/spot_database/new"
+emos_lib="/usr/local/apps/libemos/000393"
+
+args="-DCMAKE_INSTALL_PREFIX=${install_home}"
+args=" $args -DCMAKE_MODULE_PATH=${home}/cmake -DENABLE_STATIC_LIBRARY=ON"
+args=" $args -DBOOST_ROOT=$boost"
+args=" $args -DPROJ4_PATH=$proj4"
+args=" $args -DCMAKE_PREFIX_PATH=$python"
+
+if [[ $debug = "on" ]];then
+    args="$args -DCMAKE_BUILD_TYPE=Debug"
+    echo "Debug enabled"
+else
+    args="$args -DCMAKE_BUILD_TYPE=Production"
+    echo "Release Mode enabled"
+fi
+if [[ $static_lib = "on" ]];then
+    args="$args  -DENABLE_STATIC_LIBRARY=ON"
+    echo "build static library"
+else
+    args="$args -DENABLE_STATIC_LIBRARY=OFF"
+    echo "No Static Mode enabled"
+fi
+if [[ $regression = "on" ]];then
+    args="$args -DENABLE_REGRESSION=ON -DENABLE_REGRESSION_UPLOAD=on"
+    echo "Regression enabled"
+else
+    args="$args -DENABLE_REGRESSION=OFF"
+    echo "Regression disabled"
+fi
+if [[ $metview = "on" ]];then
+    args="$args -DENABLE_METVIEW=ON"
+    echo "Metview enabled"
+else
+    args="$args -DENABLE_MEVIEW=OFF"
+    echo "Metview not required"
+fi
+if [[ $cairo = "on" ]];then
+    args="$args -DENABLE_CAIRO=ON"
+    echo "Cairo enabled"
+else
+    args="$args -DENABLE_CAIRO=OFF"
+    echo "Cairo not required"
+fi
+if [[ $bufr = "on" ]];then
+    args=" $args -DENABLE_BUFR=ON"
+    if [[ $pgi_lib != "" ]];then
+        args=" $args -DWITH_PGI_FORTRAN=ON -DPGI_PATH=${pgi_lib}"
+    fi 
+    if [[ $emos_lib != "" ]];then
+        args=" $args -DEMOS_PATH=${emos_lib}"
+    fi
+    echo "Bufr enabled"
+else
+    args="$args -DENABLE_BUFR=OFF"
+    echo "Bufr not required"
+fi
+if [[ $netcdf = "on" ]];then
+    args=" $args -DENABLE_NETCDF=ON "
+    echo "Netcdf enabled"
+    if [[ $netcdf_lib != "" ]];then
+        args=" $args -DNETCDF_PATH=${netcdf_lib}"
+    fi
+else
+    args="$args -DENABLE_NETCDF=OFF"
+    echo "NETCDF not required"
+fi
+if [[ $odb = "on" ]];then
+    args="$args -DENABLE_ODB=ON "
+    echo "ODB enabled"
+    if [[ $odb_lib != "" ]];then
+        args=" $args -DODB_API_PATH=${odb_lib}"
+    fi
+else
+    args="$args -DENABLE_ODB=OFF"
+    echo "ODB not required"
+fi
+if [[ $grib = "on" ]];then
+    args="$args -DENABLE_GRIB=ON "
+    echo "GRIB enabled"
+    if [[ $grib_lib != "" ]];then
+        args=" $args -DGRIB_API_PATH=${grib_lib}"
+    fi
+else
+    args="$args -DENABLE_GRIB=OFF"
+    echo "GRIB not required"
+fi
+if [[ $spot = "on" ]];then
+    args="$args -DENABLE_SPOT=ON "
+    echo "SPOT enabled"
+    if [[ $spot_lib != "" ]];then
+        args=" $args -DSPOT_PATH=${spot_lib}"
+    fi
+else
+    args="$args -DENABLE_SPOT=OFF"
+    echo "SPOT not required"
+fi
+echo $args
+$cmake ${home} $args
diff --git a/configure.loxp b/configure.loxp
new file mode 100755
index 0000000..4f498e3
--- /dev/null
+++ b/configure.loxp
@@ -0,0 +1,142 @@
+#!/usr/bin/ksh
+
+git_home="/home/graphics/cgs/git"
+version="2.22.7"
+magics=""
+install_home="/usr/local/apps/Magics/$version"
+debug="off"
+bufr="off"
+netcdf="on"
+odb="off"
+grib="on"
+metview="off"
+cairo="on"
+regression="off"
+spot="off"
+static="on"
+build_home="/home/graphics/cgs/build/2.22.7/lxop"
+run="1"
+cmake="cmake"
+
+
+
+        cmake="/usr/local/apps/cmake/current/bin/cmake"
+        boost="/usr/local/apps/boost/1.50.0"
+        proj4="/usr/local/apps/proj4/4.8.0/LP64"
+        python="/usr/local/apps/python/2.7.1-02"
+        netcdf_lib="/usr/local/apps/netcdf_lib/LP64"
+        odb_lib="/usr/local/apps/odb_api/0.9.31"
+        grib_lib="/usr/local/lib/metaps/lib/grib_api/1.12.0"
+        emos_lib="/usr/local/apps/libemos/000393"
+        pgi_lib="/usr/local/apps/pgi/pgi-10.8/linux86-64/10.8/libso"
+        spot_lib="/usr/local/lib/metaps/lib/spot_database/new"
+        run="4"
+    
+
+
+
+
+args="-DCMAKE_INSTALL_PREFIX=${install_home}"
+args=" $args "
+args=" $args -DMAGICS_BUILD=${magics}"
+args=" $args -DBOOST_ROOT=$boost"
+args=" $args -DPROJ4_PATH=$proj4"
+args=" $args -DENABLE_PYTHON=ON -DCMAKE_PREFIX_PATH=$python"
+
+if [[ $static = "on" ]];then
+    args="$args  -DENABLE_STATIC_LIBRARY=ON"
+    echo "static enabled"
+else
+    args="$args -DENABLE_STATIC=OFF"
+    echo "No static library"
+fi
+if [[ $debug = "on" ]];then
+    args="$args -DCMAKE_BUILD_TYPE=Debug"
+    echo "Debug enabled"
+else
+    args="$args -DCMAKE_BUILD_TYPE=Release"
+    echo "Release Mode enabled"
+fi
+if [[ $regression = "on" ]];then
+    args="$args -DENABLE_REGRESSION=ON -DENABLE_REGRESSION_UPLOAD=ON"
+    echo "Regression enabled"
+else
+    args="$args -DENABLE_REGRESSION=OFF"
+    echo "Regression disabled"
+fi
+if [[ $metview = "on" ]];then
+    args="$args -DENABLE_METVIEW=ON"
+    echo "Metview enabled"
+else
+    args="$args -DENABLE_MEVIEW=OFF"
+    echo "Metview not required"
+fi
+if [[ $cairo = "on" ]];then
+    args="$args -DENABLE_CAIRO=ON"
+    echo "Cairo enabled"
+else
+    args="$args -DENABLE_CAIRO=OFF"
+    echo "Cairo not required"
+fi
+if [[ $bufr = "on" ]];then
+    args=" $args -DENABLE_BUFR=ON"
+    if [[ $pgi_lib != "" ]];then
+        args=" $args -DWITH_PGI_FORTRAN=ON -DPGI_PATH=${pgi_lib}"
+    fi
+    if [[ $emos_lib != "" ]];then
+        args=" $args -DEMOS_PATH=${emos_lib}"
+    fi
+    echo "Bufr enabled"
+else
+    args="$args -DENABLE_BUFR=OFF"
+    echo "Bufr not required"
+fi
+if [[ $netcdf = "on" ]];then
+    args=" $args -DENABLE_NETCDF=ON "
+    echo "Netcdf enabled"
+    if [[ $netcdf_lib != "" ]];then
+        args=" $args -DNETCDF_PATH=${netcdf_lib}"
+    fi
+else
+    args="$args -DENABLE_NETCDF=OFF"
+    echo "NETCDF not required"
+fi
+if [[ $odb = "on" ]];then
+    args="$args -DENABLE_ODB=ON "
+    echo "ODB enabled"
+    if [[ $odb_lib != "" ]];then
+        args=" $args -DODB_API_PATH=${odb_lib}"
+    fi
+else
+    args="$args -DENABLE_ODB=OFF"
+    echo "ODB not required"
+fi
+if [[ $grib = "on" ]];then
+    args="$args -DENABLE_GRIB=ON "
+    echo "GRIB enabled"
+    if [[ $grib_lib != "" ]];then
+        args=" $args -DGRIB_API_PATH=${grib_lib}"
+    fi
+else
+    args="$args -DENABLE_GRIB=OFF"
+    echo "GRIB not required"
+fi
+if [[ $spot = "on" ]];then
+    args="$args -DENABLE_SPOT=ON "
+    echo "SPOT enabled"
+    if [[ $spot_lib != "" ]];then
+        args=" $args -DSPOT_PATH=${spot_lib}"
+    fi
+else
+    args="$args -DENABLE_SPOT=OFF"
+    echo "GRIB not required"
+fi
+echo "start"
+
+mkdir -p ${build_home}
+cd ${build_home}
+rm -fR *
+
+
+${cmake} ${git_home}/magics $args
+make -j ${run} install
diff --git a/docs/Magics.dox.in b/docs/Magics.dox.in
deleted file mode 100644
index d08c65c..0000000
--- a/docs/Magics.dox.in
+++ /dev/null
@@ -1,1531 +0,0 @@
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file 
-# that follow. The default is UTF-8 which is also the encoding used for all 
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
-# iconv built into libc) for the transcoding. See 
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-# by quotes) that should identify the project.
-
-PROJECT_NAME           = @PACKAGE_NAME@
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = @MAGICS_PACKAGE_VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = api/
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, 
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = NO
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = 
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = @top_srcdir@
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like regular Qt-style comments 
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
-# interpret the first line (until the first dot) of a Qt-style 
-# comment as the brief description. If set to NO, the comments 
-# will behave just like regular Qt-style comments (thus requiring 
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Java. For instance, namespaces will be presented as packages, qualified 
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
-# sources. Doxygen will then generate output that is tailored for 
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses. 
-# With this tag you can assign which parser to use for a given extension. 
-# Doxygen has a built-in mapping, but you can override or extend it using this tag. 
-# The format is ext=language, where ext is a file extension, and language is one of 
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, 
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat 
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), 
-# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING      = 
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
-# to include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to 
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
-# Doxygen will parse them like normal C++ but will assume all classes use public 
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter 
-# and setter methods for a property. Setting this option to YES (the default) 
-# will make doxygen to replace the get and set methods by a property in the 
-# documentation. This will only work if the methods are indeed getting or 
-# setting a simple type. If this is not the case, or you want to show the 
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
-# is documented as struct, union, or enum with the name of the typedef. So 
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
-# with name TypeT. When disabled the typedef will appear as a member of a file, 
-# namespace, or class. And the struct will be named TypeS. This can typically 
-# be useful for C code in case the coding convention dictates that all compound 
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
-# determine which symbols to keep in memory and which to flush to disk. 
-# When the cache is full, less often used symbols will be written to disk. 
-# For small to medium size projects (<1000 input files) the default value is 
-# probably good enough. For larger projects a too small cache size can cause 
-# doxygen to be busy swapping symbols to and from disk most of the time 
-# causing a significant performance penality. 
-# If the system has enough physical memory increasing the cache will improve the 
-# performance by keeping more symbols in memory. Note that the value works on 
-# a logarithmic scale so increasing the size by one will rougly double the 
-# memory usage. The cache size is given by this formula: 
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be 
-# extracted and appear in the documentation as a namespace called 
-# 'anonymous_namespace{file}', where file will be replaced with the base 
-# name of the file that contains the anonymous namespace. By default 
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
-# hierarchy of group names into alphabetical order. If set to NO (the default) 
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and defines in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
-# This will remove the Files entry from the Quick Index and from the 
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
-# Namespaces page. 
-# This will remove the Namespaces entry from the Quick Index 
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from 
-# the version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by 
-# doxygen. The layout file controls the global structure of the generated output files 
-# in an output format independent way. The create the layout file that represents 
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a 
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name 
-# of the layout file.
-
-LAYOUT_FILE            = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = @top_srcdir@/docs/Magics.dox.error.out
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = @top_srcdir@/src
-
-# This tag can be used to specify the character encoding of the source files 
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
-# also the default input encoding. Doxygen uses libiconv (or the iconv built 
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS          = *.c \
-                         *.cc \
-                         *.cpp \
-                         *.h \
-                         *.hh \
-                         *.hxx \
-                         *.py \
-                         *.magml \
-                         *.json
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE                = @top_srcdir@/terralib
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-# directories that are symbolic links (a Unix filesystem feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
-# (namespaces, classes, functions, etc.) that should be excluded from the 
-# output. The symbol name can be a fully qualified name, a word, or if the 
-# wildcard * is used, a substring. Examples: ANamespace, AClass, 
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = @top_srcdir@/test/C \
-                         @top_srcdir@/test/MagML \
-                         @top_srcdir@/test/fortran \
-                         @top_srcdir@/test/python
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = *.cc \
-                         *.h \
-                         *.c \
-                         *.f \
-                         *.magml \
-                         *.py
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = YES
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output. 
-# If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis. 
-# Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match. 
-# The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
-# link to the source code. 
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header.
-
-HTML_HEADER            = 
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
-# documentation will contain sections that can be hidden and shown after the 
-# page has loaded. For this to work a browser that supports 
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files 
-# will be generated that can be used as input for Apple's Xcode 3 
-# integrated development environment, introduced with OSX 10.5 (Leopard). 
-# To create a documentation set, doxygen will generate a Makefile in the 
-# HTML output directory. Running make will produce the docset in that 
-# directory and running "make install" will install the docset in 
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
-# it at startup. 
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
-# feed. A documentation feed provides an umbrella under which multiple 
-# documentation sets from a single provider (such as a company or product suite) 
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
-# should uniquely identify the documentation set bundle. This should be a 
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
-# content.
-
-CHM_INDEX_ENCODING     = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER 
-# are set, an additional index file will be generated that can be used as input for 
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated 
-# HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
-# be used to specify the file name of the resulting .qch file. 
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               = 
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = 
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. 
-# For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   = 
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see 
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  = 
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's 
-# filter section matches. 
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  = 
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
-# be used to specify the location of Qt's qhelpgenerator. 
-# If non-empty doxygen will try to run qhelpgenerator on the generated 
-# .qhp file.
-
-QHG_LOCATION           = 
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-# top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# This tag can be used to set the number of enum values (range [1..20]) 
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
-# structure should be generated to display hierarchical information. 
-# If the tag value is set to FRAME, a side panel will be generated 
-# containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-# probably better off using the HTML help feature. Other possible values 
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories, 
-# and Class Hierarchy pages using a tree view instead of an ordered list; 
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which 
-# disables this behavior completely. For backwards compatibility with previous 
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE 
-# respectively.
-
-GENERATE_TREEVIEW      = YES
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# Use this tag to change the font size of Latex formulas included 
-# as images in the HTML documentation. The default is 10. Note that 
-# when you change the font size after a successful doxygen run you need 
-# to manually remove any form_*.png images from the HTML output directory 
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, a4wide, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader. 
-# This is useful 
-# if you want to understand what is going on. 
-# On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = @top_srcdir@/src/ \
-			 @top_srcdir@/src/common/ \
-			 @top_srcdir@/src/decoders/ \
-			 @top_srcdir@/src/terralib/
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all function-like macros that are alone 
-# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-# function macros are typically used for boiler-plate code, and will confuse 
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#  
-# TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#  
-# TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links. 
-# Note that each tag file must have a unique name 
-# (where the name does NOT include the path) 
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option is superseded by the HAVE_DOT option below. This is only a 
-# fallback. It is recommended to install and use dot, since it yields more 
-# powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc 
-# command. Doxygen will then run the mscgen tool (see 
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
-# the mscgen tool resides. If left empty the tool is assumed to be found in the 
-# default search path.
-
-MSCGEN_PATH            = 
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = NO
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = YES
-
-# By default doxygen will write a font called FreeSans.ttf to the output 
-# directory and reference it in all dot files that doxygen generates. This 
-# font does not include all possible unicode characters however, so when you need 
-# these (or just want a differently looking font) you can specify the font name 
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font, 
-# which can be done by putting it in a standard location or by setting the 
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory 
-# containing the font.
-
-DOT_FONTNAME           = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the output directory to look for the 
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a 
-# different font using DOT_FONTNAME you can set the path where dot 
-# can find it using this tag.
-
-DOT_FONTPATH           = 
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = NO
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
-# doxygen will generate a call dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable call graphs 
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
-# doxygen will generate a caller dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable caller 
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include 
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are png, jpg, or gif 
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT       = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
-# nodes that will be shown in the graph. If the number of nodes in a graph 
-# becomes larger than this value, doxygen will truncate the graph, which is 
-# visualized by representing a node as a red box. Note that doxygen if the 
-# number of direct children of the root node in a graph is already larger than 
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that the size of a graph can be further restricted by 
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, because dot on Windows does not 
-# seem to support this out of the box. Warning: Depending on the platform used, 
-# enabling this option may lead to badly anti-aliased labels on the edges of 
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES
-
-#---------------------------------------------------------------------------
-# Options related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be 
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE           = NO
diff --git a/ecbuild_config.h b/ecbuild_config.h
new file mode 100644
index 0000000..53426ab
--- /dev/null
+++ b/ecbuild_config.h
@@ -0,0 +1,52 @@
+/*
+ * (C) Copyright 1996-2012 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 ecbuild_config_h
+#define ecbuild_config_h
+
+#include "ecbuild_platform.h"
+
+/* config info */
+
+#define EC_OS_NAME          "Linux-2.6.32-358.2.1.el6.x86_64"
+#define EC_OS_BITS          64
+#define EC_OS_BITS_STR      "64"
+#define EC_OS_STR           "linux.64"
+#define EC_OS_VERSION       "2.6.32-358.2.1.el6.x86_64"
+#define EC_SYS_PROCESSOR    "x86_64"
+
+#define EC_BUILD_TIMESTAMP  "20140408165549"
+#define EC_BUILD_TYPE       "Release"
+
+#define EC_C_COMPILER_ID      "GNU"
+#define EC_C_COMPILER_VERSION "4.4.7"
+
+#define EC_CXX_COMPILER_ID      "GNU"
+#define EC_CXX_COMPILER_VERSION "4.4.7"
+
+#define EC_C_COMPILER       "/usr/bin/cc"
+#define EC_C_FLAGS          " -pipe -O3 -DNDEBUG"
+
+#define EC_CXX_COMPILER     "/usr/bin/c++"
+#define EC_CXX_FLAGS        " -pipe -O3 -DNDEBUG"
+
+/* #undef EC_HAVE_Fortran */
+
+#ifdef EC_HAVE_Fortran
+
+#define EC_Fortran_COMPILER_ID      ""
+#define EC_Fortran_COMPILER_VERSION ""
+
+#define EC_Fortran_COMPILER "/usr/bin/gfortran"
+#define EC_Fortran_FLAGS    ""
+
+#endif
+
+#endif /* ecbuild_config_h */
diff --git a/ecbuild_platform.h b/ecbuild_platform.h
new file mode 100644
index 0000000..ee18a0d
--- /dev/null
+++ b/ecbuild_platform.h
@@ -0,0 +1,131 @@
+/*
+ * (C) Copyright 1996-2012 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 ecbuild_platform_h
+#define ecbuild_platform_h
+
+/* cpu arch info */
+
+/* #undef EC_BIG_ENDIAN */
+#define EC_LITTLE_ENDIAN    1
+
+/* compiler support */
+
+#define EC_HAVE_FUNCTION_DEF
+
+/* os capability checks */
+
+/* --- symbols --- */
+
+#define EC_HAVE_FSEEK
+#define EC_HAVE_FSEEKO
+#define EC_HAVE_FTELLO
+#define EC_HAVE_LSEEK
+#define EC_HAVE_FTRUNCATE
+#define EC_HAVE_OPEN
+#define EC_HAVE_FOPEN
+#define EC_HAVE_FLOCK
+#define EC_HAVE_MMAP
+
+#define EC_HAVE_POSIX_MEMALIGN
+
+#define EC_HAVE_F_GETLK
+#define EC_HAVE_F_SETLKW
+#define EC_HAVE_F_SETLK
+
+#define EC_HAVE_F_GETLK64
+#define EC_HAVE_F_SETLKW64
+#define EC_HAVE_F_SETLK64
+
+#define EC_HAVE_MAP_ANONYMOUS
+#define EC_HAVE_MAP_ANON
+
+/* --- include files --- */
+
+#define EC_HAVE_ASSERT_H      
+#define EC_HAVE_STDLIB_H      
+#define EC_HAVE_UNISTD_H      
+#define EC_HAVE_STRING_H      
+#define EC_HAVE_STRINGS_H     
+#define EC_HAVE_SYS_STAT_H    
+#define EC_HAVE_SYS_TIME_H    
+#define EC_HAVE_SYS_TYPES_H   
+#define EC_HAVE_MALLOC_H      
+/* #undef EC_HAVE_SYS_MALLOC_H */
+
+#define EC_HAVE_MALLOC_H
+/* #undef EC_HAVE_SYS_MALLOC_H */
+
+#define EC_HAVE_SYS_MOUNT_H
+#define EC_HAVE_SYS_VFS_H
+
+/* --- capabilities --- */
+
+#define EC_STAT_SIZEOF_OFF_T 8
+
+#define EC_HAVE_OFFT
+#define EC_HAVE_OFF64T
+
+#define EC_HAVE_STRUCT_STAT
+#define EC_HAVE_STRUCT_STAT64
+#define EC_HAVE_STAT
+#define EC_HAVE_STAT64
+#define EC_HAVE_FSTAT
+#define EC_HAVE_FSTAT64
+
+#define EC_HAVE_FSEEKO64
+#define EC_HAVE_FTELLO64
+#define EC_HAVE_LSEEK64
+#define EC_HAVE_OPEN64
+#define EC_HAVE_FOPEN64
+#define EC_HAVE_FTRUNCATE64
+#define EC_HAVE_FLOCK64
+#define EC_HAVE_MMAP64
+
+#define EC_HAVE_STRUCT_STATVFS
+#define EC_HAVE_STRUCT_STATVFS64
+/* #undef EC_HAVE_STATVFS */
+/* #undef EC_HAVE_STATVFS64 */
+
+#define EC_HAVE_FSYNC
+#define EC_HAVE_FDATASYNC
+#define EC_HAVE_DIRFD
+/* #undef EC_HAVE_SYSPROC */
+#define EC_HAVE_SYSPROCFS
+
+#define EC_HAVE_EXECINFO_BACKTRACE
+
+/* --- asynchronous IO support --- */
+
+#define EC_HAVE_AIO
+#define EC_HAVE_AIO64
+
+/* --- reentrant funtions support --- */
+
+#define EC_HAVE_GMTIME_R
+#define EC_HAVE_GETPWUID_R
+#define EC_HAVE_GETPWNAM_R
+#define EC_HAVE_READDIR_R
+#define EC_HAVE_GETHOSTBYNAME_R
+
+/* --- c compiler support --- */
+
+#define EC_HAVE_C_INLINE
+
+/* --- c++ compiler support --- */
+
+#define EC_HAVE_FUNCTION_DEF
+
+#define EC_HAVE_CXXABI_H
+#define EC_HAVE_CXX_BOOL
+
+#define EC_HAVE_CXX_SSTREAM
+
+#endif /* ecbuild_platform_h */
diff --git a/m4/autotroll.m4 b/m4/autotroll.m4
deleted file mode 100644
index d7e071e..0000000
--- a/m4/autotroll.m4
+++ /dev/null
@@ -1,563 +0,0 @@
-# Build Qt apps with the autotools (Autoconf/Automake).
-# M4 macros.
-# This file is part of AutoTroll.
-# Copyright (C) 2006  Benoit Sigoure <benoit.sigoure at lrde.epita.fr>
-#
-# AutoTroll 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.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# In addition, as a special exception, the copyright holders of AutoTroll
-# give you unlimited permission to copy, distribute and modify the configure
-# scripts that are the output of Autoconf when processing the macros of
-# AutoTroll.  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
-# AutoTroll appear in them. The GNU General Public License (GPL) does govern
-# all other use of the material that constitutes AutoTroll.
-#
-# This special exception to the GPL applies to versions of AutoTroll
-# released by the copyright holders of AutoTroll.  Note that people who make
-# modified versions of AutoTroll are not obligated to grant this special
-# exception for their modified versions; it is their choice whether to do so.
-# The GNU General Public License gives permission to release a modified version
-# without this exception; this exception also makes it possible to release a
-# modified version which carries forward this exception.
-
- # ------------- #
- # DOCUMENTATION #
- # ------------- #
-
-# Disclaimer: Never tested with anything else than Qt 4.2! Feedback welcome.
-# Simply invoke AT_WITH_QT in your configure.ac. AT_WITH_QT can take
-# arguments which are documented in depth below. The default arguments are
-# equivalent to the default .pro file generated by qmake.
-#
-# Invoking AT_WITH_QT will do the following:
-#  - Add a --with-qt option to your configure
-#  - Find qmake, moc and uic and save them in the make variables $(QMAKE),
-#    $(MOC), $(UIC).
-#  - Save the path to Qt in $(QT_PATH)
-#  - Find the flags to use Qt, that is:
-#     * $(QT_DEFINES): -D's defined by qmake.
-#     * $(QT_CFLAGS): CFLAGS as defined by qmake (C?!)
-#     * $(QT_CXXFLAGS): CXXFLAGS as defined by qmake.
-#     * $(QT_INCPATH): -I's defined by qmake.
-#     * $(QT_CPPFLAGS): Same as $(QT_DEFINES) + $(QT_INCPATH)
-#     * $(QT_LFLAGS): LFLAGS defined by qmake.
-#     * $(QT_LDFLAGS): Same thing as $(QT_LFLAGS).
-#     * $(QT_LIBS): LIBS defined by qmake.
-#
-# You *MUST* invoke $(MOC) and/or $(UIC) where necessary. AutoTroll provides
-# you with Makerules to ease this, here is a sample Makefile.am to use with
-# AutoTroll which builds the code given in the chapter 7 of the Qt Tutorial:
-# http://doc.trolltech.com/4.2/tutorial-t7.html
-#
-# -------------------------------------------------------------------------
-# include $(top_srcdir)/build-aux/autotroll.mk
-#
-# ACLOCAL_AMFLAGS = -I build-aux
-#
-# bin_PROGRAMS = lcdrange
-# lcdrange_SOURCES =  $(BUILT_SOURCES) lcdrange.cpp lcdrange.h main.cpp
-# lcdrange_CXXFLAGS = $(QT_CXXFLAGS) $(AM_CXXFLAGS)
-# lcdrange_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS)
-# lcdrange_LDFLAGS  = $(QT_LDFLAGS) $(LDFLAGS)
-# lcdrange_LDADD    = $(QT_LIBS) $(LDADD)
-#
-# BUILT_SOURCES = lcdrange.moc.cpp
-# -------------------------------------------------------------------------
-#
-# Note that your MOC, UIC and QRC files *MUST* be listed manually in
-# BUILT_SOURCES. If you name them properly (eg: .moc.cc, .qrc.cc, .ui.cc -- of
-# course you can use .cpp or .cxx or .C rather than .cc) AutoTroll will build
-# them automagically for you (using implicit rules defined in autotroll.mk).
-
-m4_define([_AUTOTROLL_SERIAL], [m4_translit([
-# serial 4
-], [#
-], [])])
-
-
-m4_ifdef([AX_INSTEAD_IF], [],
-[AC_DEFUN([AX_INSTEAD_IF],
-  [m4_ifval([$1],
-    [AC_MSG_WARN([$2]); [$1]],
-    [AC_MSG_ERROR([$2])])])])
-
-m4_pattern_forbid([^AT_])dnl
-m4_pattern_forbid([^_AT_])dnl
-
-# AT_WITH_QT([QT_modules], [QT_config], [QT_misc], [RUN-IF-FAILED], [RUN-IF-OK])
-# ------------------------------------------------------------------------------
-# Enable Qt support and add an option --with-qt to the configure script.
-#
-# The QT_modules argument is optional and defines extra modules to enable or
-# disable (it's equivalent to the QT variable in .pro files). Modules can be
-# specified as follows:
-#
-# AT_WITH_QT   => No argument -> No QT value.
-#                                Qmake sets it to "core gui" by default.
-# AT_WITH_QT([xml])   => QT += xml
-# AT_WITH_QT([+xml])  => QT += xml
-# AT_WITH_QT([-gui])  => QT -= gui
-# AT_WITH_QT([xml -gui +sql svg])  => QT += xml sql svg
-#                                     QT -= gui
-#
-# The QT_config argument is also optional and follows the same convention as
-# QT_modules. Instead of changing the QT variable, it changes the CONFIG
-# variable, which is used to tweak configuration and compiler options.
-#
-# The last argument, QT_misc (also optional) will be copied as-is the .pro
-# file used to guess how to compile Qt apps. You may use it to further tweak
-# the build process of Qt apps if tweaking the QT or CONFIG variables isn't
-# enough for you.
-#
-# RUN-IF-FAILED is arbitrary code to execute if Qt cannot be found or if any
-# problem happens.  If this argument is omitted, then AC_MSG_ERROR will be
-# called.  RUN-IF-OK is arbitrary code to execute if Qt was successfully found.
-AC_DEFUN([AT_WITH_QT],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_CXX])dnl
-echo "$as_me: this is autotroll.m4[]_AUTOTROLL_SERIAL" >&AS_MESSAGE_LOG_FD
-
-  test x"$TROLL" != x && echo 'ViM rox emacs.'
-
-dnl Memo: AC_ARG_WITH(package, help-string, [if-given], [if-not-given])
-  AC_ARG_WITH([qt],
-              [AS_HELP_STRING([--with-qt],
-                 [Path to Qt @<:@Look in PATH and /usr/local/Trolltech@:>@])],
-              [QT_PATH=$withval])
-
-  # this is a hack to get decent flow control with 'break'
-  for _qt_ignored in once; do
-
-  # Find Qt.
-  AC_ARG_VAR([QT_PATH], [Path to the Qt installation])
-  if test -d /usr/local/Trolltech; then
-    # Try to find the latest version.
-    tmp_qt_paths=`echo /usr/local/Trolltech/*/bin | tr ' ' '\n' | sort -nr \
-                                              | xargs | sed 's/  */:/g'`
-  fi
-  # Path to which recent MacPorts (~v1.7) install Qt4.
-  test -d /opt/local/libexec/qt4-mac/bin \
-    && tmp_qt_paths="$tmp_qt_paths:/opt/local/libexec/qt4-mac/bin"
-
-  # Find qmake.
-  AC_ARG_VAR([QMAKE], [Qt Makefile generator command])
-  AC_PATH_PROGS([QMAKE], [qmake qmake-qt4 qmake-qt3], [missing],
-                [$QT_DIR:$QT_PATH:$PATH:$tmp_qt_paths])
-  if test x"$QMAKE" = xmissing; then
-    AX_INSTEAD_IF([$4], [Cannot find qmake in your PATH. Try using --with-qt.])
-    break
-  fi
-
-  # Find moc (Meta Object Compiler).
-  AC_ARG_VAR([MOC], [Qt Meta Object Compiler command])
-  AC_PATH_PROGS([MOC], [moc moc-qt4 moc-qt3], [missing],
-                [$QT_PATH:$PATH:$tmp_qt_paths])
-  if test x"$MOC" = xmissing; then
-    AX_INSTEAD_IF([$4],
-   [Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt.])
-    break
-  fi
-
-  # Find uic (User Interface Compiler).
-  AC_ARG_VAR([UIC], [Qt User Interface Compiler command])
-  AC_PATH_PROGS([UIC], [uic uic-qt4 uic-qt3 uic3], [missing],
-                [$QT_PATH:$PATH:$tmp_qt_paths])
-  if test x"$UIC" = xmissing; then
-    AX_INSTEAD_IF([$4],
-[Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt.])
-    break
-  fi
-
-  # Find rcc (Qt Resource Compiler).
-  AC_ARG_VAR([RCC], [Qt Resource Compiler command])
-  AC_PATH_PROGS([RCC], [rcc], [false], [$QT_PATH:$PATH:$tmp_qt_paths])
-  if test x"$UIC" = xfalse; then
-    AC_MSG_WARN([Cannot find rcc (Qt Resource Compiler) in your PATH.\
-  Try using --with-qt.])
-  fi
-
-  AC_MSG_CHECKING([whether host operating system is Darwin])
-  at_darwin=no
-  at_qmake_args=
-  case $host_os in
-    darwin*)
-      at_darwin=yes
-      at_qmake_args='-spec macx-g++'
-      ;;
-  esac
-  AC_MSG_RESULT([$at_darwin])
-
-  # If we don't know the path to Qt, guess it from the path to qmake.
-  if test x"$QT_PATH" = x; then
-    QT_PATH=`dirname "$QMAKE"`
-  fi
-  if test x"$QT_PATH" = x; then
-    AX_INSTEAD_IF([$4],
-                  [Cannot find the path to your Qt install. Use --with-qt.])
-    break
-  fi
-  AC_SUBST([QT_PATH])
-
-  # Get ready to build a test-app with Qt.
-  if mkdir conftest.dir && cd conftest.dir; then :; else
-    AX_INSTEAD_IF([$4], [Cannot mkdir conftest.dir or cd to that directory.])
-    break
-  fi
-
-  cat >conftest.h <<_ASEOF
-#include <QObject>
-
-class Foo: public QObject
-{
-  Q_OBJECT;
-public:
-  Foo();
-  ~Foo() {}
-public Q_SLOTS:
-  void setValue(int value);
-Q_SIGNALS:
-  void valueChanged(int newValue);
-private:
-  int value_;
-};
-_ASEOF
-
-  cat >conftest.cpp <<_ASEOF
-#include "conftest.h"
-Foo::Foo()
-  : value_ (42)
-{
-  connect(this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
-}
-
-void Foo::setValue(int value)
-{
-  value_ = value;
-}
-
-int main()
-{
-  Foo f;
-}
-_ASEOF
-  if $QMAKE -project; then :; else
-    AX_INSTEAD_IF([$4], [Calling $QMAKE -project failed.])
-    break
-  fi
-
-  # Find the .pro file generated by qmake.
-  pro_file='conftest.dir.pro'
-  test -f $pro_file || pro_file=`echo *.pro`
-  if test -f "$pro_file"; then :; else
-    AX_INSTEAD_IF([$4], [Can't find the .pro file generated by Qmake.])
-    break
-  fi
-
-dnl Tweak the value of QT in the .pro if have been the 1st arg.
-m4_ifval([$1], [_AT_TWEAK_PRO_FILE([QT], [$1])])
-
-dnl Tweak the value of CONFIG in the .pro if have been given a 2nd arg.
-m4_ifval([$2], [_AT_TWEAK_PRO_FILE([CONFIG], [$2])])
-
-m4_ifval([$3],
-[ # Add the extra-settings the user wants to set in the .pro
-  echo "$3" >>"$pro_file"
-])
-
-  echo "$as_me:$LINENO: Invoking $QMAKE on $pro_file" >&AS_MESSAGE_LOG_FD
-  sed 's/^/| /' "$pro_file" >&AS_MESSAGE_LOG_FD
-
-  if $QMAKE $at_qmake_args; then :; else
-    AX_INSTEAD_IF([$4], [Calling $QMAKE $at_qmake_args failed.])
-    break
-  fi
-
-  # QMake has a very annoying misfeature: sometimes it generates Makefiles
-  # where all the references to the files from the Qt installation are
-  # relative.  We can't use them as-is because if we take, say, a
-  # -I../../usr/include/Qt from that Makefile, the flag is invalid as soon
-  # as we use it in another (sub) directory.  So what this perl pass does is
-  # that it rewrite all relative paths to absolute paths.  Another problem
-  # when building on Cygwin is that QMake mixes paths with blackslashes and
-  # forward slashes and paths must be handled with extra care because of the
-  # stupid Windows drive letters.
-  echo "$as_me:$LINENO: fixing the Makefiles:" Makefile* >&AS_MESSAGE_LOG_FD
-  cat >fixmk.pl <<\EOF
-[use strict;
-use Cwd qw(cwd abs_path);
-# This variable is useful on Cygwin for the following reason: Say that you are
-# in `/' (that is, in fact you are in C:/cygwin, or something like that) if you
-# `cd ..' then obviously you remain in `/' (that is in C:/cygwin).  QMake
-# generates paths that are relative to C:/ (or another driver letter, whatever)
-# so the trick to get the `..' resolved properly is to prepend the absolute
-# path of the current working directory in a Windows-style.  C:/cygwin/../ will
-# properly become C:/.
-my $d = "";
-my $r2a = 0;
-my $b2f = 0;
-
-my $cygwin = 0;
-if ($^O eq "cygwin") {
-  $cygwin = 1;
-  $d = cwd();
-  $d = `cygpath --mixed '$d'`;
-  chomp($d);
-  $d .= "/";
-}
-
-sub rel2abs($)
-{
-  my $p = $d . shift;
-  # print "r2a p=$p";
-  -e $p || return $p;
-  if ($cygwin) {
-    $p = `cygpath --mixed '$p'`;
-    chomp($p);
-  }
-  else {
-    # Do not use abs_path on Cygwin: it incorrectly resolves the paths that are
-    # relative to C:/ rather than `/'.
-    $p = abs_path($p);
-  }
-  # print " -> $p\n";
-  ++$r2a;
-  return $p;
-}
-
-# Only useful on Cygwin.
-sub back2forward($)
-{
-  my $p = shift;
-  # print "b2f p=$p";
-  -e $p || return $p;
-  $p = `cygpath --mixed '$p'`;
-  chomp($p);
-  # print " -> $p\n";
-  ++$b2f;
-  return $p;
-}
-
-foreach my $mk (@ARGV)
-{
-  next if $mk =~ /~$/;
-  open(MK, $mk) or die("open $mk: $!");
-  # print "mk=$mk\n";
-  my $file = join("", <MK>);
-  close(MK) or die("close $mk: $!");
-  rename $mk, $mk . "~" or die("rename $mk: $!");
-  $file =~ s{(?:\.\.[\\/])+(?:[^"'\s:]+)}{rel2abs($&)}gse;
-  $file =~ s{(?:[a-zA-Z]:[\\/])?(?:[^"\s]+\\[^"\s:]+)+}
-            {back2forward($&)}gse if $cygwin;
-  open(MK, ">", $mk) or die("open >$mk: $!");
-  print MK $file;
-  close(MK) or die("close >$mk: $!");
-  print "$mk: updated $r2a relative paths and $b2f backslash-style paths\n";
-  $r2a = 0;
-  $b2f = 0;
-}]
-EOF
-
-  perl >&AS_MESSAGE_LOG_FD -w fixmk.pl Makefile* ||
-  AC_MSG_WARN([failed to fix the Makefiles generated by $QMAKE])
-  rm -f fixmk.pl
-
-  # Try to compile a simple Qt app.
-  AC_CACHE_CHECK([whether we can build a simple Qt app], [at_cv_qt_build],
-  [at_cv_qt_build=ko
-  : ${MAKE=make}
-
-  if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
-    at_cv_qt_build='ok, looks like Qt 4'
-  else
-    echo "$as_me:$LINENO: Build failed, trying to #include <qobject.h> \
-instead" >&AS_MESSAGE_LOG_FD
-    sed 's/<QObject>/<qobject.h>/' conftest.h > tmp.h && mv tmp.h conftest.h
-    if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
-      at_cv_qt_build='ok, looks like Qt 3'
-    else
-      # Sometimes (such as on Debian) build will fail because Qt hasn't been
-      # installed in debug mode and qmake tries (by default) to build apps in
-      # debug mode => Try again in release mode.
-      echo "$as_me:$LINENO: Build failed, trying to enforce release mode" \
-            >&AS_MESSAGE_LOG_FD
-
-      _AT_TWEAK_PRO_FILE([CONFIG], [+release])
-
-      sed 's/<qobject.h>/<QObject>/' conftest.h > tmp.h && mv tmp.h conftest.h
-      if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
-        at_cv_qt_build='ok, looks like Qt 4, release mode forced'
-      else
-        echo "$as_me:$LINENO: Build failed, trying to #include <qobject.h> \
-instead" >&AS_MESSAGE_LOG_FD
-        sed 's/<QObject>/<qobject.h>/' conftest.h >tmp.h && mv tmp.h conftest.h
-        if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
-          at_cv_qt_build='ok, looks like Qt 3, release mode forced'
-        else
-          at_cv_qt_build=ko
-          echo "$as_me:$LINENO: failed program was:" >&AS_MESSAGE_LOG_FD
-          sed 's/^/| /' conftest.h >&AS_MESSAGE_LOG_FD
-          echo "$as_me:$LINENO: failed program was:" >&AS_MESSAGE_LOG_FD
-          sed 's/^/| /' conftest.cpp >&AS_MESSAGE_LOG_FD
-        fi # if make with Qt3-style #include and release mode forced.
-      fi # if make with Qt4-style #include and release mode forced.
-    fi # if make with Qt3-style #include.
-  fi # if make with Qt4-style #include.
-  ])dnl end: AC_CACHE_CHECK(at_cv_qt_build)
-
-  if test x"$at_cv_qt_build" = xko; then
-    AX_INSTEAD_IF([$4], [Cannot build a test Qt program])
-    break
-  fi
-  QT_VERSION_MAJOR=`echo "$at_cv_qt_build" | sed 's/[[^0-9]]*//g'`
-  AC_SUBST([QT_VERSION_MAJOR])
-
-  # This sed filter is applied after an expression of the form: /^FOO.*=/!d;
-  # It starts by removing the beginning of the line, removing references to
-  # SUBLIBS, removing unnecessary whitespaces at the beginning, and prefixes
-  # all variable uses by QT_.
-  qt_sed_filter='s///;
-                 s/$(SUBLIBS)//g;
-                 s/^ *//;
-                 s/\$(\(@<:@A-Z_@:>@@<:@A-Z_@:>@*\))/$(QT_\1)/g'
-
-  # Find the Makefile (qmake happens to generate a fake Makefile which invokes
-  # a Makefile.Debug or Makefile.Release). We we have both, we'll pick the
-  # Makefile.Release. The reason is that the main difference is that release
-  # uses -Os and debug -g. We can override -Os by passing another -O but we
-  # usually don't override -g.
-  if test -f Makefile.Release; then
-    at_mfile='Makefile.Release'
-  else
-    at_mfile='Makefile'
-  fi
-  if test -f $at_mfile; then :; else
-    AX_INSTEAD_IF([$4], [Cannot find the Makefile generated by qmake.])
-    break
-  fi
-
-  # Find the DEFINES of Qt (should have been named CPPFLAGS).
-  AC_CACHE_CHECK([for the DEFINES to use with Qt], [at_cv_env_QT_DEFINES],
-  [at_cv_env_QT_DEFINES=`sed "/^DEFINES@<:@^A-Z=@:>@*=/!d;$qt_sed_filter" $at_mfile`])
-  AC_SUBST([QT_DEFINES], [$at_cv_env_QT_DEFINES])
-
-  # Find the CFLAGS of Qt (We can use Qt in C?!)
-  AC_CACHE_CHECK([for the CFLAGS to use with Qt], [at_cv_env_QT_CFLAGS],
-  [at_cv_env_QT_CFLAGS=`sed "/^CFLAGS@<:@^A-Z=@:>@*=/!d;$qt_sed_filter" $at_mfile`])
-  AC_SUBST([QT_CFLAGS], [$at_cv_env_QT_CFLAGS])
-
-  # Find the CXXFLAGS of Qt.
-  AC_CACHE_CHECK([for the CXXFLAGS to use with Qt], [at_cv_env_QT_CXXFLAGS],
-  [at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS@<:@^A-Z=@:>@*=/!d;$qt_sed_filter" $at_mfile`])
-  AC_SUBST([QT_CXXFLAGS], [$at_cv_env_QT_CXXFLAGS])
-
-  # Find the INCPATH of Qt.
-  AC_CACHE_CHECK([for the INCPATH to use with Qt], [at_cv_env_QT_INCPATH],
-  [at_cv_env_QT_INCPATH=`sed "/^INCPATH@<:@^A-Z=@:>@*=/!d;$qt_sed_filter" $at_mfile`])
-  AC_SUBST([QT_INCPATH], [$at_cv_env_QT_INCPATH])
-
-  AC_SUBST([QT_CPPFLAGS], ["$at_cv_env_QT_DEFINES $at_cv_env_QT_INCPATH"])
-
-  # Find the LFLAGS of Qt (Should have been named LDFLAGS)
-  AC_CACHE_CHECK([for the LDFLAGS to use with Qt], [at_cv_env_QT_LDFLAGS],
-  [at_cv_env_QT_LDFLAGS=`sed "/^LFLAGS@<:@^A-Z=@:>@*=/!d;$qt_sed_filter" $at_mfile`])
-  AC_SUBST([QT_LFLAGS], [$at_cv_env_QT_LDFLAGS])
-  AC_SUBST([QT_LDFLAGS], [$at_cv_env_QT_LDFLAGS])
-
-  # Find the LIBS of Qt.
-  AC_CACHE_CHECK([for the LIBS to use with Qt], [at_cv_env_QT_LIBS],
-  [at_cv_env_QT_LIBS=`sed "/^LIBS@<:@^A-Z@:>@*=/!d;$qt_sed_filter" $at_mfile`
-   if test x$at_darwin = xyes; then
-     # Fix QT_LIBS: as of today Libtool (GNU Libtool 1.5.23a) doesn't handle
-     # -F properly. The "bug" has been fixed on 22 October 2006
-     # by Peter O'Gorman but we provide backward compatibility here.
-     at_cv_env_QT_LIBS=`echo "$at_cv_env_QT_LIBS" \
-                             | sed 's/^-F/-Wl,-F/;s/ -F/ -Wl,-F/g'`
-   fi
-  ])
-  AC_SUBST([QT_LIBS], [$at_cv_env_QT_LIBS])
-
-  cd .. && rm -rf conftest.dir
-
-  # Run the user code
-  $5
-
-  done  # end hack (useless for to be able to use break)
-])
-
-# AT_REQUIRE_QT_VERSION(QT_version, RUN-IF-FAILED, RUN-IF-OK)
-# -----------------------------------------------------------
-# Check (using qmake) that Qt's version "matches" QT_version.
-# Must be run AFTER AT_WITH_QT. Requires autoconf 2.60.
-#
-# RUN-IF-FAILED is arbitrary code to execute if Qt cannot be found or if any
-# problem happens.  If this argument is omitted, then AC_MSG_ERROR will be
-# called.  RUN-IF-OK is arbitrary code to execute if Qt was successfully found.
-AC_DEFUN([AT_REQUIRE_QT_VERSION],
-[ AC_PREREQ([2.60])
-  # this is a hack to get decent flow control with 'break'
-  for _qt_ignored in once; do
-
-  if test x"$QMAKE" = x; then
-    AX_INSTEAD_IF([$2],
-                  [\$QMAKE is empty.\
-  Did you invoke AT@&t at _WITH_QT before AT@&t at _REQUIRE_QT_VERSION?])
-    break
-  fi
-  AC_CACHE_CHECK([for Qt's version], [at_cv_QT_VERSION],
-  [echo "$as_me:$LINENO: Running $QMAKE --version:" >&AS_MESSAGE_LOG_FD
-  $QMAKE --version >&AS_MESSAGE_LOG_FD 2>&1
-  qmake_version_sed=['/^.*\([0-9]\.[0-9]\.[0-9]\).*$/!d;s//\1/']
-  at_cv_QT_VERSION=`$QMAKE --version 2>&1 | sed "$qmake_version_sed"`])
-  if test x"$at_cv_QT_VERSION" = x; then
-    AX_INSTEAD_IF([$2], [Cannot detect Qt's version.])
-    break
-  fi
-  AC_SUBST([QT_VERSION], [$at_cv_QT_VERSION])
-  AS_VERSION_COMPARE([$QT_VERSION], [$1],
-    [AX_INSTEAD_IF([$2; break; ], [This package requires Qt $1 or above.])])
-
-  # Run the user code
-  $3
-
-  done  # end hack (useless for to be able to use break)
-])
-
-# _AT_TWEAK_PRO_FILE(QT_VAR, VALUE)
-# ---------------------------
-# @internal. Tweak the variable QT_VAR in the .pro.
-# VALUE is an IFS-separated list of value and each value is rewritten
-# as follows:
-#   +value  => QT_VAR += value
-#   -value  => QT_VAR -= value
-#    value  => QT_VAR += value
-AC_DEFUN([_AT_TWEAK_PRO_FILE],
-[ # Tweak the value of $1 in the .pro file for $2.
-
-  qt_conf=''
-  for at_mod in $2; do
-    at_mod=`echo "$at_mod" | sed 's/^-//; tough
-                                  s/^+//; beef
-                                  :ough
-                                  s/^/$1 -= /;n
-                                  :eef
-                                  s/^/$1 += /'`
-    qt_conf="$qt_conf
-$at_mod"
-  done
-  echo "$qt_conf" | sed 1d >>"$pro_file"
-])
diff --git a/m4/autotroll.mk b/m4/autotroll.mk
deleted file mode 100644
index 202693c..0000000
--- a/m4/autotroll.mk
+++ /dev/null
@@ -1,108 +0,0 @@
-# Makerules.
-# This file is part of AutoTroll.
-# Copyright (C) 2006, 2007, 2009, 2010  Benoit Sigoure.
-#
-# AutoTroll 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.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# In addition, as a special exception, the copyright holders of AutoTroll
-# give you unlimited permission to copy, distribute and modify the configure
-# scripts that are the output of Autoconf when processing the macros of
-# AutoTroll.  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
-# AutoTroll appear in them. The GNU General Public License (GPL) does govern
-# all other use of the material that constitutes AutoTroll.
-#
-# This special exception to the GPL applies to versions of AutoTroll
-# released by the copyright holders of AutoTroll.  Note that people who make
-# modified versions of AutoTroll are not obligated to grant this special
-# exception for their modified versions; it is their choice whether to do so.
-# The GNU General Public License gives permission to release a modified version
-# without this exception; this exception also makes it possible to release a
-# modified version which carries forward this exception.
-
- # ------------- #
- # DOCUMENTATION #
- # ------------- #
-
-# See autotroll.m4 :)
-
-
-SUFFIXES = .moc.cpp .moc.cc .moc.cxx .moc.C .h .hh .hpp \
-			.ui .ui.h .ui.hh .ui.hpp \
-			.qrc .qrc.cpp .qrc.cc .qrc.cxx .qrc.C
-
-# --- #
-# MOC #
-# --- #
-
-.hpp.moc.cpp:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.hh.moc.cpp:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.h.moc.cpp:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
-.hpp.moc.cc:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.hh.moc.cc:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.h.moc.cc:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
-.hpp.moc.cxx:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.hh.moc.cxx:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.h.moc.cxx:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
-.hpp.moc.C:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.hh.moc.C:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-.h.moc.C:
-	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
-# --- #
-# UIC #
-# --- #
-
-.ui.ui.hpp:
-	$(UIC) $< -o $@
-
-.ui.ui.hh:
-	$(UIC) $< -o $@
-
-.ui.ui.h:
-	$(UIC) $< -o $@
-
-# --- #
-# RCC #
-# --- #
-
-.qrc.qrc.cpp:
-	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
-.qrc.qrc.cc:
-	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
-.qrc.qrc.cxx:
-	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
-.qrc.qrc.C:
-	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
-DISTCLEANFILES = $(BUILT_SOURCES)
diff --git a/m4/ax_boost_base.m4 b/m4/ax_boost_base.m4
deleted file mode 100644
index 54a2a1b..0000000
--- a/m4/ax_boost_base.m4
+++ /dev/null
@@ -1,258 +0,0 @@
-# ===========================================================================
-#       http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_BOOST_BASE([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# DESCRIPTION
-#
-#   Test for the Boost C++ libraries of a particular version (or newer)
-#
-#   If no path to the installed boost library is given the macro searchs
-#   under /usr, /usr/local, /opt and /opt/local and evaluates the
-#   $BOOST_ROOT environment variable. Further documentation is available at
-#   <http://randspringer.de/boost/index.html>.
-#
-#   This macro calls:
-#
-#     AC_SUBST(BOOST_CPPFLAGS) / AC_SUBST(BOOST_LDFLAGS)
-#
-#   And sets:
-#
-#     HAVE_BOOST
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Thomas Porschberg <thomas at randspringer.de>
-#   Copyright (c) 2009 Peter Adolphs
-#
-#   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.
-
-#serial 20
-
-AC_DEFUN([AX_BOOST_BASE],
-[
-AC_ARG_WITH([boost],
-  [AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
-    [use Boost library from a standard location (ARG=yes),
-     from the specified location (ARG=<path>),
-     or disable it (ARG=no)
-     @<:@ARG=yes@:>@ ])],
-    [
-    if test "$withval" = "no"; then
-        want_boost="no"
-    elif test "$withval" = "yes"; then
-        want_boost="yes"
-        ac_boost_path=""
-    else
-        want_boost="yes"
-        ac_boost_path="$withval"
-    fi
-    ],
-    [want_boost="yes"])
-
-
-AC_ARG_WITH([boost-libdir],
-        AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
-        [Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]),
-        [
-        if test -d "$withval"
-        then
-                ac_boost_lib_path="$withval"
-        else
-                AC_MSG_ERROR(--with-boost-libdir expected directory name)
-        fi
-        ],
-        [ac_boost_lib_path=""]
-)
-
-if test "x$want_boost" = "xyes"; then
-    boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
-    boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
-    boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
-    boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
-    boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
-    if test "x$boost_lib_version_req_sub_minor" = "x" ; then
-        boost_lib_version_req_sub_minor="0"
-        fi
-    WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+  $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
-    AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
-    succeeded=no
-
-    dnl On 64-bit systems check for system libraries in both lib64 and lib.
-    dnl The former is specified by FHS, but e.g. Debian does not adhere to
-    dnl this (as it rises problems for generic multi-arch support).
-    dnl The last entry in the list is chosen by default when no libraries
-    dnl are found, e.g. when only header-only libraries are installed!
-    libsubdirs="lib"
-    ax_arch=`uname -m`
-    if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
-        libsubdirs="lib64 lib lib64"
-    fi
-
-    dnl first we check the system location for boost libraries
-    dnl this location ist chosen if boost libraries are installed with the --layout=system option
-    dnl or if you install boost with RPM
-    if test "$ac_boost_path" != ""; then
-        BOOST_CPPFLAGS="-I$ac_boost_path/include"
-        for ac_boost_path_tmp in $libsubdirs; do
-                if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
-                        BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
-                        break
-                fi
-        done
-    elif test "$cross_compiling" != yes; then
-        for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
-            if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
-                for libsubdir in $libsubdirs ; do
-                    if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
-                done
-                BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
-                BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
-                break;
-            fi
-        done
-    fi
-
-    dnl overwrite ld flags if we have required special directory with
-    dnl --with-boost-libdir parameter
-    if test "$ac_boost_lib_path" != ""; then
-       BOOST_LDFLAGS="-L$ac_boost_lib_path"
-    fi
-
-    CPPFLAGS_SAVED="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-    export CPPFLAGS
-
-    LDFLAGS_SAVED="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-    export LDFLAGS
-
-    AC_REQUIRE([AC_PROG_CXX])
-    AC_LANG_PUSH(C++)
-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-    @%:@include <boost/version.hpp>
-    ]], [[
-    #if BOOST_VERSION >= $WANT_BOOST_VERSION
-    // Everything is okay
-    #else
-    #  error Boost version is too old
-    #endif
-    ]])],[
-        AC_MSG_RESULT(yes)
-    succeeded=yes
-    found_system=yes
-        ],[
-        ])
-    AC_LANG_POP([C++])
-
-
-
-    dnl if we found no boost with system layout we search for boost libraries
-    dnl built and installed without the --layout=system option or for a staged(not installed) version
-    if test "x$succeeded" != "xyes"; then
-        _version=0
-        if test "$ac_boost_path" != ""; then
-            if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
-                for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
-                    _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
-                    V_CHECK=`expr $_version_tmp \> $_version`
-                    if test "$V_CHECK" = "1" ; then
-                        _version=$_version_tmp
-                    fi
-                    VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
-                    BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
-                done
-            fi
-        else
-            if test "$cross_compiling" != yes; then
-                for ac_boost_path in /usr /usr/local /opt /opt/local ; do
-                    if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
-                        for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
-                            _version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
-                            V_CHECK=`expr $_version_tmp \> $_version`
-                            if test "$V_CHECK" = "1" ; then
-                                _version=$_version_tmp
-                                best_path=$ac_boost_path
-                            fi
-                        done
-                    fi
-                done
-
-                VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
-                BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
-                if test "$ac_boost_lib_path" = ""; then
-                    for libsubdir in $libsubdirs ; do
-                        if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
-                    done
-                    BOOST_LDFLAGS="-L$best_path/$libsubdir"
-                fi
-            fi
-
-            if test "x$BOOST_ROOT" != "x"; then
-                for libsubdir in $libsubdirs ; do
-                    if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
-                done
-                if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
-                    version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
-                    stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
-                        stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
-                    V_CHECK=`expr $stage_version_shorten \>\= $_version`
-                    if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
-                        AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
-                        BOOST_CPPFLAGS="-I$BOOST_ROOT"
-                        BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
-                    fi
-                fi
-            fi
-        fi
-
-        CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-        export CPPFLAGS
-        LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-        export LDFLAGS
-
-        AC_LANG_PUSH(C++)
-            AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-        @%:@include <boost/version.hpp>
-        ]], [[
-        #if BOOST_VERSION >= $WANT_BOOST_VERSION
-        // Everything is okay
-        #else
-        #  error Boost version is too old
-        #endif
-        ]])],[
-            AC_MSG_RESULT(yes)
-        succeeded=yes
-        found_system=yes
-            ],[
-            ])
-        AC_LANG_POP([C++])
-    fi
-
-    if test "$succeeded" != "yes" ; then
-        if test "$_version" = "0" ; then
-            AC_MSG_NOTICE([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
-        else
-            AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
-        fi
-        # execute ACTION-IF-NOT-FOUND (if present):
-        ifelse([$3], , :, [$3])
-    else
-        AC_SUBST(BOOST_CPPFLAGS)
-        AC_SUBST(BOOST_LDFLAGS)
-        AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
-        # execute ACTION-IF-FOUND (if present):
-        ifelse([$2], , :, [$2])
-    fi
-
-    CPPFLAGS="$CPPFLAGS_SAVED"
-    LDFLAGS="$LDFLAGS_SAVED"
-fi
-
-])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
deleted file mode 100644
index b1251be..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,7356 +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 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 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 56 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_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
-
-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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "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
-_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_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])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
-_LT_PROG_ECHO_BACKSLASH
-
-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
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# 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'
-
-# 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_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 "X$][$1" | $Xsed -e "$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 "X$<var>" | $Xsed -e "$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'
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$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 "X\\\\\$\$var"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
-_LT_OUTPUT_LIBTOOL_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])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
-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) 2008 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.
-if test "$no_create" != yes; then
-  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)
-fi
-])# 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
-# 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_XSI_SHELLFNS
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  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)],
-  [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
-
-
-# _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([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)])
-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], [])
-
-
-# _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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 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"
-    ])
-    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" != ":"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# 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
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  _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=echo
-    _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
-# -----------------------
-# 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.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-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 "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-ECHO=${lt_ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $ECHO works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
-fi
-
-# 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
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-	 { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null
-      then
-        break
-      fi
-    done
-  fi
-
-  if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-     echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-     test "X$echo_testing_string" = "X$echo_test_string"; then
-    :
-  else
-    # The Solaris, AIX, and Digital Unix default echo programs unquote
-    # backslashes.  This makes it impossible to quote backslashes using
-    #   echo "$something" | sed 's/\\/\\\\/g'
-    #
-    # So, first we look for a working echo in the user's PATH.
-
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for dir in $PATH /usr/ucb; do
-      IFS="$lt_save_ifs"
-      if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-         test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        ECHO="$dir/echo"
-        break
-      fi
-    done
-    IFS="$lt_save_ifs"
-
-    if test "X$ECHO" = Xecho; then
-      # We didn't find a better echo, so look for alternatives.
-      if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' &&
-         echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` &&
-         test "X$echo_testing_string" = "X$echo_test_string"; then
-        # This shell has a builtin print -r that does the trick.
-        ECHO='print -r'
-      elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } &&
-	   test "X$CONFIG_SHELL" != X/bin/ksh; then
-        # If we have ksh, try running configure again with it.
-        ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-        export ORIGINAL_CONFIG_SHELL
-        CONFIG_SHELL=/bin/ksh
-        export CONFIG_SHELL
-        exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-      else
-        # Try using printf.
-        ECHO='printf %s\n'
-        if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' &&
-	   echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	  # Cool, printf works
-	  :
-        elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	  export CONFIG_SHELL
-	  SHELL="$CONFIG_SHELL"
-	  export SHELL
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	     test "X$echo_testing_string" = 'X\t' &&
-	     echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	     test "X$echo_testing_string" = "X$echo_test_string"; then
-	  ECHO="$CONFIG_SHELL [$]0 --fallback-echo"
-        else
-	  # maybe with a smaller string...
-	  prev=:
-
-	  for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	    if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null
-	    then
-	      break
-	    fi
-	    prev="$cmd"
-	  done
-
-	  if test "$prev" != 'sed 50q "[$]0"'; then
-	    echo_test_string=`eval $prev`
-	    export echo_test_string
-	    exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	  else
-	    # Oops.  We lost completely, so just stick with echo.
-	    ECHO=echo
-	  fi
-        fi
-      fi
-    fi
-  fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(lt_ECHO)
-])
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _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 __oline__ "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
-  ;;
-sparc*-*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*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	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_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
-
-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 \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-_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_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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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;
-    ;;
-
-  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
-    ;;
-
-  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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-	         = "XX$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 __oline__ "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
-
-void fnord() { int i=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;
-      /* 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:__oline__: $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:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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
-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
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then
-    # 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 -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # 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; }
-}'`
-  sys_lib_search_path_spec=`$ECHO $lt_search_path_spec`
-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
-  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
-  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=`$ECHO "X$lib" | $Xsed -e '\''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
-  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,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
-    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="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        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
-      ;;
-    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
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # 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
-  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
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-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[[123]]*) 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
-  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
-  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'
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  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
-	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 Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  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
-  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],
-       [shlibpath_overrides_runpath=yes])])
-  LDFLAGS=$save_LDFLAGS
-  libdir=$save_libdir
-
-  # 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;/^$/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
-  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
-  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
-  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
-    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
-  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
-  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([], [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
-
-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
-  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_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [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.
-  if ( 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
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    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
-  ;;
-
-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]) 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 Linux ELF.
-linux* | k*bsd*-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_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_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.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
-  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:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $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:__oline__: 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_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-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
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
-  _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([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};"\
-"     /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
-
-  # 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
-#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.  */
-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_save_LIBS="$LIBS"
-	  lt_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_save_LIBS"
-	  CFLAGS="$lt_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
-
-_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_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)=
-
-AC_MSG_CHECKING([for $compiler option to produce PIC])
-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)=
-      ;;
-    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
-	;;
-      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)
-	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*)
-	    # IBM XL 8.0 on PPC
-	    _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*)
-	    # 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'
-      ;;
-
-    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
-  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)
-      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'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # 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*)
-	# IBM XL C 8.0/Fortran 10.1 on PPC
-	_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)='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # 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)=''
-	  ;;
-	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*)
-	_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_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-
-#
-# 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])
-
-#
-# 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_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'
-  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
-    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")) && ([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*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-], [
-  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_flag_spec_ld, $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
-  if test "$with_gnu_ld" = 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
-      *\ [[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.9.1, 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 modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-_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(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/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-
-      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
-      ;;
-
-    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)
-      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=
-	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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# 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; $ECHO \"$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]]*)			# IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	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; $ECHO \"$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*)
-	  # 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)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_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 $compiler_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 $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'
-      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 $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
-      ;;
-
-    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 $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
-
-    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
-	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")) && ([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
-        _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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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
-	 _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'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  _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.
-      _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 `$ECHO "X$deplibs" | $Xsed -e '\''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(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    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
-      ;;
-
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $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 -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 -fPIC ${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 -a "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${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_flag_spec_ld, $1)='+b $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 -a "$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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${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'
-	  ;;
-	*)
-	  _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 $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 ${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 ${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_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $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_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _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*
-      AC_MSG_RESULT([$_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_flag_spec_ld], [1],
-    [[If ld is used when linking, 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([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
-_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([], [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_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-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
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
-# _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],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-
-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_flag_spec_ld, $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(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_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++"}
-  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 -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -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 "\-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
-          _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 $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; 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
-	    _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'
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    _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*)
-        # _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(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
-        ;;
-      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
-        ;;
-
-      freebsd[[12]]*)
-        # 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*)
-        ;;
-
-      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; $ECHO "X$list" | $Xsed'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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; $ECHO "X$list" | $Xsed'
-	    ;;
-          *)
-	    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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -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)
-        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; $ECHO "X$list" | $Xsed'
-
-	    _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 | $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 | $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 | $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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 will 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; $ECHO \"$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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  xl*)
-	    # 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; $ECHO \"$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='echo'
-
-	      # 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=echo
-	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" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-	    ;;
-	  *)
-	    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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${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 "\-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*)
-	    # 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='echo'
-
-	    # 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 -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 -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 "\-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 "\-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(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
-  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_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
-# 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
-])
-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 $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
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p 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
-       ;;
-
-    *.$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
-
-# 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*)
-    # 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_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
-# _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_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
-
-_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_flag_spec_ld, $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(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
-  CC=${F77-"f77"}
-  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"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
-# _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_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
-
-_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_flag_spec_ld, $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(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
-  CC=${FC-"f95"}
-  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"
-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_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-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
-
-## 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"
-])# _LT_LANG_GCJ_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_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-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"
-])# _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_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_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"}, \
-      = c,a/b,, \
-    && 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_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# 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
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# 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##*/}"
-}
-
-# 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_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}"}
-}
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=${1%%=*}
-  func_opt_split_arg=${1#*=}
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  case ${1} in
-    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-    *)    func_lo2o_result=${1} ;;
-  esac
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=${1%.*}.lo
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=$(( $[*] ))
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=${#1}
-}
-
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-
-# 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 ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -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 file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-dnl func_dirname_and_basename
-dnl A portable version of this function is already defined in general.m4sh
-dnl so there is no need for it here.
-
-# 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 "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-
-# sed scripts:
-my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
-my_sed_long_arg='1s/^-[[^=]]*=//'
-
-# func_opt_split
-func_opt_split ()
-{
-  func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"`
-  func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"`
-}
-
-# func_lo2o object
-func_lo2o ()
-{
-  func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"`
-}
-
-# func_xform libobj-or-source
-func_xform ()
-{
-  func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'`
-}
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-  func_arith_result=`expr "$[@]"`
-}
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-  func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
-}
-
-_LT_EOF
-esac
-
-case $lt_shell_append in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]+=\$[2]"
-}
-_LT_EOF
-    ;;
-  *)
-    cat << \_LT_EOF >> "$cfgfile"
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-  eval "$[1]=\$$[1]\$[2]"
-}
-
-_LT_EOF
-    ;;
-  esac
-])
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 34151a3..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,368 +0,0 @@
-# Helper functions for option handling.                    -*- 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 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],      [0], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [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],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [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 f3c5309..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.
-
-# Generated from ltversion.in.
-
-# serial 3017 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.2.6b])
-m4_define([LT_PACKAGE_REVISION], [1.3017])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6b'
-macro_revision='1.3017'
-_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 637bb20..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007 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 4 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_RC],		[AC_DEFUN([AC_LIBTOOL_RC])])
-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])])
diff --git a/m4/magics.m4 b/m4/magics.m4
deleted file mode 100644
index e608758..0000000
--- a/m4/magics.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-dnl
-dnl AM_PATH_MAGICS
-dnl
-AC_DEFUN([AM_PATH_MAGICS],
-[
-
-AC_ARG_WITH(magics,
-	AS_HELP_STRING([--with-magics],
-		[Prefix of Magics++ installation (optional, default is $MAGPLUS_HOME)]),
-	[
-	magics_config_prefix=$with_magics
-	],
-	[
-	if test x"${MAGPLUS_HOME}" != x; then
-		magics_config_prefix=$MAGPLUS_HOME
-	fi
-	]
-)
-
-if test x$magics_config_prefix != x ; then
-	MAGICS_CONFIG=$magics_config_prefix/bin/magics-config
-fi
-
-AC_PATH_PROG(MAGICS_CONFIG, magics-config, no)
-if test "$MAGICS_CONFIG" = "no" ; then
-	AC_MSG_ERROR([Cannot find 'magics-config'.])
-fi
-
-MAGICS_CFLAGS=`$MAGICS_CONFIG --cxxflags`
-MAGICS_LIBS=`$MAGICS_CONFIG --libs`
-MAGICS_PREFIX=`$MAGICS_CONFIG --prefix`
-AC_SUBST(MAGICS_CFLAGS)
-AC_SUBST(MAGICS_LIBS)
-AC_SUBST(MAGICS_PREFIX)
-
-magics_version=`$MAGICS_CONFIG --version`
-AC_MSG_RESULT([Using Magics++ version ${magics_version} from ${MAGICS_PREFIX}])
-])
diff --git a/magics-config.in b/magics-config.in
index 2172f29..9d93bd5 100644
--- a/magics-config.in
+++ b/magics-config.in
@@ -1,21 +1,21 @@
 #!/bin/sh
 
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-F77="@F77@"
-CC="@CC@"
-CXX="@CXX@"
-CXXFLAGS="@CXXFLAGS@" 
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=@CMAKE_INSTALL_PREFIX@/bin
+libdir=@CMAKE_INSTALL_PREFIX@/lib
+includedir=@CMAKE_INSTALL_PREFIX@/include
+F77="@CMAKE_Fortran_COMPILER@"
+CC="@CMAKE_C_COMPILER@"
+CXX="@CMAKE_CXX_COMPILER@"
+CXXFLAGS="@CMAKE_CXX_FLAGS@" 
 AXX="@AXX@"
-SHLIB_EXT="@SHLIB_EXT@"
-FFLAGS="@FFLAGS@"
+SHLIB_EXT="@CMAKE_SHARED_LIBRARY_SUFFIX@"
+FFLAGS="@CMAKE_Fortran_FLAGS@"
 CPPLIBS="@CPPLIBS@"
-py_dir="@PYTHON_SITE_PKG@"
+py_dir="@PYTHON_SITE_PACKAGES@"
 suffix=""
-
-#
+ 
+# 
 #  add --print-config
 #
 #
@@ -94,7 +94,7 @@ while test $# -gt 0; do
 		echo_prefix=yes
 		;;
 	--version)
-		echo @MAGICS_PACKAGE_VERSION@
+		echo "@MAGICS_VERSION_STR@"
 		;;
 	--with-cairo)
 		echo "@cairo@"
@@ -114,12 +114,15 @@ while test $# -gt 0; do
 	--with-qt)
 		echo "@qt@"
 		;;
-	--with-gd)
-		echo "@raster@"
+	--with-qtlib)
+		echo "@qtlib@"
 		;;
 	--with-bufr)
 		echo "@bufr@"
 		;;
+	--with-gd)
+		echo "no"
+		;;
 	--with-spot)
 		echo "@spot@"
 		;;
@@ -147,6 +150,12 @@ while test $# -gt 0; do
 	--libdir)
 		echo "${libdir}"
 		;;
+	--ld-lib)
+		echo "setup to use for lD_LIBRARY_PATH"
+		;;
+	--python)
+		echo "@PYTHON_SITE_PACKAGES@"
+		;;
 	--clibs)
 		echo_libs=yes
 		echo_clibs=yes
@@ -233,13 +242,14 @@ if test "$echo_cxxflags" = "yes"; then
 fi
 
 if test "$echo_libs" = "yes"; then
-if test -f ${libdir}/libMagPlus.${SHLIB_EXT} ; then
+if test -f ${libdir}/libMagPlus at CMAKE_SHARED_LIBRARY_SUFFIX@; then
 		my_libs="-L${libdir} -lMagPlus"
 	else
 		my_libs="${libdir}/libMagPlus.a"
 	fi
 
-	my_libs="${my_libs} @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ @FLIBS@"
+ 
+	my_libs="${my_libs} @MAGICS_EXTRA_LIBS@"
 
 	if test "$echo_clibs" = "yes"; then
 		my_libs="${my_libs} $CPPLIBS"
@@ -257,16 +267,18 @@ fi
 
 if test "$echo_static" = "yes"; then
 	if test -f ${libdir}/libMagPlus.a ; then
-	  static="${precision} ${libdir}/libMagPlus.a -L${libdir} @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ $CPPLIBS"
+	  static="${precision} ${libdir}/libMagPlus.a -L${libdir} @LDFLAGS@ @MAGICS_EXTRA_LIBS@ $CPPLIBS"
 	  echo ${static}
 	else
 	  echo "magics-config: NO STATIC LIBRARY available"
 	fi
 fi
 
+
+
 if test "$echo_shared" = "yes"; then
-	if test -f ${libdir}/libMagPlus.${SHLIB_EXT} ; then
-	  shared="${precision} -L${libdir} -lMagPlus @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ $CPPLIBS"
+	if test -f ${libdir}/libMagPlus at CMAKE_SHARED_LIBRARY_SUFFIX@ ; then
+	  shared=" ${precision} -L${libdir} -lMagPlus @LDFLAGS@ @MAGICS_EXTRA_LIBS@ $CPPLIBS"
 	  echo ${shared}
 	else
 	  echo "magics-config: NO SHARED LIBRARY"
@@ -282,14 +294,13 @@ if test "$compile" = "yes"; then
 	if test "${suffix}x" = "x"; then
 	   suffix="f"
 	fi
-
 	name="`basename $f77_file .${suffix}`"
 
 	if test ${name} != ${f77_file} ; then
 	      out="-o $name "              ### avoid overriding source file
 	fi
-	echo "$F77 ${out}$f77_file ${FFLAGS} ${precision} -L${libdir} -lMagPlus @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ $CPPLIBS"
-	$F77 ${out}$f77_file ${FFLAGS} ${precision} -L${libdir} -Wl,-rpath,${libdir} -lMagPlus @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ $CPPLIBS
+	echo "$F77 ${out}$f77_file ${FFLAGS} ${precision} -L${libdir} -lMagPlus @LDFLAGS@ @MAGICS_EXTRA_LIBS@ $CPPLIBS"
+	$F77 ${out}$f77_file ${FFLAGS} ${precision} -L${libdir} -Wl,-rpath,${libdir} -lMagPlus @LDFLAGS@ @MAGICS_EXTRA_LIBS@ $CPPLIBS
 fi
 
 if test "$compileC" = "yes"; then
@@ -303,6 +314,6 @@ if test "$compileC" = "yes"; then
 	if test ${name} != ${c_file} ; then
 	      out="-o $name "              ### avoid overriding source file
 	fi
-	echo "$CC ${out}$c_file ${CFLAGS} -L${libdir} -lMagPlus @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ $CPPLIBS @FLIBS@"
-	$CC ${out}$c_file ${CFLAGS} -I${includedir} -L${libdir} -Wl,-rpath,${libdir} -lMagPlus @LDFLAGS@ @MAGICS_3RDPARTY_LIBS@ $CPPLIBS @FLIBS@
+	echo "$CC ${out}$c_file ${CFLAGS} -L${libdir} -lMagPlus @LDFLAGS@ @MAGICS_EXTRA_LIBS@ $CPPLIBS @FLIBS@"
+	$CC ${out}$c_file ${CFLAGS} -I${includedir} -L${libdir} -Wl,-rpath,${libdir} -lMagPlus @LDFLAGS@ @MAGICS_EXTRA_LIBS@ $CPPLIBS @FLIBS@
 fi
diff --git a/magics-targets.cmake b/magics-targets.cmake
new file mode 100644
index 0000000..c09094f
--- /dev/null
+++ b/magics-targets.cmake
@@ -0,0 +1,30 @@
+# Generated by CMake 2.8.10.2
+
+IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+   MESSAGE(FATAL_ERROR "CMake >= 2.6.0 required")
+ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+CMAKE_POLICY(PUSH)
+CMAKE_POLICY(VERSION 2.6)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+SET(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Create imported target MagPlusSingle
+ADD_LIBRARY(MagPlusSingle STATIC IMPORTED)
+
+# Make sure the targets which have been exported in some other 
+# export set exist.
+
+# Import target "MagPlusSingle" for configuration "Release"
+SET_PROPERTY(TARGET MagPlusSingle APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+SET_TARGET_PROPERTIES(MagPlusSingle PROPERTIES
+  IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+  IMPORTED_LOCATION_RELEASE "/home/graphics/cgs/git/magics/lib/libMagPlusSingle.a"
+  )
+
+# Commands beyond this point should not need to know the version.
+SET(CMAKE_IMPORT_FILE_VERSION)
+CMAKE_POLICY(POP)
diff --git a/project_summary.cmake b/project_summary.cmake
new file mode 100644
index 0000000..80e58a6
--- /dev/null
+++ b/project_summary.cmake
@@ -0,0 +1,53 @@
+if(Boost_FOUND)
+  message( STATUS " Boost include : [${Boost_INCLUDE_DIRS}]" )
+endif()
+
+if( SWIG_FOUND AND NUMPY_FOUND )
+  message( STATUS " Swig (${SWIG_VERSION}) : [${SWIG_EXECUTABLE}]" )
+  message( STATUS " NumPy (${NUMPY_VERSION}) : [${NUMPY_INCLUDE_DIRS}]" )
+endif()
+
+if(PROJ4_FOUND)
+  message( STATUS " Proj4 include : [${PROJ4_INCLUDE_DIRS}]" )
+  message( STATUS "         libs  : [${PROJ4_LIBRARIES}]" )
+endif()
+
+if(PANGOCAIRO_FOUND)
+  message( STATUS " PangoCairo include : [${PANGOCAIRO_INCLUDE_DIRS}]" )
+  message( STATUS "              libs  : [${PANGOCAIRO_LIBRARIES}]" )
+endif()
+
+if(GRIB_API_FOUND)
+  message( STATUS " GRIB_API include : [${GRIB_API_INCLUDE_DIRS}]" )
+  message( STATUS "         libs     : [${GRIB_API_LIBRARIES}]" )
+endif()
+
+if(ODB_API_FOUND)
+  message( STATUS " ODB_API include  : [${ODB_API_INCLUDE_DIRS}]" )
+  message( STATUS "         libs     : [${ODB_API_LIBRARIES}]" )
+endif()
+
+if(EMOS_FOUND)
+  message( STATUS " EMOS   libs      : [${EMOS_LIBRARIES}]" )
+endif()
+
+if(FORTRANLIBS_FOUND)
+  message( STATUS " Fortran  libs    : [${FORTRAN_LIBRARIES}]" )
+endif()
+
+if(NETCDF_FOUND)
+  message( STATUS " NetCDF include   : [${NETCDF_INCLUDE_DIRS}]" )
+  message( STATUS "         libs     : [${NETCDF_LIBRARIES}]" )
+endif()
+
+if(QT_FOUND)
+  message( STATUS " QT include       : [${QT_INCLUDE_DIR}]" )
+  message( STATUS "         libs     : [${QT_LIBRARIES}]" )
+endif()
+
+if(EXPAT_FOUND)
+  message( STATUS " EXpat include       : [${EXPAT_INCLUDE_DIR}]" )
+  message( STATUS "         libs     : [${EXPAT_LIBRARIES}]" )
+endif()
+
+message( STATUS " Magics extra libs      : [${MAGICS_EXTRA_LIBS}]" )
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
new file mode 100644
index 0000000..0d94cc5
--- /dev/null
+++ b/python/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory( Magics )
diff --git a/python/Magics/CMakeLists.txt b/python/Magics/CMakeLists.txt
new file mode 100644
index 0000000..59de143
--- /dev/null
+++ b/python/Magics/CMakeLists.txt
@@ -0,0 +1,42 @@
+if( ENABLE_PYTHON AND NUMPY_FOUND )
+
+  ### python destination
+
+  set(PYTHON_SITE "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages" )
+  set(PYTHON_DEST "${PYTHON_SITE}/Magics" )
+
+  ### place in build tree so we can run python tests
+
+  configure_file( macro.py    macro.py    COPYONLY )
+  configure_file( metgram.py  metgram.py  COPYONLY )
+
+  ### build python bindings
+
+  configure_file( Magics.i.in  Magics.i )
+
+  include_directories( ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} )
+
+  set_source_files_properties( Magics.i PROPERTIES GENERATED TRUE CXX ON )
+
+  swig_add_module( Magics python Magics_interface.cc Magics.i )
+
+  set_source_files_properties(partio.i PROPERTIES SWIG_FLAGS "-includeall")
+
+  swig_link_libraries( Magics MagPlusShared ${PYTHON_LIBRARIES} )
+
+  execute_process( COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_BINARY_DIR}/Magics.py ${CMAKE_CURRENT_BINARY_DIR}/__init__.py )
+  
+  ### install to final destination
+
+  install( TARGETS _Magics DESTINATION ${PYTHON_DEST} )
+  install( FILES
+               macro.py
+               metgram.py
+           DESTINATION ${PYTHON_DEST} )
+
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/Magics.py
+           RENAME __init__.py
+           DESTINATION ${PYTHON_DEST} )
+
+endif()
+
diff --git a/python/Magics/Magics.i b/python/Magics/Magics.i
deleted file mode 100755
index 57c10bd..0000000
--- a/python/Magics/Magics.i
+++ /dev/null
@@ -1,66 +0,0 @@
-%module (docstring="This is a Python interface to Magics++") Magics
-
-%{
-#define SWIG_FILE_WITH_INIT
-/* Includes the header in the wrapper code */
-#include "Magics_interface.cc"
-%}
-
-// This tells SWIG to treat char ** as a special case
-//
-//  see http://www.swig.org/Doc1.3/Python.html#Python_nn59
-//
-%typemap(in) (const char **data, const int dim)
-{
-  /* Check if is a list */
-  if (PyList_Check($input))
-  {
-    int size = PyList_Size($input);
-    int i = 0;
-    $1 = (char **) malloc((size+1)*sizeof(char *));
-    $2 = size;
-    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;
-  }
-  else
-  {
-    PyErr_SetString(PyExc_TypeError,"not a list");
-    return NULL;
-  }
-}
-
-// This cleans up the char ** array we malloced before the function call
-%typemap(freearg) (const char **data, int dim)
-{
-  free((char *) $1);
-}
-
-
-/* 
-  N U M E R I C A L   A R R A Y S 
-*/
-%include "numpy.i"
-%init %{
-        import_array();
-%}
-
-%apply(double* IN_ARRAY1, int DIM1) {(double *data, int dim)}
-%apply(int* IN_ARRAY1, int DIM1) {(int *data, int dim)}
-
-%apply(int* IN_ARRAY2, int DIM1, int DIM2) {(int *data, const int dim1, const int dim2)}
-%apply(int* IN_ARRAY2, int DIM1, int DIM2, int DIM3) {(int *data, const int dim1, const int dim2, const int dim3)}
-
-%apply(double* IN_ARRAY2, int DIM1, int DIM2) {(double *data, const int dim1, const int dim2)}
-%apply(double* IN_ARRAY2, int DIM1, int DIM2, int DIM3) {(double *data, const int dim1, const int dim2, const int dim3)}
-
-/* Parse the header file to generate wrappers */
-%include "Magics_interface.cc"
diff --git a/python/Magics/Magics.i.in b/python/Magics/Magics.i.in
new file mode 100755
index 0000000..3663473
--- /dev/null
+++ b/python/Magics/Magics.i.in
@@ -0,0 +1,69 @@
+%module (docstring="This is a Python interface to Magics++") Magics
+
+%{
+#define SWIG_FILE_WITH_INIT
+/* Includes the header in the wrapper code */
+#include "Magics_interface.cc"
+%}
+
+%constant const char *__version__ ="@MAGICS_VERSION@";
+
+
+// This tells SWIG to treat char ** as a special case
+//
+//  see http://www.swig.org/Doc1.3/Python.html#Python_nn59
+//
+%typemap(in) (const char **data, const int dim)
+{
+  /* Check if is a list */
+  if (PyList_Check($input))
+  {
+    int size = PyList_Size($input);
+    int i = 0;
+    $1 = (char **) malloc((size+1)*sizeof(char *));
+    $2 = size;
+    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;
+  }
+  else
+  {
+    PyErr_SetString(PyExc_TypeError,"not a list");
+    return NULL;
+  }
+}
+
+// This cleans up the char ** array we malloced before the function call
+%typemap(freearg) (const char **data, int dim)
+{
+  free((char *) $1);
+}
+
+
+/* 
+  N U M E R I C A L   A R R A Y S 
+*/
+%include "numpy.i"
+%init %{
+        import_array();
+%}
+
+%apply(double* IN_ARRAY1, int DIM1) {(double *data, int dim)}
+%apply(int* IN_ARRAY1, int DIM1) {(int *data, int dim)}
+
+%apply(int* IN_ARRAY2, int DIM1, int DIM2) {(int *data, const int dim1, const int dim2)}
+%apply(int* IN_ARRAY2, int DIM1, int DIM2, int DIM3) {(int *data, const int dim1, const int dim2, const int dim3)}
+
+%apply(double* IN_ARRAY2, int DIM1, int DIM2) {(double *data, const int dim1, const int dim2)}
+%apply(double* IN_ARRAY2, int DIM1, int DIM2, int DIM3) {(double *data, const int dim1, const int dim2, const int dim3)}
+
+/* Parse the header file to generate wrappers */
+%include "Magics_interface.cc"
diff --git a/python/Magics/Magics_interface.cc b/python/Magics/Magics_interface.cc
index 2ac5146..99d16ea 100755
--- a/python/Magics/Magics_interface.cc
+++ b/python/Magics/Magics_interface.cc
@@ -77,6 +77,9 @@ void boxplot() {
 void taylor() {
   mag_taylor();
 } 
+void tephi() {
+  mag_tephi();
+} 
 
 void mimport() {
   mag_import();
@@ -93,6 +96,9 @@ void epsgraph() {
 void epscloud() {
   mag_epscloud();
 }
+void epsplumes() {
+  mag_epsplumes();
+}
 
 void epswind() {
   mag_epswind();
diff --git a/python/Magics/Makefile.am b/python/Magics/Makefile.am
deleted file mode 100644
index b5a611a..0000000
--- a/python/Magics/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-# Extra files to go into the distribution
-EXTRA_DIST = setup.py.in \
-	Magics.i numpy.i \
-	Magics_interface.cc \
-	macro.py metgram.py
-
-
-if MAGICS_PYTHON
-
-noinst_SCRIPTS = setup.py
-
-CLEANFILES = $(noinst_SCRIPTS) \
-	Magics.cc \
-	__init__.py \
-	_Magics.so
-
-# What we want to be installed
-pdir = $(libdir)/python$(PYTHON_VERSION)/site-packages/Magics
-p_DATA = \
-	_Magics.so \
-	__init__.py macro.py metgram.py numpy.i
-
-clean-local:
-	-rm -rf build 
-
-# Main call for the compilation of the Python module
-_Magics.so: setup.py 
-	$(PYTHON) setup.py build_ext --inplace
-	cp Magics.py __init__.py
-
-endif
-
-# There is an inherit dependency, we have to disable parallel builds for these
-# files otherwise 'make -j2' or similar is likely to hit the race condition.
-.NOTPARALLEL:
diff --git a/python/Magics/Makefile.in b/python/Magics/Makefile.in
deleted file mode 100644
index 4cff46d..0000000
--- a/python/Magics/Makefile.in
+++ /dev/null
@@ -1,527 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = python/Magics
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/setup.py.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES = setup.py
-CONFIG_CLEAN_VPATH_FILES =
-SCRIPTS = $(noinst_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-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__installdirs = "$(DESTDIR)$(pdir)"
-DATA = $(p_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# Extra files to go into the distribution
-EXTRA_DIST = setup.py.in \
-	Magics.i numpy.i \
-	Magics_interface.cc \
-	macro.py metgram.py
-
- at MAGICS_PYTHON_TRUE@noinst_SCRIPTS = setup.py
- at MAGICS_PYTHON_TRUE@CLEANFILES = $(noinst_SCRIPTS) \
- at MAGICS_PYTHON_TRUE@	Magics.cc \
- at MAGICS_PYTHON_TRUE@	__init__.py \
- at MAGICS_PYTHON_TRUE@	_Magics.so
-
-
-# What we want to be installed
- at MAGICS_PYTHON_TRUE@pdir = $(libdir)/python$(PYTHON_VERSION)/site-packages/Magics
- at MAGICS_PYTHON_TRUE@p_DATA = \
- at MAGICS_PYTHON_TRUE@	_Magics.so \
- at MAGICS_PYTHON_TRUE@	__init__.py macro.py metgram.py numpy.i
-
-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 python/Magics/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu python/Magics/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):
-setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-pDATA: $(p_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(pdir)" || $(MKDIR_P) "$(DESTDIR)$(pdir)"
-	@list='$(p_DATA)'; test -n "$(pdir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pdir)" && rm -f $$files
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-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 $(SCRIPTS) $(DATA)
-installdirs:
-	for dir in "$(DESTDIR)$(pdir)"; 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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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 MAGICS_PYTHON_FALSE@clean-local:
-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-pDATA
-
-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-pDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	clean-local 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-pDATA 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 uninstall uninstall-am uninstall-pDATA
-
-
- at MAGICS_PYTHON_TRUE@clean-local:
- at MAGICS_PYTHON_TRUE@	-rm -rf build 
-
-# Main call for the compilation of the Python module
- at MAGICS_PYTHON_TRUE@_Magics.so: setup.py 
- at MAGICS_PYTHON_TRUE@	$(PYTHON) setup.py build_ext --inplace
- at MAGICS_PYTHON_TRUE@	cp Magics.py __init__.py
-
-# There is an inherit dependency, we have to disable parallel builds for these
-# files otherwise 'make -j2' or similar is likely to hit the race condition.
-.NOTPARALLEL:
-
-# 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/Magics/import b/python/Magics/import
new file mode 100644
index 0000000..dc3d935
--- /dev/null
+++ b/python/Magics/import
@@ -0,0 +1,2 @@
+ys.path.insert(0, '/usr/local/apps/odb_api/0.9.26/lib/python2.7.1/site-packages')
+import odb
diff --git a/python/Magics/macro.py b/python/Magics/macro.py
index 9483039..4a2c9f5 100644
--- a/python/Magics/macro.py
+++ b/python/Magics/macro.py
@@ -35,6 +35,8 @@ actions={
 	"minput": "pinput",
 	"mtable": "ptable",
 	"ptable": "ptable",
+	"pboxplot": "pboxplot",
+	"mboxplot": "pboxplot",
 	"pinput": "pinput"
 	}
 
@@ -262,7 +264,7 @@ class Action(object):
 				else :
 					print "type???->", key
 
-		if self.action != None and actions[self.verb] != "":
+		if self.action != None and actions[self.verb] != "" and actions[self.verb] != "pinput":
 			print >>f, "\tcall %s\n"%actions[self.verb] 
 			for key in self.args.keys():
 				print >>f, "\tcall preset('%s')"%key 
@@ -272,8 +274,32 @@ class Action(object):
 			print >>f, ""
 
 
+	def clean_object(self, obj):
+
+		if type(obj) in (int, float, str, bool, numpy.float64):
+			return obj
+		elif type(obj) == unicode:
+			return str(obj)
+		elif type(obj) in (list, tuple, set, numpy.ndarray):
+			if type(obj[0]) != unicode:
+				return obj
+			obj = list(obj)
+			for i,v in enumerate(obj):
+				obj[i] = self.clean_object(v)
+		elif type(obj) == dict:
+			for i,v in obj.iteritems():
+				obj[i] = self.clean_object(v)
+		else:
+			print "Invalid object in data, converting to string: " 
+			print  type(obj)
+			obj = str(obj) 
+		return obj
+
 
 	def execute(self):
+
+		if ( self.action != Magics.odb) :
+		    self.args = self.clean_object(self.args)
 		for key in self.args.keys():
 			if isinstance(self.args[key], str):
 				if key == 'odb_data':
@@ -315,7 +341,7 @@ class Action(object):
 				if self.action == Magics.legend :
 					Magics.setc("legend", "on")
 				self.action()
-				if self.action != Magics.obs :
+				if self.action != Magics.obs and self.action != Magics.minput:
 					for key in self.args.keys():
 						Magics.reset(key)
 			else:
@@ -372,8 +398,8 @@ pobs = make_action("pobs", Magics.obs)
 mobs = make_action("mobs", Magics.obs)
 page = make_action("page", Magics.new_page)
 pinput = make_action("pinput", Magics.minput)
-minput = make_action("minput", Magics.minput, "Input Data")
-mtable = make_action("mtable", Magics.mtable, "CSV Table Decoder")
+minput = make_action("minput", Magics.minput, "Input+Data")
+mtable = make_action("mtable", Magics.mtable, "CSV+Table+Decoder")
 
 
 mwrepjson = make_action("mwrepjson", Magics.wrepjson, "WrepJSon")
@@ -383,7 +409,8 @@ mepswind = make_action("mepswind", Magics.epswind)
 mepswave = make_action("mepswave", Magics.epswave)
 mepsshading = make_action("mepsshading", Magics.epsshading)
 mepsgraph = make_action("mepsgraph", Magics.epsgraph)
-
+mepsplumes = make_action("mepsplumes", Magics.epsplumes)
+mtephi = make_action("mtephi", Magics.tephi)
 
 
 def examine(*args):
diff --git a/rpms/Magics_OBS.spec b/rpms/Magics_OBS.spec
new file mode 100644
index 0000000..37b059d
--- /dev/null
+++ b/rpms/Magics_OBS.spec
@@ -0,0 +1,195 @@
+Name: Magics
+Version: 2.14.8
+Release: 1.1
+Summary: Library and tools to visualize meteorological data and statistics
+URL: http://www.ecmwf.int/products/data/software/magics++.html
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Source0: %{name}-%{version}.tar.bz2
+License: Apache V2.0
+# Copyright 2011 ECMWF
+Group: Productivity/Scientific/Other
+Obsoletes: %{name}++
+
+Requires: emos
+Requires: grib_api >= 1.9.8
+Requires: cairo    >= 1.4.0
+
+##################################################
+
+#!BuildIgnore: post-build-checks
+
+BuildRequires: gcc-c++
+BuildRequires: swig
+BuildRequires: perl-XML-Parser
+BuildRequires: cairo-devel
+BuildRequires: pango-devel
+BuildRequires: grib_api-devel
+BuildRequires: libqt4-devel
+BuildRequires: emos 
+BuildRequires: boost-devel 
+
+
+%if 0%{?suse_version} > 1120
+BuildRequires: libQtWebKit-devel
+BuildRequires: libqt4-devel
+Requires: netcdf libnetcdf4
+Requires: python
+BuildRequires: python-devel python-numpy-devel swig
+BuildRequires: netcdf libnetcdf4 libnetcdf-devel
+%endif
+
+%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel_version}
+
+BuildRequires: pkgconfig gcc-gfortran
+BuildRequires: expat expat-devel
+
+%else
+BuildRequires: gd gd-devel
+Requires: gd gd-devel
+BuildRequires: gcc-fortran libexpat-devel
+%if 0%{?suse_version} > 1100
+BuildRequires: libjasper-devel
+%endif
+%endif
+
+
+################################################
+
+%description
+Runtime files for Magics - The library and tools to visualize meteorological data and statistics
+
+%package devel
+Summary: Developing package for Magics
+Group: Development/Libraries/C and C++
+Requires: %{name} grib_api-devel
+Obsoletes: %{name}++-devel
+%description devel
+Header and library files for Magics - The library and tools to visualize meteorological data and statistics
+
+%if 0%{?suse_version} > 1100
+
+%package metview-devel
+Summary: Magics package for Metview 4
+Group: Development/Libraries/C and C++
+Requires: %{name}-devel
+%description metview-devel
+Magics header and library to compile Metview
+
+%endif
+
+Authors:
+--------
+  (ECMWF Meteorological Visualisation Section)
+  Sylvie Lamy-Thepaut
+  Stephan Siemen
+  Fernando Ii
+  Iain Russell
+  Sandor Kertesz 
+
+##############################################
+
+%prep
+%setup -q
+%build
+%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel_version}
+  ./configure --prefix=/usr --libdir=%_libdir --disable-netcdf --enable-bufr --enable-json --disable-jasper --disable-raster
+%else
+%if 0%{?suse_version} > 1120
+  ./configure --prefix=/usr --libdir=%_libdir --enable-netcdf --enable-bufr --enable-json --enable-metview --enable-python CXXFLAGS="-O2 -mtune=generic" 
+%else
+  ./configure --prefix=/usr --libdir=%_libdir --disable-netcdf --enable-bufr --enable-json
+%endif
+%endif
+
+make
+%install
+# install all files into the BuildRoot
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+# clean up the hard disc after build
+rm -rf $RPM_BUILD_ROOT
+
+
+%post -p /sbin/ldconfig 
+%postun -p /sbin/ldconfig 
+
+###############################################
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS ChangeLog NOTICE LICENSE
+/usr/bin/magmlx
+/usr/bin/magjson
+/usr/bin/magics-config
+/usr/bin/magicsCompatibilityChecker
+/usr/share/magics
+%_libdir/libMagPlus.so.*
+%if 0%{?suse_version} == 1130
+%_libdir/python2.6/site-packages
+%endif
+%if 0%{?suse_version} > 1130
+%_libdir/python2.7/site-packages
+%endif
+
+
+%files devel
+%defattr(-,root,root)
+/usr/include/magics
+/usr/share/aclocal/magics.m4
+%_libdir/pkgconfig/magics.pc
+%_libdir/libMagPlusSingle.a
+%_libdir/libMagPlusDouble.a
+%_libdir/libMagPlus.so
+%_libdir/libMagPlus.la
+
+%if 0%{?suse_version} > 1120
+%files metview-devel
+%defattr(-,root,root)
+%_libdir/libMagPlusQt.la
+%_libdir/libMagPlusQt.so*
+%_libdir/libMagWrapper.a
+%endif
+
+################################################
+
+%changelog
+* Mon Dec 12 2011 - magics at ecmwf.int
+- update to version 2.14.8 (bug fixe for python interface and borders)
+
+* Mon Nov 22 2011 - magics at ecmwf.int
+- update to version 2.14.5 (bug fixe for graph plotting with symbols)
+
+* Mon Nov 21 2011 - magics at ecmwf.int
+- update to version 2.14.4 (bug fixes, optimisations for SVG)
+
+* Mon Nov 14 2011 - magics at ecmwf.int
+- update to version 2.14.2 (bug fixes, fixes for python interface)
+
+* Thu Oct 26 2011 - magics at ecmwf.int
+- update to version 2.14.1 (new coastlines, new python interface)
+
+* Thu Jun 16 2011 - magics at ecmwf.int
+- update to version 2.12.9 (bug fixes in layout and PostScript output)  
+
+* Thu Apr 15 2011 - magics at ecmwf.int
+- update to version 2.12.7 (remove unnecessary warning messages)  
+
+* Thu Apr 14 2011 - magics at ecmwf.int
+- update to version 2.12.6 (add JSON and Metview 4.0.4 support)  
+
+* Thu Dec 02 2010 - magics at ecmwf.int
+- update to version 2.12.0  
+
+* Fri Nov 20 2010 - magics at ecmwf.int
+- update to version 2.11.5  (threaded contouring, Metview support)
+
+* Fri Jun 25 2010 - magics at ecmwf.int
+- update to version 2.10.2  (improve hatch shading + SVG output)
+
+* Mon May 03 2010 - magics at ecmwf.int
+- update to version 2.10  (add synop plotting)
+
+* Tue Oct 20 2009 - magics at ecmwf.int
+- initial package
+
diff --git a/rpms/Makefile.am b/rpms/Makefile.am
deleted file mode 100644
index f06bb7b..0000000
--- a/rpms/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-rpmspec=Magics.spec
-
-rpmmacros =\
-	--define="_rpmdir $${PWD}"\
-	--define="_srcrpmdir $${PWD}"\
-	--define="_sourcedir $${PWD}/.."\
-	--define="_specdir $${PWD}"\
-	--define="_builddir $${PWD}"
-
-RPMBUILD = rpmbuild
-RPMFLAGS = --nodeps --buildroot="$${PWD}/_rpm"
-
-rpmcheck:
-	if [ which $(RPMBUILD) &> /dev/null ]; then \
-	  echo "target requires Linux ..."; \
-	  (exit 1); exit 1; \
-	fi
-
-srcrpm: rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -bs $(rpmmacros) $(rpmspec)
-
-
-rpms: rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -ba $(rpmmacros) $(rpmspec)
-
-.PHONY: rpmcheck srcrpm rpms
diff --git a/rpms/Makefile.in b/rpms/Makefile.in
deleted file mode 100644
index c4adcfa..0000000
--- a/rpms/Makefile.in
+++ /dev/null
@@ -1,467 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = rpms
-DIST_COMMON = $(srcdir)/Magics.spec.in $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES = Magics.spec
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-rpmspec = Magics.spec
-rpmmacros = \
-	--define="_rpmdir $${PWD}"\
-	--define="_srcrpmdir $${PWD}"\
-	--define="_sourcedir $${PWD}/.."\
-	--define="_specdir $${PWD}"\
-	--define="_builddir $${PWD}"
-
-RPMBUILD = rpmbuild
-RPMFLAGS = --nodeps --buildroot="$${PWD}/_rpm"
-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 rpms/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu rpms/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):
-Magics.spec: $(top_builddir)/config.status $(srcdir)/Magics.spec.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-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 \
-	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 uninstall uninstall-am
-
-
-rpmcheck:
-	if [ which $(RPMBUILD) &> /dev/null ]; then \
-	  echo "target requires Linux ..."; \
-	  (exit 1); exit 1; \
-	fi
-
-srcrpm: rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -bs $(rpmmacros) $(rpmspec)
-
-rpms: rpmcheck $(rpmspec)
-	$(RPMBUILD) $(RPMFLAGS) -ba $(rpmmacros) $(rpmspec)
-
-.PHONY: rpmcheck srcrpm rpms
-
-# 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/CMakeLists.txt b/share/CMakeLists.txt
new file mode 100644
index 0000000..2f64ec1
--- /dev/null
+++ b/share/CMakeLists.txt
@@ -0,0 +1,3 @@
+install ( DIRECTORY magics DESTINATION ${INSTALL_DATA_DIR}/.. FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
+
+
diff --git a/share/magics/10m/10m_populated_places_simple.dbf b/share/magics/10m/10m_populated_places_simple.dbf
deleted file mode 100644
index 1823111..0000000
Binary files a/share/magics/10m/10m_populated_places_simple.dbf and /dev/null differ
diff --git a/share/magics/10m/10m_populated_places_simple.prj b/share/magics/10m/10m_populated_places_simple.prj
deleted file mode 100644
index 9e35477..0000000
--- a/share/magics/10m/10m_populated_places_simple.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984", DATUM["D_WGS_1984", SPHEROID["WGS_1984", 6378137.0, 298.257223563]], PRIMEM["Greenwich", 0.0], UNIT["degree", 0.017453292519943295], AXIS["Longitude", EAST], AXIS["Latitude", NORTH]]
\ No newline at end of file
diff --git a/share/magics/10m/10m_populated_places_simple.shp b/share/magics/10m/10m_populated_places_simple.shp
deleted file mode 100644
index 90d2b4e..0000000
Binary files a/share/magics/10m/10m_populated_places_simple.shp and /dev/null differ
diff --git a/share/magics/10m/10m_populated_places_simple.shx b/share/magics/10m/10m_populated_places_simple.shx
deleted file mode 100644
index 28c7910..0000000
Binary files a/share/magics/10m/10m_populated_places_simple.shx and /dev/null differ
diff --git a/share/magics/bufr_80.xml b/share/magics/bufr_80.xml
new file mode 100644
index 0000000..734e57f
--- /dev/null
+++ b/share/magics/bufr_80.xml
@@ -0,0 +1,140 @@
+<!--
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+ This file describes BUFR codes for the various parameters and suptypes 
+ as used at ECMWF (098)  
+
+-->
+<centre name='80'>
+  <bufr_identifiers>
+    <wind_direction descriptor='11001'/>
+    <wind_speed descriptor='11002'/>
+    <wind_gust_direction descriptor='11043'/>
+    <wind_gust_speed descriptor='11041'/>
+    <height_above_sea descriptor='07030'/>
+   	 <height_meters  descriptor='10195'/>
+    <dewpoint descriptor='12103'/>
+    <temperature descriptor='12101'/>
+    <relative_humidity descriptor='13003'/>
+    	<pressure_1 descriptor='07004'/>
+    	<pressure_2 descriptor='07006'/>
+    <sea_temperature descriptor='22043'/>
+    	<u_component descriptor='11192'/>
+   	 <v_component descriptor='11193'/>
+    <altitude_meters descriptor='07032'/>
+    	<virtual_temperature descriptor='12007'/>
+    <water_precip descriptor='13011'/>
+    	<total_cloud descriptor='20010'/>
+    <pressure  descriptor='10004'/>  
+   	 <wind_direction_10meters descriptor='11011'/>
+   	 <wind_speed_10meters descriptor='11012'/>
+    	<horizontal_visibility descriptor='20001'/>
+    <present_weather descriptor='20003'/>
+    	<temperature_2meters descriptor='12004'/>
+   	 <low_cloud descriptor='20012'/>
+   	 <medium_cloud descriptor='20012'/>
+   	 <high_cloud descriptor='20012'/>
+    	<low_cloud_nebulosity descriptor='20011'/>
+    	<medium_cloud_nebulosity descriptor='20011'/>
+    	<high_cloud_nebulosity descriptor='20011'/>
+    	<low_cloud_height descriptor='20013'/>
+   	 <medium_cloud_height descriptor='20013'/>
+   	 <high_cloud_height descriptor='20013'/>
+    <msl_pressure descriptor='10051'/>
+    <pressure_tendency_characteristic descriptor='10063'/>
+    <pressure_tendency_amount descriptor='10061'/>
+    	<past_weather_1 descriptor='20004'/>
+    	<past_weather_2 descriptor='20005'/>
+    	<cloud_amount descriptor='20011'/>
+    	<height_of_cloud_base descriptor='20013'/>
+   	 <dewpoint_2meters descriptor='12006'/>
+    <sea_temperature descriptor='22043'/>
+    <ship_direction descriptor='1012'/>
+    <drift_speed descriptor='1014'/>
+    <total_water_depth descriptor='22063'/>
+    <depth_below_sea descriptor='7062'/>
+    <salinity descriptor='22062'/>
+    <current_direction descriptor='22004'/>
+    <current_speed descriptor='22031'/>
+    		<ship_speed descriptor='1013'/>
+   	 <total_cloud descriptor='20010'/>
+    <wind_wave_direction descriptor='22002'/>
+    <wind_wave_period descriptor='22012'/>
+    <wind_wave_height descriptor='22022'/>
+    <swell_direction descriptor='22003'/>
+    <swell_period descriptor='22013'/>
+    <swell_heigth descriptor='22023'/>
+    <wave_direction descriptor='22001'/>
+    <wave_period descriptor='22011'/>
+    <wave_height descriptor='22021'/>
+    <hour descriptor='4004'/>
+    <minute descriptor='4005'/>
+    <latitude descriptor='5001'/>
+    <longitude descriptor='6001'/>
+    <latitude_1 descriptor='5001'/>
+    <latitude_2 descriptor='27004'/>
+    <longitude_1 descriptor='6001'/>
+    <longitude_2 descriptor='28004'/>
+    	<station_height descriptor='7001'/>
+    	<depth_below_land_surface descriptor='7061'/>
+    	<soil_temperature descriptor='12030'/>
+    	<geopotential descriptor='10003'/>
+	<past_precipitation descriptor='13021'/>
+  </bufr_identifiers>
+
+  <type value='0'>
+	<subtype value='1' template='synop'>synop land</subtype>
+	<subtype value='2' template='synop'>synop land record 2</subtype>
+	<subtype value='3' template='synop'>synop land auto </subtype>
+	<subtype value='4' template='synop'>synop land auto </subtype>
+	<subtype value='140' template='metar'>Metar</subtype>
+  </type>
+
+  <type value='1'>
+	<subtype value='9' template='synop_ship'>synop ship abbreviated</subtype>
+	<subtype value='11' template='synop_ship'>synop ship</subtype>
+	<subtype value='12' template='synop_ship'>synop ship record2</subtype>
+	<subtype value='13' template='synop_ship'>synop ship auto</subtype>
+	<subtype value='14' template='synop_ship'>synop ship auto2</subtype>
+	<subtype value='19' template='synop_ship'>synop ship reduced</subtype>
+	<subtype value='21' template='dribu_surface'>dribu surface</subtype>
+	<subtype value='25' template='buoy'>buoy</subtype>
+  </type>
+
+  <type value='2'>
+	<subtype value='91'>pilot</subtype>
+	<subtype value='101' template='temp'>temp</subtype>
+  </type>
+
+  <type value='4'>
+	<subtype value='142' template='airep'></subtype>
+	<subtype value='145' template='acar'></subtype>
+  </type>
+
+  <type value='5'>
+	<subtype value='82' template='satob'>satob wind</subtype>
+	<subtype value='83' template='satob'>satob wind and temperature</subtype>
+	<subtype value='84' template='satob'>satob section 4</subtype>
+	<subtype value='85' template='satob'>satob section 5</subtype>
+	<subtype value='89' template='unknown'>???</subtype>
+	<subtype value='87' template='unknown'>???</subtype>
+	<subtype value='88' template='unknown'>???</subtype>
+  </type>
+<type value='31'>
+        <subtype value='131' template='dribu_buoy'>dribu buoy</subtype>
+  </type>
+</centre>
diff --git a/share/magics/contour_ids.json b/share/magics/contour_ids.json
new file mode 100644
index 0000000..1e13780
--- /dev/null
+++ b/share/magics/contour_ids.json
@@ -0,0 +1 @@
+{"Contour shade (Range: -10 - 10)": 72, "925 hPa geopotential DEFAULT": 37, "850 hPa relative vorticity DEFAULT": 34, "925 hPa temperature DEFAULT": 39, "Mean wave period probability DEFAULT": 143, "Convective available potential energy (CAPE) probability DEFAULT": 117, "Ensemble mean for 300 hPa geopotential height DEFAULT": 121, "2m temperature extreme forecast index DEFAULT": 13, "Contour shade (Range: 30 - 100, green)": 109, "Contour (interval 5, thickness 2, blue)": 53, "300 hPa win [...]
\ No newline at end of file
diff --git a/share/magics/contours.json b/share/magics/contours.json
new file mode 100644
index 0000000..a3532ff
--- /dev/null
+++ b/share/magics/contours.json
@@ -0,0 +1 @@
+{"41": {"contour_line_colour": "yellow_green", "contour_label_colour": "rgb(0.25,0.75,0)", "contour_label_height": "0.4", "contour_reference_level": "50", "contour_label_frequency": "1", "contour_hilo": "off", "contour_line_thickness": "2", "contour_level_selection_type": "interval", "contour_label": "on", "contour_min_level": "30", "contour_highlight_frequency": "3", "contour_highlight_colour": "kelly_green", "contour_highlight_thickness": "3", "legend": "on", "contour_interval": "10"}, [...]
\ No newline at end of file
diff --git a/share/magics/default.json b/share/magics/default.json
new file mode 100644
index 0000000..1bff616
--- /dev/null
+++ b/share/magics/default.json
@@ -0,0 +1 @@
+{"default": [52, 55, 56, 60, 63, 69, 71, 72, 75, 77, 78, 82, 83, 89, 90, 93, 96, 98, 100, 101, 103, 106, 107, 109, 111, 112, 132, 156, 174, 176, 178, 181, 182], "shade": [57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 132, 134, 135, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180, 181, 182]}
\ No newline at end of file
diff --git a/share/magics/epsg.json b/share/magics/epsg.json
index e43cd2b..897539e 100644
--- a/share/magics/epsg.json
+++ b/share/magics/epsg.json
@@ -32,6 +32,16 @@
             "method" : "conic"
     	}
     },
+   {
+		"lambert_north_atlantic" : {
+    		"definition" : "+proj=lcc +lon_0=40w +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84",
+			"min_longitude" : -220,
+			"min_latitude" : -20,
+			"max_longitude" : +140,
+			"max_latitude" : 90,
+            "method" : "conic"
+    	}
+    },
     {
         "EPSG:32661" : {
     		"definition" : "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs",
@@ -83,6 +93,57 @@
             "method" : "geos"
     	}
      },
+    {
+    "meteosat_0" : {
+    		"definition" : "+proj=geos +h=42164000 +ellps=WGS84 +lon_0=0",
+			"min_longitude" : -70,
+			"min_latitude" : -80,
+			"max_longitude" : 70,
+			"max_latitude" : 80,
+            "method" : "geos"
+    	}
+     },
+    {
+    "meteosat_575" : {
+    		"definition" : "+proj=geos +h=42164000 +ellps=WGS84 +lon_0=57.5",
+			"min_longitude" : -10,
+			"min_latitude" : -80,
+			"max_longitude" : 130,
+			"max_latitude" : 80,
+            "method" : "geos"
+    	}
+     },
+    {
+    "meteosat_145" : {
+    		"definition" : "+proj=geos +h=42164000 +ellps=WGS84 +lon_0=145",
+			"min_longitude" : 75,
+			"min_latitude" : -80,
+			"max_longitude" : 215,
+			"max_latitude" : 80,
+            "method" : "geos"
+    	}
+     },
+    {
+    "goes-e" : {
+    		"definition" : "+proj=geos +h=42164000 +ellps=WGS84 +lon_0=-75",
+			"min_longitude" : -145,
+			"min_latitude" : -80,
+			"max_longitude" : -5,
+			"max_latitude" : 80,
+            "method" : "geos"
+    	}
+     },
+    {
+    "goes-w" : {
+    		"definition" : "+proj=geos +h=42164000 +ellps=WGS84 +lon_0=-135",
+			"min_longitude" : -205,
+			"min_latitude" : -80,
+			"max_longitude" : -65,
+			"max_latitude" : 80,
+            "method" : "geos"
+    	}
+     },
+
      {
     "goode" : {
     		"definition" : "+proj=goode +ellps=WGS84",
@@ -113,17 +174,38 @@
             "method" : "geos"
     	}
      },
+     {
+    "robinson" : {
+    		"definition" : "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_def",
+			"min_longitude" : -180,
+			"min_latitude" : -90,
+			"max_longitude" : 180,
+			"max_latitude" : 90,
+            "method" : "geos"
+    	}
+     },
 	{
     "google" : {
-    		"definition" : "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m", 
+    		"definition" : "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m",
 			"min_longitude" : -180,
 			"min_latitude" : -90,
 			"max_longitude" : 180,
 			"max_latitude" : 90,
-            "method" : "geos"
+            "method" : "simple"
+    	}
+     },
+     {
+    "efas" : {
+    		"definition" : "+proj=laea +lat_0=48.0000000000 +lon_0=9.0000000000 +x_0=0.0000000000 +y_0=0.0000000000 +datum=WGS84 +a=6378388 +b=6378388 +no_defs",
+			"min_longitude" : -180,
+			"min_latitude" : -20,
+			"max_longitude" : 180,
+			"max_latitude" : 89,
+            "method" : "conic"
     	}
      },
-      {
+    
+     {
     "bonne" : {
     		"definition" : "+proj=bonne +lon_0=0 +x_0=0 +y_0=0 +lat_1=60 +ellps=WGS84 +datum=WGS84 +units=m +no_defs",
 			"min_longitude" : -180,
diff --git a/share/magics/layer_contours.json b/share/magics/layer_contours.json
new file mode 100644
index 0000000..7c51cda
--- /dev/null
+++ b/share/magics/layer_contours.json
@@ -0,0 +1 @@
+{"0": [43, 88, 98, 104, 100], "3": [134, 89], "4": [43, 88, 98, 104, 100], "5": [62, 66, 67, 65, 63, 64, 60], "6": [98, 43, 110, 104, 88, 111], "7": [62, 66, 67, 65, 63, 64, 60], "8": [98, 43, 110, 104, 88, 111], "9": [134, 89], "10": [167, 80, 78, 57, 74, 42, 79, 75], "11": [167, 80, 78, 57, 74, 42, 79, 75], "12": [62, 66, 67, 65, 63, 64, 60], "14": [41, 108, 109], "15": [167, 80, 78, 57, 74, 42, 79, 75], "16": [68, 72], "17": [167, 80, 78, 57, 74, 42, 79, 75], "18": [62, 66, 67, 65, 63 [...]
\ No newline at end of file
diff --git a/share/magics/layer_ids.json b/share/magics/layer_ids.json
new file mode 100644
index 0000000..a43e7b6
--- /dev/null
+++ b/share/magics/layer_ids.json
@@ -0,0 +1 @@
+{"10m wind gust extreme forecast index": 3, "Convective available potential energy (CAPE)": 50, "2m temperature probability": 18, "300 hPa wind": 21, "925 hPa relative humidity": 46, "500 hPa relative humidity": 26, "Total precipitation extreme forecast index": 99, "2 metre dew point temperature": 10, "High cloud cover": 65, "Ensemble spread for mean sea level pressure": 64, "Model orography from ensemble forecast": 83, "300 hPa wind speed": 22, "10m wind speed extreme forecast index": 9 [...]
\ No newline at end of file
diff --git a/share/magics/layers.json b/share/magics/layers.json
new file mode 100644
index 0000000..106d9ad
--- /dev/null
+++ b/share/magics/layers.json
@@ -0,0 +1 @@
+{"0": {"typeOfLevel": "surface", "marsStream": "oper", "level": "0", "marsClass": "od", "number": "0", "marsType": "fc", "units": "m s**-1", "shortName": "10fg", "paramId": "49", "stepRange": "23-24"}, "1": {"typeOfLevel": "surface", "marsStream": "oper", "level": "0", "marsClass": "od", "number": "0", "marsType": "fc", "units": "m s**-1", "shortName": "100v", "paramId": "228247", "stepRange": "0"}, "2": {"typeOfLevel": "surface", "marsStream": "oper", "level": "0", "marsClass": "od", "n [...]
\ No newline at end of file
diff --git a/share/magics/level.json b/share/magics/level.json
new file mode 100644
index 0000000..63d9086
--- /dev/null
+++ b/share/magics/level.json
@@ -0,0 +1 @@
+{"200": [41, 108, 109], "850": [42, 43, 45, 47, 51, 52, 53, 54, 55, 70, 71, 73, 78, 79, 80, 92, 93, 94, 98, 101, 102, 110, 111, 112, 115, 167], "300": [41, 45, 51, 52, 53, 54, 55, 70, 71, 73, 94, 103, 105, 106, 108, 109, 115], "700": [42, 43, 44, 45, 47, 51, 52, 53, 54, 55, 70, 71, 73, 76, 77, 78, 79, 80, 86, 94, 98, 110, 111, 112, 115, 167], "315": [49, 81, 101], "0": [42, 43, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 74, 75, 78, 79, [...]
\ No newline at end of file
diff --git a/share/magics/marsClass.json b/share/magics/marsClass.json
new file mode 100644
index 0000000..051905e
--- /dev/null
+++ b/share/magics/marsClass.json
@@ -0,0 +1 @@
+{"od": [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 134, 135, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180]}
\ No newline at end of file
diff --git a/share/magics/marsStream.json b/share/magics/marsStream.json
new file mode 100644
index 0000000..f641a2d
--- /dev/null
+++ b/share/magics/marsStream.json
@@ -0,0 +1 @@
+{"oper": [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 90, 91, 94, 95, 96, 97, 98, 99, 100, 101, 104, 107, 108, 109, 110, 111, 112, 113, 114, 115, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180], "waef": [49, 60, 62, 63, 64, 65, 66, 67, 82, 83, 84], "enfo": [42, 43, 46, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 72, 74, 75, 78, 79, 80, 88, 89, 90, 91, 92, 93, 98, 99 [...]
\ No newline at end of file
diff --git a/share/magics/marsType.json b/share/magics/marsType.json
new file mode 100644
index 0000000..b921d57
--- /dev/null
+++ b/share/magics/marsType.json
@@ -0,0 +1 @@
+{"em": [51, 52, 53, 55, 115, 167], "efi": [68, 72, 89, 134, 135], "fc": [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 91, 94, 95, 96, 97, 98, 99, 100, 101, 104, 107, 108, 109, 110, 111, 112, 113, 114, 115, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180], "pf": [42, 43, 46, 49, 51, 52, 53, 54, 55, 56, 57, 58, 60, 62, 63, 64, 65, 66, 67, 74, 75, 78, 79, 80, 82, 83, 84, 88, [...]
\ No newline at end of file
diff --git a/share/magics/natural_earth.ksh b/share/magics/natural_earth.ksh
new file mode 100644
index 0000000..6529df0
--- /dev/null
+++ b/share/magics/natural_earth.ksh
@@ -0,0 +1,16 @@
+
+#!/usr/bin/ksh
+here=`pwd`
+print `basename $here`
+dir=`basename $here`
+
+for f in `ls`;do
+   get="/tmp/cgs/naturalearth/${dir}_physical/ne_${f}"
+   if [ ! -f $get ];
+   then
+     echo "Error $get does not exists!"
+    else
+     echo "$get found!"
+     cp $get $f
+   fi
+done                  
diff --git a/share/magics/number.json b/share/magics/number.json
new file mode 100644
index 0000000..7f494b0
--- /dev/null
+++ b/share/magics/number.json
@@ -0,0 +1 @@
+{"1": [56, 149], "0": [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 61, 62, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 108, 109, 110, 111, 112, 113, 114, 115, 134, 135, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180], "50": [42, 43, 46, 49, 51, 52, 53, 54, 55, 57, 58, 60, 62, 63, 64, 65, 66, 67, 74, 75, 78, 79, 80, 82, 83, 84, 88,  [...]
\ No newline at end of file
diff --git a/share/magics/obs.xml b/share/magics/obs.xml
index 4b13238..e2ef96b 100644
--- a/share/magics/obs.xml
+++ b/share/magics/obs.xml
@@ -36,8 +36,30 @@
 	<obs_cloud low_row='-1' low_column='0' medium_row='1' medium_column='0' high_row='2' high_column='0'/>
  </obs_template>
 
+
  <obs_template type='dribu_surface' rows='3' columns='3'>
-	<obs_station_ring/>
+        <obs_cloud_wind/>
+        <obs_temperature row='1' column='-1'/>
+        <obs_pressure row='1' column='1'/>
+        <obs_pressure_tendency row='0' column='1'/>
+        <obs_dewpoint row='-1' column='-1'/>
+        <obs_visibility row='0' column='-2'/>
+        <obs_present_weather row='0' column='-1'/>
+        <obs_past_weather row='-1' column='1'/>
+        <obs_cloud low_row='-1' low_column='0'
+        medium_row='1' medium_column='0'
+        high_row='2' high_column='0'/>
+ </obs_template>
+
+ <obs_template type='position' rows='5' columns='5'>
+	<obs_cloud_wind/>
+	<obs_temperature row='1' column='-1'/>
+	<obs_pressure row='1' column='1'/>
+	<obs_pressure_tendency row='0' column='1'/>
+	<obs_dewpoint row='-1' column='-1'/>
+	<obs_visibility row='0' column='-2'/>
+	<obs_present_weather row='0' column='-1'/>
+	<obs_cloud low_row='-1' low_column='0' medium_row='1' medium_column='0' high_row='2' high_column='0'/>
  </obs_template>
 
  <obs_template type='synop' rows='5' columns='5'>
@@ -105,6 +127,19 @@
      <obs_demo_item_2 row='1' column='-1'/>
  </obs_template>
 
+ <obs_template type='buoy' rows='5' columns='7'>
+    <obs_station_ring row='0' column='0'/>
+	<obs_temperature row='1' column='-1'/>
+	<obs_pressure row='1' column='1'/>
+	<obs_pressure_tendency row='0' column='1'/>
+	<obs_dewpoint row='-1' column='-1'/>
+	<obs_visibility row='0' column='-2'/>
+	<obs_present_weather row='0' column='-1'/>
+	<obs_past_weather row='-1' column='1'/>
+	
+     <obs_wave_period_height row='-2' column='0'/>
+     <obs_sea_temperature row='-1' column='-2'/>
+ </obs_template>
 
 
 </observations>
diff --git a/share/magics/paramId.json b/share/magics/paramId.json
new file mode 100644
index 0000000..3ecb5d7
--- /dev/null
+++ b/share/magics/paramId.json
@@ -0,0 +1 @@
+{"151": [48, 50, 51, 52, 53, 54, 55, 103, 105, 113, 114, 115], "155": [45, 70, 71, 73, 94], "157": [47, 112], "60": [49, 81, 101], "132": [41, 43, 98, 108, 109, 110, 111], "130": [42, 51, 52, 53, 78, 79, 80, 92, 93, 115, 167], "135": [44, 76, 77, 86], "132228": [89, 135], "138": [45, 70, 71, 73, 94], "166": [43, 58, 60, 62, 63, 64, 65, 66, 67, 88, 98, 104, 110, 111], "131090": [61, 62], "49": [43, 58, 60, 62, 63, 64, 65, 66, 67, 88, 98, 100, 104], "140229": [49, 60, 62, 63, 64, 65, 66, 6 [...]
\ No newline at end of file
diff --git a/share/magics/shortName.json b/share/magics/shortName.json
new file mode 100644
index 0000000..d6b3ec0
--- /dev/null
+++ b/share/magics/shortName.json
@@ -0,0 +1 @@
+{"ci": [69, 87, 180], "mpww": [49, 82], "ptd": [61, 62], "shts": [49, 83, 84], "10fg": [43, 58, 60, 62, 63, 64, 65, 66, 67, 88, 98, 100, 104], "vo": [45, 70, 71, 73, 94], "lsp": [46, 60, 62, 63, 64, 65, 66, 67, 90, 91, 99], "cp": [46, 60, 62, 63, 64, 65, 66, 67, 90, 91, 99], "10v": [43, 58, 60, 62, 63, 64, 65, 66, 67, 88, 98, 104, 110, 111], "mx2t": [42, 57, 60, 62, 63, 64, 65, 66, 67, 74, 75, 78, 79, 80, 167], "swh": [49, 60, 62, 63, 64, 65, 66, 67, 83, 84], "mwp": [49, 60, 62, 63, 64,  [...]
\ No newline at end of file
diff --git a/share/magics/stepRange.json b/share/magics/stepRange.json
new file mode 100644
index 0000000..94ec6bd
--- /dev/null
+++ b/share/magics/stepRange.json
@@ -0,0 +1 @@
+{"24": [46, 60, 62, 63, 64, 65, 66, 67, 90, 91, 99], "23-24": [42, 43, 57, 74, 75, 78, 79, 80, 88, 98, 100, 104, 167], "0": [41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 97, 98, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180], "24-72": [61, 62], "0-24":  [...]
\ No newline at end of file
diff --git a/share/magics/symbols.svg b/share/magics/symbols.svg
index 61ba562..95e89a1 100644
--- a/share/magics/symbols.svg
+++ b/share/magics/symbols.svg
@@ -195,7 +195,7 @@
         <polyline points='-0.17,0.4 -0.25,0.35 -0.25,-0.35 -0.17,-0.4' fill='none'/>
    </g>   
    <g id='ww_17'>
-	<lightning cx='0' cy='0.3'  r='0.5'/>
+	<lightning cx='0' cy='0.0'  r='0.8'/>
    </g>
    <g id='ww_18'>
        <polyline points='0,0.1 0.2,0.2 0,-0.3 -0.2,0.2 0,0.1' fill='none'/>
@@ -252,7 +252,7 @@
       <polyline points='0.5,-0.45 0.5,0.45' fill='none'/>
         <polyline points='0.5,-0.45 0.35,-0.45' fill='none'/>
         <polyline points='0.5,0.45 0.35,0.45' fill='none'/>
-        <lightning cx='0' cy='0'  r='0.4'/>
+        <lightning cx='0' cy='0'  r='0.6'/>
 </g>
    <g id='ww_30'>
         <polyline points='0.2,0.30 0.1,0.38 0,0.4 -0.1,0.38 -0.2,0.27 -0.2,0.20 -0.16,0.14 0,0 0.16,-0.14 0.2,-0.20 0.2,-0.27 0.1,-0.38 0,-0.4 -0.1,-0.38 -0.2,-0.30' fill='none'/>
@@ -387,74 +387,74 @@
         <drizzle cx='0' cy='0' r='0.2'/>
    </g>
    <g id='ww_51'>
-	<drizzle cx='-0.3' cy='0' r='0.2'/>
-	<drizzle cx='0.3'  cy='0' r='0.2'/>
+	<drizzle cx='-0.3' cy='0' r='0.3'/>
+	<drizzle cx='0.3'  cy='0' r='0.3'/>
    </g>
    <g id='ww_52'>
-	<drizzle cx='0' cy='-0.3' r='0.2'/>
-	<drizzle cx='0' cy='0.3'  r='0.2'/>
+	<drizzle cx='0' cy='-0.3' r='0.3'/>
+	<drizzle cx='0' cy='0.3'  r='0.3'/>
    </g>
    <g id='ww_53'>
-        <drizzle cx='0' cy='0.3' r='0.2'/>
-        <drizzle cx='-0.3' cy='-0.3' r='0.2'/>
-        <drizzle cx='0.3' cy='-0.3' r='0.2'/>
+        <drizzle cx='0' cy='0.3' r='0.3'/>
+        <drizzle cx='-0.3' cy='-0.3' r='0.3'/>
+        <drizzle cx='0.3' cy='-0.3' r='0.3'/>
    </g>
    <g id='ww_54'>
-        <drizzle cx='0' cy='0.45' r='0.2'/>
-        <drizzle cx='0' cy='0' r='0.2'/>
-        <drizzle cx='0' cy='-0.45' r='0.2'/>
+        <drizzle cx='0' cy='0.45' r='0.3'/>
+        <drizzle cx='0' cy='0' r='0.3'/>
+        <drizzle cx='0' cy='-0.45' r='0.3'/>
    </g>
    <g id='ww_55'>
-        <drizzle cx='-0.3' cy='0' r='0.2'/>
-        <drizzle cx='0.3' cy='0' r='0.2'/>
-	<drizzle cx='0' cy='0.45' r='0.2'/>
-	<drizzle cx='0' cy='-0.45' r='0.2'/>
+        <drizzle cx='-0.3' cy='0' r='0.3'/>
+        <drizzle cx='0.3' cy='0' r='0.3'/>
+	<drizzle cx='0' cy='0.45' r='0.3'/>
+	<drizzle cx='0' cy='-0.45' r='0.3'/>
    </g>
 
    <g id='ww_58'>
-        <circle cx='0' cy='0.3' r='0.2' fill='8'/>
-        <drizzle cx='0' cy='-0.3' r='0.2'/>
+        <circle cx='0' cy='0.3' r='0.15' fill='8'/>
+        <drizzle cx='0' cy='-0.3' r='0.3'/>
    </g>
    <g id='ww_59'>
-        <drizzle cx='0' cy='0.45' r='0.2'/>
-        <circle cx='0' cy='0' r='0.2' fill='8'/>
-        <drizzle cx='0' cy='-0.45' r='0.2'/>
+        <drizzle cx='0' cy='0.45' r='0.3'/>
+        <circle cx='0' cy='0' r='0.15' fill='8'/>
+        <drizzle cx='0' cy='-0.45' r='0.3'/>
    </g>
    <g id='ww_60'>
-        <circle cx='0' cy='0' r='0.2' fill='8'/>
+        <circle cx='0' cy='0' r='0.15' fill='8'/>
    </g>
    <g id='ww_61'>
-        <circle cx='-0.3' cy='0' r='0.2' fill='8'/>
-        <circle cx='0.3' cy='0' r='0.2' fill='8'/>
+        <circle cx='-0.3' cy='0' r='0.15' fill='8'/>
+        <circle cx='0.3' cy='0' r='0.15' fill='8'/>
    </g>
    <g id='ww_62'>
-        <circle cx='0' cy='0.3' r='0.2' fill='8'/>
-        <circle cx='0' cy='-0.3' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.3' r='0.15' fill='8'/>
+        <circle cx='0' cy='-0.3' r='0.15' fill='8'/>
    </g>
    <g id='ww_63'>
-        <circle cx='0' cy='0.3' r='0.2' fill='8'/>
-        <circle cx='-0.3' cy='-0.3' r='0.2' fill='8'/>
-        <circle cx='0.3' cy='-0.3' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.3' r='0.15' fill='8'/>
+        <circle cx='-0.3' cy='-0.3' r='0.15' fill='8'/>
+        <circle cx='0.3' cy='-0.3' r='0.15' fill='8'/>
    </g>
    <g id='ww_64'>
-        <circle cx='0' cy='0.45' r='0.2' fill='8'/>
-        <circle cx='0' cy='0' r='0.2' fill='8'/>
-        <circle cx='0' cy='-0.45' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.45' r='0.15' fill='8'/>
+        <circle cx='0' cy='0' r='0.15' fill='8'/>
+        <circle cx='0' cy='-0.45' r='0.15' fill='8'/>
    </g>
    <g id='ww_65'>
-        <circle cx='-0.3' cy='0' r='0.2' fill='8'/>
-        <circle cx='0.3' cy='0' r='0.2' fill='8'/>
-	<circle cx='0' cy='0.45' r='0.2' fill='8'/>
-	<circle cx='0' cy='-0.45' r='0.2' fill='8'/>
+        <circle cx='-0.3' cy='0' r='0.15' fill='8'/>
+        <circle cx='0.3' cy='0' r='0.15' fill='8'/>
+	<circle cx='0' cy='0.45' r='0.15' fill='8'/>
+	<circle cx='0' cy='-0.45' r='0.15' fill='8'/>
    </g>
 
    <g id='ww_68'>
-        <circle cx='0' cy='0.3' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.3' r='0.15' fill='8'/>
         <snowflake cx='0' cy='-0.3' r='0.2'/>
    </g>
    <g id='ww_69'>
         <snowflake cx='0' cy='0.45' r='0.2'/>
-        <circle cx='0' cy='0' r='0.2' fill='8'/>
+        <circle cx='0' cy='0' r='0.15' fill='8'/>
         <snowflake cx='0' cy='-0.45' r='0.2'/>
    </g>
    <g id='ww_70'>
@@ -502,25 +502,25 @@
 	<circle cx='0' cy='0' r='0.05' fill='8'/>
    </g>
    <g id='ww_80'>
-        <circle cx='0' cy='0.3' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.1' r='0.15' fill='8'/>
 	<triangle cx='0' cy='-0.3' r='-0.3' fill='0'/>
    </g>
    <g id='ww_81'>
-        <circle cx='0' cy='0.3' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.15' r='0.15' fill='8'/>
 	<triangle cx='0' cy='-0.3' r='-0.3' fill='0' line='1'/>
    </g>
    <g id='ww_82'>
-        <circle cx='0' cy='0.45' r='0.2' fill='8'/>
-        <circle cx='0' cy='0' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.4' r='0.15' fill='8'/>
+        <circle cx='0' cy='0' r='0.15' fill='8'/>
         <triangle cx='0' cy='-0.45' r='-0.3' fill='0'/>
    </g>
    <g id='ww_83'>
-        <circle cx='0' cy='0.45' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.4' r='0.15' fill='8'/>
         <snowflake cx='0' cy='0' r='0.2'/>
         <triangle cx='0' cy='-0.45' r='-0.3' fill='0'/>
    </g>
    <g id='ww_84'>
-        <circle cx='0' cy='0.45' r='0.2' fill='8'/>
+        <circle cx='0' cy='0.4' r='0.15' fill='8'/>
         <snowflake cx='0' cy='0' r='0.2'/>
         <triangle cx='0' cy='-0.45' r='-0.3' fill='0' line='1'/>
    </g>
@@ -548,8 +548,53 @@
   <triangle cx='0' cy='0.25' r='0.25' fill='1'/>
   <triangle cx='0' cy='-0.3' r='-0.3' fill='0' line='1'/>
 </g>
-
-
+<g id='ww_91'> 
+      <polyline points='0.5,-0.45 0.5,0.45' fill='none'/>
+        <polyline points='0.5,-0.45 0.35,-0.45' fill='none'/>
+        <polyline points='0.5,0.45 0.35,0.45' fill='none'/>
+        <lightning cx='0' cy='0'  r='0.6'/>
+         <circle r="0.15" cx="0.75" cy="0" fill="8" />
+</g>
+<g id='ww_92'> 
+      <polyline points='0.5,-0.45 0.5,0.45' fill='none'/>
+      <polyline points='0.5,-0.45 0.35,-0.45' fill='none'/>
+      <polyline points='0.5,0.45 0.35,0.45' fill='none'/>
+      <lightning cx='0' cy='0'  r='0.6'/>
+      <circle r="0.15" cx="0.75" cy="0.2" fill="8" />
+      <circle r="0.15" cx="0.75" cy="-0.2" fill="8" />
+</g>
+<g id='ww_93'> 
+      <polyline points='0.5,-0.45 0.5,0.45' fill='none'/>
+      <polyline points='0.5,-0.45 0.35,-0.45' fill='none'/>
+      <polyline points='0.5,0.45 0.35,0.45' fill='none'/>
+      <lightning cx='0' cy='0'  r='0.6'/>
+      <snowflake cx='0.7' cy='0.3' r='0.2'/>
+      <polyline points='0.6,-0.3 1.,0.3' fill='none'/>
+	  <triangle  cx='1,' cy='-0.3' r='0.3' fill='0'/>
+</g>
+<g id='ww_94'> 
+      <polyline points='0.5,-0.45 0.5,0.45' fill='none'/>
+      <polyline points='0.5,-0.45 0.35,-0.45' fill='none'/>
+      <polyline points='0.5,0.45 0.35,0.45' fill='none'/>
+      <lightning cx='0' cy='0'  r='0.6'/>
+     
+	  <triangle  cx='0.6' cy='-0.35' r='0.2' fill='0'/> 
+	  <triangle  cx='0.9' cy='0.35' r='0.2' fill='0'/>
+</g>
+<g id="ww_95">
+    <circle r="0.1" cx="0." cy="0.6" fill="8" />
+    <lightning cx='0' cy='0'  r='0.4'/>
+</g>
+<g id="ww_96">
+    <triangle cx='0' cy='0.55' r='0.2' fill='0' />
+  
+  
+    <lightning cx='0' cy='0'  r='0.5'/>
+</g>
+<g id="ww_97">
+    <circle r="0.1" cx="0." cy="0.6" fill="8" />
+    <lightning cx='0' cy='0'  r='0.4'/>
+</g>
    <g id='N_0'>
  	<circle cx='0' cy='0' r='0.5' fill='0'/>
    </g> 
diff --git a/share/magics/title_template.xml b/share/magics/title_template.xml
index 484b1df..fefbcb3 100644
--- a/share/magics/title_template.xml
+++ b/share/magics/title_template.xml
@@ -21,29 +21,29 @@
         <base_date format = '%A %d %B %Y %H UTC'/> <centre  format = "%s Forecast"/> <step format="t+%s"/> 
 <valid_date format = 'VT:%A %d %B %Y %H UTC'/> <level/> <parameter/> <units/> <expver/>  <plot_type/> 
     </title>
-    <title type='fc'>
+    <title dataType='fc'>
         <base_date format = '%A %d %B %Y %H UTC'/> <centre/> <product/> <step format="t+%s"/> 
 <valid_date format = 'VT:%A %d %B %Y %H UTC'/> <level/> <parameter/> <units/> <expver/>  <plot_type/> 
     </title>
     <!-- EPS Control Forecast forecasts -->
-     <title type='cf'>
+     <title dataType='cf'>
         <base_date format = '%A %d %B %Y %H UTC'/> <centre/> <product/> <step format="t+%s"/> 
 <valid_date format = 'VT:%A %d %B %Y %H UTC'/> <level/> <parameter/> <units/> <expver/>  <plot_type/> 
     </title>
     <!-- Normal analysis -->
-    <title type='an'>
+    <title dataType='an'>
         <centre/> <product/> <base_date format = 'VT: %A %d %B %Y %H UTC'/> <level/> <parameter/> <units/> <expver/>  <plot_type/> 
     </title>
     <!-- Ensemble means, Standard devs, and perturbed forecast -->
-    <title type='em' stream='enfo'>
+    <title dataType='em' stream='enfo'>
         <base_date format = '%A %d %B %Y %H UTC '/> <centre/> <product/> <step format="t+%s"/> <valid_date format = 'VT:%A %d %B %Y %H UTC'/>
 <newline/><level/><parameter/><units/><expver/><eps_number_info/>
      </title>
-     <title type='ep' stream='enfo'>
+     <title dataType='ep' stream='enfo'>
         <base_date format = '%A %d %B %Y %H UTC '/> <centre/> <product/> <step format="t+%s"/> <valid_date format = 'VT:%A %d %B %Y %H UTC'/>
 <newline/><level/><parameter/><units/><expver/><eps_number_info/>
      </title>
-     <title type='im'> <satellite/> <channel/> <date format = '%A %d %B %Y %H UTC '/> </title>
+     <title dataType='im'> <satellite/> <channel/> <date format = '%A %d %B %Y %H UTC '/> </title>
 </title>
  
  
diff --git a/share/magics/typeOfLevel.json b/share/magics/typeOfLevel.json
new file mode 100644
index 0000000..be051e4
--- /dev/null
+++ b/share/magics/typeOfLevel.json
@@ -0,0 +1 @@
+{"theta": [49, 81, 101], "isobaricInhPa": [41, 42, 43, 44, 45, 47, 51, 52, 53, 54, 55, 70, 71, 73, 76, 77, 78, 79, 80, 86, 92, 93, 94, 98, 101, 102, 103, 105, 106, 108, 109, 110, 111, 112, 115, 167], "surface": [42, 43, 46, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 72, 74, 75, 78, 79, 80, 87, 88, 89, 90, 91, 95, 96, 97, 98, 99, 100, 103, 104, 105, 107, 110, 111, 113, 114, 115, 134, 135, 149, 150, 151, 156, 167, 174, 175, 176, 177, 178, 179, 180], [...]
\ No newline at end of file
diff --git a/share/magics/units.json b/share/magics/units.json
new file mode 100644
index 0000000..999ee2b
--- /dev/null
+++ b/share/magics/units.json
@@ -0,0 +1 @@
+{"m**2 s**-2": [51, 52, 53, 54, 55, 56, 103, 105, 106, 115, 149, 150, 151], "%": [47, 61, 62, 112], "J kg**-1": [60, 63, 64, 65, 66, 67, 156], "s**-1": [45, 70, 71, 73, 94], "K": [42, 51, 52, 53, 57, 58, 60, 62, 63, 64, 65, 66, 67, 74, 75, 78, 79, 80, 92, 93, 115, 167], "m": [46, 49, 60, 62, 63, 64, 65, 66, 67, 83, 84, 85, 90, 91, 99], "m of water equivalent": [46, 60, 62, 63, 64, 65, 66, 67, 90, 91, 95, 96, 97, 99, 107], "s": [49, 60, 62, 63, 64, 65, 66, 67, 82], "Pa": [48, 50, 51, 52,  [...]
\ No newline at end of file
diff --git a/share/magics/web/magics.js b/share/magics/web/magics.js
new file mode 100644
index 0000000..68ac336
--- /dev/null
+++ b/share/magics/web/magics.js
@@ -0,0 +1,662 @@
+/*jslint white: false, onevar:false */
+
+function magics_factory(params) {
+
+
+  console.info("magics_factory" + params);
+  function round(x, prec) {
+    if(!prec) { prec = 100; }
+    return Math.floor(x*prec+0.5)/prec;
+  }
+
+  var magics = params;
+  var projections = {};
+
+  projections.cylindrical = function() {
+
+    var cylindrical = params.projection;
+
+    cylindrical.pcxmin= parseFloat(params.projection.pcxmin);
+    cylindrical.pcymin= parseFloat(params.projection.pcymin);
+    cylindrical.pcwidth= parseFloat(params.projection.pcwidth);
+    cylindrical.pcheight= parseFloat(params.projection.pcheight);
+    cylindrical.width= parseFloat(params.projection.width);
+    cylindrical.height= parseFloat(params.projection.height);
+    cylindrical.pxwidth= parseFloat(params.projection.img_width);
+    cylindrical.pxheight= parseFloat(params.projection.img_height);
+    cylindrical.top= parseFloat(params.projection.top);
+    cylindrical.left= parseFloat(params.projection.left);
+    cylindrical.zoomout= true;
+    cylindrical.name = "cylindrical";
+	
+    
+    cylindrical.pc2ll = function(x, y) {
+
+      return {
+        lon: (x - cylindrical.left) * (cylindrical.pcwidth / cylindrical.pxwidth) + (cylindrical.pcxmin),
+        lat: (cylindrical.top - y) * (cylindrical.pcheight / cylindrical.pxheight) + (cylindrical.pcheight + cylindrical.pcymin)
+      };
+    };
+    
+    cylindrical.pc2xy = cylindrical.pc2ll
+    cylindrical.ll2pc = function(lat, lon) {
+      return {
+        x: (lon - cylindrical.pcxmin) * (cylindrical.pxwidth / cylindrical.pcwidth) + (cylindrical.left),
+        y: -(lat - cylindrical.pcymin) * (cylindrical.pxheight / cylindrical.pcheight) + (cylindrical.top + cylindrical.height)
+      };
+    };
+
+    cylindrical.new_projection = function(ll, ur) {
+      if ( ur.lon > 720 ) {
+        cylindrical.zoomout= false;
+		ur.lon = 720
+      }
+      if ( ur.lat > 90 ) {
+        cylindrical.zoomout= false;
+		ur.lat = 90 
+      }
+      if ( ll.lon < -360 ) {
+        cylindrical.zoomout= false;
+	 	ll.lon = -360
+      }
+      if ( ll.lat < -90 ) {
+        cylindrical.zoomout= false;
+		ll.lat = -90
+      }
+      var p=  {
+        "projection": "cylindrical",
+        "upper_right_longitude": String(round(ur.lon, 1000)),
+        "upper_right_latitude": String(round(ur.lat, 1000)),
+        "lower_left_longitude": String(round(ll.lon, 1000)),
+        "lower_left_latitude": String(round(ll.lat, 1000))
+      };
+      
+      p.zoomout = true;
+      p.zoomin = true;
+      if ( ur.lon - ll.lon > 1000) 
+        p.zoomout = false;
+      if ( ur.lon - ll.lon < 10)  
+        p.zoomin = false;
+      if ( ur.lat - ll.lat < 10)
+        p.zoomin = false;
+      
+      return p;
+    };
+
+    cylindrical.new_projection_from_vertical_longitude = function(lon) {
+      var ll = cylindrical.pc2ll(0,cylindrical.pxheight);
+      var ur = cylindrical.pc2ll(cylindrical.pxwidth,0);
+      var p =  cylindrical.new_projection(ll, ur);
+      return p;
+    };
+
+    cylindrical.full_map_projection_name = function() {
+        return "global";
+    };
+
+    return cylindrical;
+
+  };
+    projections.cartesian = function() {
+
+    var cartesian = params.projection;
+
+    cartesian.pcxmin= parseFloat(params.projection.pcxmin);
+    cartesian.pcymin= parseFloat(params.projection.pcymin);
+    cartesian.pcwidth= parseFloat(params.projection.pcwidth);
+    cartesian.pcheight= parseFloat(params.projection.pcheight);
+    cartesian.width= parseFloat(params.projection.width);
+    cartesian.height= parseFloat(params.projection.height);
+    cartesian.top= parseFloat(params.projection.top);
+    cartesian.left= parseFloat(params.projection.left);
+    
+	cartesian.pxwidth= parseFloat(params.projection.img_width);
+    cartesian.pxheight= parseFloat(params.projection.img_height);
+    
+    console.log("definition projection->" + JSON.stringify(cartesian));
+   
+    
+    
+	cartesian.x_date_setting = function() {
+	
+		cartesian.subpage_x_date_min = params.projection.subpage_x_date_min.substr(0, 10)
+	}
+	cartesian.x_regular_setting = function() {
+		
+	}
+	cartesian.y_regular_setting = function() {
+		
+	}
+	cartesian.y_date_setting = function() {
+		cartesian.subpage_y_date_min = params.projection.subpage_y_date_min.substr(0, 10)
+	}
+	
+    
+    cartesian.x_date_definition = function(def, min, max) {
+        console.log("x_date_min->" + cartesian.x_date_min);
+        j = cartesian.subpage_x_date_min.split("-"); 
+        var base = new Date(j[0], j[1]-1,j[2]); 
+        
+        var dmin = new Date()
+		console.log("base->" + base.format("yyyy-mm-dd"));
+        dmin.setTime(base.getTime() + min*1000);
+        var dmax = new Date()
+        dmax.setTime(base.getTime() + max*1000);
+         
+        dmax.format("yyyy-mm-dd");
+        
+        console.log("min->" + min);
+		console.log("min->" + dmin.format("yyyy-mm-dd"));
+        def.x_date = {
+            x_date_min : dmin.format("yyyy-mm-dd"),
+            x_date_max : dmax.format('yyyy-mm-dd'),
+            x_automatic : 'off'
+        }
+        return def
+    }
+    cartesian.x_date_format = function(x) {
+        j = cartesian.subpage_x_date_min.split("-"); 
+        var base = new Date(j[0], j[1], j[2]) ;
+        
+        var date = new Date();
+        date.setTime(base.getTime() + x*1000);
+        return date.format("yyyy-mm-dd HH:MM:00")
+
+    }
+	cartesian.x_regular_format = function(x) {  
+        
+        return x
+    }
+    
+    cartesian.x_regular_definition = function(def, min, max) {
+         
+        def.x_regular = {
+            x_min :  min,
+            x_max :  max,
+            x_automatic : 'off'
+        }
+       
+        return def;
+    }
+    cartesian.y_regular_format = function(y) {  
+        
+        return y
+    }
+    
+    cartesian.y_regular_definition = function(def, min, max) {
+         
+        def.y_regular = {
+            y_min :  min,
+            y_max :  max,
+            y_automatic : 'off'
+        }
+        
+        return def;
+    }
+	cartesian.x_definition = cartesian[params.projection.subpage_x_axis_type+"_definition"]
+    cartesian.y_definition = cartesian[params.projection.subpage_y_axis_type+"_definition"]
+    cartesian.x_format = cartesian[params.projection.subpage_x_axis_type+"_format"]
+    cartesian.y_format = cartesian[params.projection.subpage_y_axis_type+"_format"]
+	cartesian.y_setting = cartesian[params.projection.subpage_y_axis_type+"_setting"]
+	cartesian.x_setting = cartesian[params.projection.subpage_x_axis_type+"_setting"]
+	
+	cartesian.x_setting();
+	cartesian.y_setting();
+    cartesian.name = "cartesian";
+    cartesian.pc2ll = function(x, y) {
+      
+    // Origine of the coordinates system should be  at the top left corner! 
+      // Check the boundaries of the map!
+		
+	    if ( x < cartesian.left ) x = cartesian.left
+		if ( x > cartesian.left + cartesian.pxwidth) 
+			x = cartesian.left+ cartesian.pxwidth;
+		if ( y < cartesian.top ) y = cartesian.top
+		if ( y > cartesian.top + cartesian.pxheight) 
+			y = cartesian.top+ cartesian.pxheight;
+		
+      
+      return {
+        lon: (x - cartesian.left) * (cartesian.pcwidth / cartesian.pxwidth) + (cartesian.pcxmin),
+        lat:  (cartesian.top - y) * (cartesian.pcheight / cartesian.pxheight) + (cartesian.pcheight + cartesian.pcymin)
+      }
+    };
+    
+    cartesian.pc2xy = function(x, y) {
+	// Check the boundaries of the map!
+		
+	    if ( x < cartesian.left ) x = cartesian.left
+		if ( x > cartesian.left + cartesian.pxwidth) 
+			x = cartesian.left+ cartesian.pxwidth;
+		if ( y < cartesian.top ) y = cartesian.top
+		if ( y > cartesian.top + cartesian.pxheight) 
+			y = cartesian.top+ cartesian.pxheight;
+		
+				
+        var ll = cartesian.pc2ll(x, y);
+        return {
+            x: cartesian.x_format(ll.lon),
+            y: cartesian.y_format(ll.lat)
+        }
+    };
+     
+        
+    cartesian.ll2pc = function(lat, lon) {
+      return {
+        x: (lon - cartesian.pcxmin) * (cartesian.pxwidth / cartesian.pcwidth) + (cartesian.left),
+        y: -(lat - cartesian.pcymin) * (cartesian.pxheight / cartesian.pcheight) + (cartesian.top + cartesian.pxheight)
+      };
+    };
+
+    cartesian.new_projection = function(ll, ur) {
+      if ( ll.lon == ur.lon) {
+	  	// we return the initial projection
+	  	ll.lon = cartesian.pcxmin;
+		ur.lon = ll.lon  + cartesian.pcwidth
+		ll.lat = cartesian.pcymin;
+		ur.lat = ll.lat  + cartesian.pcheight
+	  }
+	  if ( ll.lat == ur.lat) {
+	  // we return the initial projection
+	  	ll.lon = cartesian.pcxmin;
+		ur.lon = ll.lon  + cartesian.pcwidth
+		ll.lat = cartesian.pcymin;
+		ur.lat = ll.lat  + cartesian.pcheight
+	  }
+	  
+	  var p=  {
+	  "projection": "cartesian"
+	  };
+      p.cartesian = {
+        name: "cartesian"
+      }
+      
+      cartesian.x_definition(p.cartesian, ll.lon, ur.lon)
+      cartesian.y_definition(p.cartesian, ll.lat, ur.lat);
+      console.log("new projection->" + JSON.stringify(p.cartesian));
+      return p;
+    };
+
+    cartesian.new_projection_from_vertical_longitude = function(lon) {
+      var ll = cartesian.pc2ll(0,cartesian.pxheight);
+      var ur = cartesian.pc2ll(cartesian.pxwidth,0);
+      var p =  cartesian.new_projection(ll, ur);
+      return p;
+    };
+
+    cartesian.full_map_projection_name = function() {
+        return "global";
+    };
+
+    return cartesian;
+
+  };
+
+  projections.polar_north = function() {
+
+    var polar = params.projection;
+
+    polar.pcxmin= parseFloat(params.projection.pcxmin);
+    polar.pcymin= parseFloat(params.projection.pcymin);
+    polar.pcwidth= parseFloat(params.projection.pcwidth);
+    polar.pcheight= parseFloat(params.projection.pcheight);
+    polar.width= parseFloat(params.projection.width);
+    polar.height= parseFloat(params.projection.height);
+    polar.pxwidth= parseFloat(params.projection.img_width);
+    polar.pxheight= parseFloat(params.projection.img_height);
+    polar.top= parseFloat(params.projection.top);
+    polar.left= parseFloat(params.projection.left);
+
+    polar.name = "polar_stereographic";
+    polar.hemisphere = "north";
+
+    polar.pc2ll = function(xd, yd) {
+
+      var xpc = (xd - polar.left) * (polar.pcwidth / polar.pxwidth) + polar.pcxmin;
+      var ypc = (polar.pxheight - yd) * (polar.pcheight / polar.pxheight) + polar.pcymin;
+      var px = xpc - polar.GPoffx;
+      var py = ypc - polar.GPoffy;
+      var ro = Math.sqrt(px * px + py * py);
+      var t = (ro * Math.sqrt(polar.coeff1)) / (polar.coeff2);
+      var xx = Math.PI / 2.0 - 2.0 * Math.atan(t);
+      var ptpcy = xx + polar.coeff3 * Math.sin(2 * xx) + polar.coeff4 * Math.sin(4 * xx) + polar.coeff5 * Math.sin(6 * xx);
+      var ptpcx;
+
+      if (py !== 0.0) {
+        ptpcx = polar.lon0 + Math.atan(px / (-py));
+      }
+
+      if (px > 0.0 && py > 0.0) {
+        ptpcx = ptpcx + Math.PI;
+      } else if (px < 0.0 && py > 0.0) {
+        ptpcx = ptpcx - Math.PI;
+      } else if (px > 0.0 && py === 0.0) {
+        ptpcx = polar.lon0 + Math.PI / 2.0;
+      } else if (px < 0.0 && py === 0.0) {
+        ptpcx = polar.lon0 - Math.PI / 2.0;
+      } else if (px === 0.0 && py === 0.0) {
+        ptpcx = polar.lon0;
+      }
+
+      if (ptpcx < (-Math.PI)) {
+        ptpcx += 2.0 * Math.PI;
+      } else if (ptpcx > Math.PI) {
+        ptpcx -= 2.0 * Math.PI;
+      }
+
+      return {
+        lon: ptpcx * 180.0 / Math.PI,
+        lat: ptpcy * 180.0 / Math.PI
+      };
+
+    };
+    polar.pc2xy = polar.pc2ll
+    polar.ll2pc = function(lat, lon) {
+
+      lat = lat * Math.PI / 180.0;
+      lon = lon * Math.PI / 180.0;
+
+      var aux1 = (1.0 - polar.e * Math.sin(lat)) / (1.0 + polar.e * Math.sin(lat));
+      var t = Math.tan((Math.PI / 4.0) - (lat / 2.0)) / Math.pow(aux1, (polar.e / 2.0));
+      var ro = polar.coeff2 * t / Math.sqrt(polar.coeff6 * polar.coeff7);
+      var x = ro * Math.sin(lon - polar.lon0) + aux1 + polar.GPoffx;
+      var y = -ro * Math.cos(lon - polar.lon0) + polar.GPoffy;
+
+      return {
+        x: (x - polar.pcxmin) * (polar.pxwidth / polar.pcwidth) + (polar.left),
+        y: -(y - polar.pcymin) * (polar.pxheight / polar.pcheight) + (polar.top + polar.pxheight)
+      };
+
+    };
+
+    polar.new_projection = function(ll, ur) {
+      return {
+        "projection": "polar_stereographic",
+        "map_hemisphere": "north",
+        "map_vertical_longitude": String(round(polar.lon0 * 180.0 / Math.PI, 1000)),
+        "upper_right_longitude": String(round(ur.lon, 1000)),
+        "upper_right_latitude": String(round(ur.lat, 1000)),
+        "lower_left_longitude": String(round(ll.lon, 1000)),
+        "lower_left_latitude": String(round(ll.lat, 1000))
+      };
+    };
+
+    polar.new_projection_from_vertical_longitude = function(lon) {
+
+      var delta = (polar.lon0 * 180.0 / Math.PI) - lon;
+
+      var ll = polar.pc2ll(0,polar.pxheight);
+      var ur = polar.pc2ll(polar.pxwidth,0);
+
+      return {
+        "projection": "polar_stereographic",
+        "map_hemisphere": "north",
+        "map_vertical_longitude": String(round(lon, 1000)),
+        "upper_right_longitude":  String(round(ur.lon - delta, 1000)),
+        "upper_right_latitude":   String(round(ur.lat, 1000)),
+        "lower_left_longitude":   String(round(ll.lon - delta, 1000)),
+        "lower_left_latitude":    String(round(ll.lat, 1000))
+      };
+
+    };
+
+    polar.full_map_projection_name = function() {
+        return "north_hemisphere";
+    };
+
+    return polar;
+  };
+
+  projections.polar_south = function() {
+
+    var polar = params.projection;
+
+    polar.pcxmin= parseFloat(params.projection.pcxmin);
+    polar.pcymin= parseFloat(params.projection.pcymin);
+    polar.pcwidth= parseFloat(params.projection.pcwidth);
+    polar.pcheight= parseFloat(params.projection.pcheight);
+    polar.width= parseFloat(params.projection.width);
+    polar.height= parseFloat(params.projection.height);
+    polar.pxwidth= parseFloat(params.projection.img_width);
+    polar.pxheight= parseFloat(params.projection.img_height);
+    polar.top= parseFloat(params.projection.top);
+    polar.left= parseFloat(params.projection.left);
+
+    polar.name = "polar_stereographic";
+    polar.hemisphere = "south";
+    
+    polar.pc2ll = function(xd, yd) {
+      var xpc = (xd - polar.left) * (polar.pcwidth / polar.pxwidth) + polar.pcxmin;
+      var ypc = (polar.pxheight - yd) * (polar.pcheight / polar.pxheight) + polar.pcymin;
+      var px = -(xpc - polar.GPoffx);
+      var py = -(ypc - polar.GPoffy);
+      var ro = Math.sqrt(px * px + py * py);
+      var t = (ro * Math.sqrt(polar.coeff1)) / (polar.coeff2);
+      var xx = Math.PI / 2.0 - 2.0 * Math.atan(t);
+      var ptpcy = xx + polar.coeff3 * Math.sin(2 * xx) + polar.coeff4 * Math.sin(4 * xx) + polar.coeff5 * Math.sin(6 * xx);
+      var ptpcx;
+
+      if (py !== 0.0) {
+        ptpcx = -polar.lon0 + Math.atan(px / (-py));
+      }
+
+      ptpcy *= -1;
+      ptpcx *= -1;
+
+      if (px > 0.0 && py < 0.0) {
+        ptpcx = ptpcx + Math.PI;
+      } else if (px < 0.0 && py < 0.0) {
+        ptpcx = ptpcx - Math.PI;
+      } else if (px > 0.0 && py === 0.0) {
+        ptpcx = -polar.lon0 + Math.PI / 2.0;
+      } else if (px < 0.0 && py === 0.0) {
+        ptpcx = -polar.lon0 - Math.PI / 2.0;
+      } else if (px === 0.0 && py === 0.0) {
+        ptpcx = -polar.lon0;
+      }
+
+      if (ptpcx < (-Math.PI)) {
+        ptpcx += 2.0 * Math.PI;
+      } else if (ptpcx > Math.PI) {
+        ptpcx -= 2.0 * Math.PI;
+      }
+
+      return {
+        lon: ptpcx * 180.0 / Math.PI,
+        lat: ptpcy * 180.0 / Math.PI
+      };
+    };
+    polar.pc2xy = polar.pc2ll
+    polar.ll2pc = function(lat, lon) {
+
+      lat = -lat * Math.PI / 180.0;
+      lon = -lon * Math.PI / 180.0;
+
+      var aux1 = (1.0 - polar.e * Math.sin(lat)) / (1.0 + polar.e * Math.sin(lat));
+      var t = Math.tan((Math.PI / 4.0) - (lat / 2.0)) / Math.pow(aux1, (polar.e / 2.0));
+      var ro = polar.coeff2 * t / Math.sqrt(polar.coeff6 * polar.coeff7);
+      var x = ro * Math.sin(lon + polar.lon0) + polar.GPoffx;
+      var y = -ro * Math.cos(lon + polar.lon0) + polar.GPoffy;
+
+      return {
+        x: (x - polar.pcxmin) * (polar.pxwidth / polar.pcwidth) + (polar.left),
+        y: -(y - polar.pcymin) * (polar.pxheight / polar.pcheight) + (polar.top + polar.pxheight)
+      };
+
+    };
+
+    polar.new_projection = function(ll, ur) {
+      return {
+        "projection": "polar_stereographic",
+        "map_hemisphere": "south",
+        "map_vertical_longitude": String(round(polar.lon0 * 180.0 / Math.PI, 1000)),
+        "upper_right_longitude": String(round(ur.lon, 1000)),
+        "upper_right_latitude": String(round(ur.lat, 1000)),
+        "lower_left_longitude": String(round(ll.lon, 1000)),
+        "lower_left_latitude": String(round(ll.lat, 1000))
+      };
+    };
+
+    polar.new_projection_from_vertical_longitude = function(lon) {
+      lon += 180;
+      while(lon < 0)   { lon -= 360; }
+      while(lon > 180) { lon -= 360; }
+
+      var delta = (polar.lon0 * 180.0 / Math.PI) - lon;
+
+      var ll = polar.pc2ll(0,polar.pxheight);
+      var ur = polar.pc2ll(polar.pxwidth,0);
+
+      return {
+        "projection": "polar_stereographic",
+        "map_hemisphere": "south",
+        "map_vertical_longitude": String(round(lon, 1000)),
+        "upper_right_longitude":  String(round(ur.lon - delta, 1000)),
+        "upper_right_latitude":   String(round(ur.lat, 1000)),
+        "lower_left_longitude":   String(round(ll.lon - delta, 1000)),
+        "lower_left_latitude":    String(round(ll.lat, 1000))
+      };
+    };
+
+    polar.full_map_projection_name = function() {
+        return "south_hemisphere";
+    };
+
+    return polar;
+
+  };
+
+  (function(params) { 
+    
+    if(!params)  {
+		console.log("no projection defined");
+		return;
+	};
+    if(!projections[params.projection.name]){ //console.log('no such projection type:' + params.projection.name); 
+    return; }
+    
+    // This is a private member
+    var projection = projections[params.projection.name]();
+
+    magics.width = projection.width;
+    magics.height = projection.height;
+    magics.pc2ll = projection.pc2ll;
+	magics.pc2xy = projection.pc2xy;
+    magics.ll2pc = projection.ll2pc;
+    magics.ll2xy = projection.ll2xy;
+
+    magics.resize = function(width, height) {
+
+      if(0) {
+      if(width === projection.width && height === projection.height) {
+        // In this case, we should not recompute, as we would get slightly
+        // different values that will upset the caching
+        return magics;
+      }
+      }
+
+      var ll = projection.pc2ll(0,height);
+      var ur = projection.pc2ll(width,0);
+      return projection.new_projection(ll, ur);
+    };
+
+    magics.expand = function(xmargin, ymargin) {
+      var ll = projection.pc2ll(-xmargin,  params.projection.height -ymargin);
+      var ur = projection.pc2ll(params.projection.width +xmargin,  +ymargin);
+      return projection.new_projection(ll, ur);
+    };
+
+    magics.move = function(dx, dy) {
+      var ll = projection.pc2ll(dx, params.projection.height + dy);
+      var ur = projection.pc2ll(params.projection.width + dx, +dy);
+      return projection.new_projection(ll, ur);
+    };
+
+    magics.tranform = function(matrix) {
+
+      for(var i=1;i<=3;i++) {
+        var x = "";
+        for(var j=1;j<=3;j++) {
+          x += ", " + matrix.e(i,j);
+        }
+        /*
+        console.log(x);
+        */
+      }
+
+      var ll = $V([0,params.projection.height, 1]);
+      var ur = $V([params.projection.width, 0, 1]);
+
+      /*
+      console.log("MM " + JSON.stringify(matrix));
+      console.log("ll " + JSON.stringify(ll));
+      console.log("ur " + JSON.stringify(ur));
+      */
+
+      ll = matrix.multiply(ll);
+      ur = matrix.multiply(ur);
+
+      /*
+      console.log("MM " + JSON.stringify(matrix));
+      console.log("ll " + JSON.stringify(ll));
+      console.log("ur " + JSON.stringify(ur));
+      */
+
+      ll = projection.pc2ll(ll.e(1), ll.e(2));
+      ur = projection.pc2ll(ur.e(1), ur.e(2));
+
+      //console.log("ll " + ll.e(1) + " " + ll.e(2) + " " + ll.e(3));
+      //console.log("ur " + ur.e(1) + " " + ur.e(2) + " " + ur.e(3));
+
+      return projection.new_projection(ll, ur);
+    };
+
+    function zoom3(factor, cx, cy) {
+      var nw = (projection.width / factor) / 2;
+      var nh = (projection.height / factor) / 2;
+      var ll = projection.pc2ll(cx - nw, cy + nh);
+      var ur = projection.pc2ll(cx + nw, cy - nh);
+      return projection.new_projection(ll, ur);
+    }
+
+    function zoom4(ll_x, ll_y, ur_x, ur_y) {
+      //console.log("zoom4" + ll_x + " " + ll_y+ " " + ur_x+ " " + ur_y )
+      var ll = projection.pc2ll(ll_x, ll_y);
+      var ur = projection.pc2ll(ur_x, ur_y);
+      return projection.new_projection(ll, ur);
+    }
+
+    function zoom2(ll, ur) {
+      return zoom4(ll.x, ll.y, ur.x, ur.y);
+    }
+
+    function zoom1(factor) {
+      var cx = projection.width / 2;
+      var cy = projection.height / 2;
+      return zoom3(factor, cx, cy);
+    }
+
+    magics.full_map_projection_name = function() {
+      return projection.full_map_projection_name();
+    }
+
+    magics.vertical_longitude = function(lon) {
+      return projection.new_projection_from_vertical_longitude(lon);
+    }
+
+    magics.zoom = function(a, b, c, d) {
+      if (b === undefined && c === undefined && d === undefined) {
+        return zoom1(a);
+      }
+      if (c === undefined && d === undefined) {
+        return zoom2(a, b);
+      }
+      if (d === undefined) {
+        return zoom3(a, b, c);
+      }
+      return zoom4(a, b, c, d);
+    };
+
+  } (params));
+  return magics;
+}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..751b16f
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,217 @@
+###############################################################################
+
+configure_file( magics_config.h.in  magics_config.h  )
+configure_file( magics.pc.in  magics.pc @ONLY  )
+
+install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/magics_config.h  DESTINATION ${INSTALL_INCLUDE_DIR})
+install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/magics.pc      DESTINATION ${INSTALL_LIB_DIR}/pkgconfig)
+
+###############################################################################
+
+add_subdirectory( params )
+
+foreach( file ${magics_xmls} )
+
+      get_filename_component( path     ${file} PATH   )
+      get_filename_component( basefile ${file} NAME_WE )
+
+      set( ouputfiles ${path}/${basefile}Attributes.h ${path}/${basefile}Attributes.cc )
+      
+      # generate the code
+      add_custom_command( 
+            OUTPUT  ${ouputfiles}
+            COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/xml2cc_new.pl ${CMAKE_CURRENT_SOURCE_DIR}/${file} ${CMAKE_CURRENT_BINARY_DIR}/params nosubdir
+            DEPENDS ${file}
+      )
+
+      set_source_files_properties( ${basefile}Attributes.h  GENERATED )
+      set_source_files_properties( ${basefile}Attributes.cc GENERATED )
+
+      list( APPEND magics_params_srcs ${ouputfiles} )
+
+endforeach()
+     
+if ( metview )      
+	foreach( file ${metview_xmls} )
+	      get_filename_component( path     ${file} PATH   )
+          get_filename_component( basefile ${file} NAME_WE )
+		  
+		  set( metviewfiles ${path}/${basefile}Wrapper.h ${path}/${basefile}Wrapper.cc )
+		  
+		  
+		# generate the code
+		  add_custom_command( 
+				OUTPUT  ${metviewfiles}
+				COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/xml2mv.pl ${CMAKE_CURRENT_SOURCE_DIR}/${file} ${CMAKE_CURRENT_BINARY_DIR}/params nosubdir
+				DEPENDS ${file}
+			)
+
+		  set_source_files_properties( ${basefile}Wrapper.h  GENERATED )
+          set_source_files_properties( ${basefile}Wrapper.cc GENERATED )
+          list( APPEND metview_wrappers_srcs ${metviewfiles} )
+      endforeach()
+
+     if(qt)
+        SET(qt_drivers_HEADERS drivers/MgQ/MgQPlotScene.h)
+        QT4_WRAP_CPP(qt_drivers_HEADERS_MOC ${qt_drivers_HEADERS})
+        list( APPEND drivers_srcs  drivers/MgQ/MgQPlotScene.cc  ${qt_drivers_HEADERS_MOC})
+     endif()
+
+endif()
+	 
+
+
+
+
+
+
+add_custom_target( magics_params DEPENDS ${magics_params_srcs} )
+add_custom_target( mv_params DEPENDS ${metview_wrappers_srcs} )
+###############################################################################
+
+add_subdirectory( common )
+add_subdirectory( basic )
+add_subdirectory( web )
+add_subdirectory( visualisers )
+add_subdirectory( drivers )
+add_subdirectory( decoders )
+add_subdirectory( terralib )
+add_subdirectory( eckit_readers )
+
+if( metview )
+	add_subdirectory( libMagWrapper )
+endif()
+
+if( MAGICS_ODB )
+	add_subdirectory( oda )
+endif()
+
+ecbuild_add_library( TARGET    MagPlusSingle 
+		     SOURCES MagicsSingle.cc
+		     INCLUDES  ${CMAKE_CURRENT_SOURCE_DIR}/common
+		     TYPE STATIC)
+		     
+ecbuild_add_library( TARGET    MagPlusDouble 
+		     SOURCES MagicsDouble.cc
+		     INCLUDES  ${CMAKE_CURRENT_SOURCE_DIR}/common
+		     TYPE STATIC)		     
+
+ecbuild_add_library( TARGET    MagPlusShared
+                     DEPENDS   magics_params
+                     SOURCES
+                        magics.h
+                        ${magics_params_srcs} 
+                        ${common_srcs} 
+                        ${basic_srcs}
+                        ${web_srcs}
+                        ${visualisers_srcs}
+                        ${eckit_srcs}
+                        ${drivers_srcs}
+                        ${qt_srcs}
+                        ${decoders_srcs}
+                        ${terralib_srcs} 
+                        ${odb_srcs}
+                     TEMPLATES
+                        ${common_templates}
+                     DEFINITIONS
+                        ${MAGICS_EXTRA_DEFINITIONS} MAGICS_EXCEPTION=on
+                    LIBS
+                        ${MAGICS_EXTRA_LIBRARIES}
+		            TYPE SHARED		     
+                    )
+SET_TARGET_PROPERTIES(MagPlusShared PROPERTIES OUTPUT_NAME "MagPlus")
+if ( ENABLE_STATIC_LIBRARY ) 	     
+ecbuild_add_library( TARGET    MagPlusStatic
+                     DEPENDS   magics_params
+                     SOURCES
+                        magics.h
+                        ${magics_params_srcs} 
+                        ${common_srcs} 
+                        ${basic_srcs}
+                        ${web_srcs}
+                        ${visualisers_srcs}
+                        ${eckit_srcs}
+                        ${drivers_srcs}
+                        ${qt_srcs}
+                        ${decoders_srcs}
+                        ${terralib_srcs} 
+                        ${odb_srcs}
+                     TEMPLATES
+                        ${common_templates}
+                     DEFINITIONS
+                        ${MAGICS_EXTRA_DEFINITIONS}  
+                    LIBS
+                        ${MAGICS_EXTRA_LIBRARIES} 
+		            TYPE STATIC		     
+                    )
+
+    SET_TARGET_PROPERTIES(MagPlusStatic PROPERTIES OUTPUT_NAME "MagPlus")
+
+endif()
+
+if( metview )
+  ecbuild_add_library( TARGET    MagWrapper
+                     DEPENDS   mv_params
+                     SOURCES
+                        magics.h
+                        ${metview_srcs} 
+                        ${metview_wrappers_srcs} 
+                     DEFINITIONS
+                        ${MAGICS_EXTRA_DEFINITIONS}
+                     INCLUDES  
+                        ${CMAKE_CURRENT_SOURCE_DIR} 
+                        ${CMAKE_CURRENT_BINARY_DIR} 
+                        ${CMAKE_CURRENT_BINARY_DIR}/params 
+                        ${CMAKE_CURRENT_SOURCE_DIR}/common  
+                        ${CMAKE_CURRENT_SOURCE_DIR}/basic
+                        ${CMAKE_CURRENT_SOURCE_DIR}/web
+                        ${CMAKE_CURRENT_SOURCE_DIR}/visualisers
+                        ${CMAKE_CURRENT_SOURCE_DIR}/drivers
+                        ${CMAKE_CURRENT_SOURCE_DIR}/decoders
+                        ${CMAKE_CURRENT_SOURCE_DIR}/terralib
+                        ${CMAKE_CURRENT_SOURCE_DIR}/terralib/kernel
+                        ${CMAKE_CURRENT_SOURCE_DIR}/terralib/utils 
+                        ${CMAKE_CURRENT_SOURCE_DIR}/libMagWrapper
+                    LIBS
+                        ${MAGICS_EXTRA_LIBRARIES}
+                    TYPE STATIC		
+                    )
+   list( APPEND attributes_include
+				OutputHandlerAttributes.h 
+				FortranRootSceneNodeAttributes.h  
+                BinningObjectAttributes.h
+                GribDecoderAttributes.h
+                DateGribLoopStepAttributes.h
+                GribLoopAttributes.h
+                GeoRectangularProjectionAttributes.h
+                LegendVisitorAttributes.h
+				XmlRootNodeAttributes.h 
+				WrepRootNodeAttributes.h
+				QtDriverAttributes.h
+                ContinuousLegendMethodAttributes.h
+                HistogramLegendMethodAttributes.h
+                XmlBasicNodeAttributes.h
+                ImagePlottingAttributes.h
+                LookupTableModeAttributes.h
+                FixedTableModeAttributes.h
+
+				)
+   install( FILES magics.h  DESTINATION ${INSTALL_INCLUDE_DIR})
+   install( FILES terralib/kernel/TeProjection.h
+				   terralib/kernel/TeCoord2D.h 
+				   terralib/kernel/TeDefines.h 
+				   terralib/kernel/TePrecision.h 
+				   terralib/kernel/TeSingleton.h 
+				   terralib/kernel/TeDatum.h 
+				   terralib/kernel/TeUtils.h
+				   terralib/kernel/TeProgress.h
+				   terralib/kernel/TeProgressBase.h
+				   
+				   
+				   DESTINATION ${INSTALL_INCLUDE_DIR})
+   install( FILES VectorOfPointers.h  DESTINATION ${INSTALL_INCLUDE_DIR})
+   foreach( file ${attributes_include} )
+     install( FILES ${CMAKE_CURRENT_BINARY_DIR}/params/${file}  DESTINATION ${INSTALL_INCLUDE_DIR})
+   endforeach()
+   install( FILES ${metview_include} DESTINATION ${INSTALL_INCLUDE_DIR})
+endif()
diff --git a/src/Makefile.am b/src/Makefile.am
deleted file mode 100644
index c90482f..0000000
--- a/src/Makefile.am
+++ /dev/null
@@ -1,228 +0,0 @@
-AUTOMAKE_OPTIONS	= foreign
-
-
-
-if MAGICS_ODB
-MAG_ODB_DIR 		= oda
-oda_lib			= oda/liboda.la
-endif
-
-#if MAGICS_TERRALIB
-MAG_TERRALIB_DIR 	= terralib
-terralib_lib		= terralib/libterralib.la
-#endif
-
-if MAGICS_JSON
-JSON_DIR		= web
-JSON_lib		= web/libWeb.la
-endif
-
-if MAGICS_BUFR
-bufr_dir		= MvObs
-bufr_lib		= MvObs/libMvObs.la
-endif
-
-include_H		= magics_config.h magics_ecmwf_log.h magics.h VectorOfPointers.h
-
-if MAGICS_METVIEW
-mv_dir		= libMagWrapper
-endif 
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= 
-else
-include_HEADERS = 
-noinst_HEADERS	= $(include_H)
-endif
-
-SUBDIRS			= xml basic common drivers decoders visualisers libTable ${MAG_TERRALIB_DIR} ${bufr_dir} ${MAG_ODB_DIR} ${JSON_DIR} ${mv_dir} .
-AM_CPPFLAGS		= ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/terralib/kernel
-
-LIBRARY_CURRENT		= @LIBRARY_CURRENT@
-LIBRARY_REVISION	= @LIBRARY_REVISION@
-LIBRARY_AGE		= @LIBRARY_AGE@
-
-lib_LTLIBRARIES		= libMagPlus.la
-libMagPlus_la_SOURCES	= 
-libMagPlus_la_LDFLAGS	= -no-undefined -version-info $(MAGICS_LIBRARY_CURRENT):$(MAGICS_LIBRARY_REVISION):$(MAGICS_LIBRARY_AGE)
-libMagPlus_la_LIBADD	= basic/libbasic.la common/libcommon.la drivers/libdrivers.la decoders/libdecoders.la visualisers/libvisualisers.la libTable/libTable.la \
-			   ${terralib_lib} ${bufr_lib} ${JSON_lib} ${oda_lib}
-
-#if MAGICS_MAC
-#my_la_LINK      = $(CXXLINK)
-#endif
-#libMagPlus_la_LINK = ${my_la_LINK}
-
-lib_LIBRARIES			= libMagPlusSingle.a libMagPlusDouble.a
-libMagPlusSingle_a_SOURCES	= MagicsSingle.cc
-libMagPlusDouble_a_SOURCES	= MagicsDouble.cc
-
-sharedir		= $(datadir)/magics
-share_DATA		= $(top_srcdir)/share/magics/ecmwf_logo.png \
-			$(top_srcdir)/share/magics/kml_logo.png \
-			$(top_srcdir)/share/magics/magics_kml_icons.png \
-			$(top_srcdir)/share/magics/Fonts.dat \
-			$(top_srcdir)/share/magics/PostScriptFonts.dat \
-			$(top_srcdir)/share/magics/PostScriptMacro1.ps \
-			$(top_srcdir)/share/magics/PostScriptMacro2.ps \
-			$(top_srcdir)/share/magics/symbols.svg \
-			$(top_srcdir)/share/magics/obs.xml \
-			$(top_srcdir)/share/magics/bufr_98.xml \
-			$(top_srcdir)/share/magics/centre.xml \
-			$(top_srcdir)/share/magics/level.xml \
-			$(top_srcdir)/share/magics/table_128.xml \
-			$(top_srcdir)/share/magics/table_129.xml \
-			$(top_srcdir)/share/magics/table_130.xml \
-			$(top_srcdir)/share/magics/table_131.xml \
-			$(top_srcdir)/share/magics/table_132.xml \
-			$(top_srcdir)/share/magics/table_140.xml \
-			$(top_srcdir)/share/magics/table_150.xml \
-			$(top_srcdir)/share/magics/table_151.xml \
-			$(top_srcdir)/share/magics/table_160.xml \
-			$(top_srcdir)/share/magics/table_162.xml \
-			$(top_srcdir)/share/magics/table_170.xml \
-			$(top_srcdir)/share/magics/table_171.xml \
-			$(top_srcdir)/share/magics/table_172.xml \
-			$(top_srcdir)/share/magics/table_173.xml \
-			$(top_srcdir)/share/magics/table_174.xml \
-			$(top_srcdir)/share/magics/table_175.xml \
-			$(top_srcdir)/share/magics/table_180.xml \
-			$(top_srcdir)/share/magics/table_190.xml \
-			$(top_srcdir)/share/magics/table_200.xml \
-			$(top_srcdir)/share/magics/table_210.xml \
-			$(top_srcdir)/share/magics/title_template.xml \
-			$(top_srcdir)/share/magics/epsg.json \
-			$(top_srcdir)/share/magics/type.xml \
-			$(top_srcdir)/share/magics/entities.dtd \
-			$(top_srcdir)/share/magics/ObstatGribVisDef.txt
-
-share10dir		= $(datadir)/magics/10m
-share10_DATA		= \
-			$(top_srcdir)/share/magics/10m/10m_admin_0_boundary_lines_land.dbf \
-			$(top_srcdir)/share/magics/10m/10m_admin_0_boundary_lines_land.shp \
-			$(top_srcdir)/share/magics/10m/10m_admin_0_boundary_lines_land.shx \
-			$(top_srcdir)/share/magics/10m/10m_admin_1_states_provinces_shp.dbf \
-			$(top_srcdir)/share/magics/10m/10m_admin_1_states_provinces_shp.shp \
-			$(top_srcdir)/share/magics/10m/10m_admin_1_states_provinces_shp.shx \
-			$(top_srcdir)/share/magics/10m/10m_lakes.dbf \
-			$(top_srcdir)/share/magics/10m/10m_lakes.shp \
-			$(top_srcdir)/share/magics/10m/10m_lakes.shx \
-			$(top_srcdir)/share/magics/10m/10m_land.dbf \
-			$(top_srcdir)/share/magics/10m/10m_land.shp \
-			$(top_srcdir)/share/magics/10m/10m_land.shx \
-			$(top_srcdir)/share/magics/10m/10m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/10m/10m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/10m/10m_rivers_lake_centerlines.shx \
-			$(top_srcdir)/share/magics/10m/10m_populated_places_simple.dbf \
-			$(top_srcdir)/share/magics/10m/10m_populated_places_simple.shp \
-			$(top_srcdir)/share/magics/10m/10m_populated_places_simple.shx
-
-share10fulldir		= $(datadir)/magics/10m_full
-share10full_DATA	= \
-			$(top_srcdir)/share/magics/10m_full/10m_lakes.dbf \
-			$(top_srcdir)/share/magics/10m_full/10m_lakes.shp \
-			$(top_srcdir)/share/magics/10m_full/10m_lakes.shx \
-			$(top_srcdir)/share/magics/10m_full/10m_land.dbf \
-			$(top_srcdir)/share/magics/10m_full/10m_land.shp \
-			$(top_srcdir)/share/magics/10m_full/10m_land.shx \
-			$(top_srcdir)/share/magics/10m_full/10m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/10m_full/10m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/10m_full/10m_rivers_lake_centerlines.shx
-
-share50dir		= $(datadir)/magics/50m
-share50_DATA		= \
-			$(top_srcdir)/share/magics/50m/50m_admin_0_boundary_lines_land.dbf \
-			$(top_srcdir)/share/magics/50m/50m_admin_0_boundary_lines_land.shp \
-			$(top_srcdir)/share/magics/50m/50m_admin_0_boundary_lines_land.shx \
-			$(top_srcdir)/share/magics/50m/50m_lakes.dbf \
-			$(top_srcdir)/share/magics/50m/50m_lakes.shp \
-			$(top_srcdir)/share/magics/50m/50m_lakes.shx \
-			$(top_srcdir)/share/magics/50m/50m_land.dbf \
-			$(top_srcdir)/share/magics/50m/50m_land.shp \
-			$(top_srcdir)/share/magics/50m/50m_land.shx \
-			$(top_srcdir)/share/magics/50m/50m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/50m/50m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/50m/50m_rivers_lake_centerlines.shx
-
-share110dir		= $(datadir)/magics/110m
-share110_DATA		= \
-			$(top_srcdir)/share/magics/110m/110m_admin_0_boundary_lines_land.dbf \
-			$(top_srcdir)/share/magics/110m/110m_admin_0_boundary_lines_land.shp  \
-			$(top_srcdir)/share/magics/110m/110m_admin_0_boundary_lines_land.shx \
-			$(top_srcdir)/share/magics/110m/110m_lakes.dbf \
-			$(top_srcdir)/share/magics/110m/110m_lakes.shp \
-			$(top_srcdir)/share/magics/110m/110m_lakes.shx \
-			$(top_srcdir)/share/magics/110m/110m_land.dbf \
-			$(top_srcdir)/share/magics/110m/110m_land.shp \
-			$(top_srcdir)/share/magics/110m/110m_land.shx \
-			$(top_srcdir)/share/magics/110m/110m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/110m/110m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/110m/110m_rivers_lake_centerlines.shx
-
-EXTRA_DIST	= 	boost
-
-if MAGICS_RASTER
-sharettfdir		= $(datadir)/magics/ttf
-sharettf_DATA		= $(top_srcdir)/share/magics/ttf/DejaVuSans-BoldOblique.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSans.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSerif-Oblique.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSans-Bold.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSerif-BoldOblique.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSerif.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSans-Oblique.ttf \
-			$(top_srcdir)/share/magics/ttf/DejaVuSerif-Bold.ttf \
-			$(top_srcdir)/share/magics/ttf/LICENSE-dejavu-ttf-2.15
-endif
-
-shareefidir		= $(datadir)/magics/efi
-shareefi_DATA		= $(top_srcdir)/share/magics/efi/Africa_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/efi_template.js
-
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = magics.pc
-
-quiet:
-	make --quiet install
diff --git a/src/Makefile.in b/src/Makefile.in
deleted file mode 100644
index 6bf8965..0000000
--- a/src/Makefile.in
+++ /dev/null
@@ -1,1284 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = src
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/magics.pc.in $(srcdir)/magics_config.h.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = magics_config.h
-CONFIG_CLEAN_FILES = magics.pc
-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__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" \
-	"$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(sharedir)" \
-	"$(DESTDIR)$(share10dir)" "$(DESTDIR)$(share10fulldir)" \
-	"$(DESTDIR)$(share110dir)" "$(DESTDIR)$(share50dir)" \
-	"$(DESTDIR)$(shareefidir)" "$(DESTDIR)$(sharettfdir)" \
-	"$(DESTDIR)$(includedir)"
-LIBRARIES = $(lib_LIBRARIES)
-ARFLAGS = cru
-AM_V_AR = $(am__v_AR_$(V))
-am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
-am__v_AR_0 = @echo "  AR    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-libMagPlusDouble_a_AR = $(AR) $(ARFLAGS)
-libMagPlusDouble_a_LIBADD =
-am_libMagPlusDouble_a_OBJECTS = MagicsDouble.$(OBJEXT)
-libMagPlusDouble_a_OBJECTS = $(am_libMagPlusDouble_a_OBJECTS)
-libMagPlusSingle_a_AR = $(AR) $(ARFLAGS)
-libMagPlusSingle_a_LIBADD =
-am_libMagPlusSingle_a_OBJECTS = MagicsSingle.$(OBJEXT)
-libMagPlusSingle_a_OBJECTS = $(am_libMagPlusSingle_a_OBJECTS)
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libMagPlus_la_DEPENDENCIES = basic/libbasic.la common/libcommon.la \
-	drivers/libdrivers.la decoders/libdecoders.la \
-	visualisers/libvisualisers.la libTable/libTable.la \
-	$(terralib_lib) $(bufr_lib) $(JSON_lib) $(oda_lib)
-am_libMagPlus_la_OBJECTS =
-libMagPlus_la_OBJECTS = $(am_libMagPlus_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libMagPlus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libMagPlus_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-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_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-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_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libMagPlusDouble_a_SOURCES) $(libMagPlusSingle_a_SOURCES) \
-	$(libMagPlus_la_SOURCES)
-DIST_SOURCES = $(libMagPlusDouble_a_SOURCES) \
-	$(libMagPlusSingle_a_SOURCES) $(libMagPlus_la_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-DATA = $(pkgconfig_DATA) $(share_DATA) $(share10_DATA) \
-	$(share10full_DATA) $(share110_DATA) $(share50_DATA) \
-	$(shareefi_DATA) $(sharettf_DATA)
-am__include_HEADERS_DIST = magics_config.h magics_ecmwf_log.h magics.h \
-	VectorOfPointers.h
-am__noinst_HEADERS_DIST = magics_config.h magics_ecmwf_log.h magics.h \
-	VectorOfPointers.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = xml basic common drivers decoders visualisers libTable \
-	terralib MvObs oda web libMagWrapper .
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-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"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
- at MAGICS_ODB_TRUE@MAG_ODB_DIR = oda
- at MAGICS_ODB_TRUE@oda_lib = oda/liboda.la
-
-#if MAGICS_TERRALIB
-MAG_TERRALIB_DIR = terralib
-terralib_lib = terralib/libterralib.la
-#endif
- at MAGICS_JSON_TRUE@JSON_DIR = web
- at MAGICS_JSON_TRUE@JSON_lib = web/libWeb.la
- at MAGICS_BUFR_TRUE@bufr_dir = MvObs
- at MAGICS_BUFR_TRUE@bufr_lib = MvObs/libMvObs.la
-include_H = magics_config.h magics_ecmwf_log.h magics.h VectorOfPointers.h
- at MAGICS_METVIEW_TRUE@mv_dir = libMagWrapper
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = 
-SUBDIRS = xml basic common drivers decoders visualisers libTable ${MAG_TERRALIB_DIR} ${bufr_dir} ${MAG_ODB_DIR} ${JSON_DIR} ${mv_dir} .
-AM_CPPFLAGS = ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/terralib/kernel
-LIBRARY_CURRENT = @LIBRARY_CURRENT@
-LIBRARY_REVISION = @LIBRARY_REVISION@
-LIBRARY_AGE = @LIBRARY_AGE@
-lib_LTLIBRARIES = libMagPlus.la
-libMagPlus_la_SOURCES = 
-libMagPlus_la_LDFLAGS = -no-undefined -version-info $(MAGICS_LIBRARY_CURRENT):$(MAGICS_LIBRARY_REVISION):$(MAGICS_LIBRARY_AGE)
-libMagPlus_la_LIBADD = basic/libbasic.la common/libcommon.la drivers/libdrivers.la decoders/libdecoders.la visualisers/libvisualisers.la libTable/libTable.la \
-			   ${terralib_lib} ${bufr_lib} ${JSON_lib} ${oda_lib}
-
-
-#if MAGICS_MAC
-#my_la_LINK      = $(CXXLINK)
-#endif
-#libMagPlus_la_LINK = ${my_la_LINK}
-lib_LIBRARIES = libMagPlusSingle.a libMagPlusDouble.a
-libMagPlusSingle_a_SOURCES = MagicsSingle.cc
-libMagPlusDouble_a_SOURCES = MagicsDouble.cc
-sharedir = $(datadir)/magics
-share_DATA = $(top_srcdir)/share/magics/ecmwf_logo.png \
-			$(top_srcdir)/share/magics/kml_logo.png \
-			$(top_srcdir)/share/magics/magics_kml_icons.png \
-			$(top_srcdir)/share/magics/Fonts.dat \
-			$(top_srcdir)/share/magics/PostScriptFonts.dat \
-			$(top_srcdir)/share/magics/PostScriptMacro1.ps \
-			$(top_srcdir)/share/magics/PostScriptMacro2.ps \
-			$(top_srcdir)/share/magics/symbols.svg \
-			$(top_srcdir)/share/magics/obs.xml \
-			$(top_srcdir)/share/magics/bufr_98.xml \
-			$(top_srcdir)/share/magics/centre.xml \
-			$(top_srcdir)/share/magics/level.xml \
-			$(top_srcdir)/share/magics/table_128.xml \
-			$(top_srcdir)/share/magics/table_129.xml \
-			$(top_srcdir)/share/magics/table_130.xml \
-			$(top_srcdir)/share/magics/table_131.xml \
-			$(top_srcdir)/share/magics/table_132.xml \
-			$(top_srcdir)/share/magics/table_140.xml \
-			$(top_srcdir)/share/magics/table_150.xml \
-			$(top_srcdir)/share/magics/table_151.xml \
-			$(top_srcdir)/share/magics/table_160.xml \
-			$(top_srcdir)/share/magics/table_162.xml \
-			$(top_srcdir)/share/magics/table_170.xml \
-			$(top_srcdir)/share/magics/table_171.xml \
-			$(top_srcdir)/share/magics/table_172.xml \
-			$(top_srcdir)/share/magics/table_173.xml \
-			$(top_srcdir)/share/magics/table_174.xml \
-			$(top_srcdir)/share/magics/table_175.xml \
-			$(top_srcdir)/share/magics/table_180.xml \
-			$(top_srcdir)/share/magics/table_190.xml \
-			$(top_srcdir)/share/magics/table_200.xml \
-			$(top_srcdir)/share/magics/table_210.xml \
-			$(top_srcdir)/share/magics/title_template.xml \
-			$(top_srcdir)/share/magics/epsg.json \
-			$(top_srcdir)/share/magics/type.xml \
-			$(top_srcdir)/share/magics/entities.dtd \
-			$(top_srcdir)/share/magics/ObstatGribVisDef.txt
-
-share10dir = $(datadir)/magics/10m
-share10_DATA = \
-			$(top_srcdir)/share/magics/10m/10m_admin_0_boundary_lines_land.dbf \
-			$(top_srcdir)/share/magics/10m/10m_admin_0_boundary_lines_land.shp \
-			$(top_srcdir)/share/magics/10m/10m_admin_0_boundary_lines_land.shx \
-			$(top_srcdir)/share/magics/10m/10m_admin_1_states_provinces_shp.dbf \
-			$(top_srcdir)/share/magics/10m/10m_admin_1_states_provinces_shp.shp \
-			$(top_srcdir)/share/magics/10m/10m_admin_1_states_provinces_shp.shx \
-			$(top_srcdir)/share/magics/10m/10m_lakes.dbf \
-			$(top_srcdir)/share/magics/10m/10m_lakes.shp \
-			$(top_srcdir)/share/magics/10m/10m_lakes.shx \
-			$(top_srcdir)/share/magics/10m/10m_land.dbf \
-			$(top_srcdir)/share/magics/10m/10m_land.shp \
-			$(top_srcdir)/share/magics/10m/10m_land.shx \
-			$(top_srcdir)/share/magics/10m/10m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/10m/10m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/10m/10m_rivers_lake_centerlines.shx \
-			$(top_srcdir)/share/magics/10m/10m_populated_places_simple.dbf \
-			$(top_srcdir)/share/magics/10m/10m_populated_places_simple.shp \
-			$(top_srcdir)/share/magics/10m/10m_populated_places_simple.shx
-
-share10fulldir = $(datadir)/magics/10m_full
-share10full_DATA = \
-			$(top_srcdir)/share/magics/10m_full/10m_lakes.dbf \
-			$(top_srcdir)/share/magics/10m_full/10m_lakes.shp \
-			$(top_srcdir)/share/magics/10m_full/10m_lakes.shx \
-			$(top_srcdir)/share/magics/10m_full/10m_land.dbf \
-			$(top_srcdir)/share/magics/10m_full/10m_land.shp \
-			$(top_srcdir)/share/magics/10m_full/10m_land.shx \
-			$(top_srcdir)/share/magics/10m_full/10m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/10m_full/10m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/10m_full/10m_rivers_lake_centerlines.shx
-
-share50dir = $(datadir)/magics/50m
-share50_DATA = \
-			$(top_srcdir)/share/magics/50m/50m_admin_0_boundary_lines_land.dbf \
-			$(top_srcdir)/share/magics/50m/50m_admin_0_boundary_lines_land.shp \
-			$(top_srcdir)/share/magics/50m/50m_admin_0_boundary_lines_land.shx \
-			$(top_srcdir)/share/magics/50m/50m_lakes.dbf \
-			$(top_srcdir)/share/magics/50m/50m_lakes.shp \
-			$(top_srcdir)/share/magics/50m/50m_lakes.shx \
-			$(top_srcdir)/share/magics/50m/50m_land.dbf \
-			$(top_srcdir)/share/magics/50m/50m_land.shp \
-			$(top_srcdir)/share/magics/50m/50m_land.shx \
-			$(top_srcdir)/share/magics/50m/50m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/50m/50m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/50m/50m_rivers_lake_centerlines.shx
-
-share110dir = $(datadir)/magics/110m
-share110_DATA = \
-			$(top_srcdir)/share/magics/110m/110m_admin_0_boundary_lines_land.dbf \
-			$(top_srcdir)/share/magics/110m/110m_admin_0_boundary_lines_land.shp  \
-			$(top_srcdir)/share/magics/110m/110m_admin_0_boundary_lines_land.shx \
-			$(top_srcdir)/share/magics/110m/110m_lakes.dbf \
-			$(top_srcdir)/share/magics/110m/110m_lakes.shp \
-			$(top_srcdir)/share/magics/110m/110m_lakes.shx \
-			$(top_srcdir)/share/magics/110m/110m_land.dbf \
-			$(top_srcdir)/share/magics/110m/110m_land.shp \
-			$(top_srcdir)/share/magics/110m/110m_land.shx \
-			$(top_srcdir)/share/magics/110m/110m_rivers_lake_centerlines.dbf \
-			$(top_srcdir)/share/magics/110m/110m_rivers_lake_centerlines.shp \
-			$(top_srcdir)/share/magics/110m/110m_rivers_lake_centerlines.shx
-
-EXTRA_DIST = boost
- at MAGICS_RASTER_TRUE@sharettfdir = $(datadir)/magics/ttf
- at MAGICS_RASTER_TRUE@sharettf_DATA = $(top_srcdir)/share/magics/ttf/DejaVuSans-BoldOblique.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSans.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSerif-Oblique.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSans-Bold.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSerif-BoldOblique.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSerif.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSans-Oblique.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/DejaVuSerif-Bold.ttf \
- at MAGICS_RASTER_TRUE@			$(top_srcdir)/share/magics/ttf/LICENSE-dejavu-ttf-2.15
-
-shareefidir = $(datadir)/magics/efi
-shareefi_DATA = $(top_srcdir)/share/magics/efi/Africa_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Africa_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Asia_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Australia_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Europe_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/Global_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/North32America_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_0.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_1.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_2.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_3.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_4.js\
-			$(top_srcdir)/share/magics/efi/South32America_All32parameters_5.js\
-			$(top_srcdir)/share/magics/efi/efi_template.js
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = magics.pc
-all: magics_config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .cc .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) --foreign src/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign 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):
-
-magics_config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
-
-stamp-h1: $(srcdir)/magics_config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status src/magics_config.h
-$(srcdir)/magics_config.h.in:  $(am__configure_deps) 
-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f magics_config.h stamp-h1
-magics.pc: $(top_builddir)/config.status $(srcdir)/magics.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-libLIBRARIES: $(lib_LIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LIBRARIES)'; 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 " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
-	@$(POST_INSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  if test -f $$p; then \
-	    $(am__strip_dir) \
-	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
-	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
-	  else :; fi; \
-	done
-
-uninstall-libLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
-
-clean-libLIBRARIES:
-	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
-libMagPlusDouble.a: $(libMagPlusDouble_a_OBJECTS) $(libMagPlusDouble_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libMagPlusDouble.a
-	$(AM_V_AR)$(libMagPlusDouble_a_AR) libMagPlusDouble.a $(libMagPlusDouble_a_OBJECTS) $(libMagPlusDouble_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libMagPlusDouble.a
-libMagPlusSingle.a: $(libMagPlusSingle_a_OBJECTS) $(libMagPlusSingle_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libMagPlusSingle.a
-	$(AM_V_AR)$(libMagPlusSingle_a_AR) libMagPlusSingle.a $(libMagPlusSingle_a_OBJECTS) $(libMagPlusSingle_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libMagPlusSingle.a
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@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 " $(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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libMagPlus.la: $(libMagPlus_la_OBJECTS) $(libMagPlus_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libMagPlus_la_LINK) -rpath $(libdir) $(libMagPlus_la_OBJECTS) $(libMagPlus_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagicsDouble.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagicsSingle.Po at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-pkgconfigDATA: $(pkgconfig_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
-	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
-install-shareDATA: $(share_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(sharedir)" || $(MKDIR_P) "$(DESTDIR)$(sharedir)"
-	@list='$(share_DATA)'; test -n "$(sharedir)" || list=; \
-	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)$(sharedir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(sharedir)" || exit $$?; \
-	done
-
-uninstall-shareDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(share_DATA)'; test -n "$(sharedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sharedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sharedir)" && rm -f $$files
-install-share10DATA: $(share10_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(share10dir)" || $(MKDIR_P) "$(DESTDIR)$(share10dir)"
-	@list='$(share10_DATA)'; test -n "$(share10dir)" || list=; \
-	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)$(share10dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(share10dir)" || exit $$?; \
-	done
-
-uninstall-share10DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(share10_DATA)'; test -n "$(share10dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(share10dir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(share10dir)" && rm -f $$files
-install-share10fullDATA: $(share10full_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(share10fulldir)" || $(MKDIR_P) "$(DESTDIR)$(share10fulldir)"
-	@list='$(share10full_DATA)'; test -n "$(share10fulldir)" || list=; \
-	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)$(share10fulldir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(share10fulldir)" || exit $$?; \
-	done
-
-uninstall-share10fullDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(share10full_DATA)'; test -n "$(share10fulldir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(share10fulldir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(share10fulldir)" && rm -f $$files
-install-share110DATA: $(share110_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(share110dir)" || $(MKDIR_P) "$(DESTDIR)$(share110dir)"
-	@list='$(share110_DATA)'; test -n "$(share110dir)" || list=; \
-	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)$(share110dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(share110dir)" || exit $$?; \
-	done
-
-uninstall-share110DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(share110_DATA)'; test -n "$(share110dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(share110dir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(share110dir)" && rm -f $$files
-install-share50DATA: $(share50_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(share50dir)" || $(MKDIR_P) "$(DESTDIR)$(share50dir)"
-	@list='$(share50_DATA)'; test -n "$(share50dir)" || list=; \
-	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)$(share50dir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(share50dir)" || exit $$?; \
-	done
-
-uninstall-share50DATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(share50_DATA)'; test -n "$(share50dir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(share50dir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(share50dir)" && rm -f $$files
-install-shareefiDATA: $(shareefi_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(shareefidir)" || $(MKDIR_P) "$(DESTDIR)$(shareefidir)"
-	@list='$(shareefi_DATA)'; test -n "$(shareefidir)" || list=; \
-	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)$(shareefidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(shareefidir)" || exit $$?; \
-	done
-
-uninstall-shareefiDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(shareefi_DATA)'; test -n "$(shareefidir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(shareefidir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(shareefidir)" && rm -f $$files
-install-sharettfDATA: $(sharettf_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(sharettfdir)" || $(MKDIR_P) "$(DESTDIR)$(sharettfdir)"
-	@list='$(sharettf_DATA)'; test -n "$(sharettfdir)" || list=; \
-	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)$(sharettfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(sharettfdir)" || exit $$?; \
-	done
-
-uninstall-sharettfDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(sharettf_DATA)'; test -n "$(sharettfdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sharettfdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sharettfdir)" && rm -f $$files
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) magics_config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS) magics_config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) magics_config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS) magics_config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    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
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) $(HEADERS) \
-		magics_config.h
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(sharedir)" "$(DESTDIR)$(share10dir)" "$(DESTDIR)$(share10fulldir)" "$(DESTDIR)$(share110dir)" "$(DESTDIR)$(share50dir)" "$(DESTDIR)$(shareefidir)" "$(DESTDIR)$(sharettfdir)" "$(DESTDIR)$(includedir)"; 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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-libLIBRARIES clean-libLTLIBRARIES \
-	clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-hdr distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-includeHEADERS install-pkgconfigDATA \
-	install-share10DATA install-share10fullDATA \
-	install-share110DATA install-share50DATA install-shareDATA \
-	install-shareefiDATA install-sharettfDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-libLIBRARIES install-libLTLIBRARIES
-
-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 -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLIBRARIES \
-	uninstall-libLTLIBRARIES uninstall-pkgconfigDATA \
-	uninstall-share10DATA uninstall-share10fullDATA \
-	uninstall-share110DATA uninstall-share50DATA \
-	uninstall-shareDATA uninstall-shareefiDATA \
-	uninstall-sharettfDATA
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-	ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic \
-	clean-libLIBRARIES clean-libLTLIBRARIES clean-libtool ctags \
-	ctags-recursive 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-libLIBRARIES install-libLTLIBRARIES install-man \
-	install-pdf install-pdf-am install-pkgconfigDATA install-ps \
-	install-ps-am install-share10DATA install-share10fullDATA \
-	install-share110DATA install-share50DATA install-shareDATA \
-	install-shareefiDATA install-sharettfDATA install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
-	uninstall-includeHEADERS uninstall-libLIBRARIES \
-	uninstall-libLTLIBRARIES uninstall-pkgconfigDATA \
-	uninstall-share10DATA uninstall-share10fullDATA \
-	uninstall-share110DATA uninstall-share50DATA \
-	uninstall-shareDATA uninstall-shareefiDATA \
-	uninstall-sharettfDATA
-
-
-quiet:
-	make --quiet install
-
-# 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/MvObs/Makefile.am b/src/MvObs/Makefile.am
deleted file mode 100755
index b43232f..0000000
--- a/src/MvObs/Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-noinst_LTLIBRARIES	= libMvObs.la
-
-include_H	= fmettim.h fdyntime.h fobject.h fsortabl.h fstatime.h MvBufr.h MvLocation.h MvBufrObs.h MvObs.h MvPrepBufrPrep.h MvObsSet.h inc_iostream.h
-
-noinst_HEADERS	= $(include_H)
-# no need to install these headers as only Metview is using the C++ interface and it already has these files
-
-
-libMvObs_la_SOURCES	= fmettim.cc fdyntime.cc fobject.cc fsortabl.cc fstatime.cc MvLocation.cc MvObs.cc MvObsSet.cc MvPrepBufrPrep.cc
-
-libMvObs_la_CXXFLAGS	= -Dfortfloat=double -Dfortint=int -Dboolean=bool -DUSE_NEW_IO -DS4LINUX -DS4MDX -DS4NO_STRNICMP -DXK_MISCELLANY
-libMvObs_la_LDFLAGS	= -no-undefined -no-install
-AM_CPPFLAGS		= -I$(top_srcdir)/src/MvObs
-EXTRA_DIST		=
diff --git a/src/MvObs/Makefile.in b/src/MvObs/Makefile.in
deleted file mode 100644
index 20a092e..0000000
--- a/src/MvObs/Makefile.in
+++ /dev/null
@@ -1,666 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = src/MvObs
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libMvObs_la_LIBADD =
-am_libMvObs_la_OBJECTS = libMvObs_la-fmettim.lo \
-	libMvObs_la-fdyntime.lo libMvObs_la-fobject.lo \
-	libMvObs_la-fsortabl.lo libMvObs_la-fstatime.lo \
-	libMvObs_la-MvLocation.lo libMvObs_la-MvObs.lo \
-	libMvObs_la-MvObsSet.lo libMvObs_la-MvPrepBufrPrep.lo
-libMvObs_la_OBJECTS = $(am_libMvObs_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libMvObs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libMvObs_la_CXXFLAGS) \
-	$(CXXFLAGS) $(libMvObs_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libMvObs_la_SOURCES)
-DIST_SOURCES = $(libMvObs_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libMvObs.la
-include_H = fmettim.h fdyntime.h fobject.h fsortabl.h fstatime.h MvBufr.h MvLocation.h MvBufrObs.h MvObs.h MvPrepBufrPrep.h MvObsSet.h inc_iostream.h
-noinst_HEADERS = $(include_H)
-# no need to install these headers as only Metview is using the C++ interface and it already has these files
-libMvObs_la_SOURCES = fmettim.cc fdyntime.cc fobject.cc fsortabl.cc fstatime.cc MvLocation.cc MvObs.cc MvObsSet.cc MvPrepBufrPrep.cc
-libMvObs_la_CXXFLAGS = -Dfortfloat=double -Dfortint=int -Dboolean=bool -DUSE_NEW_IO -DS4LINUX -DS4MDX -DS4NO_STRNICMP -DXK_MISCELLANY
-libMvObs_la_LDFLAGS = -no-undefined -no-install
-AM_CPPFLAGS = -I$(top_srcdir)/src/MvObs
-EXTRA_DIST = 
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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/MvObs/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/MvObs/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libMvObs.la: $(libMvObs_la_OBJECTS) $(libMvObs_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libMvObs_la_LINK)  $(libMvObs_la_OBJECTS) $(libMvObs_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-MvLocation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-MvObs.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-MvObsSet.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-MvPrepBufrPrep.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-fdyntime.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-fmettim.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-fobject.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-fsortabl.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libMvObs_la-fstatime.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-libMvObs_la-fmettim.lo: fmettim.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-fmettim.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-fmettim.Tpo -c -o libMvObs_la-fmettim.lo `test -f 'fmettim.cc' || echo '$(srcdir)/'`fmettim.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-fmettim.Tpo $(DEPDIR)/libMvObs_la-fmettim.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='fmettim.cc' object='libMvObs_la-fmettim.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-fmettim.lo `test -f 'fmettim.cc' || echo '$(srcdir)/'`fmettim.cc
-
-libMvObs_la-fdyntime.lo: fdyntime.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-fdyntime.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-fdyntime.Tpo -c -o libMvObs_la-fdyntime.lo `test -f 'fdyntime.cc' || echo '$(srcdir)/'`fdyntime.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-fdyntime.Tpo $(DEPDIR)/libMvObs_la-fdyntime.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='fdyntime.cc' object='libMvObs_la-fdyntime.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-fdyntime.lo `test -f 'fdyntime.cc' || echo '$(srcdir)/'`fdyntime.cc
-
-libMvObs_la-fobject.lo: fobject.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-fobject.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-fobject.Tpo -c -o libMvObs_la-fobject.lo `test -f 'fobject.cc' || echo '$(srcdir)/'`fobject.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-fobject.Tpo $(DEPDIR)/libMvObs_la-fobject.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='fobject.cc' object='libMvObs_la-fobject.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-fobject.lo `test -f 'fobject.cc' || echo '$(srcdir)/'`fobject.cc
-
-libMvObs_la-fsortabl.lo: fsortabl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-fsortabl.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-fsortabl.Tpo -c -o libMvObs_la-fsortabl.lo `test -f 'fsortabl.cc' || echo '$(srcdir)/'`fsortabl.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-fsortabl.Tpo $(DEPDIR)/libMvObs_la-fsortabl.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='fsortabl.cc' object='libMvObs_la-fsortabl.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-fsortabl.lo `test -f 'fsortabl.cc' || echo '$(srcdir)/'`fsortabl.cc
-
-libMvObs_la-fstatime.lo: fstatime.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-fstatime.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-fstatime.Tpo -c -o libMvObs_la-fstatime.lo `test -f 'fstatime.cc' || echo '$(srcdir)/'`fstatime.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-fstatime.Tpo $(DEPDIR)/libMvObs_la-fstatime.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='fstatime.cc' object='libMvObs_la-fstatime.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-fstatime.lo `test -f 'fstatime.cc' || echo '$(srcdir)/'`fstatime.cc
-
-libMvObs_la-MvLocation.lo: MvLocation.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-MvLocation.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-MvLocation.Tpo -c -o libMvObs_la-MvLocation.lo `test -f 'MvLocation.cc' || echo '$(srcdir)/'`MvLocation.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-MvLocation.Tpo $(DEPDIR)/libMvObs_la-MvLocation.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MvLocation.cc' object='libMvObs_la-MvLocation.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-MvLocation.lo `test -f 'MvLocation.cc' || echo '$(srcdir)/'`MvLocation.cc
-
-libMvObs_la-MvObs.lo: MvObs.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-MvObs.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-MvObs.Tpo -c -o libMvObs_la-MvObs.lo `test -f 'MvObs.cc' || echo '$(srcdir)/'`MvObs.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-MvObs.Tpo $(DEPDIR)/libMvObs_la-MvObs.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MvObs.cc' object='libMvObs_la-MvObs.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-MvObs.lo `test -f 'MvObs.cc' || echo '$(srcdir)/'`MvObs.cc
-
-libMvObs_la-MvObsSet.lo: MvObsSet.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-MvObsSet.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-MvObsSet.Tpo -c -o libMvObs_la-MvObsSet.lo `test -f 'MvObsSet.cc' || echo '$(srcdir)/'`MvObsSet.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-MvObsSet.Tpo $(DEPDIR)/libMvObs_la-MvObsSet.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MvObsSet.cc' object='libMvObs_la-MvObsSet.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-MvObsSet.lo `test -f 'MvObsSet.cc' || echo '$(srcdir)/'`MvObsSet.cc
-
-libMvObs_la-MvPrepBufrPrep.lo: MvPrepBufrPrep.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -MT libMvObs_la-MvPrepBufrPrep.lo -MD -MP -MF $(DEPDIR)/libMvObs_la-MvPrepBufrPrep.Tpo -c -o libMvObs_la-MvPrepBufrPrep.lo `test -f 'MvPrepBufrPrep.cc' || echo '$(srcdir)/'`MvPrepBufrPrep.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libMvObs_la-MvPrepBufrPrep.Tpo $(DEPDIR)/libMvObs_la-MvPrepBufrPrep.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MvPrepBufrPrep.cc' object='libMvObs_la-MvPrepBufrPrep.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMvObs_la_CXXFLAGS) $(CXXFLAGS) -c -o libMvObs_la-MvPrepBufrPrep.lo `test -f 'MvPrepBufrPrep.cc' || echo '$(srcdir)/'`MvPrepBufrPrep.cc
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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:
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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 tags 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/src/MvObs/MvBufr.h b/src/MvObs/MvBufr.h
deleted file mode 100644
index ad9c482..0000000
--- a/src/MvObs/MvBufr.h
+++ /dev/null
@@ -1,444 +0,0 @@
-/***************************** LICENSE START ***********************************
-
- Copyright 2012 ECMWF and INPE. This software is distributed under the terms
- of the Apache License version 2.0. In applying this license, ECMWF does not
- waive the privileges and immunities granted to it by virtue of its status as
- an Intergovernmental Organization or submit itself to any jurisdiction.
-
- ***************************** LICENSE END *************************************/
-
-// MvBufr.h,   vk Sep94
-//        rev vk 010720
-
-#ifndef MvBufr_DEFINED_
-#define MvBufr_DEFINED_
-
-#include "fdyntime.h"
-#include <map>
-using namespace std;
-
-/*! \file */
-
-//--------------------------------------------------------
-// This constant should be removed into 'Site Dependent Values'...
-//--------------------------------------------------------
-const int BUFR_ORIGINATING_CENTER = 98;   // 98 == ECMWF
-
-
-//------------------------------------------------------//
-// missing value code to be used in C/C++ routines      //
-//------------------------------------------------------//
-const float     kBufrMissingValue = 1.7e38;
-const fortint   kBufrMissingIntValue = 2147483647;
-
-
-//------------------------------------------------------//
-// missing value code returned by FORTRAN routines      //
-//------------------------------------------------------//
-const fortfloat kFortranBufrMissingValue = 1.7e38;
-const fortint   kFortranBufrMissingIntValue = 2147483647;
-
-//--------------------------------------------------------
-// maximum sizes of arrays used in FORTRAN routines
-// NOTE: sizes for arrrays for BUBOX set in MvObs.cc!!!
-// NOTE2: IBM/AIX cannot handle bigger arrays in -q32 mode
-//--------------------------------------------------------
-#if defined(AIX) || defined(MV_USE_SMALL_ARRAYS)
- const int MAX_KELEM=  40000;  //12000;
- const int NUM_MAX_KVALS=3;
- const int aMAX_KVALS[NUM_MAX_KVALS]={90000, 180000, 360000}; // previous max values: 80000
- //                                      7MB    14MB   27MB
-//                                    (vals*80)/(1024*1024)MB
- const int MAX_KVALS=aMAX_KVALS[NUM_MAX_KVALS-1]; // biggest entry in aMAX_KVALS
-#else
- const int MAX_KELEM = 160000; // max allowed is 160,000 !!!  // 80000;  // 40000;   //12000;
- const int NUM_MAX_KVALS=3;
- const int aMAX_KVALS[NUM_MAX_KVALS]={600000, 1500000, 4096000};  //360000;   //80000;
-//                                      45MB    115MB   312MB
-//                                    (vals*80)/(1024*1024)MB
- const int MAX_KVALS=aMAX_KVALS[NUM_MAX_KVALS-1]; // biggest entry in aMAX_KVALS
-#endif
-
-//! \enum EBufrInState Status of a BUFR message being read
-enum  EBufrInState
-{
-   kBufrIn_Error
- , kBufrIn_Coded
- , kBufrIn_Sections012Expanded
- , kBufrIn_DataDecoded
- , kBufrIn_DataAndDescriptorsDecoded
-};
-
-//! \enum EBufrOutState Status of a BUFR message being created
-enum  EBufrOutState
-{
-   kBufrOut_error
-  ,kBufrOut_noBuffers
-  ,kBufrOut_emptyBuffers
-  ,kBufrOut_formatedBuffers
-  ,kBufrOut_dataInBuffers
-};
-
-//! \enum EElementValueType Values for data element types
-enum EElementValueType
-{
-   kEVT_unknown
-  ,kEVT_missing
-  ,kEVT_numeric
-  ,kEVT_string
-};
-
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-                                             //  Sections of a BUFR message
-typedef struct
-{
-   unsigned char startStr;       // "B"
-   unsigned char startStr2;      // "U"
-   unsigned char startStr3;      // "F"
-   unsigned char startStr4;      // "R"
-   unsigned char totalLen;    // 24 bits
-   unsigned char totalLen2;
-   unsigned char totalLen3;
-   unsigned char editionNr;
-} TSection0;
-#endif
-
-#if 0
-typedef struct
-{
-   unsigned char len;        // 24;  // 1-3
-   unsigned char len2;       // 24;  // 2
-   unsigned char len3;       // 24;  // 3
-   unsigned char masterTable;//  8;  // 4
-   unsigned char origCentre; // 16;  // 5-6
-   unsigned char origCentre2;// 16;  // 6
-   unsigned char updateSeq;  //  8;  // 7
-
-   unsigned char bitField;   //  8;  // 8...
-   unsigned char msgType;    //  8;
-   unsigned char msgSubtype; //  8;
-   unsigned char masterTableVers; //8;
-
-   unsigned char localTableVers; //8;  // 12...
-   unsigned char yearYY;     //  8;
-   unsigned char month;      //  8;
-   unsigned char day;        //  8;
-
-   unsigned char hour;       //  8;  // 16...
-   unsigned char minute;     //  8;
-} TSection1;
-#endif
-
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-// internal classes, should not be included in Doxygen docs
-
-const unsigned char cOctetMissingIndicator = 255;
-
-class Section1Base
-{
- public:
-   Section1Base( const unsigned char* octs );
-   Section1Base( const Section1Base* aSec1 );
-   virtual ~Section1Base(){ delete [] octets_; }
-
-   int         len() const { return 65536*octets_[0] + 256*octets_[1] + octets_[2]; }
-   bool        isDifferent( const Section1Base* aSec1 ) const;
-   const unsigned char* start() const { return octets_; }
-
-   virtual bool     hasSection2() = 0;
-   virtual TDynamicTime date() = 0;
-   virtual int      msgType() = 0;
-   virtual int      msgSubtypeWMO() = 0;
-   virtual int      msgSubtypeLocal() = 0;
-   virtual int      msgSubtype() = 0;
-   virtual int      origCentre() = 0;
-   virtual int      origSubCentre() = 0;
-   virtual int      masterTable() = 0;
-   virtual int      masterTableVersion() = 0;
-   virtual int 	    localTableVersion() = 0;
-
- protected:
-   unsigned char* octets_;
-};
-
-class Section1_preEd4 : public Section1Base
-{
- public:
-   Section1_preEd4( const unsigned char* octs ) : Section1Base( octs ){};
-   Section1_preEd4( const Section1Base* aSec1 ) : Section1Base( aSec1 ){};
-
-   bool     hasSection2();
-   TDynamicTime date();
-   int      msgType();
-   int      msgSubtypeWMO();
-   int      msgSubtypeLocal();
-   int      msgSubtype();
-   int      origCentre();
-   int      origSubCentre();
-   int      masterTable();
-   int      masterTableVersion();
-   int 	    localTableVersion();
-};
-
-class Section1_Ed4 : public Section1Base
-{
- public:
-   Section1_Ed4( const unsigned char* octs ) : Section1Base( octs ){};
-   Section1_Ed4( const Section1Base* aSec1 ) : Section1Base( aSec1 ){};
-
-   bool     hasSection2();
-   TDynamicTime date();
-   int      msgType();
-   int      msgSubtypeWMO();
-   int      msgSubtypeLocal();
-   int      msgSubtype();
-   int      origCentre();
-   int      origSubCentre();
-   int      masterTable();
-   int      masterTableVersion();
-   int 	    localTableVersion();
-};
-
-typedef struct
-{
-   unsigned char len;      // : 24;
-   unsigned char len2;
-   unsigned char len3;
-   unsigned char reserved; // :  8;
-} TSection2;
-
-typedef struct
-{
-   unsigned char len;      // : 24;
-   unsigned char len2;
-   unsigned char len3;
-   unsigned char reserved;   //  8;
-   unsigned char subsetCnt;  // 16;
-   unsigned char subsetCnt2;
-   unsigned char bitField;   //  8;
-} TSection3;
-
-typedef struct
-{
-   unsigned char len;      // : 24;
-   unsigned char len2;
-   unsigned char len3;
-   unsigned char reserved; // :  8;
-} TSection4;
-// DOXYGEN_SHOULD_SKIP_THIS
-#endif
-
-//--------------------------------------------------------------- MvBufrBase
-
-class MvObsSet;
-
-//! Wrapper around Fortran 'bufren', base class for MvBufr and MvBufrOut
-/*! This class and its methods are a lower level wrapper around Fortran
- *  subroutine 'bufren'. This class should be hidden from Metview applications
- *  and the methods of this class should be called only from MvObs.
- */
-class MvBufrBase
-{
- friend class MvBufrOut;  //???
- //friend class MvObsSet;
-
- protected:
-	 int  _refCount;
-	long  fMessageNumber;
-
-        long *longptr;
-	char *fMessage;
-	long  fMessageLength;
-   TSection0 *fSec0;
-   Section1Base* Sec1;
-   TSection2 *fSec2;
-   unsigned char *fTotalSec2;
-   TSection3 *fSec3;
-   TSection4 *fSec4;
-
-     fortint  fKERR;
-     fortint *fKSUP;   // [ 9 ];
-     fortint *fKSEC0;  // [ 3 ];
-     fortint *fKSEC1;  // [ 40 ];
-     fortint *fKSEC2;  // [ 64 ];
-     fortint *fKSEC3;  // [ 4 ];
-     fortint *fKSEC4;  // [ 2 ];
-
- protected:
-	    MvBufrBase( const long len );  //( char *msg, long len );
-	    virtual ~MvBufrBase( void );
-
-      void  attach( void );   // { _refCount++; }
-      void  detach( void );   // { if( --_refCount == 0 ) delete this; }
-      void  createFortranArrays( void );
-    void  createDataArrays( void );
-    void  deleteDataArrays( void );
-      unsigned int unsignedInt( const unsigned char* firstOctet
-                              , int octetCount );
-      int subsetCount(){ return unsignedInt( &(fSec3->subsetCnt), 2); }
-      int totalLen() { return unsignedInt( &(fSec0->totalLen), 3); }
-};
-
-//--------------------------------------------------------------- MvBufr
-
-//! C++ wrapper around Fortran 'bufren', used by MvObs
-/*! This class and its methods are a lower level wrapper around Fortran
- *   subroutine 'bufren'. These methods should be called only via MvObs class.
- */
-class MvBufr : public MvBufrBase
-{
- friend class MvObs;
- friend class MvObsSet;
- friend class MvObsSetIterator;
- friend class MvBufrConfidence;
- friend class MvBufrOut;
-
-   static long  _bufrIn_ref;
-
- protected:
-	    MvBufr( char *msg, long len, long aMessageNumber=0 );
-	    ~MvBufr( void );  //?? {} missing??
-
-      void  Decode( void );
-      void  Decode_012( void );
-      void  ExpandDescriptors( int subsetNumber );
-       int  descriptorToFortranIndex( const long aDescr, const int firstIndex = 0 );
-      long  currentBufrRef( void ) const { return _bufrIn_ref; };
-
- EElementValueType  elementValueType( const int aSubsetNr );
- EElementValueType  elementValueType( const long aDescriptor, const int aSubsetNr );
- EElementValueType  elementValueTypeByIndex( const int anIndex, const int aSubsetNr );
-
- boolean  Value( const long aDescriptor
-		 , const long aSubsetNumber
-		 , fortfloat &aDataValue
-		 , int   firstIndex = 0 );
-     fortfloat  DataValue( const int aDescriptorArrayIndex
-		     , const long aSubsetNumber);
-     fortfloat  PeekDataValue( const int aDescriptorArrayIndex
-		         , const long aSubsetNumber);
-      long  intValue( const long aDescriptor, const int subsetNr );
-
-    double  feedbackValue( int col, int subset );
-    double  feedbackValue( int row, int col, int subset );
-    string   feedbackItemName( int row,int subset );
-    string   feedbackItemUnit( int row,int subset );
-
-  TDynamicTime  obsTime( const int subsetNr ); //- from msg body (section 4)
-  TDynamicTime  msgTime( void );               //- from msg header (section 1)
-
-    string  stringValue( const long aDescriptor, const int aSubsetNr );
-    string  stringValue( const int aSubsetNr );
-    string  stringValueByIndex( const int anIndex, const int aSubsetNr );
-
-    string  unit( const long aDescriptor );
-    string  unit( void );
-    string  unitByIndex( const int anIndex );
-
-    string  name( const long aDescriptor );
-    string  name( void );
-    string  nameByIndex( const int anIndex );
-
-   boolean  SetFirstDescriptor( void );
-   boolean  SetNextDescriptor( void );
-      long  CurrentDescriptor( void ){ return _currentDescr; }
- fortfloat  CurrentValue( const int aSubsetNr ){ return DataValue( _currentDescrInd, aSubsetNr); }
-
-      bool  printSection(ostream &aStream,int which);
-      bool printSection_012( ostream& aStream,int which);
-      bool  writeBufrBox( int aSubsetNr );
-       int  fillBufrBox( int aSubsetNr );
-      bool  getBufrBoxSize( int& rows, int& cols, int aSubsetNr );
-
-      bool  getDataFromSection2(map<string,string> &data);
-      void  parseSection2(fortint *fKEY,map<string,string> &data);
-
-      void  setSubset( int subsetNumber ){ _lastKnownSubsetValue = subsetNumber; }
-
- private:
-      void  computeIn_KELEM( void );
-
- protected:
-  EBufrInState  _inState;
-	  long  _currentDescr;
-	  int   _currentDescrInd;
-	  int   _bufrBoxFilledSubset;
-	  fortint  _lastKnownSubsetValue; //-- Q&D trick, BUSEL2 requires
-};
-
-//--------------------------------------------------------------- MvBufrOut
-// A simple class capable of producing BUFR code only from 'MvObs'
-// objects i.e. usable in filtering applications which read a
-// BUFR file and write a new file with less messages...
-//---------------------------------------------------------------
-
-class MvObsSet;
-class MvObs;
-class MvBufrConfidence;
-
-const int MAX_KDLEN = 2000;  //-- big value needed for some NCEP PrepBUFR files
-
-//! Wrapper around Fortran 'bufren', for (re)encoding
-/*! This class and its methods are a lower level wrapper around Fortran
- *  subroutine 'bufren'. These methods should be called only via MvObs class.
- */
-class MvBufrOut : public MvBufrBase
-{
- friend class MvObs;
- friend class MvObsSet;
- friend class MvObsSetIterator;
-
- protected:
-	    MvBufrOut( const long len, MvObsSet* anOutSet );
-	    ~MvBufrOut( void );
-
-   static long  _bufrOut_ref;
-
-      void  createBuffers();
-      void  resetBuffers( void );
-      void  formatBuffers( const MvObs& anObs );
-      void  write( MvObs& anObs );
-      void  add( MvObs& anObs );
-      void  addIntoBuffers( MvObs& anObs );
-      void  encode( void );
-      void  checkDescriptors( const MvObs& anObs );
-       int  differentDescriptors( void ) const;
-       int  differentHeader( const MvObs& anObs ) const;
-       int  shouldBeWritten( void );
-      void  setSubsetCount( int MaxNrSubsets );
-   boolean  isDelayedDescriptor( const long aDescriptor ) const;
-     // long  msgLength( void ) { return _msgIntLen*sizeof( fortint ); }
-
- protected:
-       MvObsSet* _outSet;
-            int  _maxNrSubsets;
-	    int  _nextValue;
-	    int  _nextCharParamPos;
-  EBufrOutState  _outState;
-        fortint  _KDLEN;
-        fortint  _KDATA[ MAX_KDLEN ];
-   Section1Base* _currentSec1;
-};
-
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-//--------------------------------------------------------------- MvBufrParam
-
-class MvBufrParam
-{
- public:
-        MvBufrParam( const char *aParamName );
-        MvBufrParam( const long anIntAsDescriptor ) {fDescriptor = anIntAsDescriptor;}
-
-  long  Descriptor( void ) const { return fDescriptor; }
-  void  PrintAllKnownParameters( void ) const;
-
-  operator int ( void ) const { return fDescriptor; }
-
- private:
-     long  fDescriptor;
-};
-// DOXYGEN_SHOULD_SKIP_THIS
-#endif
-
-#endif
-// MvBufr_DEFINED
diff --git a/src/MvObs/MvBufrObs.h b/src/MvObs/MvBufrObs.h
deleted file mode 100644
index fca7e63..0000000
--- a/src/MvObs/MvBufrObs.h
+++ /dev/null
@@ -1,599 +0,0 @@
-/***************************** LICENSE START ***********************************
-
- Copyright 2012 ECMWF and INPE. This software is distributed under the terms
- of the Apache License version 2.0. In applying this license, ECMWF does not
- waive the privileges and immunities granted to it by virtue of its status as
- an Intergovernmental Organization or submit itself to any jurisdiction.
-
- ***************************** LICENSE END *************************************/
-
-// MvObs.h,   vk july94
-//        rev vk 010724
-
-#ifndef MvBufrObs_DEFINED
-#define MvBufrObs_DEFINED
-
-#include <string>
-#include "inc_iostream.h"
-//#include <fstream.h>
-//#include <strstream.h>
-#include "MvBufr.h"
-#include "MvLocation.h"
-#include "fmettim.h"
-
-#ifdef METVIEW
-//#   include "Metview.h"
-#    include "MvDate.h"
-#    include "MvRequest.h"
-#endif
-
-//---------------------------------------------------
-// Function definitions for the FORTRAN BUFR routines
-//---------------------------------------------------
-
-#ifdef FORTRAN_NO_UNDERSCORE
-#define  BUS012   bus012
-#define  BUPRS0   buprs0
-#define  BUPRS1   buprs1
-#define  BUPRS2   buprs2
-#define  BUFREX   bufrex
-#define  BUFREN   bufren
-#define  BUSEL    busel
-#define  BUSEL2   busel2
-#define  BUUKEY   buukey
-#define  BUPRS3   buprs3
-#define  BUBOX    bubox
-#define  BUPRTBOX buprtbox
-#define  FT_OP6   ft_op6
-#define  FT_CLO   ft_clo
-#else
-#define  BUS012   bus012_
-#define  BUPRS0   buprs0_
-#define  BUPRS1   buprs1_
-#define  BUPRS2   buprs2_
-#define  BUFREX   bufrex_
-#define  BUFREN   bufren_
-#define  BUSEL    busel_
-#define  BUSEL2   busel2_
-#define  BUUKEY   buukey_
-#define  BUPRS3   buprs3_
-#define  BUBOX    bubox_
-#define  BUPRTBOX buprtbox_
-#define  FT_OP6   ft_op6_
-#define  FT_CLO   ft_clo_
-#endif
-
-//--------------------------------------------------------------- MvObs
-//! A class to handle one observation report stored in a BUFR message
-/*! This class is used to request data and metadata from a single
- *  BUFR message (Observation Report). Access to BUFR messages in
- *  files is done using classes MvObsSet and MvObsSetIterator. \n
- *
- * <B>Descriptors</B> \n
- * Elements within the message body are referenced by BUFR descriptors.
- * These descriptors are of the form 'ZXXYYY', where Z=0, XX defines
- * an element class and YYY defines an element within a class.
- * Descriptor values can be found in "BUFR, User Guide and Reference Manual"
- * by Milan Dragosavac (ECMWF). \n
- * A Word of Warning: leave out leading zeroes when writing constants
- * (such as descriptors) into your code, unless you intend to use
- * octal constants! \n
- *
- * <B>Current Descriptor</B> \n
- * Some member functions need no descriptor, because they will use
- * the internal Current Descriptor set by a previously called member
- * function which had a descriptor parameter. \n
- *
- * <B>Missing Values</B> \n
- * Functions returning values from the message will return const kBufrMissingValue
- * if the requested value is not available. Another const, called
- * kBufrMissingIntValue is used for missing integer values.
- */
-class MvObs
-{
- friend class MvBufrOut;
- friend class MvObsSet;
- friend class MvObsSetIterator;
-
-	void _copy( MvBufr* b );
-	void _copy( const MvObs& b );
-	void _clean();
-
-public:
-//! Constructor
-/*! Arguments are mainly used by MvObsSet and MvObsSetIterator.
- *  Applications normally call this constructor without arguments.
- */
-	MvObs( MvBufr* b = NULL, int i = 1 );
-
-//! Copy constructor
-	MvObs( const MvObs&  b );
-
-	~MvObs();
-
-//! Assignment operator
-	MvObs& operator= ( const MvObs& b );
-
-//! Operator to test the validity of a new MvObs
-/*! In this example operator void*() is used implicitly
- *  in testing the validity of MvObs object returned by
- *  MvObsSetIterator object:
- * <PRE>
- *      MvObsSet mySet("/path/to/my/file");
- *      MvObsSetIterator myIter(mySet);
- *      ...
- *      while(myObs=myIter()) //-- void*() is called here
- *      {
- *         ... //-- do the stuff
- *      }
- * </PRE>
- */
-    operator void*();
-
-//! Returns the number of subsets available in this BUFR message
-/*! Use method Advance() to get to the next subset (in a multisubset BUFR message).
- */
-        int  msgSubsetCount(){ return _bufrIn->subsetCount(); }
-
-//! Returns the current subset number (in a multisubset BUFR message)
-        int  subsetNumber() const { return _subsetNr; }
-
-//! Advances to the next subset in a multisubset BUFR message
-/*! Returns 'false' if current subset is the last (or the only)
- *  one. Returns 'true' on success.
- */
-	bool   Advance();
-
-//! Checks whether this MvObs contains a BUFR message or is empty
-    bool  operator! ();
-
-//! Checks that this MvObs contains a valid decodable BUFR message
-    bool  msg_ok() const; // { return _bufr_id == _bufrIn->currentBufrId(); }
-
-    // ----  A P I   f u n c t i o n s :  ---- //
-
-    //-- APIs for requesting parameter values --//
-
-//! Returns the value of an element defined by 'aDescriptor'
-/*! Also sets Current Descriptor.
- *  Missing value indicator is returned if the observation report
- *  does not contain elements of type 'aDescriptor', or if the element
- *  does not have value.
- */
-      float  value( long aDescriptor );
-
-//! Returns the value of an element defined by 'aDescriptor' as 'long'
-/*! Also sets Current Descriptor.
- */
-       long  intValue( long aDescriptor );
-
-//! Returns the value of an element defined by 'aDescriptor' as 'string'
-/*! Also sets Current Descriptor.
- */
-      string stringValue( long aDescriptor );
-
-//! Returns the value of Current Descriptor as a string
-      string stringValue();
-
-//! Returns the value of the next element with the same descriptor
-/*! Uses Current Descriptor to start looking for the next occurrence
- *  of the same descriptor later in the message.
- *  Updates Current Descriptor.
- *  Returns 'kFortranBufrMissingValue' if no such element is found
- *  or if such an element has no value.
- */
-      float  nextValue();
-
-//! Returns the value corresponding to the 'n'th occurrence of descriptor 'descr'
-/*! Method searches the current subset from the beginning looking
- *  for descriptors 'descr'. If BUFR message contains 'n' (or more)
- *  occurrences of descriptor 'descr', the corresponding data value
- *  is returned, otherwise 'kFortranBufrMissingValue' is returned.
- */
-      float  valueByOccurrence( int n, long descr );
-
-//! Index access operator returns the 'n'th data value
-/*! This operator treats BUFR message as an array (as 'bufrdc' does)
- *  and returns the value of the 'n'th element as 'double'.
- *  Index 'n' starts from '1', i.e. n=1,2,3,...
- */
-     double  operator[] ( int n );  //-- n starts from 1: 1,2,...,n
-
-//! Returns the value from the 'col'th feedback column for Current Descriptor
-/*! Uses 'bufrdc' subroutine 'BUBOX()' to arrange feedback values into
- *  a two dimensional array. Argument 'col' refers to a column in this array.
- */
-     double  feedbackValue( int col ){ return _bufrIn->feedbackValue( col, _subsetNr ); }
-
-//! Returns the value of the 'row'th element in the 'col'th feedback column
-/*! Uses 'bufrdc' subroutine 'BUBOX()' to arrange feedback values into
- *  a two dimensional array. Arguments 'row' and 'col' are indices into
- *  this array.
- */
-     double  feedbackValue( int row, int col ){ return _bufrIn->feedbackValue( row, col, _subsetNr ); }
-
-     string  feedbackItemName( int row){ return _bufrIn->feedbackItemName( row, _subsetNr ); }
-     string  feedbackItemUnit( int row){ return _bufrIn->feedbackItemUnit( row, _subsetNr ); }
-
-    //-- APIs for requesting parameter metadata --//
-
-//! Returns the name of the data referenced by 'aDescriptor' (from BUFR Table B)
-     string  name( long aDescriptor );
-
-//! Returns the name of the data referenced by Current Descriptor
-     string  name();
-
-//! Returns the unit of the data referenced by 'aDescriptor' (from BUFR Table B)
-     string  unit( long aDescriptor );
-
-//! Returns the unit of the data referenced by Current Descriptor
-     string  unit();
-
-    //-- APIs for iterating through all parameters --//
-
-//! Sets the first expanded descriptor in the message as Current Descriptor
-/*! In case of decoding problems, returns 'false'.
- */
-       bool  setFirstDescriptor(){ return _bufrIn->SetFirstDescriptor(); }
-
-//! Advances Current Descriptor to the next expanded descriptor in the message
-/*! Returns 'false' if message contains no more data (no more descriptors).
- */
-       bool  setNextDescriptor(){ return _bufrIn->SetNextDescriptor(); }
-
-//! Returns the data value related to Current Descriptor
-      float  currentValue(){ return _bufrIn->CurrentValue( _subsetNr ); }
-
-//! Returns Current Descriptor
-       long  currentDescriptor(){ return _bufrIn->CurrentDescriptor(); }
-
-    //-- APIs for requesting parameter types --//
-
-//! Returns the type of data related to descriptor 'aDescriptor'
- EElementValueType  elementValueType( long aDescriptor );
-
-//! Returns the type of data related to Current Descriptor
- EElementValueType  elementValueType();
-
-    //-- APIs for requesting time and location data --//
-
-//! Returns the time from the observation report (from the data: BUFR section 4)
-        TDynamicTime  obsTime(){ return _bufrIn->obsTime( _subsetNr ); }
-
-//! Returns the time from the message metadata (from BUFR section 1)
-        TDynamicTime  msgTime(){ return _bufrIn->msgTime(); }
-
-//! Returns the location from the observation report (from the data: BUFR section 4)
-      MvLocation  location();
-
-    //-- APIs for message type, subtype, originating centre, etc --//
-
-//! Returns the Message Type code from BUFR section 1
-        int  messageType();
-
-//! Returns the locally defined Message Subtype code from BUFR section 1
-        int  messageSubtypeLocal();
-
-//! Returns the international Message Subtype code (WMO defined) from BUFR section 1
-/*! Note that this code is available only in BUFR Edition 4 messages. For Edition 3
- *  messages a value of 255 is returned (255 corresponds to an octet with all bits '1').
- */
-        int  messageSubtypeInternational();
-
-//! Returns either the local or the international message subtype
-/*! In BUFR Edition 3 only the local subtype was available.
- *  In BUFR Edition 4 the WMO defined international subtype was
- *  added. Local subtype was left for backwards compatibility.
- *
- *  For BUFR Edition 3 messages this function always returns the local subtype.
- *
- *  For later Editions this function returns the international subtype if
- *  it has been set. If not set (has a value 255) then the local subtype
- *  is returned
- */
-        int  messageSubtype();
-
-//! Returns the Originating Centre code from BUFR section 1
-        int  originatingCentre();
-
-//! Returns the Originating Subcentre code from BUFR section 1
-        int  originatingSubCentre();
-
-//! Returns the Edition number from BUFR section 0
-        int editionNumber();
-
-//! Returns the Master Table code from BUFR section 1
-/*! Master Table 0 is for Meteorology, 10 is for Oceanography
- */
-	int masterTable();
-
-//! Returns the Master Table version from BUFR section 1
-	int masterTableVersion();
-
-//! Returns the Local Table version from BUFR section 1
-	int localTableVersion();
-
-    //-- APIs for  --//
-//! Returns the total length of the message from BUFR section 0
-	int messageTotalLen();
-
-    //-- APIs for requesting weather station values --//
-//! Returns the 5 digit WMO station identifier
-/*! Looks for WMO block number 'BB' and station identifier 'SSS'
- *  and returns the value of 'BBSSS' if found. Returns zero if
- * 'BB' or 'SSS' is not found.
- */
-       long  WmoIdentNumber();
-
-//! Returns the 2 digit WMO block identifier 'BB'
-/*! Returns zero if 'BB' not found.
- */
-        int  WmoBlockNumber();
-
-//! Returns the 3 digit WMO station identifier 'SSS'
-/*! Returns zero if 'SSS' not found.
- */
-        int  WmoStationNumber();
-
-//! Looks for an ident from the BUFR message
-/*! Looks for the following message identifiers: \n
- *  - WMO Station Identifier 'BBSSS' \n
- *  - Ship or mobile land station identifier (001011) \n
- *  - Buoy/platform identifier (001005) \n
- *  - Aircraft flight number (001006) \n
- *  - Satellite identifier (001007) \n
- *  - Aircraft registration number (001008) \n
- *  - Stationary buoy platform identifier (001010) \n
- *  - Storm identifier (001025)
- *  - WMO storm name (001026)
- *  - WMO long storm name (001027)
- *
- *  and returns the first one found, as a string. If none
- *  of the above is found, returns "id???".
- */
-     string  findSomeIdent();
-
-    //-- APIs for accessing replicated parameters --//
-
-//! Returns the number of times level coordinator descriptor 'levelDescriptor' is found
-	int  numberOfLevels( long levelDescriptor );
-
-//! Returns the first value related to 'levelDescriptor', i.e. value of the first level
-      float  firstLevel( long levelDescriptor );
-
-//! Returns the value of the next level related to Current Level Descriptor
-      float  nextLevel();
-
-//! Returns the value of the specified data for the specified level
-/*! First looks for a data block related to level 'aLevel' as the
- *  value of the data element related to level descriptor 'aLevelDescriptor',
- *  and then looks for a data element related to descriptor 'aDescriptor'
- *  within this level.
- */
-      float  valueByLevel( long  aLevelDescriptor
-                         , float aLevel
-			 , long  aDescriptor );
-			 
-      float  valueByLevelRange( long  aLevelDescriptor
-                         , float firstLevel
-			 , float seconLevel	
-			 , long  aDescriptor );
-			 		 
-//! Returns the number of pressure levels found in the observation report
-/*! Pressure level descriptor is 007004, so this is an alias for member function
- *  numberOfLevels(7004).
- */
-	int  numberOfPressureLevels();
-
-//! Returns the value of the first pressure level in hPa
-/*! Original pressure values are stored in Pa, so this is
- *  the same as 100.0*firstLevel(7004).
- */
-      float  firstPressureLevel();
-
-//! Returns the value of the next pressure level in hPa
-/*! Original pressure values are stored in Pa, so this is
- *  the same as 100.0*nextLevel(7004).
- */
-      float  nextPressureLevel();
-
-//! Returns the value of the data corresponding to 'aDescriptor' on level 'aLevel'
-/*! Here 'aLevel' is given in hPa. Original pressure values are stored in Pa,
- *  so this is the same as \n
- * <PRE>
- *      valueByLevel( 7004, 100.0*aLevel, aDescriptor )
- * </PRE>
- */
-      float  valueByPressureLevel( float aLevel, long aDescriptor );
-
-//! Returns the value of the data corresponding to 'aDescriptor' in a layer
-/*! Level values are for the top and the bottom pressure values of a layer
- *  and they are given in hPa. \n \n
- *  This method looks for two consecutive pressure coordinate descriptors
- *  007004 with the given values (hPa is first converted to Pa). If such
- *  a layer is found and the layer contains 'aDescriptor' then the corresponding
- *  data value is returned, otherwise 'kBufrMissingValue' is returned.
- */
-      float  valueByLayer( float firstLevel
-		         , float secondLevel
-		         , long aDescriptor );
-
-    //-- APIs for printing obs --//
-    // Section 0,1,2 and 3 just delegated to bufr class.
-
-//! Prints BUFR section 0 to output stream 'aStream'
-    boolean  printSection0(ostream &aStream = cout)
-      { return _bufrIn->printSection_012(aStream,0); }
-
-//! Prints BUFR section 1 to output stream 'aStream'
-    boolean  printSection1(ostream &aStream = cout)
-      { return _bufrIn->printSection_012(aStream,1); }
-
-//! Prints BUFR section 2 to output stream 'aStream'
-    boolean  printSection2(ostream &aStream = cout)
-      { return _bufrIn->printSection_012(aStream,2); }
-
-//! Prints BUFR section 3 to output stream 'aStream'
-    boolean  printSection3(ostream &aStream = cout)
-      { return _bufrIn->printSection(aStream,3); }
-
-//! Decode BUFR section 2 and place the result into an std::map
-    bool getDataFromSection2(map<string,string> &data)
-	{ return _bufrIn->getDataFromSection2(data); }
-
-//! Prints all data values into standard output
-/*! For output format see method 'writeAllValues' below
- */
-    boolean  printAllValues();
-
-//! Writes all data values into output stream 'aStream'
-/*! Writes the data, one data value per line. Each line consists of:
- *  - index of the data
- *  - data value
- *  - name of the data
- *  - unit of the data, in square brackets
- *  - the corresponding BUFR descriptor, in parenthesis
- *
- *  Example output (an extract from a SYNOP report): \n
- * <PRE>
- *       1.      10 Wmo Block Number [NUMERIC] (01001)
- *       2.     500 Wmo Station Number [NUMERIC] (01002)
- *       3.       1 Type Of Station [CODE TABLE 002001] (02001)
- *       4.    2007 Year [YEAR] (04001)
- *       5.      11 Month [MONTH] (04002)
- *       6.       6 Day [DAY] (04003)
- *       7.      22 Hour [HOUR] (04004)
- *       8.       0 Minute [MINUTE] (04005)
- *       9.   50.97 Latitude (High Accuracy) [DEGREE] (05001)
- *      10.    6.05 Longitude (High Accuracy) [DEGREE] (06001)
- *      11.      98 Height Of Station [M] (07001)
- *     ...
- * </PRE>
- */
-    boolean  writeAllValues( ostream& aStream );
-
-//! Writes all data values into file 'aPathName'
-/*! For output format see the version of method 'writeAllValues' above
- */
-    boolean  writeAllValues( const char* aPathName );
-
-//! Calls 'bufren' routine BUPRTBOX to write feedback data into stream 'aStream'
-    boolean  writeBufrBox( ostream& aStream = cout );
-
-    //-- APIs for accessing original section 1 and 2 headers --//
-
-//	const unsigned char*
-//	         section1Ptr(){ return (unsigned char*)(_bufrIn->Sec1->start()); }
-
-//! Returns 'true' if BUFR message contains local section 2, 'false' if not
-	bool     hasSection2(){ return _bufrIn->fSec2 != NULL; }
-
-//! Returns a pointer to the beginning of local section 2 in BUFR message
-/*! Returns 0 (NULL) if message has no local section 2
- */
-	const unsigned char*
-	         section2Ptr(){ return _bufrIn->fTotalSec2; }
-
-    //-- APIs for accessing confidence values --//
-
-//! Checks whether the BUFR message contains confidence values or not
-/*! Returns 'true' if operator descriptor 222000 is found in the
- *  message, otherwise 'false'.
- */
-       bool  hasConfidences();
-
-//! Returns the confidence value for the current data, if exists
-/*! Otherwise returns -1.
- */
-        int  confidence();
-
-//! Writes confidence values into stream 'aStream'
-       bool  writeConfidenceValues( ostream& aStream );
-
- bool  getBufrBoxSize( int& rows, int& cols )
-                 { return _bufrIn->getBufrBoxSize( rows, cols, _subsetNr ); }
-
-     //-- Q&D: valueBySpecifier & specifierIndex made public
-     //--      so that ObsPicker can use them freely (vk/Jul)
-     double  valueBySpecifier( long   aSpecifierDescriptor
-			     , double aSpecifierValue
-		             , long   aDescriptor
-			     , int   firstIndexValue = 0 );
-     int     specifierIndex( long   aSpecifierDescriptor
-		           , double aSpecifierValue
-		           , int    firstIndexValue = 0 );
-
-#ifdef METVIEW
-//! Decodes OPERA BUFR radar data into unsigned char array
-   unsigned char* OperaRadarImage( /* <aki> add arguments? */ );
-//! Retrieves metadata for OPERA radar image
-   bool  OperaRadarMetadata( /* <aki> add arguments? */ );
-#endif
-
- private:
- //protected:
-    float  pressureLevel( int firstIndexValue );
-    float  level( long levelDescriptor, int firstIndexValue );
-    boolean writeValues(ostream &aStream,int first, int last);
-
- private:
-        int  subsetOffset() const;
-
-	const unsigned char*
-	         section1Ptr(){ return (unsigned char*)(_bufrIn->Sec1->start()); }
-
- protected:
- 	int     _subsetNr;
-	MvBufr* _bufrIn;
-	long    _bufr_id;
- 	int     _lastSpecifierIndex; //required???? used by who?????
-	long    _currentLevelCoordinate;
-	int     _currentLevelIndex;
-	MvBufrConfidence* _confidence;
-};
-
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-//--------------------------------------------------------------- MvBufrConfidence
-// Q&D hack for QC Feed Back using descr operator 222000; vk Apr-95
-
-//! \enum ESelectFilterState Used internally by MvBufrConfidence
-enum EBufrConfState
-{
-   kBCS_unknown
-  ,kBCS_missing
-  ,kBCS_exists
-};
-
-//------------------------------------------------------------------------------
-//! Auxiliary class to handle quality control feedback
-/*! Warning: This is Q&C ("quick&dirty") hack to access
- *  QC FB data behind operator descriptor 222000.
- */
-class MvBufrConfidence
-{
- public:
-          MvBufrConfidence( MvBufr* aBufr, int aSubsetNr );
-          ~MvBufrConfidence();
-
-      bool  hasConfidences();
-       int  confidence( long aDescriptor );
-       int  confidenceByIndex( int anIndex );
-       int  lastDataIndex();
-
- protected:
-       int  startOfDataPresent();
-       int  startOfConfidences();
-       int  delta( int anIndex );
-
- private:
-   MvBufr*  _bufr;
-   int      _subsetNr;
-   int      _startOfDataPresent;
-   int      _startOfConfidences;
-   EBufrConfState _state;
-};
-#endif
-
-
-#endif
-// MvBufrObs_DEFINED
diff --git a/src/MvObs/MvObs.cc b/src/MvObs/MvObs.cc
deleted file mode 100644
index e4a3f05..0000000
--- a/src/MvObs/MvObs.cc
+++ /dev/null
@@ -1,3297 +0,0 @@
-/***************************** LICENSE START ***********************************
-
- Copyright 2012 ECMWF and INPE. This software is distributed under the terms
- of the Apache License version 2.0. In applying this license, ECMWF does not
- waive the privileges and immunities granted to it by virtue of its status as
- an Intergovernmental Organization or submit itself to any jurisdiction.
-
- ***************************** LICENSE END *************************************/
-
-// MvObs.cc,     vk 940818...
-//           rev vk 980501
-
-//--------------------------------------------------------------------
-//  A class to hide the complexities of BUFR routines written in
-//  FORTRAN.  'MvObs' tries to wrap these routines into a nicer C++
-//  interface and hide the required data structures.
-//  Headers for the FORTRAN functions are defined in the file 'MvBufr.h'
-//--------------------------------------------------------------------
-//    FORTRAN routines and required data structures are described in:
-//
-//    "Decoding Data Represented in FM 94 BUFR"
-//         by J.K.Gibson and M.Dragosavac
-//
-//             published as PAPER 4 in
-//
-//    "BINARY
-//     UNIVERSAL FORM FOR
-//     DATA REPRESENTATION
-//     ----------------------------------
-//     FM 94 BUFR
-//     Collected papers and specification"
-//
-//            ECMWF February 1988.
-//
-//  and in:
-//
-//     "BUFR User Guide and Reference Manual"
-//         by Milan Dragosavac
-//     European Centre for Medium-Range Weather Forecasts
-//         preprint  12 October 1994
-//--------------------------------------------------------------------
-
-#include "inc_iostream.h"
-#include <sstream>  //-- requires new templated standard io headers!
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <assert.h>
-//F #include "Metview.h"
-#include "MvObs.h"
-#include "MvObsSet.h"
-
-#include <map>
-
-#ifdef METVIEW
-#  include "MvException.h"
-#else
-#  include <exception>
-#endif
-
-// Static int used to duplicate stdout and get it back.
-static int new_fd = -1;
-
-const int MAX_BUBOX_KELEM_LIMIT  = MAX_KELEM;
-
-static string MESSED_UP("[messed messages!]");
-
-static string BBOXNAME("prtbbox.txt"); //for BUPRTBOX output.
-static string redirect_dir(""); // For tmp files from print.
-
-//--------------------------------------------------------
-// Fortran routines expect previous values to be remained
-// (at least in some of the arrays) if new msg has same
-// descriptors as previous msg !!!
-// Thus static arrays, common to all bufr-objects...
-// Added lazy evaluation 980501/vk...
-//--------------------------------------------------------
-static char* In_CNAMES = 0;  //static char In_CNAMES[ MAX_KELEM ][ 64 ]; //- is not updated if same descriptors
-static char* In_CUNITS = 0;  //static char In_CUNITS[ MAX_KELEM ][ 24 ]; //- is not updated if same descriptors
-static char* In_CVALS  = 0;  //static char In_CVALS [ MAX_KVALS ][ 80 ]; //+ rest of the arrays always updated
-static char* Out_CVALS = 0;  //static char Out_CVALS [ MAX_KVALS ][ 80 ];
-
-static fortfloat* In_VALUES = 0;  //static fortfloat  In_VALUES[ MAX_KVALS ];
-static fortfloat* Out_VALUES = 0; //static fortfloat Out_VALUES[ MAX_KVALS ];
-
-static fortint  In_KELEM;
-static fortint  In_KVALS;
-static fortint  Out_KELEM = -1;
-	                                // for BUSEL
-static fortint  In_KTDEXL;
-static fortint* In_KTDEXP = 0;  //static fortint  In_KTDEXP[ MAX_KELEM ];
-static fortint  In_KTDLEN;
-static fortint* In_KTDLST = 0;  //static fortint  In_KTDLST[ MAX_KELEM ];
-static fortint  Out_KTDEXL;
-static fortint* Out_KTDEXP = 0; //static fortint Out_KTDEXP[ MAX_KELEM ];
-static fortint  Out_KTDLEN;
-static fortint* Out_KTDLST = 0; //static fortint Out_KTDLST[ MAX_KELEM ];
-
-static int arraySizeIndex = 0; // incremented each time we try to allocate a new size of arrays
-static int kVals;
-
-long MvBufr::_bufrIn_ref = 0;
-long MvBufrOut::_bufrOut_ref = 0; //not yet implemented...
-
-
-//-- Linux/g++ does not like hardcoded big? arrays (works ok in debugger,
-//-- but crashes inside Metview...) => create arrays dynamically, once!
-//-- These are for BUFR-BOX routines (accessing Feedback info)
-
-static fortint    myKSUB, myKBOX, myKAPP, myKLEN, myKERR;
-static fortint*   myKBOXR = 0;
-static fortfloat* myVALS  = 0;
-static char*      myCBOXN = 0;
-static char*      myCBOXU = 0;
-
-
-const long cPressureCoordinate = 7004L;  // pressure vertical coord. descriptor value
-
-//--------------------------------------------------------
-//  Descriptor mnemonics for class 'MvBufrParam'
-//--------------------------------------------------------
-
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-
-typedef struct
-{
-   const char *name;
-   long        descriptor;
-} descriptorStruct;
-
-static descriptorStruct knownParams[] =
-{
-   {"z", 10003}, {"p", 10004},
-   {"ddd", 11001}, {"ff", 11002}, {"u", 11003}, {"v", 11004}, {"w", 11006},
-   {"T", 12001}, {"Td",12003}, {"T(2m)",12004}, {"Td(2m)",12006},
-   {"END",0}
-};
-#endif
-
-//--------------------------------------------------------
-//  Function definitions for the FORTRAN & C BUFR routines
-//--------------------------------------------------------
-
-extern "C" {
-
- void
- BUS012( fortint *KBUFL, fortint *KBUFF, fortint *KSUP
-       , fortint *KSEC0, fortint *KSEC1, fortint *KSEC2, fortint *KERR );
-
- void
- BUPRS0( fortint *KSEC0 );
- void
- BUPRS1( fortint *KSEC1 );
- void
- BUPRS2( fortint *KSUP, fortint *KEY);
-
- void
- BUFREX( fortint *KBUFL, fortint *KBUFF, fortint *KSUP
-       , fortint *KSEC0, fortint *KSEC1, fortint *KSEC2, fortint *KSEC3, fortint *KSEC4
-       , fortint *KELEM, char *CNAMES,     char *CUNITS
-       , fortint *KVALS, fortfloat *VALUES,  char *CVALS, fortint *KERR );
-
- void
- BUFREN( fortint *KSEC0, fortint *KSEC1, fortint *KSEC2, fortint *KSEC3, fortint *KSEC4
-       , fortint *KTDLEN,fortint *KTDLST,fortint *KDLEN, fortint *KDATA
-       , fortint *KELEM, fortint *KVALS, fortfloat *VALUES, char *CVALS
-       , fortint *KBUFL, fortint *KBUFF, fortint *KERR );
-
- void
- BUSEL( fortint *KTDLEN, fortint *KTDLST, fortint *KTDEXL, fortint *KTDEXP, fortint *KERR );
-
- void
- BUSEL2( fortint *KSUBSET,fortint *KELEM,fortint *KTDLEN,fortint *KTDLST
-       , fortint *KTDEXL, fortint *KTDEXP, char *CUNITSCNAMES, char *CUNITSCUNITS
-       , fortint *KERR);
-
- void
- BUUKEY(fortint *KSEC1, fortint *KSEC2, fortint *KEY, fortint *KSUP,fortint *KERR);
- void
- BUPRS3( fortint *KSEC3, fortint *KTDLEN, fortint *KTDLST
-       , fortint *KTDEXL, fortint *KTDEXP, fortint *KELEM, char *CNAMES );
-
- void
- BUBOX( fortint *KSUB,   fortint *KSUP,      fortint *KELEM
-      , fortint *KWTR,   char *CNAMES, char *CUNITS
-      , fortint *KVALS,  fortfloat *VALUES,  fortint *KBOX
-      , fortint *KAPP,   fortint *KLEN,      fortint *KBOXR
-      , fortfloat *VALS, char* CBOXN,        char* CBOXU
-      , fortint *KERR );
-
-  void
-  BUPRTBOX( fortint *KBOX,   fortint *KAPP,   fortint *KLEN
-          , fortint *KBOXR,  fortfloat *VALS, char* CBOXN
-          , char* CBOXU );
-
- // Helper functions
- boolean redirect_6(const char *);  //-- Trick to redirect Fortran unit 6.
- boolean reconnect_6();
- boolean file_to_stream(const char *,ostream&,int skip);
- void delete_print_file(const char *);
- void eraseWhiteSpaceFromStringEnd(string &str);
- int CIND(int i) { return i-1;}
-}
-
-static string intToString(int);
-static string floatToString(float);
-static void keyToStringMap(map<string,string> &,string,fortint *,int);
-static void keyToStringMap(map<string,string> &,string,float);
-
-//______________________________________________________________________
-
-Section1Base::Section1Base( const unsigned char* octs )
-{
-   int slen = 65536*octs[0] + 256*octs[1] + octs[2];
-   octets_ = new unsigned char[slen];
-   memcpy( octets_, octs, slen );
-}
-
-Section1Base::Section1Base( const Section1Base* aSec1 )
-{
-   octets_ = new unsigned char[ aSec1->len() ];
-   memcpy( octets_, aSec1->start(), aSec1->len() );
-}
-
-bool
-Section1Base::isDifferent( const Section1Base* aSec1 ) const
-{
-   if( len() != aSec1->len() )
-      return true;
-
-   for( int i=0; i<len(); ++i )
-      if( octets_[i] != aSec1->octets_[i] )
-         return true;
-
-   return false;
-}
-
-bool
-Section1_preEd4::hasSection2()
-{
-   return octets_[7] > 127;   //-- octet 8
-}
-bool
-Section1_Ed4::hasSection2()
-{
-   return octets_[9] > 127;   //-- octet 10
-}
-
-TDynamicTime
-Section1_preEd4::date()
-{
-   //-- octet 13=year, 14=month, etc.
-   return TDynamicTime( octets_[12], octets_[13], octets_[14], octets_[15], octets_[16] );
-}
-TDynamicTime
-Section1_Ed4::date()
-{
-   //-- octet 13=year, 14=month, etc.
-   return TDynamicTime( 256*octets_[15]+octets_[16], octets_[17], octets_[18]
-                  , octets_[19], octets_[20], octets_[21] );
-}
-
-int
-Section1_preEd4::msgType()
-{
-   return octets_[8];         //-- octet 9 in ed.3
-}
-int
-Section1_Ed4::msgType()
-{
-   return octets_[10];         //-- octet 11 in ed.4
-}
-
-int
-Section1_preEd4::msgSubtypeWMO()
-{
-   return cOctetMissingIndicator; //-- not available in ed.3
-}
-int
-Section1_Ed4::msgSubtypeWMO()
-{
-   return octets_[11];         //-- octet 12 in ed.4
-}
-
-int
-Section1_preEd4::msgSubtypeLocal()
-{
-   return octets_[9];         //-- octet 10 in ed.3
-}
-int
-Section1_Ed4::msgSubtypeLocal()
-{
-   return octets_[12];         //-- octet 13 in ed.4
-}
-
-int
-Section1_preEd4::msgSubtype()
-{
-   return msgSubtypeLocal();  //-- only local available in ed.3
-}
-int
-Section1_Ed4::msgSubtype()
-{
-   //-- WMO subtype is the preferred one
-   return msgSubtypeWMO() != cOctetMissingIndicator ? msgSubtypeWMO() : msgSubtypeLocal();
-}
-
-int
-Section1_preEd4::origCentre()
-{
-  return octets_[5]; //-- octet 6
-}
-int
-Section1_Ed4::origCentre()
-{
-   return 256*octets_[4] + octets_[5]; //-- octets 5 and 6
-}
-
-int
-Section1_preEd4::origSubCentre()
-{
-  return octets_[4]; //-- octet 5
-}
-int
-Section1_Ed4::origSubCentre()
-{
-   return 256*octets_[6] + octets_[7]; //-- octets 7 and 8
-}
-
-int
-Section1_preEd4::masterTable()
-{
-   return octets_[3];         //-- octet 4
-}
-int
-Section1_Ed4::masterTable()
-{
-   return octets_[3]; //-- octet 4
-}
-
-int
-Section1_preEd4::masterTableVersion()
-{
-   return octets_[10];         //-- octet 11
-}
-int
-Section1_Ed4::masterTableVersion()
-{
-   return octets_[13]; //-- octet 14
-}
-
-int
-Section1_preEd4::localTableVersion()
-{
-   return octets_[11];         //-- octet 12
-}
-int
-Section1_Ed4::localTableVersion()
-{
-   return octets_[14]; //-- octet 15
-}
-
-
-
-//====================================================================== MvBufrBase
-//______________________________________________________________________
-
-MvBufrBase :: MvBufrBase( const long len ) : Sec1(NULL),fSec2(NULL),fTotalSec2(NULL),fSec3(NULL),fSec4(NULL)
-{
-  _refCount = 0;
-
-  // Make sure the data is correctly aligned.
-  longptr = new long[(len/sizeof(long)) + 1];
-  fMessage = (char *)longptr;
-  //fMessage = new char[ len  + 8 ];    // +8 for an extra "safety word"
-  fMessageLength = len;
-
-  fKSUP  = NULL;
-  fKSEC0 = NULL;
-  fKSEC1 = NULL;
-  fKSEC2 = NULL;
-  fKSEC3 = NULL;
-  fKSEC4 = NULL;
-
-      //-- lazy evaluation: create static arrays when first needed --
-  createDataArrays ();
-    }
-//___________________________________________________________
-
-MvBufrBase :: ~MvBufrBase( void )
-{
-//  delete [] fMessage;
-  delete [] longptr;
-
-  if( fSec2 )
-  {
-    delete fSec2;
-    delete [] fTotalSec2;
-  }
-  delete fSec3;
-  delete fSec4;
-
-  fSec2 = 0;
-  fSec3 = 0;
-  fSec4 = 0;
-  fTotalSec2 = 0;
-
-  if( fKSUP ) delete [] fKSUP;
-  if( fKSEC0 ) delete [] fKSEC0;
-  if( fKSEC1 ) delete [] fKSEC1;
-  if( fKSEC2 ) delete [] fKSEC2;
-  if( fKSEC3 ) delete [] fKSEC3;
-  if( fKSEC4 ) delete [] fKSEC4;
-
-  fKSUP = fKSEC0 = fKSEC1 = fKSEC2 = fKSEC3 = fKSEC4 = 0;
-}
-//___________________________________________________________
-void
-MvBufrBase :: attach( void )
-{
-   _refCount++;
-}
-void
-MvBufrBase :: detach( void )
-{
-   if( --_refCount == 0 )
-     delete this;
-}
-//_________________________________________________________ createFortranArrays
-void
-MvBufrBase :: createFortranArrays( void )
-{
-  fKSUP  = new fortint[  9 ];
-  fKSEC0 = new fortint[  3 ];
-  fKSEC1 = new fortint[ 40 ];
-  fKSEC2 = new fortint[ 4096 ]; //[ 128 ]; //[ 64 ];
-  fKSEC3 = new fortint[  4 ];
-  fKSEC4 = new fortint[  2 ];
-}
-//_________________________________________________________ createDataArrays
-void
-MvBufrBase :: createDataArrays( void )
-{
-    kVals    = aMAX_KVALS[arraySizeIndex];
-    In_KVALS = kVals;
-
-    try
-    {
-        if( In_VALUES == 0 )
-            In_VALUES = new fortfloat[ kVals ];
-
-        if( In_CVALS == 0 )
-            In_CVALS = new char[ kVals * 80 ];
-
-        if( In_CNAMES == 0 )
-            In_CNAMES = new char[ MAX_KELEM * 64 ];
-
-        if( In_CUNITS == 0 )
-            In_CUNITS = new char [ MAX_KELEM * 24 ];
-
-        if( In_KTDEXP == 0 )
-            In_KTDEXP = new fortint[ MAX_KELEM ];
-
-        if( In_KTDLST == 0 )
-            In_KTDLST = new fortint[ MAX_KELEM ];
-    }
-
-    catch(...)
-    {
-        deleteDataArrays ();
-
-#ifdef METVIEW
-        marslog( LOG_EROR, "MvBufrBase::MvBufrBase: out-of-memory!" );
-        throw MvException( "MvBufrBase::MvBufrBase: out-of-memory!" );
-#else
-        cerr << ">>>> MvBufrBase::MvBufrBase: out-of-memory => throw an exception <<<<" << endl;
-        throw std::bad_alloc();
-#endif
-    }
-}
-//_________________________________________________________ createDataArrays
-void
-MvBufrBase :: deleteDataArrays( void )
-{
-    if( In_VALUES != 0 )
-    {
-        delete [] In_VALUES; In_VALUES = 0;
-    }
-
-    if( In_CVALS != 0 )
-    {
-        delete [] In_CVALS;  In_CVALS  = 0;
-    }
-
-    if( In_CNAMES != 0 )
-    {
-        delete [] In_CNAMES; In_CNAMES = 0;
-    }
-
-    if( In_CUNITS != 0 )
-    {
-        delete [] In_CUNITS; In_CUNITS = 0;
-    }
-
-    if( In_KTDEXP != 0 )
-    {
-        delete [] In_KTDEXP; In_KTDEXP = 0;
-    }
-
-    if( In_KTDLST != 0 )
-    {
-        delete [] In_KTDLST; In_KTDLST = 0;
-    }
-}
-//___________________________________________________________
-unsigned int
-MvBufrBase :: unsignedInt( const unsigned char* firstOctet
-                         , int octetCount )
-{
-  unsigned int value = *firstOctet;
-  const unsigned char* anOctet = ++firstOctet;
-  for( int i=octetCount-1; i; --i )
-  {
-    value = 256*value + *anOctet++;
-  }
-  return value;
-}
-
-//______________________________________________________________________
-//====================================================================== MvBufr
-//______________________________________________________________________
-
-//______________________________________________________________________
-
-MvBufr :: MvBufr( char *msg, long len, long aMessageNumber )
-    : MvBufrBase( len )   //( msg, len )
-{
-  _lastKnownSubsetValue = 1; //-- Q&D
-
-  memcpy( fMessage, msg, (int)len );
-
-  const unsigned char* msgStart = (const unsigned char*)fMessage;
-
-  fSec0 = (TSection0 *)fMessage;
-  int offSet = fSec0->editionNr < 2 ? 4 : 8;
-                        // Section 0 was shorter in BUFR editions 0 and 1 !!!!
-                        //                                  rev vk 950802
-  if( fSec0->editionNr > 3 )
-    Sec1 = new Section1_Ed4( msgStart + offSet );
-  else
-    Sec1 = new Section1_preEd4( msgStart + offSet );
-  offSet += Sec1->len();
-
-  if( Sec1->hasSection2() )         // bit 0 <=> Optional Section 2 present?
-  {
-    fSec2 = new TSection2;
-    memcpy( (char *)fSec2, msgStart + offSet, sizeof(TSection2)  );
-
-    int sec2Len = unsignedInt( &(fSec2->len), 3 );
-    fTotalSec2 = new unsigned char[ sec2Len ];
-    memcpy( (char *)fTotalSec2, msgStart + offSet, sec2Len );
-
-    offSet += sec2Len;
-  }
-  else
-  {
-    fSec2 = NULL;
-    fTotalSec2 = NULL;
-  }
-
-  fSec3 = new TSection3;
-  memcpy( (char *)fSec3, msgStart + offSet, sizeof(TSection3)  );
-  offSet += unsignedInt( &(fSec3->len), 3 );
-
-  fSec4 = new TSection4;
-  memcpy( (char *)fSec4, msgStart + offSet, sizeof(TSection4)  );
-  offSet += unsignedInt( &(fSec4->len), 3 );
-
-  computeIn_KELEM ();
-
-  fMessageNumber = aMessageNumber;
-  _currentDescr = 0;
-  _currentDescrInd = -1;
-  _inState = kBufrIn_Coded;
-  _bufrIn_ref++;
-  _bufrBoxFilledSubset = 0;
-}
-//______________________________________________________________________
-
-MvBufr :: ~MvBufr( void ) { }
-
-//____________________________________________________________________ Decode
-void
-MvBufr :: Decode( void )
-{
-   if( _inState == kBufrIn_Error )
-      return;
-
-   if( _inState < kBufrIn_DataDecoded )
-   {
-      createFortranArrays();
-      fortint myKBUFL = fMessageLength / sizeof(fortint) + 1;  // +1 = Q&D
-        bool keepGoing = true;
-
-        // we will try to decode the BUFR a number of times, starting with
-        // relatively small data arrays, then building up to larger ones
-        // (so that we don't waste too much memory)
-
-        while (keepGoing)
-        {
-            keepGoing = false;
-
-      BUFREX(&myKBUFL
-	    , (fortint *)fMessage  // buffer for the BUFR message
-	    , fKSUP          // array for suplementary info
-	    , fKSEC0         // FORTRANized section 0
-	    , fKSEC1         // FORTRANized section 1
-	    , fKSEC2         // FORTRANized section 2 (site dependent)
-	    , fKSEC3         // FORTRANized section 3 (data descriptors)
-	    , fKSEC4         // FORTRANized section 4 (data values)
-	    ,&In_KELEM
-	    , In_CNAMES
-	    , In_CUNITS
-	    ,&In_KVALS
-	    , In_VALUES
-	    , In_CVALS
-	    ,&fKERR );
-
-
-            // if KELEM is not big enough, then we will
-            // try again with a bigger value
-
-            if( fKERR == 25 || fKERR == 14)
-            {
-                cout << "MvBufr :: Decode - kVals of " << kVals << " and In_KELEM of " << In_KELEM
-                     << " is not large enough." << endl;
-
-                if (++arraySizeIndex < NUM_MAX_KVALS)
-                {
-                    cout << "Trying kVals of " << aMAX_KVALS[arraySizeIndex] <<
-                         " (" << (aMAX_KVALS[arraySizeIndex] * 80) / (1024*1024) << "MB)" << endl;
-
-                    deleteDataArrays ();
-                    createDataArrays ();
-                    computeIn_KELEM ();
-
-                    keepGoing = true;
-                }
-                else
-                    arraySizeIndex = NUM_MAX_KVALS - 1; // should not be used, but just in case,
-                                                        // make sure the index is not out of bounds...
-            }
-        }
-
-
-      if( fKERR )
-      {
-	 cerr << "In_KELEM " << In_KELEM << " kvals " << In_KVALS << endl;
-	 cerr << " >>> MvBufr::Decode, bufrmsg " << fMessageNumber
-	      << ": fKERR = " << fKERR << endl;
-
-
-#ifdef METVIEW
-	 marslog(LOG_EROR, "BUFR decoding (BUFREX) failed, status = %d", fKERR );
-	 stringstream sst;
-	 sst << "Unable to decode BUFR message \nBUFR decoding (BUFREX) failed, status =" << fKERR;
-	 throw MvException(sst.str().c_str());
-
-#endif
-	 _inState = kBufrIn_Error;
-	 return;
-      }
-
-      _inState = kBufrIn_DataDecoded;
-   }
-}
-
-//____________________________________________________________________ Decode
-void
-MvBufr :: Decode_012( void )
-{
-   if( _inState == kBufrIn_Error )
-      return;
-
-   if( _inState < kBufrIn_Sections012Expanded)
-   {
-      createFortranArrays();
-      fortint myKBUFL = fMessageLength / sizeof(fortint) + 1;  // +1 = Q&D
-
-      BUS012(&myKBUFL
-	    , (fortint *)fMessage  // buffer for the BUFR message
-	    , fKSUP          // array for suplementary info
-	    , fKSEC0         // FORTRANized section 0
-	    , fKSEC1         // FORTRANized section 1
-	    , fKSEC2         // FORTRANized section 2 (site dependent)
-	    ,&fKERR );
-
-
-
-      if( fKERR )
-      {
-
-	 cerr << " >>> MvBufr::Decode_012, bufrmsg " << fMessageNumber
-	      << ": fKERR = " << fKERR << endl;
-
-#ifdef METVIEW
-	 marslog( LOG_EROR, "BUFR decoding (BUFREX) failed, status = %d", fKERR );
-	 stringstream sst;
-	 sst << "Unable to decode BUFR message \nBUFR decoding (BUFREX) failed, status =" << fKERR;
-	 throw MvException(sst.str().c_str());
-#endif
-	 _inState = kBufrIn_Error;
-	 return;
-      }
-
-      _inState = kBufrIn_Sections012Expanded;
-   }
-}
-
-//___________________________________________________________________ ExpandDescriptors
-void
-MvBufr :: ExpandDescriptors( int subsetNumber )
-{
-  static int mySubsetSavedValue = 0;
-
-   _lastKnownSubsetValue = subsetNumber;
-
-   if( _inState == kBufrIn_Error )
-      return;
-
-//   In_KTDLEN = -1;
-//   In_KTDEXL = -1;
-   fKERR     =  0;
-
-   if( _inState < kBufrIn_DataDecoded )
-      Decode();
-
-   if( ( fKSEC3[3-1] > 1  &&                           //-- if several subsets
-        _lastKnownSubsetValue != mySubsetSavedValue )  //-- AND subset number changed
-                      ||                               //-- OR
-        _inState == kBufrIn_DataDecoded  )             //-- descriptors not yet expanded
-   {
-//cout << "-----> MvBufr::ExpandDescriptors(" << _lastKnownSubsetValue << ") => BUSEL2..." << endl;
-//      CALL BUSEL2(KSUBSET,KELEM,KTDLEN,KTDLST,KTDEXL,KTDEXP,CNAMES,CUNITS,KERR)
-         BUSEL2( &_lastKnownSubsetValue  //-- Q&D variable...
-               , &In_KELEM
-               , &In_KTDLEN      // nr of original data descriptors in Section 3
-               ,  In_KTDLST      // original descriptors
-               , &In_KTDEXL      // nr of expanded data descriptors
-               ,  In_KTDEXP      // expanded descriptors
-               ,  In_CNAMES
-               ,  In_CUNITS
-               , &fKERR
-               );
-
-         mySubsetSavedValue = _lastKnownSubsetValue;
-   }
-   else
-   {
-      if( _inState == kBufrIn_DataDecoded )
-      {
-//cout << "-----> MvBufr::ExpandDescriptors(" << _lastKnownSubsetValue << ") => BUSEL..." << endl;
-         BUSEL( &In_KTDLEN      // nr of original data descriptors in Section 3
-	      ,  In_KTDLST      // original descriptors
-	      , &In_KTDEXL      // nr of expanded data descriptors
-	      ,  In_KTDEXP      // expanded descriptors
-	      , &fKERR
-              );
-      }
-   }
-
-   if( fKERR )
-   {
-      cerr << " >>> MvBufr::ExpandDescriptors: fKERR = " << fKERR << endl;
-
-#ifdef METVIEW
-      marslog( LOG_EROR, "BUFR expansion (BUSEL) failed, status = %d", fKERR );
-#endif
-
-      _inState = kBufrIn_Error;
-   }
-   else
-      _inState = kBufrIn_DataAndDescriptorsDecoded;
-}
-//__________________________________________________________ descriptorToFortranIndex
-int
-MvBufr :: descriptorToFortranIndex( const long aDescr, const int firstIndex )
-{
-   if( _inState == kBufrIn_Error )
-      return -1;
-
-   if( _inState != kBufrIn_DataAndDescriptorsDecoded )
-      ExpandDescriptors( _lastKnownSubsetValue ); //-- Q&D
-
-   if( _inState == kBufrIn_DataAndDescriptorsDecoded )
-   {
-      for( int i=firstIndex; i < In_KTDEXL; i++ )
-      {
-	 if( In_KTDEXP[ i ] == aDescr )
-         {
-	   return i;
-         }
-      }
-   }
-   return -1;
-}
-//__________________________________________________________ computeIn_KELEM
-void
-MvBufr :: computeIn_KELEM( void )
-{
-    if ( subsetCount() > 1 )
-        In_KELEM = kVals / subsetCount();
-    else
-        In_KELEM = MAX_KELEM;
-
-    if( In_KELEM > MAX_BUBOX_KELEM_LIMIT )
-        In_KELEM = MAX_BUBOX_KELEM_LIMIT;
-}
-//__________________________________________________________ DataValue
-//
-// Returns the requested parameter value (or missing value)
-// and updates _currentDescrInd.
-//
-
-fortfloat
-MvBufr :: DataValue( const int aDescrArrayInd, const long aSubsetNumber )
-{
-   _lastKnownSubsetValue = aSubsetNumber;
-
-   if( _inState < kBufrIn_DataDecoded )
-      Decode();
-
-   if( ( aSubsetNumber > subsetCount() ) || ( aDescrArrayInd < 0 ) )
-   {
-      _currentDescr = 0;
-      _currentDescrInd = -1;
-      return kFortranBufrMissingValue;
-   }
-
-   _currentDescrInd = aDescrArrayInd;
-   _currentDescr = In_KTDEXP[ _currentDescrInd ];
-
-   return PeekDataValue( _currentDescrInd, aSubsetNumber );
-}
-//__________________________________________________________ PeekDataValue
-//
-// Returns the requested parameter value (or missing value)
-// without updating _currentDescrInd.
-//
-
-fortfloat
-MvBufr :: PeekDataValue( const int aDescrArrayInd, const long aSubsetNumber )
-{
-   if( ( aSubsetNumber > subsetCount() ) || ( aDescrArrayInd < 0 ) )
-     return kFortranBufrMissingValue;
-   else
-     return In_VALUES[ aDescrArrayInd + ( aSubsetNumber - 1 ) * In_KELEM ];
-}
-//__________________________________________________________ Value
-boolean
-MvBufr :: Value( const long aDescriptor
-	       , const long aSubsetNumber
-	       , fortfloat &aDataValue
-	       , int   firstInd )
-{
-  aDataValue = DataValue( descriptorToFortranIndex( aDescriptor, firstInd )
-			, aSubsetNumber );
-  return aDataValue != kFortranBufrMissingValue ? true : false;
-}
-//__________________________________________________________ intValue
-// returns 'kFortranBufrMissingIntValue' if not found!
-//----------------------------------------------------
-long
-MvBufr :: intValue( const long aDescriptor, const int subsetNr )
-{
-   fortfloat myValue;
-   Value( aDescriptor, subsetNr, myValue );
-
-   if( myValue != kFortranBufrMissingValue )
-     return (long)myValue;
-   else
-     return kFortranBufrMissingIntValue;
-}
-//____________________________________________________________________ feedbackValue
-double
-MvBufr::feedbackValue( int col, int subset )
-{
-   if( _currentDescrInd < 0 )
-      return kBufrMissingValue;
-   else
-      //-- first 6 rows is reserved info, obs report starts on row 7
-      return feedbackValue( _currentDescrInd + 6, col, subset );
-}
-
-double
-MvBufr::feedbackValue( int row, int col, int subset )
-{
-   int err = fillBufrBox( subset );
-
-   assert( row > 0 && row <= myKBOX );
-   assert( col > 0 && col <= myKAPP );
-
-   if( err == 0 )
-      return myVALS[ myKLEN*(col-1) + row - 1 ];
-   else
-      return kBufrMissingValue;
-}
-
-string
-MvBufr::feedbackItemName( int row, int subset )
-{
-   int err = fillBufrBox( subset );
-
-   assert( row > 0 && row <= myKBOX );
-
-   if( err == 0 )
-   {
-      char c[64];
-      strncpy(c,myCBOXN+(row-1)*64,63);
-      c[63]='\0';
-      string s(c);
-      eraseWhiteSpaceFromStringEnd(s);
-      return s;
-   }
-   else
-      return std::string();
-}
-
-string
-MvBufr::feedbackItemUnit( int row, int subset )
-{
-   int err = fillBufrBox( subset );
-
-   assert( row > 0 && row <= myKBOX );;
-
-   if( err == 0 )
-   {
-      char c[24];
-      strncpy(c,myCBOXU+(row-1)*24,23);
-      c[23]='\0';
-      string s(c);
-      eraseWhiteSpaceFromStringEnd(s);
-      return s;
-   }
-   else
-      return std::string();
-}
-
-//____________________________________________________________________ obsTime
-TDynamicTime
-MvBufr :: obsTime( const int subsetNr )
-{
-   fortint myYear  = intValue( 4001L, subsetNr );
-   fortint myMonth = intValue( 4002L, subsetNr );
-   fortint myDay   = intValue( 4003L, subsetNr );
-   fortint myHour  = intValue( 4004L, subsetNr );
-
-   short myMin, mySec;
-   fortfloat myValue;
-
-   if( Value( 4005L, subsetNr, myValue ) )
-      myMin = (short)myValue;
-   else
-      myMin = 0;
-
-   if( Value( 4006L, subsetNr, myValue ) )
-      mySec = (short)myValue;
-   else
-      mySec = 0;
-
-   //-- quirky NCEP PrepBUFR obs may not contain date/time infromation
-   if( myYear  == kBufrMissingIntValue &&   //-- date OK?
-       myMonth == kBufrMissingIntValue &&
-       myDay   == kBufrMissingIntValue  )
-   {                                        //-- if date missing from obs
-      return msgTime();                     //-- then take it from section 1
-   }
-   else                                     //-- OK, take from obs
-   {
-      return TDynamicTime( (short)myYear, (short)myMonth, (short)myDay
-                         , (short)myHour, myMin, mySec );
-   }
-}
-//____________________________________________________________________ msgTime
-TDynamicTime
-MvBufr :: msgTime( void )
-{
-#if 0
-   short myYear  = fSec1->yearYY ;
-   short myMonth = fSec1->month ;
-   short myDay   = fSec1->day ;
-   short myHour  = fSec1->hour ;
-   short myMin   = fSec1->minute ;
-
-   return TDynamicTime( myYear, myMonth, myDay, myHour, myMin, 0 );
-#endif
-
-   return Sec1->date();
-}
-//____________________________________________________________________ stringValue
-string
-MvBufr :: stringValue( const long aDescriptor, const int aSubsetNr )
-{
-   _currentDescrInd = descriptorToFortranIndex( aDescriptor );
-   return stringValueByIndex( _currentDescrInd, aSubsetNr );
-}
-//____________________________________________________________________ stringValue
-string
-MvBufr :: stringValue( const int aSubsetNr )
-{
-   return stringValueByIndex( _currentDescrInd, aSubsetNr );
-}
-//__________________________________________________________ stringValueByIndex
-string
-MvBufr :: stringValueByIndex( const int anIndex, const int aSubsetNr )
-{
-   if( ( anIndex < 0 ) || ( anIndex >= In_KTDEXL ) )
-     {
-       return string( "[string index error!]" );
-     }
-
-   //-- get coded float value --
-   fortfloat myValue = DataValue( anIndex, aSubsetNr );
-
-   //-- here we should be passing subset nr, not index!!! (020307/vk)
-   //-- thus always pass 1:
-
-   if( elementValueType( 1 ) == kEVT_missing )
-     {
-	   return string( "[Missing]" );
-     }
-   else if( elementValueType( 1 ) == kEVT_string )
-     {
-       //-- get pointer and length to In_CVALS array, In_CVALS starts from 0.. --
-       int myIndex = (int)myValue / 1000 - 1;
-       int myLength = (int)myValue % 1000;
-
-       //-- add C-terminator (sacrifice last character if necessary) --
-       int terminatorPos = myLength;
-       if( terminatorPos > 79 )
-	 terminatorPos = 79;
-       //In_CVALS[ myIndex ][ terminatorPos ] = '\0';
-       In_CVALS[ myIndex*80 + terminatorPos ] = '\0';
-
-       return string(In_CVALS + myIndex*80);
-     }
-   else if( elementValueType( 1 ) == kEVT_numeric )
-     {
-       ostringstream oss;
-       oss << myValue;
-
-       return oss.str();
-     }
-
-   return string( "[Internal error]" ); //-- we should never get here!
-}
-//____________________________________________________________________ unit
-string
-MvBufr :: unit( const long aDescriptor )
-{
-   return unitByIndex( descriptorToFortranIndex( aDescriptor ) );
-}
-//____________________________________________________________________ unit
-string
-MvBufr :: unit( void )
-{
-   return unitByIndex( _currentDescrInd );
-}
-//____________________________________________________________________ unitByIndex
-string
-MvBufr :: unitByIndex( const int anIndex )
-{
-   char strbuf[ 25 ];
-
-   if( ( anIndex >= 0 ) && ( anIndex < In_KTDEXL ) )
-   {
-      strbuf[ 24 ] = '\0';               //-- make a copy
-      int pos;
-      for( pos=23; pos>=0; --pos )
-         strbuf[ pos ] = In_CUNITS[ anIndex*24 + pos ];
-         //strbuf[ pos ] = In_CUNITS[ anIndex ][ pos ];
-
-      for( pos=23; pos > 0; pos-- )      //-- remove trailing blanks
-         if( strbuf[ pos ] == ' ' )
-            strbuf[ pos ] = '\0';
-         else
-            break;
-
-      return string( strbuf );
-   }
-   return string( "[Unit not found!]" );
-}
-//____________________________________________________________________ name
-string
-MvBufr :: name( const long aDescriptor )
-{
-   return nameByIndex( descriptorToFortranIndex( aDescriptor ) );
-}
-//____________________________________________________________________ name
-string
-MvBufr :: name( void )
-{
-   return nameByIndex( _currentDescrInd );
-}
-//____________________________________________________________________ nameByIndex
-string
-MvBufr :: nameByIndex( const int anIndex )
-{
-   char strbuf[ 65 ];
-
-   if( ( anIndex >= 0 ) && ( anIndex < In_KTDEXL ) )
-   {
-      strbuf[ 64 ] = '\0';               //-- make copy
-      int pos;
-      for( pos=63; pos>=0; --pos )
-         strbuf[ pos ] = In_CNAMES[ anIndex*64 + pos ];
-        // strbuf[ pos ] = In_CNAMES[ anIndex ][ pos ];
-
-      for( pos=63; pos > 0; pos-- )      //-- remove trailing blanks
-         if( strbuf[ pos ] == ' ' )
-            strbuf[ pos ] = '\0';
-         else
-            break;
-
-      boolean retainCapital = true;      //-- change to lower case
-      for( pos = 0; pos < (int)(strlen( strbuf )); pos++ )
-      {
-         if( isupper( strbuf[ pos ] ) )
-         {
-            if( retainCapital )
-               retainCapital = false;
-            else
-               strbuf[ pos ] = tolower( strbuf[ pos ] );
-          }
-          else
-             retainCapital = true;
-      }
-      return string( strbuf );
-   }
-   else
-      return string( "[Name index error!]" );
-}
-//____________________________________________________________________ elementValueType
-EElementValueType
-MvBufr :: elementValueType( const int aSubsetNr )
-{
-  return elementValueTypeByIndex( _currentDescrInd, aSubsetNr );
-}
-//____________________________________________________________ elementValueType
-EElementValueType
-MvBufr :: elementValueType( const long aDescriptor, const int aSubsetNr )
-{
-  return elementValueTypeByIndex( descriptorToFortranIndex( aDescriptor ), aSubsetNr );
-}
-//_____________________________________________________ elementValueTypeByIndex
-EElementValueType
-MvBufr :: elementValueTypeByIndex( const int anIndex, const int aSubsetNr )
-{
-  fortfloat myValue = DataValue( anIndex, aSubsetNr );
-
-  if( myValue == kFortranBufrMissingValue )
-  {
-    return kEVT_missing;
-  }
-  else
-  {
-    bool isString = unitByIndex( anIndex ) == "CCITTIA5"   //-- ECMWF notation
-                 || unitByIndex( anIndex ) == "CCITT IA5"; //-- WMO & NCEP PrepBUFR notation
-    return isString ? kEVT_string : kEVT_numeric;
-  }
-}
-//______________________________________________________________________
-//
-// Reset descriptor iterator by pointing to the first descriptor.
-// Make sure msg has been expanded!
-//
-
-boolean
-MvBufr :: SetFirstDescriptor( void )
-{
-   if( _inState == kBufrIn_Error )
-      return false;
-
-   if( _inState != kBufrIn_DataAndDescriptorsDecoded )
-      ExpandDescriptors( _lastKnownSubsetValue ); //-- Q&D
-
-   if( _inState == kBufrIn_DataAndDescriptorsDecoded )
-   {
-      _currentDescrInd = 0;
-      _currentDescr = In_KTDEXP[ _currentDescrInd ];
-      return true;
-   }
-   return false;
-}
-//______________________________________________________________________
-//
-// Advance descriptor iterator.
-// Check that it still points ok.
-//
-
-boolean
-MvBufr :: SetNextDescriptor( void )
-{
-  if( _currentDescrInd < 0 )
-     return false;           // SetFirstDescriptor had not been called !
-
-  _currentDescrInd++;
-  if( _currentDescrInd == In_KTDEXL ) // or: fKSUP[ 5 - 1 ]
-  {
-     _currentDescrInd = -1;               //-- end-of-msg reached
-     _currentDescr = 0;                   //-- probably end-of-iteration => issue no msg
-     return false;
-  }
-  else if( _currentDescrInd > In_KTDEXL )
-  {
-     _currentDescrInd = -1;               //-- past end-of-msg
-     _currentDescr = 0;                   //-- must be an error => issue error msg
-
-    cerr << "MvBufr::SetNextDescriptor: _currentDescrInd=" << _currentDescrInd
-         << ", limiting In_KTDEXL=" << In_KTDEXL << endl;
-
-     return false;
-  }
-
-  _currentDescr = In_KTDEXP[ _currentDescrInd ];
-  return true;
-}
-//______________________________________________________________________
-//
-// calls Emoslib routines BUBOX and BUPRTBOX to produce "boxed" output
-//
-int
-MvBufr::fillBufrBox( int aSubsetNr )
-{
-#if 0
-  //-- Linux/g++ does not like hardcoded big? arrays (works ok in debugger,
-  //-- but crashes inside Metview...) => create arrays dynamically, once!
-
-  static fortint    myKSUB, myKBOX, myKAPP, myKLEN, myKERR;
-  static fortint*   myKBOXR = 0;
-  static fortfloat* myVALS  = 0;
-  static char*      myCBOXN = 0;
-  static char*      myCBOXU = 0;
-#endif
-
-  if( _bufrBoxFilledSubset == aSubsetNr )
-     return 0;                               //-- OK, already filled
-
-  if( ! myKBOXR )
-    {
-      try
-	{
-	  myKBOXR = new fortint[ kVals ];
-	  cout << " fillBufrBox: array myKBOXR created" << endl;
-
-	  myVALS  = new fortfloat[ kVals ];
-	  cout << " fillBufrBox: array myVALS  created" << endl;
-
-	  myCBOXN = new char[ kVals * 64 ];
-	  cout << " fillBufrBox: array myCBOXN created" << endl;
-
-	  myCBOXU = new char[ kVals * 24 ];
-	  cout << " fillBufrBox: array myCBOXU created" << endl;
-	}
-      catch(...)
-	{
-	  cout << " >>> fillBufrBox: problems in creating fort arrays <<<" << endl;
-	  delete myKBOXR;  myKBOXR = 0;
-	  delete myVALS;   myVALS  = 0;
-	  delete myCBOXN;  myCBOXN = 0;
-	  delete myCBOXU;  myCBOXU = 0;
-#ifdef METVIEW
-	  marslog( LOG_EROR, "MvBufr::fillBufrBox: out-of-memory?" );
-#endif
-	  return -13;
-	}
-    }
-
-
-  //-- Initialize array given to bubox. bubox will not initialize
-  //-- all values, and this will cause runtime error from buprtbox.
-  for (int i = 0; i < kVals; i++ )
-    myVALS[i] = kFortranBufrMissingValue;
-
-  if( _inState == kBufrIn_Error )
-    {
-      cout << " fillBufrBox: BUFR msg error state, return false" << endl;
-      return -1313;
-    }
-
-  if( _inState < kBufrIn_DataDecoded )
-    {
-      Decode();
-    }
-
-  if( _inState != kBufrIn_DataAndDescriptorsDecoded )
-    {
-      ExpandDescriptors( aSubsetNr );
-    }
-
-  myKSUB = (fortint)aSubsetNr;
-  myKBOX = 0;
-  myKAPP = 0;
-  myKLEN = 0;
-  myKERR = 0;
-
-  BUBOX( &myKSUB     //-- INPUT arguments
-       ,  fKSUP
-       , &In_KELEM
-       ,  In_KTDEXP
-       ,  In_CNAMES
-       ,  In_CUNITS
-       , &In_KVALS
-       ,  In_VALUES
-                      //-- OUTPUT arguments
-       , &myKBOX      //-- number of (valid) elements in 1st column
-       , &myKAPP      //-- number of columns (apps) in the box
-       , &myKLEN      //-- number of rows in the box
-       ,  myKBOXR     //-- Table B descriptors
-       ,  myVALS      //-- boxed values
-       ,  myCBOXN     //-- boxed element names
-       ,  myCBOXU     //-- boxed units
-       , &myKERR );
-
-  if( myKERR == 0 )
-      _bufrBoxFilledSubset = myKSUB;
-
-  return myKERR;
-}
-//______________________________________________________________________
-//
-bool
-MvBufr::writeBufrBox( int aSubsetNr )
-{
-  cout << " writeBufrBox: entering" << endl;
-
-  myKERR = fillBufrBox( aSubsetNr );
-
-  //-- forces Fortran unit 6 into a file
-  if( ! redirect_6(BBOXNAME.c_str()) )
-    {
-      cout << ">>> UNABLE TO REDIRECT stdout <<<" << endl;
-      return false;
-    }
-
-  if( myKERR == 0 )
-  {
-     BUPRTBOX(&myKBOX
-             ,&myKAPP
-             ,&myKLEN
-             , myKBOXR
-             , myVALS
-             , myCBOXN
-             , myCBOXU );
-  }
-
-  //-- closes "unit'ified" unit 6
-  if( ! reconnect_6() )
-    {
-      cerr << ">>> UNABLE TO RECONNECT TO stdout <<<" << endl;
-      cout << ">>> UNABLE TO RECONNECT TO stdout <<<" << endl;
-    }
-
-  return myKERR == 0;
-}
-
-bool
-MvBufr::getBufrBoxSize( int& rows, int& cols, int aSubsetNr )
-{
-  bool status = false;
-
-  myKERR = fillBufrBox( aSubsetNr );
-
-  if( myKERR == 0 )
-  {
-     rows = myKBOX;
-     cols = myKAPP;
-     status = true;
-  }
-  return status;
-}
-
-//------------- Printing functions -----------------
-bool
-MvBufr :: printSection( ostream& aStream,int which)
-{
-  boolean return_val = true;
-  if( _inState == kBufrIn_Error )
-    {
-      aStream << "!!!!!!!!!!! Bad BUFR message " << endl;
-      return false;
-    }
-
-  if ( _inState < kBufrIn_Sections012Expanded )
-    Decode();
-
-  if ( which == 3 && _inState < kBufrIn_DataAndDescriptorsDecoded )
-    ExpandDescriptors( _lastKnownSubsetValue ); //-- Q&D
-
-
-  char sec_name[30];
-  sprintf(sec_name,"prtsec%d.txt",which);
-
-  redirect_6(sec_name);
-  if ( which == 0 )
-    BUPRS0(fKSEC0);
-  else if ( which == 1 )
-    BUPRS1(fKSEC1);
-  else if ( which == 2 )
-    {
-      fortint *fKEY = new fortint[60];
-      BUUKEY(fKSEC1,fKSEC2,fKEY,fKSUP,&fKERR);
-      if ( fKERR )
-	cout << "\nProblems getting key. Maybe non-existent? " << endl;
-      else
-	BUPRS2(fKSUP,fKEY);
-
-      delete [] fKEY;
-    }
-  else
-    BUPRS3(fKSEC3,&In_KTDLEN,In_KTDLST,&In_KTDEXL,In_KTDEXP,&In_KELEM,In_CNAMES);
-
-  reconnect_6();
-  return_val = file_to_stream(sec_name,aStream,1);
-  delete_print_file(sec_name);
-  return return_val;
-}
-
-//------------- Printing functions -----------------
-bool
-MvBufr::getDataFromSection2(map<string,string> &data)
-{
-    bool retval=false;
-
-    if( _inState == kBufrIn_Error )
-    {
-      cout << "!!!!!!!!!!! Bad BUFR message " << endl;
-      return false;
-    }
-
-    if ( _inState < kBufrIn_Sections012Expanded )
-         Decode_012();
-
-      fortint *fKEY = new fortint[60];
-      BUUKEY(fKSEC1,fKSEC2,fKEY,fKSUP,&fKERR);
-      if ( fKERR )
-      {
-		cout << "\nProblems getting key. Maybe non-existent? " << endl;
-		retval=false;
-      }
-      else
-      {
-		parseSection2(fKEY,data);
-		retval=true;
-      }
-
-      delete [] fKEY;
-
-      return retval;
-}
-
-void MvBufr::parseSection2(fortint *fKEY,map<string,string> &data)
-{
-	//fKSUP - global variable
-
-	if(fKSUP[CIND(2)] < 1)
-	{
-		return;
-	}
-
-	int type=0;
-	if(fKEY[CIND(2)] == 2)
-		type = 2;
-	else if(fKEY[CIND(2)] == 3)
-		type = 2;
-	else if(fKEY[CIND(2)] == 12)
-		type = 2;
-	else if(fKEY[CIND(2)] == 8)
-		type = 2;
-
-	if(type == 0 && fKSUP [CIND(6)] > 1)
-		type = 2;
-
-	if(type == 2)
-	{
-		keyToStringMap(data,"RDB DATA TYPE",fKEY,2);
-		keyToStringMap(data,"RDB DATA SUBTYPE",fKEY,3);
-		keyToStringMap(data,"YEAR",fKEY,4);
-		keyToStringMap(data,"MONTH",fKEY,5);
-		keyToStringMap(data,"DAY",fKEY,6);
-		keyToStringMap(data,"HOUR",fKEY,7);
-		keyToStringMap(data,"MINUTE",fKEY,8);
-		keyToStringMap(data,"SECOND",fKEY,9);
-
-		float RLAT1=(fKEY[CIND(11)]-9000000)/100000.;
-         	float RLON1=(fKEY[CIND(10)]-18000000)/100000.;
-		keyToStringMap(data,"LATITUDE 1",RLAT1);
-		keyToStringMap(data,"LONGITUDE 1",RLON1);
-
-		float RLAT2=(fKEY[CIND(13)]-9000000)/100000.;
-         	float RLON2=(fKEY[CIND(12)]-18000000)/100000.;
-		keyToStringMap(data,"LATITUDE 2",RLAT2);
-		keyToStringMap(data,"LONGITUDE 2",RLON2);
-
-		keyToStringMap(data,"NUMBER OF OBSERVATIONS",fKEY,14);
-
-		//char ident[9];
-		//memcpy(ident,&fKEY[CIND(15)],8);
-		//data["IDENTIFIER"]=string(ident);
-
-		keyToStringMap(data,"IDENTIFIER",fKEY,15);
-		keyToStringMap(data,"TOTAL BUFR MESSAGE LENGTH",fKEY,25);
-		keyToStringMap(data,"DAY (RDB INSERTION)",fKEY,26);
-		keyToStringMap(data,"HOUR (RDB INSERTION)",fKEY,27);
-		keyToStringMap(data,"MINUTE (RDB INSERTION)",fKEY,28);
-		keyToStringMap(data,"SECOND (RDB INSERTION)",fKEY,29);
-		keyToStringMap(data,"DAY (MDB ARRIVAL)",fKEY,30);
-		keyToStringMap(data,"HOUR (MDB ARRIVAL)",fKEY,31);
-		keyToStringMap(data,"MINUTE (MDB ARRIVAL",fKEY,32);
-		keyToStringMap(data,"SECOND (MDB ARRIVAL)",fKEY,33);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,34);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,35);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,37);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,38);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,40);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,41);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,43);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,44);
-		keyToStringMap(data,"QUALITY CONTROL % CONF",fKEY,46);
-	}
-	else
-	{
-		keyToStringMap(data,"RDB DATA TYPE",fKEY,2);
-		keyToStringMap(data,"RDB DATA SUBTYPE",fKEY,3);
-		keyToStringMap(data,"YEAR",fKEY,4);
-		keyToStringMap(data,"MONTH",fKEY,5);
-		keyToStringMap(data,"DAY",fKEY,6);
-		keyToStringMap(data,"HOUR",fKEY,7);
-		keyToStringMap(data,"MINUTE",fKEY,8);
-		keyToStringMap(data,"SECOND",fKEY,9);
-
-		float RLAT1=(fKEY[CIND(11)]-9000000)/100000.;
-         	float RLON1=(fKEY[CIND(10)]-18000000)/100000.;
-		keyToStringMap(data,"LATITUDE 1",RLAT1);
-		keyToStringMap(data,"LONGITUDE 1",RLON1);
-
-		//char ident[9];
-		//memcpy(ident,&fKEY[CIND(15)],8);
-		//data["IDENTIFIER"]=string(ident);
-
-		char ident[10];
-		for(int i=16; i <=24; i++ )
-		{
-			ident[i-16]=fKEY[CIND(i)];
-		}
-		ident[9]='\0';
-		data["IDENTIFIER"]=string(ident);
-
-		keyToStringMap(data,"TOTAL BUFR MESSAGE LENGTH",fKEY,25);
-		keyToStringMap(data,"DAY (RDB INSERTION)",fKEY,26);
-		keyToStringMap(data,"HOUR (RDB INSERTION)",fKEY,27);
-		keyToStringMap(data,"MINUTE (RDB INSERTION)",fKEY,28);
-		keyToStringMap(data,"SECOND (RDB INSERTION)",fKEY,29);
-		keyToStringMap(data,"DAY (MDB ARRIVAL)",fKEY,30);
-		keyToStringMap(data,"HOUR (MDB ARRIVAL)",fKEY,31);
-		keyToStringMap(data,"MINUTE (MDB ARRIVAL",fKEY,32);
-		keyToStringMap(data,"SECOND (MDB ARRIVAL)",fKEY,33);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,34);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,35);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,37);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,38);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,40);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,41);
-		keyToStringMap(data,"CORRECTION NUMBER",fKEY,43);
-		keyToStringMap(data,"PART OF MESSAGE",fKEY,44);
-		keyToStringMap(data,"QUALITY CONTROL % CONF",fKEY,46);
-	}
-}
-
-
-
-
-
-
-//------------- Printing functions -----------------
-bool
-MvBufr :: printSection_012( ostream& aStream,int which)
-{
-  if(which <0 || which > 2)
-	return false;
-
-  boolean return_val = true;
-  if( _inState == kBufrIn_Error )
-    {
-      aStream << "!!!!!!!!!!! Bad BUFR message " << endl;
-      return false;
-    }
-
-  if ( _inState < kBufrIn_Sections012Expanded )
-    Decode_012();
-
-  char sec_name[30];
-  sprintf(sec_name,"prtsec%d.txt",which);
-
-  redirect_6(sec_name);
-  if ( which == 0 )
-    BUPRS0(fKSEC0);
-  else if ( which == 1 )
-    BUPRS1(fKSEC1);
-  else if ( which == 2 )
-    {
-      fortint *fKEY = new fortint[60];
-      BUUKEY(fKSEC1,fKSEC2,fKEY,fKSUP,&fKERR);
-      if ( fKERR )
-	cout << "\nProblems getting key. Maybe non-existent? " << endl;
-      else
-	BUPRS2(fKSUP,fKEY);
-
-      delete [] fKEY;
-    }
-
-  reconnect_6();
-  return_val = file_to_stream(sec_name,aStream,1);
-  delete_print_file(sec_name);
-  return return_val;
-}
-
-
-//______________________________________________________________________
-//====================================================================== MvBufrOut
-//______________________________________________________________________
-
-MvBufrOut::MvBufrOut( const long len, MvObsSet* aSet )  //( char *msg, long len, MvObsSet* aSet )
-    : MvBufrBase( len ), _currentSec1( 0 )
-{
-  _outSet = aSet;
-  _maxNrSubsets = 1;
-  Out_KELEM = -1;        // MAX_KELEM / _maxNrSubsets;
-
-  createFortranArrays();
-
-  _outState = kBufrOut_noBuffers;
-  resetBuffers();
-}
-//____________________________________________________________
-
-MvBufrOut :: ~MvBufrOut( void )
-{
-  if(   _outState == kBufrOut_dataInBuffers )
-  {
-    encode();
-  }
-  _outSet->close();
-  delete _currentSec1;
-}
-
-//____________________________________________________________________ createBuffers
-void
-MvBufrOut::createBuffers() // XXX still need more dynamic memory allocation
-{
-  Out_KTDEXL = -1;
-  Out_KELEM = -1;
-  _KDLEN = 0;
-  _nextValue = 0;
-  _nextCharParamPos = 0;
-
-  if( _outState == kBufrOut_noBuffers )
-    {
-      char cbuf[ 120 ];
-
-      try
-	{
-	  cout << "MvBufrOut::createBuffers, checking for memory..." << endl;
-
-	  sprintf( cbuf, "requesting %d new fortints", MAX_KELEM );
-	  cout << cbuf << endl;
-	  Out_KTDLST = new fortint[ MAX_KELEM ];
-
-	  sprintf( cbuf, "requesting %d new fortints", MAX_KELEM );
-	  cout << cbuf << endl;
-	  Out_KTDEXP = new fortint[ MAX_KELEM ];
-
-	  sprintf( cbuf, "requesting %d new fortfloats", MAX_KVALS );
-	  cout << cbuf << endl;
-	  Out_VALUES = new fortfloat[ MAX_KVALS ];
-
-	  sprintf( cbuf, "requesting %d new chars", 80*MAX_KVALS );
-	  cout << cbuf << endl;
-	  Out_CVALS = new char[ MAX_KVALS * 80 ];
-	}
-      catch(...)
-	{
-	  delete [] Out_VALUES; //-- (I)
-	  delete [] Out_CVALS;  //-- (II)
-	  delete [] Out_KTDEXP; //-- (III)
-
-	  Out_VALUES = 0;
-	  Out_CVALS  = 0;
-	  Out_KTDEXP = 0;
-	  Out_KTDLST = 0;
-
-	  _outState = kBufrOut_error;
-
-	  cout << ">>>\n>>> MvBufrOut::createBuffers failed in " << cbuf << "\n>>>" << endl;
-	  cout << "MvBufrOut::createBuffers: throw MvException..." << endl;
-#ifdef METVIEW
-	  marslog( LOG_EROR, "MvBufrOut::createBuffers failed in %s", cbuf );
-	  throw MvException( "MvBufrOut::createBuffers: out-of-memory!" );
-#else
-          throw std::bad_alloc();
-#endif
-	}
-    }
-
-  cout << "MvBufrOut::createBuffers memory ok" << endl;
-
-  _outState = kBufrOut_emptyBuffers;
-}
-//____________________________________________________________________ resetBuffers
-void
-MvBufrOut :: resetBuffers( void )
-{
-  Out_KTDEXL = -1;
-  Out_KELEM = -1;
-  _KDLEN = 0;
-  _nextValue = 0;
-  _nextCharParamPos = 0;
-
-  if( _outState > kBufrOut_emptyBuffers )
-    {
-      _outState = kBufrOut_emptyBuffers;
-    }
-}
-//____________________________________________________________________ write
-void
-MvBufrOut :: write( MvObs& anObs )
-{
-    //-- if no packing into subsets, copy message as is...
-    _outSet->write( anObs._bufrIn->fMessage, (int)anObs._bufrIn->fMessageLength );
-}
-
-//____________________________________________________________________ add
-void
-MvBufrOut :: add( MvObs& anObs )
-{
-  if( _maxNrSubsets == 1 && anObs._bufrIn->subsetCount() == 1 )
-    //-- if no packing into subsets, copy message as is...
-    write( anObs );
-  else
-    addIntoBuffers( anObs );
-}
-
-//____________________________________________________________________ addIntoBuffers
-void
-MvBufrOut::addIntoBuffers( MvObs& anObs )
-{
-  if( _outState <= kBufrOut_noBuffers )
-    {
-      createBuffers();
-    }
-
-  checkDescriptors( anObs );
-
-  if( MAX_KVALS < _nextValue + Out_KTDEXL )
-  {
-    encode();
-    formatBuffers( anObs );
-  }
-
-  //-- in case (non-compressed) multisubset msg, do expanded descriptors here
-  Out_KTDEXL = In_KTDEXL;             // expected nr of data values / expanded descriptors
-  for(int  i=0; i<In_KTDEXL; i++ )    // expanded descriptors
-    Out_KTDEXP[ i ] = In_KTDEXP[ i ]; // no offset
-
-  Out_KELEM = In_KTDEXL;  // In_KELEM;// expected nr of expanded elements (????)
-
-  int elemIndex = _nextValue;
-  for( int i = 0; i < Out_KTDEXL; i++, elemIndex++ )
-  {
-    Out_VALUES[ elemIndex ] = In_VALUES[ anObs.subsetOffset() + i ];
-
-    //-- character data..?
-    if( fKSUP[ 7-1 ] > 0  &&                                 //-- msg contains char data
-        ( strncmp( In_CUNITS + i*24, "CCITTIA5", 8 ) == 0 || //-- ECMWF notation
-          strncmp( In_CUNITS + i*24, "CCITT IA5", 9 ) == 0   //-- WMO & NCEP PrepBUFR notation
-        )
-       )
-    {
-      //-- copy character string value to next available slot --
-      int charInd = (int)Out_VALUES[ elemIndex ] / 1000 - 1;
-      int charLen = (int)Out_VALUES[ elemIndex ] % 1000;
-      strncpy( (Out_CVALS + _nextCharParamPos*80)
-	     , (In_CVALS + charInd*80)
-	     , charLen );
-
-      //-- set "pointer" to this slot --
-      Out_VALUES[ elemIndex ] = 1000*( _nextCharParamPos + 1 ) + charLen;
-      _nextCharParamPos++;
-    }
-    else  //-- if delayed replication factor...
-    {
-      if( isDelayedDescriptor( Out_KTDEXP[ i ] ) )
-      {
-//cerr << "isDelayedDescriptor( " << Out_KTDEXP[ i ] << "), _KDLEN=" << _KDLEN << endl;
-	if( _KDLEN < MAX_KDLEN )
-	{
-	  fortint delayedRepeat = (fortint)Out_VALUES[ elemIndex ];
-	  if( delayedRepeat < 0 )
-	  {
-	    cerr << ">>> MvBufrOut::add: data error - negative delayed repetition " << delayedRepeat
-	         << " (from element " << elemIndex << ")" << endl;
-#ifdef METVIEW
-	    marslog( LOG_EROR, "MvBufrOut::add: data error - negative delayed repetition!" );
-#endif
-	  }
-	  _KDATA[ _KDLEN ] = delayedRepeat;
-	  _KDLEN++;
-	}
-	else
-	  {
-	    cerr << ">>> MvBufrOut::add: array _KDATA overflow! _KDLEN=" << _KDLEN
-	         << ", MAX_KDLEN=" << MAX_KDLEN << endl;
-#ifdef METVIEW
-	    marslog( LOG_EROR, "MvBufrOut::add: array _KDATA overflow!" );
-#endif
-	  }
-      }
-    }
-  }
-  _nextValue += (int)Out_KELEM;
-
-  fKSEC3[ 2 ] += 1;  //-- Nr of Subsets
-  _outState = kBufrOut_dataInBuffers;
-
-  if( shouldBeWritten() )
-    encode();
-}
-//____________________________________________________________________ formatBuffers
-void
-MvBufrOut :: formatBuffers( const MvObs& anObs )
-{
-  delete _currentSec1;
-#if 0
-  _currentSec1 = new TSection1;
-  *_currentSec1 = *(anObs._bufrIn->Sec1);
-#endif
-  if( anObs._bufrIn->fSec0->editionNr > 3 )
-    _currentSec1 = new Section1_Ed4( anObs._bufrIn->Sec1 );
-  else
-    _currentSec1 = new Section1_preEd4( anObs._bufrIn->Sec1 );
-
-  int i;
-
-  fKSEC0[ 0 ] = 0;
-  for( i=1; i<3; i++)
-    fKSEC0[ i ] = anObs._bufrIn->fKSEC0[ i ];
-
-  // fKSEC1[ 0 ] = 0; // ??????????
-  for( i=0; i<40; i++)
-    fKSEC1[ i ] = anObs._bufrIn->fKSEC1[ i ];
-
-#if 0
-  int wmoi = BUFR_ORIGINATING_CENTER;
-  if( getenv( "WMO_SITE_NR" ) )
-    wmoi = atoi( getenv( "WMO_SITE_NR" ) );  //-- change WMO Centre Number if given
-
-  if( wmoi < 0 || wmoi > 255 )
-    wmoi = BUFR_ORIGINATING_CENTER;          //-- fall back to hard coded default
-
-  fKSEC1[ 2 ] = wmoi;                        //-- WMO Originating Centre
-#endif
-
-  fKSEC1[ 3 ] += 1;                          // increment Update Sequence Number!!
-  if( fKSEC1[ 4 ] > 127 )
-    fKSEC1[ 4 ] -= 128;                      // remove section 2 (which one to copy?)
-
-  fKSEC3[ 0 ] = 0;
-  for( i=1; i<4; i++)
-    fKSEC3[ i ] = anObs._bufrIn->fKSEC3[ i ];
-  fKSEC3[ 2 ] = 0;                           // reset nr of Subsets
-
-  fKSEC4[ 0 ] = 0;
-  for( i=1; i<2; i++)
-    fKSEC4[ i ] = anObs._bufrIn->fKSEC4[ i ];
-
-  Out_KTDLEN = In_KTDLEN;             // nr of original data descriptors in Sec 3
-  for( i=0; i<In_KTDLEN; i++ )        // packed descriptors
-    Out_KTDLST[ i ] = In_KTDLST[ i ];
-
-  //-- do this also later because with non-compressed multisubset msgs these vary
-  Out_KTDEXL = In_KTDEXL;             // expected nr of data values / expanded descriptors
-  for( i=0; i<In_KTDEXL; i++ )        // expanded descriptors
-    Out_KTDEXP[ i ] = In_KTDEXP[ i ]; // no offset
-
-  Out_KELEM = In_KTDEXL;  // In_KELEM;// expected nr of expanded elements (????)
-
-  _outState = kBufrOut_formatedBuffers;
-}
-//____________________________________________________________________ encode
-void
-MvBufrOut :: encode( void )
-{
-  if( _outState == kBufrOut_dataInBuffers )
-  {
-    fortint myKERR = 0;
-    fortint myKBUFL = 0;
-
-    BUFREN( fKSEC0, fKSEC1, fKSEC2, fKSEC3, fKSEC4
-	  , &Out_KTDLEN   // &fKTDEXL
-	  , Out_KTDLST    // fKTDEXP   // &fKTDLEN, fKTDLST
-	  , &_KDLEN
-	  , _KDATA
-	  , &Out_KELEM
-	  , &Out_KTDEXL   // was: fKVALS
-	  , Out_VALUES
-	  , Out_CVALS
-	  , &myKBUFL
-	  , (fortint *)fMessage
-	  , &myKERR );
-
-    if( myKERR == 0 )
-      _outSet->write( fMessage, (int)(myKBUFL*sizeof(fortint)) );
-    else
-      {
-	cerr << ">>> MvBufrOut::encode, KERR=" << myKERR << endl;
-#ifdef METVIEW
-	marslog( LOG_EROR, "BUFR encoding (BUFREN) failed, status = %d", myKERR );
-#endif
-      }
-
-    resetBuffers();
-  }
-}
-//_______________________________________________________________ checkDescriptors
-// checks descriptors and also header consistency i.e.
-// to make sure that the new obs fits into the current
-// multisubset message
-//---------------------------------------------------------------
-void
-MvBufrOut :: checkDescriptors( const MvObs& anObs )
-{
-//--  if( anObs._bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
-  //-- expand always, in case non-compressed multisubset msg where exaoanded descriptors vary
-  anObs._bufrIn->ExpandDescriptors( anObs.subsetNumber() );
-
-  if( _outState == kBufrOut_emptyBuffers )
-    formatBuffers( anObs );
-  else
-    if( differentDescriptors() || differentHeader( anObs ) )
-    {
-       encode();
-       formatBuffers( anObs );
-    }
-}
-
-//_______________________________________________________________ differentDescriptors
-// returns 1 if descriptors of the BUFR message in 'anObs' differs
-// from current descriptors.
-// returns 0 if they are equal
-//---------------------------------------------------------------
-int
-MvBufrOut :: differentDescriptors( void ) const
-{
-  if( _outState < kBufrOut_formatedBuffers )
-    return 1;
-
-  if( In_KTDLEN != Out_KTDLEN )
-    return 1;
-
-  for( int i = 0; i < In_KTDLEN; i++ )
-    if( In_KTDLST[ i ] != Out_KTDLST[ i ] )
-      return 1;
-
-  return 0;
-}
-//_______________________________________________________________ differentHeader
-// returns 1 if section 1 header of the BUFR message in 'anObs'
-// differs from current header 1.
-// returns 0 if they are equal
-//---------------------------------------------------------------
-int
-MvBufrOut :: differentHeader( const MvObs& anObs ) const
-{
-#if 0
-  int seclen = 17;  // = unsignedInt( &(_currentSec1->len), 3 );  //syntax error???
-
-  unsigned char* v1 = &(_currentSec1->len);	    //-- start of current section 1
-  unsigned char* v2 = &(anObs._bufrIn->fSec1->len); //-- start of sec 1 in other header
-
-  for( int i=seclen; i>0; --i )
-  {
-     if( *v1 != *v2 )
-        return 1;
-
-     ++v1;  ++v2;
-  }
-
-  return 0;
-#endif
-
-  return _currentSec1->isDifferent( anObs._bufrIn->Sec1 );
-}
-//______________________________________________________________ shouldBeWritten
-int
-MvBufrOut :: shouldBeWritten( void )
-{
-  if( _outState != kBufrOut_dataInBuffers )
-    return 0;
-
-  return fKSEC3[ 2 ] >= _maxNrSubsets;  // Nr of Subsets
-}
-//______________________________________________________________ setSubsetCount
-void
-MvBufrOut :: setSubsetCount( int maxNrSubsets )
-{
-  if( _outState == kBufrOut_dataInBuffers )
-    encode();
-  _maxNrSubsets = maxNrSubsets;
-}
-//______________________________________________________________ isDelayedDescriptor
-boolean
-MvBufrOut :: isDelayedDescriptor( const long aDescr ) const
-{
-//  if( aDescr == 31001 || aDescr == 31002 || aDescr == 31011 || aDescr == 31012 )
-  if( aDescr >= 31000 && aDescr <= 31012 )
-    return true;
-  else
-    return false;
-}
-//______________________________________________________________________
-//====================================================================== MvObs
-//______________________________________________________________________
-
-MvObs :: MvObs( MvBufr *b, int i )
-{
-   _subsetNr = i;
-   _copy( b );
-}
-
-MvObs :: MvObs( const MvObs&  b )
-{
-   _copy( b );
-}
-//___________________________________________________________________
-MvObs :: ~MvObs()
-{
-   _clean();
-}
-//___________________________________________________________________ _copy
-void
-MvObs :: _copy( MvBufr *b )
-{
-   _bufrIn = b;
-   _bufr_id = 0;
-   if( _bufrIn )
-   {
-     _bufrIn->attach();
-     _bufr_id = _bufrIn->currentBufrRef();
-   }
-   _currentLevelCoordinate = cPressureCoordinate;
-   _currentLevelIndex = -1;
-   _confidence = new MvBufrConfidence( _bufrIn, _subsetNr );
-}
-//___________________________________________________________________ _copy
-void
-MvObs :: _copy( const MvObs& b )
-{
-  _subsetNr = b._subsetNr;
-  _copy( b._bufrIn );
-
-}
-//___________________________________________________________________ _clean
-void
-MvObs :: _clean()
-{
-   if( _bufrIn )
-     _bufrIn->detach();
-   _bufrIn = NULL;
-   _bufr_id = 0;
-   delete _confidence;
-   _confidence = 0;
-}
-//___________________________________________________________________ operator=
-
-MvObs&
-MvObs :: operator= ( const MvObs& b )
-{
-   _clean();
-   _copy( b );
-   return *this;
-}
-//___________________________________________________________________ operator void*
-
-MvObs :: operator void* ()
-{
-   return _bufrIn;
-}
-//___________________________________________________________________ operator!
-bool
-MvObs :: operator! ()
-{
-   return !_bufrIn;
-}
-//___________________________________________________________________ msg_ok
-//
-bool
-MvObs :: msg_ok() const
-{
-  if( _bufr_id != _bufrIn->currentBufrRef() )
-  {
-    //-- restriction due to static bufr arrays --
-    cerr << ">>> [MvObs::msg_ok] Static bufr arrays rewritten, not valid any more!" << endl;
-    return false;
-  }
-  return ( _bufrIn && ( _bufrIn->_inState != kBufrIn_Error ) ) ? true : false;
-}
-//___________________________________________________________________ Advance
-bool
-MvObs :: Advance()
-{
-   if( _bufrIn->subsetCount() > 1000 ||
-       _bufrIn->subsetCount() < 1 ) // DEBUG TEST ONLY
-   {
-      cerr << " >>> MvObs::Advance, unbelievable nr of fsubsets ("
-	   << _bufrIn->subsetCount() << ") in msg "
-       << _bufrIn->fMessageNumber << endl;
-   }
-   _subsetNr++;
-   _bufrIn->setSubset( _subsetNr );
-   return  _subsetNr <= _bufrIn->subsetCount();
-}
-
-//_________________________________________________________________ messageType
-int
-MvObs :: messageType()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->msgType();
-}
-//_________________________________________________ messageSubtypeInternational
-int
-MvObs :: messageSubtypeInternational()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->msgSubtypeWMO();
-}
-//_________________________________________________________ messageSubtypeLocal
-int
-MvObs :: messageSubtypeLocal()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->msgSubtypeLocal();
-}
-//______________________________________________________________ messageSubtype
-int
-MvObs :: messageSubtype()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->msgSubtype();
-}
-//___________________________________________________________ originatingCentre
-int
-MvObs::originatingCentre()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->origCentre();
-}
-int
-MvObs::originatingSubCentre()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->origSubCentre();
-}
-//___________________________________________________________ editionNumber
-int
-MvObs::editionNumber()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->fSec0->editionNr;
-}
-//___________________________________________________________ masterTable
-int
-MvObs::masterTable()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->masterTable();
-}
-//___________________________________________________________ masterTableVersion
-int
-MvObs::masterTableVersion()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->masterTableVersion();
-}
-//___________________________________________________________ localTableVersion
-int
-MvObs::localTableVersion()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->Sec1->localTableVersion();
-}
-//_________________________________________________  messageTotalLen()
-int
-MvObs :: messageTotalLen()
-{
-   if( ! msg_ok() )
-      return -1;
-
-   return _bufrIn->totalLen();
-}
-//____________________________________________________________________ operator[]
-double
-MvObs::operator[] ( int index )  //-- index starts from 1: 1,2,...,n
-{
-  return (double)(_bufrIn->DataValue( index-1, _subsetNr ));
-}
-//____________________________________________________________________ value
-// returns 'kBufrMissingValue' if not found!
-//-------------------------------------------------
-float
-MvObs :: value( long aDescriptor )
-{
-   if( ! msg_ok() )
-      return kBufrMissingValue;
-
-   fortfloat myValue;
-   _bufrIn->Value( aDescriptor, _subsetNr, myValue );
-   return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
-}
-//___________________________________________________________________ nextValue
-// returns 'kBufrMissingValue' if not found!
-//-------------------------------------------------
-float
-MvObs :: nextValue()
-{
-   if( ! msg_ok() )
-      return kBufrMissingValue;
-
-   fortfloat myValue;
-   _bufrIn->Value( _bufrIn->_currentDescr, _subsetNr, myValue, _bufrIn->_currentDescrInd + 1 );
-   return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
-}
-//___________________________________________________________ valueByOccurrence
-// returns 'kBufrMissingValue' if not found!
-//-------------------------------------------------
-float
-MvObs :: valueByOccurrence( int anOccurrenceIndex, long aDescriptor )
-{
-  fortfloat myValue = value( aDescriptor );
-  for( int myInd = 1; myInd < anOccurrenceIndex; myInd++ )
-    myValue = nextValue();
-  return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
-}
-//______________________________________________________________ hasConfidences
-bool
-MvObs :: hasConfidences()
-{
-  return  _confidence->hasConfidences();
-}
-//__________________________________________________________________ confidence
-int
-MvObs :: confidence()
-{
-  return _bufrIn->_currentDescrInd > -1 ?
-         _confidence->confidenceByIndex( _bufrIn->_currentDescrInd ) : -1;
-}
-//____________________________________________________________________ intValue
-// returns 'kFortranBufrMissingIntValue' if not found!
-//----------------------------------------------------
-long
-MvObs :: intValue( long aDescriptor )
-{
-  return msg_ok() ? _bufrIn->intValue( aDescriptor, _subsetNr ) : kFortranBufrMissingIntValue;
-}
-//____________________________________________________________________ elementValueType
-EElementValueType
-MvObs :: elementValueType()
-{
-  return _bufrIn->elementValueType( _subsetNr );
-}
-//____________________________________________________________________ elementValueType
-EElementValueType
-MvObs :: elementValueType( long aDescriptor )
-{
-  return _bufrIn->elementValueType( aDescriptor, _subsetNr );
-}
-//____________________________________________________________________ stringValue
-string
-MvObs :: stringValue()
-{
-  if( ! msg_ok() )
-    return MESSED_UP;
-  else
-    return _bufrIn->stringValue( _subsetNr );
-}
-//_________________________________________________________________ stringValue
-string
-MvObs :: stringValue( long aDescriptor )
-{
-  if( ! msg_ok() )
-    return MESSED_UP;
-  else
-    return _bufrIn->stringValue( aDescriptor, _subsetNr );
-}
-//______________________________________________________ numberOfPressureLevels
-int
-MvObs :: numberOfPressureLevels()
-{
-  return numberOfLevels( cPressureCoordinate );
-}
-//______________________________________________________ numberOfLevels
-int
-MvObs :: numberOfLevels( long levelDescriptor )
-{
-  int myCount = 0;
-
-  if( firstLevel( levelDescriptor ) != kBufrMissingValue )
-  {
-    myCount++;
-    while( nextLevel() != kBufrMissingValue )
-      myCount++;
-  }
-
-  _currentLevelIndex = -1;
-  return myCount;
-}
-//__________________________________________________________ firstPressureLevel
-float
-MvObs :: firstPressureLevel()
-{
-  _currentLevelCoordinate = cPressureCoordinate;
-  return pressureLevel( 0 );
-}
-//__________________________________________________________ firstLevel
-float
-MvObs :: firstLevel( long levelDescriptor )
-{
-  _currentLevelCoordinate = levelDescriptor;
-  return level( levelDescriptor, 0 );
-}
-//___________________________________________________________ nextPressureLevel
-float
-MvObs :: nextPressureLevel()
-{
-  return pressureLevel( _currentLevelIndex + 1 );
-}
-//___________________________________________________________ nextLevel
-float
-MvObs :: nextLevel()
-{
-  return level( _currentLevelCoordinate, _currentLevelIndex + 1 );
-}
-//______________________________________________________________ pressureLevel
-float
-MvObs :: pressureLevel( int firstIndexValue )
-{
-  float  myLevelValue = level( cPressureCoordinate, firstIndexValue );
-
-  return myLevelValue == kBufrMissingValue ? kBufrMissingValue : myLevelValue / 100.;
-}
-//______________________________________________________________ level
-float
-MvObs :: level( long levelDescriptor, int firstIndexValue )
-{
-  if( ! msg_ok() )
-     return kBufrMissingValue;
-
-  fortfloat myLevelValue = kFortranBufrMissingValue;
-
-  if( _bufrIn->Value( levelDescriptor, _subsetNr, myLevelValue, firstIndexValue ) )
-    _currentLevelIndex = _bufrIn->_currentDescrInd;
-  else
-    _currentLevelIndex = -1;
-
-  return myLevelValue == kFortranBufrMissingValue ? kBufrMissingValue : myLevelValue;
-}
-
-//______________________________________________________________ specifierIndex
-int
-MvObs :: specifierIndex( long   aSpecifierDescriptor
-		       , double aSpecifierValue
-		       , int    firstIndexValue )
-{
-   if( ! msg_ok() )
-      return -1;
-
-   if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
-      _bufrIn->ExpandDescriptors( _subsetNr );
-
-   if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
-   {
-      //-- search for a specifier data with specified value --
-      for( int index=firstIndexValue; index < In_KTDEXL; index++ )
-	 if( In_KTDEXP[ index ] == aSpecifierDescriptor
-	     && _bufrIn->DataValue( index, _subsetNr ) == aSpecifierValue )
-	 {
-	    _lastSpecifierIndex = index;
-	    return index;
-	 }
-   }
-   return -1;
-}
-//____________________________________________________________ valueBySpecifier
-// A generic function to retrieve repeating data
-// specified by some other data
-// (e.g.  temperature at a certain pressure level)
-//--------------------------------------------------------------------
-double
-MvObs :: valueBySpecifier( long   aSpecifierDescriptor
-			 , double aSpecifierValue
-			 , long   aDescriptor
-			 , int    firstIndexValue )
-{
-   int index = specifierIndex( aSpecifierDescriptor, aSpecifierValue, firstIndexValue );
-   if( index > 0 )
-   {
-     //-- if the coordinate value itself is requested
-     if( aSpecifierDescriptor == aDescriptor )
-     {
-         fortfloat myVal = _bufrIn->DataValue( index, _subsetNr );
-         return myVal == kFortranBufrMissingValue ? kBufrMissingValue : myVal;
-     }
-     //-- search real data before next specifier data --
-     for( int ind=index+1; ind < In_KTDEXL; ind++ )
-     {
-       if( In_KTDEXP[ ind ] == aDescriptor )
-       {
-         fortfloat myVal = _bufrIn->DataValue( ind, _subsetNr );
-         return myVal == kFortranBufrMissingValue ? kBufrMissingValue : myVal;
-       }
-
-       //-- not found if specifier data again --
-       if( In_KTDEXP[ ind ] == aSpecifierDescriptor )
-         break;
-     }
-   }
-   return kBufrMissingValue;   //-- Not Found or Troubled Msg --
-}
-//________________________________________________________ valueByPressureLevel
-float
-MvObs :: valueByPressureLevel( float aLevelValue        // in 'hPa'
-			     , long  aDescriptor )
-{
-   return valueBySpecifier( cPressureCoordinate, aLevelValue*100., aDescriptor );
-}
-//________________________________________________________ valueByLevel
-float
-MvObs :: valueByLevel( long  aLevelDescriptor
-                     , float aLevelValue
-		     , long  aDescriptor )
-{
-   return valueBySpecifier( aLevelDescriptor, aLevelValue, aDescriptor );
-}
-//________________________________________________________ valueByLevel
-float
-MvObs :: valueByLevelRange( long  aLevelDescriptor
-                     , float level1
-	             , float level2    
-		     , long  aDescriptor )
-{
-    
-  float levelVal=firstLevel(aLevelDescriptor);
-  
-  while(levelVal != kBufrMissingValue)
-  {  
-	if(levelVal >= level1 && levelVal <= level2)
-	{
-		for( int ind = _currentLevelIndex + 1; ind < In_KTDEXL; ind++ )
-  		{
-    			if( In_KTDEXP[ ind ] == aDescriptor )
-   			{
-      				fortfloat myValue = _bufrIn->DataValue( ind, _subsetNr );
-				if(myValue != kFortranBufrMissingValue)
-					return myValue;
-				
-      				//return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
-    			}
-    			
-    			else if(In_KTDEXP[ ind ] ==aLevelDescriptor)
-				break; 	
-		}
-	}
-	
-	levelVal=nextLevel();
-  }	
-	
-  return kBufrMissingValue;
-}  
- 
-//________________________________________________________________ valueByLayer
-float
-MvObs :: valueByLayer( float firstLevel
-		     , float secondLevel
-		     , long aDescriptor )
-{
-  int firstLevelIndex = specifierIndex( cPressureCoordinate, firstLevel*100., 0 );
-  int secondLevelIndex = -1;
-
-  while( firstLevelIndex > 0 )          //-- loop candidates --
-  {
-    //-- try to find the second level next to the current first one --
-
-    if( In_KTDEXP[ firstLevelIndex - 1 ] == cPressureCoordinate &&
-        _bufrIn->DataValue( firstLevelIndex - 1, _subsetNr ) == secondLevel*100. )
-    {
-      secondLevelIndex = firstLevelIndex - 1;
-      break;
-    }
-    else
-      if( In_KTDEXP[ firstLevelIndex + 1 ] == cPressureCoordinate &&
-          _bufrIn->DataValue( firstLevelIndex + 1, _subsetNr ) == secondLevel*100. )
-      {
-        secondLevelIndex = firstLevelIndex + 1;
-        break;
-      }
-
-    //-- no match, let's find the next candidate --
-
-    firstLevelIndex = specifierIndex( cPressureCoordinate
-				    , firstLevel*100.
-				    , firstLevelIndex + 1 );
-  }
-
-  if( firstLevelIndex < 0 )
-    return kBufrMissingValue;  //-- levels were not found!!!
-
-  //-- search real data before next specifier data --
-
-  int maxim = firstLevelIndex > secondLevelIndex ? firstLevelIndex : secondLevelIndex;
-  for( int ind = maxim + 1; ind < In_KTDEXL; ind++ )
-  {
-    if( In_KTDEXP[ ind ] == aDescriptor )
-    {
-      fortfloat myValue = _bufrIn->DataValue( ind, _subsetNr );
-      return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
-    }
-
-
-    //-- not found if specifier data again --
-
-    if( In_KTDEXP[ ind ] == cPressureCoordinate )
-      break;
-  }
-  return kBufrMissingValue;   //-- Not Found or Troubled Msg --
-}
-
-
-//______________________________________________________________ printAllValues
-boolean
-MvObs :: printAllValues()
-{
-   ostream* myStream = &cout;
-   return writeAllValues( *myStream );
-}
-//_______________________________________________________________ writeAllValues
-boolean
-MvObs :: writeAllValues( ostream& aStream )
-{
-  if( ! msg_ok() )
-    return false;
-
-  if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
-    _bufrIn->ExpandDescriptors( _subsetNr );
-
-  if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
-    {
-      long  myEndingIndex = _confidence->hasConfidences() ?
-	_confidence->lastDataIndex()+1 : In_KTDEXL;
-      writeValues(aStream,0, myEndingIndex);
-      return true;
-   }
-   return false;
-}
-
-boolean
-MvObs::writeValues(ostream& aStream, int firstIndex, int lastIndex)
-{
-   if( ! msg_ok() )
-      return false;
-
-   if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
-      _bufrIn->ExpandDescriptors( _subsetNr );
-
-   if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
-   {
-      fortfloat myValue;
-      if ( firstIndex < 0 )
-	firstIndex = 0;
-      if (lastIndex > In_KTDEXL )
-	lastIndex = In_KTDEXL;
-
-      for( int i = firstIndex; i < lastIndex; i++ )
-      {
-	 aStream.width( 3 ); aStream.fill( ' ' );      // index
-	 aStream << i+1 << ".  ";
-
-	 myValue = _bufrIn->DataValue( i, _subsetNr ); // get parameter value
-	                                               // = set current parameter!
-	 switch( elementValueType() )                    // print parameter value
-	 {
-	   case kEVT_unknown:
-	      aStream << " ?????";
-	      break;
-
-	   case kEVT_missing:
-	      aStream << "   ~~~";
-	      break;
-
-	   case kEVT_numeric:
-	      aStream.width( 6 ); aStream.fill( ' ' );
-	      aStream << myValue;
-	      break;
-
-	   case kEVT_string:
-	      aStream.width( 6 ); aStream.fill( ' ' );
-	      aStream << stringValue( In_KTDEXP[ i ] );
-	      break;
-	 }
-
-	 aStream << " " << name( In_KTDEXP[ i ] );           // parameter name
-	 aStream << " [" << unit( In_KTDEXP[ i ] ) << "] ("; // parameter unit
-	 aStream.width( 5 ); aStream.fill( '0' );            // parameter descriptor
-	 aStream << In_KTDEXP[ i ] << ")";
-	 aStream << endl;
-      }
-      return true;
-   }
-   return false;
-}
-
-//_______________________________________________________________ writeAllValues
-boolean
-MvObs :: writeAllValues( const char* aPathName )
-{
-  ofstream myStream( aPathName, ios::out );
-  if( ! myStream )
-  {
-    cerr << " >>> MvObs::writeAllValues(char*): error in creating file " << aPathName << endl;
-#ifdef METVIEW
-    marslog( LOG_EROR, "MvObs::writeAllValues: error in creating file %s", aPathName );
-#endif
-    return false;
-  }
-
-  return writeAllValues( myStream );
-}
-//_______________________________________________________________ writeBufrBox
-boolean
-MvObs :: writeBufrBox( ostream& aStream )
-{
-   boolean return_value = true;
-
-   boolean b_ret = _bufrIn->writeBufrBox( _subsetNr );
-   if( ! b_ret )
-   {
-      aStream << "\n   >>> Problems encountered!!! <<<\n" << endl;
-      return_value = false;
-   }
-   else
-     {
-       return_value = file_to_stream(BBOXNAME.c_str(),aStream,0);
-       delete_print_file(BBOXNAME.c_str());
-     }
-   return return_value;
-}
-//______________________________________________________________ WmoIdentNumber
-long
-MvObs :: WmoIdentNumber()
-{
-  return msg_ok() ? WmoBlockNumber()*1000 + WmoStationNumber() : kBufrMissingIntValue;
-}
-//______________________________________________________________ WmoBlockNumber
-int
-MvObs :: WmoBlockNumber()
-{
-   fortfloat myValue;
-
-   if( msg_ok() && _bufrIn->Value( 1001L, _subsetNr, myValue ) )
-      return (long)myValue;
-   else
-      return 0;
-}
-//____________________________________________________________ WmoStationNumber
-int
-MvObs :: WmoStationNumber()
-{
-   fortfloat myValue;
-
-   if( msg_ok() && _bufrIn->Value( 1002L, _subsetNr, myValue ) )
-      return (long)myValue;
-   else
-      return 0;
-}
-//____________________________________________________________ findSomeIdent
-string
-MvObs::findSomeIdent()
-{
-  if( ! msg_ok() )
-    return string( "???" );
-
-                            //-- 5-digit WMO identifier available?
-  if( WmoIdentNumber() > 0 )
-    {
-      ostringstream oss;
-      oss << setw(5) << setfill('0') << WmoIdentNumber();
-      return oss.str();
-    }
-                            //-- No WMO id found, thus look for other candidates,
-                            //-- this is a list of known identifier candidates.
-  const long idList[] =
-    {
-      1011L,    //-- Ship or mobile land station identifier
-      1005L,    //-- Buoy/platform identifier
-      1006L,    //-- Aircraft flight number
-      1007L,    //-- Satellite identifier
-      1008L,    //-- Aircraft registration number
-      1010L,    //-- Stationary buoy platform identifier
-      1025L,    //-- Storm identifier
-      1026L,    //-- WMO storm name
-      1027L     //-- WMO long storm name
-    };
-
-  int idVals = sizeof(idList)/sizeof(idList[0]);
-
-  for( int i=0; i<idVals; ++i )
-    {
-      long descr = idList[i];
-      fortfloat myValue = value( descr );
-
-      if( myValue != kBufrMissingValue )
-	{
-	  return stringValue( descr );
-	}
-    }
-
-  return string( "id???" );
-}
-//____________________________________________________________________ location
-MvLocation
-MvObs :: location()
-{
-   MvLocation myLocation( value( 5001L ), value( 6001L ) ); //-- "high accuracy"
-
-   if( myLocation.latitude() == kBufrMissingValue ||
-       myLocation.longitude() == kBufrMissingValue )
-   {
-      myLocation.set( value( 5002L ), value( 6002L ) );     //-- "coarse accuracy"
-   }                                                        //-- hopefully not missing
-
-   //-- this one is for those quirky NCEP PrepBUFR msgs
-   if( myLocation.latitude() != kBufrMissingValue &&
-       myLocation.longitude() == kBufrMissingValue )
-   {
-      //-- lat OK, try NCEP PrepBUFR local descriptor 0'06'240 for lon
-      myLocation.set( myLocation.latitude(), value( 6240L ) );
-   }
-
-   return myLocation;
-}
-//____________________________________________________________________ unit
-string
-MvObs :: unit( long aDescriptor )
-{
-  return msg_ok() ? _bufrIn->unit( aDescriptor ) : MESSED_UP;
-}
-//____________________________________________________________________ unit
-string
-MvObs :: unit()
-{
-  return msg_ok() ? _bufrIn->unit() : MESSED_UP;
-}
-//____________________________________________________________________ name
-string
-MvObs :: name( long aDescriptor )
-{
-  return msg_ok() ? _bufrIn->name( aDescriptor ) : MESSED_UP;
-}
-//____________________________________________________________________ name
-string
-MvObs :: name()
-{
-  return msg_ok() ? _bufrIn->name() : MESSED_UP;
-}
-//________________________________________________________________ subsetOffset
-int
-MvObs :: subsetOffset() const
-{
-  return ( _subsetNr - 1 ) * In_KELEM;
-}
-//________________________________________________________________ writeConfidenceValues
-bool
-MvObs::writeConfidenceValues(ostream& aStream)
-{
-  if( ! msg_ok() || ! _confidence->hasConfidences() )
-    return false;
-
-  if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
-    _bufrIn->ExpandDescriptors( _subsetNr );
-
-  if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
-    {
-      long  myStartingIndex = _confidence->lastDataIndex()+1;
-      long  myEndingIndex =  In_KTDEXL;
-      writeValues(aStream,myStartingIndex, myEndingIndex);
-      return true;
-   }
-   return false;
-}
-
-#ifdef METVIEW
-//---
-//-- Extracts a 4 or 8 bit OPERA radar image
-//-- from a BUFR message into 'unsigned char' array
-//--
-//-- ( NOTE: U N F I N I S H E D ! ! ! )
-//____________________________________________________________________ OperaRadarImage
-unsigned char*
-MvObs::OperaRadarImage(  )
-{
-   const float cRadarMissingVal = 255;       //-- BUFR radar pixel with no data
-   const float cMyMissingValue = 0;          //-- output radar pixel with no data
-
-   //---
-   //-- Some checks to ensure that we can handle this data
-   //-
-
-   int msgType = messageType();
-   if( msgType != 6 )                        //-- 6 = Radar data
-   {
-      throw MvException( "MvObs::OperaRadarImage: not radar data!" );
-   }
-
-   float val = value( 30021 );               //-- 030021: Number of pixels per row
-   if( val == kBufrMissingValue )
-   {
-      throw MvException( "MvObs::OperaRadarImage: unable to get number-of-rows!" );
-   }
-   int n_rows = val;
-
-   val = value( 30022 );                     //-- 030022: Number of pixels per column
-   if( val == kBufrMissingValue )
-   {
-      throw MvException( "MvObs::OperaRadarImage: unable to get number-of-columns!" );
-   }
-   int n_cols = val;
-
-   //---
-   //-- So far so good, now let's try to locate the first data row
-   //-
-
-   int firstRowStartIndex = _bufrIn->descriptorToFortranIndex( 5031 );
-   if( firstRowStartIndex < 0 )
-   {
-      throw MvException( "MvObs::OperaRadarImage: unable to get Row Number element!" );
-   }
-                                                     //-- "FortranIndex": 0,1,2,...
-   int rowRepeatCount = (*this)[firstRowStartIndex]; //-- operator[i], i=1,2,3,...
-   long currentDescr = currentDescriptor();
-   if( currentDescr != 31002 )
-   {
-      throw MvException( "MvObs::OperaRadarImage: internal error - not 031002" );
-   }
-
-   //---
-   //-- Still OK, now create the pixel array and start decoding the BUFR msg
-   //-
-
-   unsigned char* radimg = new unsigned char[n_rows*n_cols];
-   cout << "radimg size: " << n_rows << "*" << n_cols << " = " << n_rows*n_cols << endl;
-
-   int startPos = firstRowStartIndex - 1;    //-- start of radimg pixels
-   int pixelPos = 0;
-
-   float imax = 0;
-   for( int msgPos = startPos; msgPos < In_KTDEXL; ++msgPos )
-   {
-      float currVal = (*this)[msgPos];       //-- get the value
-      long  currDescr = currentDescriptor(); //-- and it's descriptor
-
-      if( currDescr == 31012 || currDescr == 31011 ) //-- delayed descr & data repetition factor?
-      {
-         int repeatCount = currVal;
-         float repeatVal = (*this)[++msgPos]; //-- get next value (advances to next descriptor)
-
-         //-- Double check that the descriptor that follows is a pixel data descriptor
-         //-- NOTE: Descriptor 30004 (16 bit pixel value) is ignored by this code!
-         //--       We only check for 4 bit (30001) and 8 bit (30002) pixel descriptors
-         long nextCurrDescr = currentDescriptor();
-         if( nextCurrDescr != 30001 && nextCurrDescr != 30002 )
-         {
-            delete [] radimg;                //-- free memory before throwing
-            if( nextCurrDescr == 30004 )     //-- cannot process 16 bit pixels
-            {
-               throw MvException( "MvObs::OperaRadarImage: cannot process 16 bit radar images" );
-            }
-
-            cerr << "MvObs::OperaRadarImage: expected 30001 or 30002, found "
-                 << nextCurrDescr << endl;
-            throw MvException( "MvObs::OperaRadarImage: internal or data error => debug needed" );
-         }
-
-         //---
-         //-- OK, we are processing a repeated pixel value (run-length coding)
-         //-
-         if( repeatVal == cRadarMissingVal )
-            repeatVal = cMyMissingValue;
-         else if( repeatVal > imax )
-            imax = repeatVal;
-
-         for( int i=0; i < repeatCount; ++i )
-         {
-            radimg[pixelPos++] = (unsigned char)repeatVal; //-- repeated data value
-         }
-      }
-      else if( currDescr == 30002 || currDescr == 30001 )
-      {
-         //---
-         //-- this is not a repeated value, just a single value
-         //-
-         if( currVal == cRadarMissingVal )
-            currVal = cMyMissingValue;
-         else if( currVal > imax )
-            imax = currVal;
-
-         radimg[pixelPos++] = (unsigned char)currVal;      //-- individual data value
-      }
-   }
-   cout << "Last pixel pos: " << pixelPos << endl;
-   cout << "Max pixel value: " << imax << endl;
-
-   return radimg;
-}
-//---
-//-- Extracts OPERA radar image metadata that is required
-//-- for instance for geolocating the image
-//--
-//-- ( NOTE: U N F I N I S H E D ! ! ! )
-//____________________________________________________________________ OperaRadarMetadata
-bool
-MvObs::OperaRadarMetadata( /* <aki> arguments? */ )
-{
-   return false;
-}
-#endif
-
-//=============================================================================
-//                                                                 vk April -95
-// Quick&Dirty hack to access Feed Back Quality Control Confidence info:
-//  * works only for QC operator 222000
-//  * uses Data Present Descriptors (031031) and Confidence Descriptors (033007)
-//  * presumes following structure:
-//     - 222000 descriptor exists (and is followed by:)
-//     - 031031 descriptors are all in one group (only first one is used!)
-//     - 033007 descriptors are all in one group (only first one is used!)
-//     - Extended Delayed Descr Replication Factors (031002) are not checked!
-//  * Data Present group is used to define index into Confidence group
-//____________________________________________________________ MvBufrConfidence
-
-MvBufrConfidence :: MvBufrConfidence( MvBufr* aBufr, int aSubsetNr )
-{
-  _bufr = aBufr;
-  if( _bufr )
-    _bufr->attach();
-  _subsetNr = aSubsetNr;
-  _state = kBCS_unknown;
-  _startOfDataPresent = -2;
-  _startOfConfidences = -2;
-}
-//___________________________________________________________ ~MvBufrConfidence
-
-MvBufrConfidence :: ~MvBufrConfidence()
-{
-  if( _bufr )
-    _bufr->detach();
-}
-//______________________________________________________________ hasConfidences
-bool
-MvBufrConfidence :: hasConfidences()
-{
-  if( ! _bufr )
-    return false;
-
-  if( _state == kBCS_unknown )
-    _state = _bufr->descriptorToFortranIndex( 222000L ) > 0 ? kBCS_exists : kBCS_missing;
-
-  return _state == kBCS_exists ? true : false;
-}
-//_______________________________________________________________ confidence
-int
-MvBufrConfidence :: confidence( long aDescr )
-{
-  int myDataIndex = _bufr->descriptorToFortranIndex( aDescr );
-  return myDataIndex > -1 ? confidenceByIndex( myDataIndex ) : -1;
-}
-//___________________________________________________________ confidenceByIndex
-int
-MvBufrConfidence :: confidenceByIndex( int aDataInd )
-{
-  int myConfidenceInd = -1;
-
-  if( hasConfidences() )
-  {
-     //--    case a:        case b:
-     //--        . . .          . . .
-     //--       0xxyyy         0xxyyy    <- 0xxyyy: element descriptors
-     //--       0xxyyy         222000
-     //--       222000         03100x
-     //--       031031         031031    <- startOfDataPresent()
-     //--       031031         031031
-     //--        . . .          . . .
-     //--
-     if( aDataInd < ( startOfDataPresent() - 1 ) &&  //-- skip 222000
-         _bufr->CurrentDescriptor() != 222000L )     //-- if previous was 03100*
-     {
-        if( _bufr->DataValue( aDataInd, _subsetNr ) != kFortranBufrMissingValue )
-           myConfidenceInd = startOfConfidences() + delta( aDataInd );
-     }
-  }
-
-  return myConfidenceInd > -1 ?
-            (int)(_bufr->PeekDataValue( myConfidenceInd, _subsetNr )) : -1;
-}
-//_______________________________________________________________ lastDataIndex
-int
-MvBufrConfidence :: lastDataIndex()
-{
-  return hasConfidences() ? _bufr->descriptorToFortranIndex( 222000L ) - 1 : -1;
-}
-//__________________________________________________________ startOfDataPresent
-// Q&D hack !!!
-
-int
-MvBufrConfidence :: startOfDataPresent()
-{
-  if( _startOfDataPresent == -2 )
-  {
-    if( hasConfidences() )
-    {
-      _startOfDataPresent = _bufr->descriptorToFortranIndex( 31031L );
-      if( _startOfDataPresent < 1 )
-      {
-	cerr << "[MvBufrConfidence::startOfDataPresent] Q&D hack does not work!!" << endl;
-	_state = kBCS_missing;
-      }
-    }
-  }
-
-  return hasConfidences() ? _startOfDataPresent : -1;
-}
-//_______________________________________________________________ startOfConfidences
-// Q&D hack !!!
-
-int
-MvBufrConfidence :: startOfConfidences()
-{
-  if( _startOfConfidences == -2 )
-  {
-    if( hasConfidences() )
-    {
-      _startOfConfidences = _bufr->descriptorToFortranIndex( 33007L );
-      if( _startOfConfidences < 1 )
-      {
-	cerr << "[MvBufrConfidence::startOfConfidences] Q&D hack does not work!!" << endl;
-	_state = kBCS_missing;
-      }
-    }
-  }
-
-  return hasConfidences() ? _startOfConfidences : -1;
-}
-//_______________________________________________________________ delta
-int
-MvBufrConfidence :: delta( int anInd )
-{
-  if( hasConfidences() )
-  {
-    int myDelta = 0;
-
-    for( int i = 0; i < anInd; i++ )
-      if( _bufr->PeekDataValue( startOfDataPresent()+i, _subsetNr ) == 0 )
-	myDelta++;
-
-    return myDelta;
-  }
-  else
-    return -1;
-}
-
-//________________________________________________________________________
-//======================================================================== MvBufrParam
-//________________________________________________________________________
-
-MvBufrParam :: MvBufrParam( const char *aParamName )
-{
-   descriptorStruct *par = knownParams;
-   while( par->descriptor != 0 )
-   {
-      if( strcmp( aParamName, par->name ) == 0 )
-      {
-         fDescriptor = par->descriptor;
-	 return;
-      }
-      ++par;
-   }
-   cerr << " >>> MvBufrParam::MvBufrParam: param not defined: " << aParamName << endl;
-   fDescriptor = 0;
-}
-//_____________________________________________________________ PrintAllKnownParameters
-
-void
-MvBufrParam :: PrintAllKnownParameters() const
-{
-   descriptorStruct *par = knownParams;
-   cout << " The Known Parameters of class MvBufrParam and the corresponding Descriptors:\n";
-   while( par->descriptor != 0 )
-   {
-      cout << "\n";
-      cout.width( 16 );
-      cout.fill( ' ' );
-      cout << par->name << " = ";
-      cout.width( 6 );
-      cout.fill( '0' );
-      cout << par->descriptor;
-      ++par;
-   }
-   cout << endl;
-}
-
-//-------------------- Helper functions to redirect stdout ----------------
-// This function will duplicate the file descriptor for stdout, and keep
-// it for later. Then stdout is connected to the file given as arg.
-// The first time the function is run, it tries to find a temporary dir.
-// to use ( class could be used outside metview ).
-
-boolean redirect_6(const char *fname)
-{
-  cout << " redirect_6: redirect stdout into file " << fname << endl;
-  char *tmp_dir;
-  // Set the output dir. if it's not set.
-  if ( redirect_dir == string("") )
-    {
-      tmp_dir = getenv("METVIEW_TMPDIR");
-      if ( !tmp_dir )
-	{
-	  tmp_dir = getenv("TMPDIR");
-	  if ( !tmp_dir )
-	    redirect_dir = "/usr/tmp";
-	  else
-	    redirect_dir = tmp_dir;
-	}
-      else
-	redirect_dir = tmp_dir;
-    }
-
-  // Flush stdout before redirecting, to get rid of any pending output.
-  fflush(stdout);
-
-  new_fd = dup(STDOUT_FILENO);
-
-  cout << "new_fd: " << new_fd << endl;
-
-  close(STDOUT_FILENO);
-
-  string tmp_name;
-  tmp_name = redirect_dir + "/" + fname;
-  // As 1 is just closed, it will be the fd used.
-  // Will fail if stdin is explicitly closed and no fopens are done
-  if ( ! (fopen(tmp_name.c_str(),"w")) )
-    {
-	    cerr << "Problems opening file " << (const char*)tmp_name.c_str() << " for writing" << endl;
-      return false;
-    }
-
-  else
-    return true;
-}
-
-//
-// Will reconnect stdout by using a file descriptor saved from earlier.
-//
-boolean reconnect_6()
-{
-  // Make sure we get everything before closing.
-  fflush(NULL);
-  close(STDOUT_FILENO);
-
-  int ret = dup2( new_fd, STDOUT_FILENO );
-  close(new_fd);
-  if( ret < 0 )
-    {
-      cerr << " reconnect_6: reconnecting into stdout FAILED!" << endl;
-      cout << " reconnect_6: reconnecting into stdout FAILED!" << endl;
-      return false;
-    }
-  cout << " reconnect_6: reconnected into stdout!" << endl;
-  return ret > 0 ;
-}
-
-//
-// Read a file and write the contents to given stream
-//
-boolean file_to_stream(const char *fname,ostream &aStream,int skip)
-{
-  const int MAX_LINE_LEN = 512;
-  char      supposedToBeANewLine;
-  string    myTmpFileName;
-
-  myTmpFileName = redirect_dir + "/" + fname;
-
-  ifstream myTmpFile( myTmpFileName.c_str() );
-
-  if ( ! myTmpFile )
-    {
-	    aStream << "Can not read file " << (const char*)myTmpFileName.c_str() << endl;
-      return false;
-    }
-
-  char     myLine[ MAX_LINE_LEN ];
-
-  myTmpFile.get( myLine, MAX_LINE_LEN, '\n' );
-  myTmpFile.get( supposedToBeANewLine );
-  int i = 0;
-  while( myTmpFile && !myTmpFile.eof() )
-    {
-      if ( i++ >= skip )
-	aStream << myLine << endl;
-
-      myTmpFile.get( myLine, MAX_LINE_LEN, '\n' );
-      myTmpFile.get( supposedToBeANewLine );
-    }
-
-  myTmpFile.close();
-
-  return true;
-}
-
-void delete_print_file(const char *name)
-{
-  string fname = redirect_dir + "/" + name;
-  unlink(fname.c_str());
-}
-
-void eraseWhiteSpaceFromStringEnd(string &str)
-{
-   static string whitespaces (" \t\f\v\n\r");
-   size_t found=str.find_last_not_of(whitespaces);
-   if (found!=string::npos)
-       str.erase(found+1);
-   else
-       str.clear();
-}
-
-string intToString(int i)
-{
-	stringstream out;
-	out << i;
-	return out.str();
-}
-
-string floatToString(float f)
-{
-	stringstream out;
-	out << f;
-	return out.str();
-}
-
-void keyToStringMap(map<string,string> &data,string keyName,fortint *keyArray,int fortIndex)
-{
-	data[keyName]=intToString(keyArray[fortIndex-1]);
-}
-
-void keyToStringMap(map<string,string> &data,string keyName,float keyValue)
-{
-	data[keyName]=floatToString(keyValue);
-}
diff --git a/src/MvObs/MvObsSet.cc b/src/MvObs/MvObsSet.cc
deleted file mode 100644
index 74f3f09..0000000
--- a/src/MvObs/MvObsSet.cc
+++ /dev/null
@@ -1,1011 +0,0 @@
-/***************************** LICENSE START ***********************************
-
- Copyright 2012 ECMWF and INPE. This software is distributed under the terms
- of the Apache License version 2.0. In applying this license, ECMWF does not
- waive the privileges and immunities granted to it by virtue of its status as
- an Intergovernmental Organization or submit itself to any jurisdiction.
-
- ***************************** LICENSE END *************************************/
-
-// MvObsSet.cc,   vk July94
-//            rev vk 980306
-
-//--------------------------------------------------------------------
-//  MvObsSet hides the data structures and parameter driven subroutines
-//  needed to access BUFR files by wrapping them to a nicer C++ cover.
-//--------------------------------------------------------------------
-//  Routines and required data structures are described in
-//  ECMWF Meteorological Bulletin:
-//
-//  "Accessing GRIB and BUFR data."
-//       by J.D.Chambers
-//
-//  May 1994 Original version.
-//--------------------------------------------------------------------
-
-#include "inc_iostream.h"
-#include "MvObsSet.h"
-
-#ifdef METVIEW_PREPBUFR
-# include "MvPrepBufrPrep.h"
-#endif
-
-#ifndef METVIEW
-#include "grib_api.h"
-long _readbufr(FILE *f, char *b, long *l)  // from mars/tools.c
-{
-	size_t len = *l;
-	long e =  wmo_read_any_from_file(f,(unsigned char*)b,&len);
-	*l = len;
-	return e;
-}
-#endif
-
-int MAX_MESSAGE_LENGTH = 32000;
-
-const int    cMSG_TYPE_BUFR_TABLES = 11;
-
-static string WRITE("w");  // i/o mode
-
-//____________________________________________________________________
-//==================================================================== MvObsSet
-//____________________________________________________________________
-
-MvObsSet :: MvObsSet( const char *aName )
- : _minTime( 2247, 6, 20 )
- , _maxTime( 1799, 12, 31 )
-{
-   _IO_mode = "r";
-   _init( aName );
-}
-//____________________________________________________________________
-
-MvObsSet :: MvObsSet( const char *aName, const char *aMode )
- : _minTime( 2247, 6, 20 )
- , _maxTime( 1799, 12, 31 )
-{
-   _IO_mode = aMode;
-   _init( aName );
-}
-//____________________________________________________________________
-#ifdef METVIEW
-MvObsSet :: MvObsSet( MvRequest &aRequest, const char *aMode )
- : _minTime( 2247, 6, 20 )
- , _maxTime( 1799, 12, 31 )
-{
-   _IO_mode = aMode;
-   const char *aName = 0;
-   aRequest.getValue( aName, "PATH" );
-   _init( aName );
-}
-#endif
-//____________________________________________________________________
-
-MvObsSet :: ~MvObsSet()
-{
-   close();
-   delete [] _message;    // added 950201/vk
-   if( _bufrOut )
-     delete _bufrOut;
-#ifdef METVIEW_PREPBUFR
-   if( prepBufr_  )
-     delete prepBufr_;
-#endif
-
-}
-//____________________________________________________________________
-void
-MvObsSet :: _init( const  char *aName )
-{
-   _bufrFile = 0;
-   _msgCount = -1;
-   _obsCount = -1;
-   _msgNumber = -1;
-   _msgLen = 0;
-   _minMaxDone = false;
-  // _message = new char[ MAX_MESSAGE_LENGTH ];
-   _IO_buffer_OK = false;
-#ifdef METVIEW_PREPBUFR
-   isPrepBufrFile_ = false;
-   prepBufr_ = 0;
-#endif
-
-   Open( aName );
-
-   if( _IO_mode == WRITE )  //should be two classes!!!!!!! (but this a working one...)
-   {
-     _message = 0;
-     _bufrOut = new MvBufrOut( MAX_MESSAGE_LENGTH, this );  //( _message, MAX_MESSAGE_LENGTH, this );
-   }
-   else
-   {
-     _message = new char[ MAX_MESSAGE_LENGTH ];
-     _bufrOut = 0;
-
-#ifdef METVIEW_PREPBUFR
-#ifdef METVIEW
-     cout << "MvObsSet::_init - PrepBUFR support available, testing if PrepBUFR file..." << endl;
-#endif
-     firstObs_ = next();                    //-- check if PrepBUFR file (contains BUFR tables)
-     isPrepBufrFile_ = ( firstObs_.messageType() == cMSG_TYPE_BUFR_TABLES );
-     rewind();
-
-//aki:
-//  1) test if PrepBUFR tables have already been extracted: MV_PREPBUFR_TABLES_EXTRACTED
-//  2) extract only if not yet extracted
-     if( isPrepBufrFile_ && ! getenv("MV_PREPBUFR_TABLES_EXTRACTED") )
-     {
-        prepBufrFile();
-        putenv("MV_PREPBUFR_TABLES_EXTRACTED=YES");
-     }
-#else
-     cout << "MvObsSet::_init - PrepBUFR support NOT available!!!!" << endl;
-#endif
-   }
-   cout << "in MvObsSet::_init(" << aName << ")" << endl;
-}
-//____________________________________________________________________ setSubsetMax
-void
-MvObsSet :: setSubsetMax( int subsetMax )
-{
-  //_bufrOut->_maxNrSubsets = subsetMax; //replaced vk 941219
-  _bufrOut->setSubsetCount( subsetMax );
-}
-//____________________________________________________________________ Open
-boolean
-MvObsSet :: Open( const char* aFileName )
-{
-   _msgCount = -1;
-   _msgNumber = 0;
-
-   _bufrFile = fopen( aFileName, _IO_mode.c_str() );
-
-   if( _bufrFile )
-      return true;
-   else
-   {
-      cerr << " >>> MvObsSet::Open: file \'" << aFileName << "\', not opened!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "Unable to open file %s", aFileName );
-#endif
-      return false;
-   }
-}
-//____________________________________________________________________ close
-boolean
-MvObsSet :: close()
-{
-   long myReturnValue = -1;
-   if( _bufrFile )
-   {
-     if( _IO_mode == WRITE && _bufrOut->_outState == kBufrOut_dataInBuffers )
-     {
-       _bufrOut->encode();
-     }
-
-     myReturnValue = fclose( _bufrFile);
-     _bufrFile = 0;
-   }
-   _IO_buffer_OK = false;
-   return myReturnValue ? false : true;
-}
-//____________________________________________________________________ rewind
-void
-MvObsSet :: rewind()
-{
-   _msgNumber = 0;
-   if( _bufrFile )
-     ::rewind( _bufrFile );  // execute C command 'rewind'!
-   else
-     cerr << " >>> MvObsSet::rewind: File Unit not valid!" << endl;
-}
-
-//____________________________________________________________________ next
-// Reads next BUFR message and returns an MvObs constructed with it.
-// An MvObs without a message is returned at EOF.
-//------------------------------------------------
-MvObs
-MvObsSet::next()
-{
-   const int EOF_STATUS = -1;
-
-   if( ! _bufrFile )
-     return MvObs( NULL );  // nothing if file not ok
-
-   if( _IO_mode == WRITE )
-     return MvObs( NULL );  // no next when writing !
-
-   _msgLen = MAX_MESSAGE_LENGTH;
-
-   _msgNumber++;
-
-   long lastPos = ftell(_bufrFile);
-   long myError = _readbufr( _bufrFile, _message, &_msgLen );
-
-   if ( myError == -3 )  // Bufr too small
-     {
-
-       // Go back to previous and allocate memory
-       fseek(_bufrFile,lastPos,SEEK_SET);
-       delete [] _message;
-       MAX_MESSAGE_LENGTH = _msgLen + 8;
-       _message = new char[ MAX_MESSAGE_LENGTH ];
-       _msgLen = MAX_MESSAGE_LENGTH;
-
-       if ( ! _message )
-	 {
-	   cerr << "MvObsSet::next: Cannot allocate memory for next BUFR message" << endl;
-#ifdef METVIEW
-	   marslog( LOG_EROR, "Cannot allocate memory for next BUFR message" );
-#endif
-	   _msgLen = MAX_MESSAGE_LENGTH  = 0;
-	   _IO_buffer_OK = false;
-	   return MvObs( NULL );
-	 }
-       else
-	 {
-	   cout << "MvObsSet::next: Allocated more memory for BUFR msg" << endl;
-	   myError = _readbufr( _bufrFile, _message, &_msgLen );
-	 }
-     }
-
-   if( myError )
-     {
-       if( myError != EOF_STATUS )
-	 {
-	   cerr << "MvObsSet::next: Failed reading next BUFR msg, returned status=" << myError << endl;
-#ifdef METVIEW
-	   marslog( LOG_EROR, "Failed reading next BUFR msg, status = %ld", myError );
-#endif
-	 }
-       _IO_buffer_OK = false;
-       return MvObs( NULL );
-     }
-
-#ifdef METVIEW_PREPBUFR
-   //--
-   //-- NCEP PrepBUFR files may contain msgs with ZERO subsets!!!
-   //-- 'bufrex' cannot handle such illegal msgs, if so we must skip it
-   //--
-   MvBufr tmpBufr( _message, _msgLen, _msgNumber  ); //-- make BUFR octets into an object
-   if( tmpBufr.subsetCount() == 0 )
-     {
-       ostringstream os;
-       os << "Original BUFR msg " << _msgNumber
-          << " has ZERO subsets - ignoring (not counting) this illegal msg!"
-          << ends;
-
-       cout << os.str() << endl;
-
-#ifdef METVIEW
-       //-- why this marslog crashes ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
-//       marslog( LOG_WARN, "%s", os.str().c_str() );
-       //-- why this marslog crashes ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
-#endif
-
-       //-- get next msg and cross your fingers it fits into current _message array
-       _msgLen = MAX_MESSAGE_LENGTH;
-       myError = _readbufr( _bufrFile, _message, &_msgLen );
-
-       //_msgNumber++;
-     }
-#endif
-
-     _IO_buffer_OK = true;
-     return MvObs( new MvBufr( _message, _msgLen, _msgNumber ) );
-}
-
-//____________________________________________________________________ add
-void
-MvObsSet::add( MvObs& anObs )
-{
-   if( _IO_mode != WRITE )
-     return;  // no add when reading !
-
-   _bufrOut->add( anObs );
-   _msgCount++; //??
-}
-//____________________________________________________________________ write
-void
-MvObsSet::write( const char* aMsg, int aMsgLen )
-{
-  if( _IO_mode != WRITE )
-    return;  // no write when reading !
-
-  fwrite( aMsg, sizeof( char ), aMsgLen, _bufrFile );
-  _msgNumber++;
-}
-
-//____________________________________________________________________ messageCount
-// Returns the number of BUFR messages found in the file.
-// WARNING: a packed BUFR message may contain several observations
-//          i.e. the nr of BUFR msgs found <= nr of observation msgs
-//          i.e. messageCount() <= obsCount()
-//------------------------------------------------------------------
-int
-MvObsSet :: messageCount()
-{
-   if( _msgCount < 1 )
-   {
-      if( _bufrFile )
-      {
-         long myOriginalFilePos = ftell( _bufrFile );
-	 rewind();
-
-         _msgCount = 0;
-         while( next() )
-	    _msgCount++;
-
-	 fseek( _bufrFile, myOriginalFilePos, SEEK_SET );
-      }
-   }
-   return _msgCount;
-}
-//____________________________________________________________________ obsCount
-int
-MvObsSet :: obsCount()
-{
-   if( _obsCount < 1 )
-   {
-      if( _bufrFile )
-      {
-         long myOriginalFilePos = ftell( _bufrFile );
-	 rewind();
-
-         _obsCount = 0;
-	 MvObs oneBufrMsg;
-         while( ( oneBufrMsg = next() ) )
-	    _obsCount += oneBufrMsg._bufrIn->subsetCount();
-
-	 fseek( _bufrFile, myOriginalFilePos, SEEK_SET );
-      }
-   }
-   return _obsCount;
-}
-//_________________________________________________________ searchMinMaxTime
-void
-MvObsSet :: searchMinMaxTime()
-{
-   if( ! _minMaxDone )
-   {
-      if( _bufrFile )
-      {
-         long myOriginalFilePos = ftell( _bufrFile );   rewind();
-
-         TDynamicTime msgTime;
-         MvObs myObs;
-         while( ( myObs = next() ) )
-         {
-            msgTime = myObs.msgTime();
-            if( msgTime > _maxTime )
-                _maxTime = msgTime;
-            if( msgTime < _minTime )
-                _minTime = msgTime;
-         }
-
-         fseek( _bufrFile, myOriginalFilePos, SEEK_SET );
-
-      }
-      _minMaxDone = true;
-   }
-}
-#ifdef METVIEW_PREPBUFR
-//____________________________________________________________________ prepBufrFile
-bool
-MvObsSet::prepBufrFile()
-{
-   if( isPrepBufrFile_ )
-   {
-#ifdef METVIEW
-      cout << "in MvObsSet::prepBufrFile()" << endl;
-      marslog( LOG_INFO, "BUFR file contains BUFR tables, processing..." );
-#endif
-                                            //-- create new PrepBUFR table files etc...
-      prepBufr_ = new MvPrepBufrPrep( *this );
-      bool ok = prepBufr_->prepareAll();
-      if( !ok )
-      {
-#ifdef METVIEW
-         marslog( LOG_EROR, "Unable to process PrepBUFR file" );
-#endif
-         cerr << "Errors: unable to process the PrepBUFR file" << endl;
-         return false;
-      }
-   }
-   return isPrepBufrFile_;
-}
-#endif
-
-//____________________________________________________________________ minDate
-#ifdef METVIEW
-MvDate
-MvObsSet :: minDate()
-{
-   searchMinMaxTime();
-   double timfloat = 10000.0L*(double)_minTime.GetYear()
-                     + 100.0L*(double)_minTime.GetMonth()
-                     +        (double)_minTime.GetDay()
-                     +        (double)_minTime.GetHour()/24.0L
-                     +        ((double)_minTime.GetMin()+0.5L)/60.0L/24.0L; //rounded
-   return MvDate( timfloat );
-}
-//____________________________________________________________________ maxDate
-MvDate
-MvObsSet :: maxDate()
-{
-   searchMinMaxTime();
-   double timfloat = 10000.0L*(double)_maxTime.GetYear()
-                     + 100.0L*(double)_maxTime.GetMonth()
-                     +        (double)_maxTime.GetDay()
-                     +        (double)_maxTime.GetHour()/24.0L
-                     +        ((double)_maxTime.GetMin()+0.5L)/60.0L/24.0L; //rounded
-   return MvDate( timfloat );
-}
-#endif
-
-/*-------
-//____________________________________________________________________ operator +=
-// use 'add' member function instead!
-void
-MvObsSet :: operator += ( MvObs anObs )
-{
-   if( _IO_mode == "r" )
-     return;  // no writing for read files !
-
-   cout << "MvObsSet::operator+= not yet implemented..." << endl;
-}
--------*/
-//___________________________________________________________________
-//=================================================================== MvObsSetIterator
-//___________________________________________________________________
-
-MvObsSetIterator :: MvObsSetIterator( MvObsSet& s)
-{
-   ObsSet = &s;
-
-   _NoFiltersSet = true;
-   _TimeFilterState = kTFS_notSet;
-   _WmoBlockCount = 0;
-   _WmoStationCount = 0;
-   _MsgTypeCount = 0;
-   _MsgSubtypeCount = 0;
-   _SelectState = SF_notSet;
-   _SelectValueCount = 0;
-   useObsTime_ = false;
-}
-//___________________________________________________________________
-
-MvObsSetIterator :: ~MvObsSetIterator()
-{
-}
-//___________________________________________________________________ operator()
-
-
-MvObs MvObsSetIterator :: operator() ( ENextReturn returnType )
-{
-  if( ! current || ( returnType == NR_returnMsg ) || ! current.Advance() )
-    next();
-
-  while( current && ! AcceptedObs( current ) )
-  {
-    if( ! current || ( returnType == NR_returnMsg ) || ! current.Advance() )
-      next();
-  }
-  return current;
-}
-//____________________________________________________________________ next
-
-void
-MvObsSetIterator :: next()
-{
-  static int change_me_with_debugger = 0;
-
-  current = ObsSet->next();
-
-#ifdef METVIEW
-  if( mars.debug && ( ( ObsSet->messageNumber() == 1 ) || change_me_with_debugger ) )
-    current.printAllValues();
-#endif
-}
-//____________________________________________________________________ setTime
-
-void
-MvObsSetIterator :: setTime( const TDynamicTime& anObsTime )
-{
-   setTimeRange( anObsTime, anObsTime );
-}
-//____________________________________________________________________
-
-void
-MvObsSetIterator :: setTimeRange( const TDynamicTime& anObsTime, short deltaInMinutes )
-{
-   fBeginTime = fEndTime = anObsTime;
-   fBeginTime.ChangeByMinutes( -deltaInMinutes );
-   fEndTime.ChangeByMinutes( deltaInMinutes );
-   _TimeFilterState = kTFS_bothSet;
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setTimeRange( const TDynamicTime& aBeginTime, const TDynamicTime& anEndTime )
-{
-   fBeginTime = aBeginTime;
-   fEndTime = anEndTime;
-   _TimeFilterState = kTFS_bothSet;
-   _NoFiltersSet = false;
-}
-//_____________________________________________________________ setTimeRangeWithoutDate
-// add 941229/vk
-//
-// parameters: in format HHMM, i.e. 1200 == 12.00, 15 == 0.15, i.e. 100*hour+min!!!
-//             values are normalized into range [0000..2400)
-//_________________________________________
-void
-MvObsSetIterator :: setTimeRangeWithoutDate( int aBegin, int anEnd )
-{
-   TDynamicTime aTime;  // date part is not used, so let's use today..
-   int myBegin = aBegin;
-   int myEnd   = anEnd;
-
-   while( myBegin < 0 ) myBegin += 2400;
-   aTime.SetTime( myBegin / 100, myBegin % 100, 0 );
-   fBeginTime = aTime;
-
-   while( myEnd >= 2400 ) myEnd -= 2400;
-   aTime.SetTime( myEnd / 100, myEnd % 100, 0 );
-   fEndTime = aTime;
-
-   _TimeFilterState = kTFS_clockSet;
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setWmoBlock( int aWmoBlockNumber )
-{
-   if( _WmoBlockCount >= MAX_FILTER_LIST_ARRAY_SIZE )
-   {
-      cerr << ">>> MvObsIterator::setWmoBlock: array overflow!!!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "MvObsIterator::setWmoBlock: array overflow!" );
-#endif
-      return;
-   }
-   _WmoBlockNumber[ _WmoBlockCount++ ] = aWmoBlockNumber;
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setWmoStation( long aWmoStation )
-{
-   if( _WmoStationCount >= MAX_FILTER_LIST_ARRAY_SIZE )
-   {
-      cerr << ">>> MvObsIterator::setWmoStation: array overflow!!!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "MvObsIterator::setWmoStation: array overflow!" );
-#endif
-      return;
-   }
-   _WmoStation[ _WmoStationCount++ ] = aWmoStation;
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: select( long aDescriptor
-			  , float aValue )
-{
-   if( _SelectValueCount >= MAX_FILTER_LIST_ARRAY_SIZE )
-   {
-      cerr << ">>> MvObsIterator::select: array overflow!!!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "MvObsIterator::select: array overflow!" );
-#endif
-      return;
-   }
-   if( _SelectValueCount > 0 && aDescriptor != _SelectDescriptor )
-   {
-      cerr << ">>> MvObsIterator::select: changing the descriptor while building the list!!!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "MvObsIterator::select: changing the descriptor while building the list!" );
-#endif
-   }
-  _SelectDescriptor = aDescriptor;
-  _SelectValue[ _SelectValueCount++ ] = aValue;
-  _SelectState = SF_listSet;
-  _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: selectRange( long aDescriptor
-			       , float firstValue
-			       , float secondValue )
-{
-  _SelectDescriptor = aDescriptor;
-  _SelectValue[ 0 ] = firstValue < secondValue ? firstValue : secondValue;
-  _SelectValue[ 1 ] = secondValue > firstValue ? secondValue : firstValue;
-  _SelectValueCount = 2;
-  _SelectState = SF_rangeSet;
-  _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: excludeRange( long aDescriptor
-			        , float firstValue
-			        , float secondValue )
-{
-  _SelectDescriptor = aDescriptor;
-  _SelectValue[ 0 ] = firstValue < secondValue ? firstValue : secondValue;
-  _SelectValue[ 1 ] = secondValue > firstValue ? secondValue : firstValue;
-  _SelectValueCount = 2;
-  _SelectState = SF_excludeRangeSet;
-  _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setXSectionLine( const MvLocation& aStartPoint
-			      , const MvLocation& anEndPoint
-			      , float aDeltaInMeters )
-{
-   fXSectionLine.setLine( aStartPoint, anEndPoint );
-   fXSectionLine.setMaxDelta( aDeltaInMeters );
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setArea( const MvLocation& aCorner1, const MvLocation& aCorner2 )
-{
-   fArea.set( aCorner1, aCorner2 );
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setMessageType( int aMsgType )
-{
-   if( _MsgTypeCount >= MAX_FILTER_LIST_ARRAY_SIZE )
-   {
-      cerr << ">>> MvObsIterator::setMessageType: array overflow!!!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "MvObsIterator::setMessageType: array overflow!" );
-#endif
-      return;
-   }
-   _MsgType[ _MsgTypeCount++ ] = aMsgType;
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-void
-MvObsSetIterator :: setMessageSubtype( int aMsgSubtype )
-{
-   if( _MsgSubtypeCount >= MAX_FILTER_LIST_ARRAY_SIZE )
-   {
-      cerr << ">>> MvObsIterator::setMessageSubtype: array overflow!!!" << endl;
-#ifdef METVIEW
-      marslog( LOG_EROR, "MvObsIterator::setMessageSubtype: array overflow!" );
-#endif
-      return;
-   }
-   _MsgSubtype[ _MsgSubtypeCount++ ] = aMsgSubtype;
-   _NoFiltersSet = false;
-}
-//____________________________________________________________________
-float
-MvObsSetIterator :: distanceFromXSectionLine( const MvLocation& aPoint )
-{
-   if( fXSectionLine.startPoint().latitude() == MISSING_LOC_VALUE )
-   {
-      return MISSING_LOC_VALUE;
-   }
-   return fXSectionLine.deltaInMeters( aPoint );
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: TimeOk( MvObs *anObs ) const
-{
-   switch( _TimeFilterState )
-   {
-   case kTFS_notSet:
-     break;   //return true;
-
-   case kTFS_clockSet:
-     {
-       long obsTime;
-       if( useObsTime_ )
-	 obsTime = anObs->obsTime().ClockInSeconds();  //-- need to decode => slow
-       else
-	 obsTime = anObs->msgTime().ClockInSeconds();  //-- use metadata => fast
-
-       long time1 = fBeginTime.ClockInSeconds();
-       long time2 = fEndTime.ClockInSeconds();
-
-       if( time1 <= time2 )        // e.g.  12-18
-       {
-         if( obsTime < time1 || obsTime > time2 )
-	   return false;
-       }
-       else    // time1 > time2       e.g.  21-03
-       {
-          if( obsTime < time1 && obsTime > time2 )
-	    return false;
-       }
-     }
-     break;
-
-   case kTFS_bothSet:
-     {
-       TDynamicTime myTime;
-       if( useObsTime_ )
-	 myTime = anObs->obsTime();  //-- time from obs => decode first => slow
-       else
-	 myTime = anObs->msgTime();  //-- time from sec1 => no decode => fast
-
-       if( myTime < fBeginTime || myTime > fEndTime )
-          return false;
-     }
-     break;
-   }
-
-   return true;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: WmoBlockOk( MvObs *anObs ) const
-{
-  if( _WmoBlockCount < 1 )
-    return true;
-
-  for( int i = 0; i < _WmoBlockCount; i++ )
-    if( anObs->WmoBlockNumber() == _WmoBlockNumber[ i ] )
-      return true;
-
-  return false;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: WmoStationOk( MvObs *anObs ) const
-{
-   if( _WmoStationCount < 1 )
-      return true;
-
-  for( int i = 0; i < _WmoStationCount; i++ )
-    if( anObs->WmoIdentNumber() == _WmoStation[ i ] )
-      return true;
-
-  return false;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: WithinXSectionLine( MvObs *anObs ) const
-{
-   if( fXSectionLine.maxDelta() < 0 )    // not set ?
-      return true;
-
-   if( fXSectionLine.withinDelta( anObs->location() ) )
-     return true;
-   else
-     return false;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: InsideArea( MvObs *anObs ) const
-{
-   if( fArea.lowerLeft().latitude() == MISSING_LOC_VALUE )
-     return true;
-   else
-     return fArea.inside( anObs->location() );
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: msgTypeOk( MvObs *anObs ) const
-{
-   if( _MsgTypeCount < 1 )
-      return true;
-
-  for( int i = 0; i < _MsgTypeCount; i++ )
-    if( anObs->messageType() == _MsgType[ i ] )
-      return true;
-
-  return false;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: msgSubtypeOk( MvObs *anObs ) const
-{
-   if( _MsgSubtypeCount < 1 )
-      return true;
-
-  for( int i = 0; i < _MsgSubtypeCount; i++ )
-    if( anObs->messageSubtype() == _MsgSubtype[ i ] )
-      return true;
-
-  return false;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: selectOk( MvObs *anObs ) const
-{
-  if( _SelectState == SF_notSet )
-    return true;
-
-  float myValue = anObs->value( _SelectDescriptor );
-  if( myValue == kBufrMissingValue )
-    return false;
-
-  switch( _SelectState )
-  {
-    case SF_notSet:
-
-        break;
-
-    case SF_listSet:
-
-        {
-          for( int i = 0; i < _SelectValueCount; i++ )
-            if( myValue == _SelectValue[ i ] )
-              return true;
-        }
-        return false;
-
-    case SF_rangeSet:
-
-        if( myValue < _SelectValue[ 0 ] || myValue > _SelectValue[ 1 ] )
-          return false;
-        break;
-
-    case SF_excludeRangeSet:
-
-        if( myValue >= _SelectValue[ 0 ] && myValue <= _SelectValue[ 1 ] )
-          return false;
-        break;
-
-  }
-  return true;
-}
-//____________________________________________________________________
-boolean
-MvObsSetIterator :: AcceptedObs( MvObs& anObs ) const
-{
-   if( _NoFiltersSet )
-      return true;
-
-   if( ! msgTypeOk( &anObs ) )         // from Section 1: no decoding required
-      return false;
-   if( ! msgSubtypeOk( &anObs ) )      // from Section 1: no decoding required
-      return false;
-
-   if( ! TimeOk( &anObs ) )            // from Section 1: no decoding required
-      return false;
-
-   if( ! WmoBlockOk( &anObs ) )        // others require decoding of the msg
-      return false;
-   if( ! WmoStationOk( &anObs ) )
-      return false;
-
-   if( ! selectOk( &anObs ) )
-      return false;
-
-   if( ! WithinXSectionLine( &anObs ) )
-      return false;
-
-   if( ! InsideArea( &anObs ) )
-      return false;
-
-   return true;
-}
-//_____________________________________________________________ operator<<
-
-ostream& operator<< ( ostream& aStream, const MvObsSetIterator& aFilter )
-{
- int i;
-
-  aStream << "Observation Filter values set:\n";
-  if( aFilter._NoFiltersSet )
-  {
-    aStream << "   No filter values set!";
-    aStream << endl;
-  }
-  else
-  {
-    if( aFilter._TimeFilterState != kTFS_notSet )
-    {
-      aStream << "   Timerange: ";
-      switch( aFilter._TimeFilterState )
-      {
-      case kTFS_notSet:
-        aStream << "[not set!]";
-        break;
-
-      case kTFS_clockSet:
-        aStream << aFilter.fBeginTime.GetHour() << ".";
-        aStream.width(2); aStream.fill('0');
-        aStream << aFilter.fBeginTime.GetMin();
-        if( aFilter.fBeginTime != aFilter.fEndTime )
-        {
-          aStream << " - " << aFilter.fEndTime.GetHour() << ".";
-          aStream.width(2); aStream.fill('0');
-          aStream << aFilter.fEndTime.GetMin();
-        }
-        break;
-
-      case kTFS_bothSet:
-        aStream << aFilter.fBeginTime;
-        if( aFilter.fBeginTime != aFilter.fEndTime )
-          aStream << " - " << aFilter.fEndTime;
-        break;
-      }
-      aStream << endl;
-    }
-
-    if( aFilter._MsgTypeCount > 0 )
-    {
-      aStream << "   Message types: ";
-      for( i=0; i < aFilter._MsgTypeCount; i++ )
-        aStream << " " << aFilter._MsgType[ i ];
-      aStream << endl;
-    }
-
-    if( aFilter._MsgSubtypeCount > 0 )
-    {
-      aStream << "   Message subtypes: ";
-      for( i=0; i < aFilter._MsgSubtypeCount; i++ )
-        aStream << " " << aFilter._MsgSubtype[ i ];
-      aStream << endl;
-    }
-
-    if( aFilter._WmoBlockCount > 0 )
-    {
-      aStream << "   WMO Blocks:";
-      for( i=0; i < aFilter._WmoBlockCount; i++ )
-        aStream << " " << aFilter._WmoBlockNumber[ i ];
-      aStream << endl;
-    }
-
-    if( aFilter._WmoStationCount > 0 )
-    {
-      aStream << "   WMO Stations:";
-      for( i=0; i < aFilter._WmoStationCount; i++ )
-        aStream << " " << aFilter._WmoStation[ i ];
-      aStream << endl;
-    }
-
-    if( aFilter._SelectState != SF_notSet )
-    {
-      aStream << "   Select ";
-      switch( aFilter._SelectState )
-      {
-       case SF_notSet:
-         aStream << "by values/range: [not set!]";
-         break;
-
-       case SF_listSet:
-         aStream << "by values: ";
-         break;
-
-       case SF_rangeSet:
-         aStream << "by range: ";
-         break;
-
-       case SF_excludeRangeSet:
-         aStream << "by excluding range: ";
-         break;
-      }
-
-      for( i=0; i < aFilter._SelectValueCount; i++ )
-        aStream << aFilter._SelectValue[ i ] << " ";
-      aStream << "(descr. " << aFilter._SelectDescriptor << ")";
-      aStream << endl;
-    }
-
-    if( aFilter.fXSectionLine.startPoint().latitude() != MISSING_LOC_VALUE )
-    {
-      aStream << "   Cross Section Line: " << aFilter.fXSectionLine;
-      aStream << endl;
-    }
-
-    if( aFilter.fArea.lowerLeft().latitude() != MISSING_LOC_VALUE )
-    {
-      aStream << "   Area: " << aFilter.fArea;
-      aStream << endl;
-    }
-   // aStream << endl;  // calling method should add the final 'endl'!
-  }
-  return aStream;
-}
diff --git a/src/MvObs/MvObsSet.h b/src/MvObs/MvObsSet.h
deleted file mode 100644
index fd67393..0000000
--- a/src/MvObs/MvObsSet.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/***************************** LICENSE START ***********************************
-
- Copyright 2012 ECMWF and INPE. This software is distributed under the terms
- of the Apache License version 2.0. In applying this license, ECMWF does not
- waive the privileges and immunities granted to it by virtue of its status as
- an Intergovernmental Organization or submit itself to any jurisdiction.
-
- ***************************** LICENSE END *************************************/
-
-// MvObsSet.h
-
-
-#ifndef MvObsSet_DEFINED
-#define MvObsSet_DEFINED
-
-//-- <aki> temporarily for testing only; should be done via 'configure'
-#define METVIEW_PREPBUFR
-
-#include "MvBufrObs.h"
-
-class MvPrepBufrPrep;
-
-//--------------------------------------------------------------- MvObsSet
-//! A class to access a file containing observation reports
-/*! This class is used to handle a file containing several
- *  observation reports stored as BUFR messages.
- */
-class MvObsSet
-{
- friend class MvObsSetIterator;
- friend class MvBufrOut;
-
-	// prevent copy
-
-	MvObsSet( const MvObsSet& );
-	void operator= ( const MvObsSet& );
-	void _init( const char* aFile );
-
- public:
-
-//! Constructor with the input BUFR file name as an argument
-   MvObsSet( const char* fileName );
-
-//! Constructor with a BUFR file name and access mode as arguments
-/*! This constructor can be used for writing to a file, use
- *  access mode "w" or "a".
- */
-   MvObsSet( const char* fileName, const char* accessMode );
-
-#ifdef METVIEW
-//! Constructor with a BUFR request and access mode as arguments
-    MvObsSet( MvRequest&, const char* aMode = "r" );
-
-//! Returns the minimum (earliest) date found in MvObsSet
-    MvDate  minDate();
-
-//! Returns the maximum (latest) date found in MvObsSet
-    MvDate  maxDate();
-#endif
-
-//! Destructor
-   ~MvObsSet();
-
-//! Set max subset count for a new file
-      void  setSubsetMax( int subsetMax );
-
-//! Add one observation report to output file
-      void  add( MvObs& anObs );
-
-//! Rewind the input file
-      void  rewind();
-
-//! Returns the number of BUFR messages in the input file
-/*! This number is smaller than returned by method obsCount()
- *  if the input file contains multisubset BUFR messages.
- */
-       int  messageCount(); // nr of BUFR-messages in a file
-
-//! Returns the number of observation reports in the input file
-/*! This number is bigger than returned by method messageCount()
- *  if the input file contains multisubset BUFR messages.
- */
-       int  obsCount();     // nr of observation messages in a BUFR-file
-
-//! Returns the (running) number of the current BUFR message
-       int  messageNumber(){ return (int)_msgNumber; }
-
-//! Closes the input/output file
-   boolean  close();
-
-//! Prepares 'PrepBUFR' tables if the input file contains BUFR tables
-      bool  prepBufrFile();
-
-            //-- hack for ObsFilter (vk 970729) --
-      void  write( MvObs& anObs ){ if(_bufrOut) _bufrOut->write( anObs ); }
-
-     MvObs& firstObs(){ return firstObs_; }
-
- protected:
-     MvObs  next();
-   boolean  Open( const char* fileName );  //, char* aMode = "r" );
-      void  write( const char* aMsg, int aMsgLen );
-      void  searchMinMaxTime();
- //Logical  currentInputBufferOK() {return _IO_buffer_OK;}
-
- protected:
-     string  _IO_mode;
-       FILE* _bufrFile;
-       long  _msgNumber;
-       long  _msgCount;
-       long  _obsCount;
-   TDynamicTime  _minTime;
-   TDynamicTime  _maxTime;
-    boolean  _minMaxDone;
-       long  _msgLen;
-       char* _message;
-       bool  _IO_buffer_OK;
-
-  MvPrepBufrPrep* prepBufr_;
-       bool  isPrepBufrFile_;
-      MvObs  firstObs_;
-
-  MvBufrOut* _bufrOut;
-};
-
-//------------------------------------------------------------------------------
-
-const int MAX_FILTER_LIST_ARRAY_SIZE = 100;
-
-//! \enum ENextReturn Mnemonic names to define subset access
-/*! Used in MvObsSetIterator::operator() to tell which
- *  observation report to return. \n \n
- *  Use NR_returnMsg to skip the remaining observation reports
- *  in a multisubset BUFR message that does not contain<aki>
- *  These mnemonics have an effect only on multisubset
- *  BUFR messages. For single subset BUFR messages both
- *  mnemonics function the same.
- */
-enum ENextReturn
-{
-   NR_returnObs  /**< - return the next available subset (from this or the next BUFR msg */
-  ,NR_returnMsg  /**< - return the first subset from the next BUFR message */
-};
-
-//! \enum ESelectFilterState Used internally by MvObsSetIterator
-enum ESelectFilterState
-{
-   SF_notSet
-  ,SF_listSet
-  ,SF_rangeSet
-  ,SF_excludeRangeSet
-};
-
-//! \enum ETimeFilterState Used internally by MvObsSetIterator
-enum ETimeFilterState
-{
-   kTFS_notSet
-  ,kTFS_clockSet
-  ,kTFS_bothSet
-};
-
-//------------------------------------------------------------ MvObsSetIterator
-//! A class to filter a set of observation reports
-/*! This class is used to filter a file containing several
- *  observation reports stored in BUFR messages. Several
- *  different filtering criteria are available. When several
- *  filtering criteria are set the resulting filter will use
- *  logical AND to combine different criteria.
- */
-class MvObsSetIterator
-{
-//! Writes the current filtering options of 'anIter' into stream 'aStream'
- friend ostream& operator<< ( ostream& aStream, const MvObsSetIterator& anIter );
-
-	MvObs     current;
-	MvObsSet* ObsSet;
-
- public:
-//! Constructor with a MvObset as an argument
-	MvObsSetIterator( MvObsSet& );
-//! Destructor
-	~MvObsSetIterator();
-
-//! Operator that returns the next available valid observation report
-/*! Subset structure is hidden from the calling application.
- */
-	MvObs operator() () { return operator()( NR_returnObs ); }
-
-//! Operator that returns the next valid observation report
-/*! Using mnemonic argument 'NR_returnMsg' accesses only first
- *  subsets in multisubset BUFR messages. See enum ENextReturn.
- */
-	MvObs operator() ( ENextReturn returnType );
-
-//! Returns the sequence number of the current BUFR message
-     int   msgNumber() { return (ObsSet ? (int)ObsSet->_msgNumber : -1); }
-
-//! Returns the subset number of the current observation report in the BUFR message
-     int   subsetNumber() { return current.subsetNumber(); }
-
-//! Defines where the date/time for filtering should be taken from
-/*! Date and time information is always available as metadata in
- *  BUFR section 1, and normally also in the data (observation report)
- *  itself. In single subset messages these times should be the same,
- *  but for some multisubset messages observation reports may come from
- *  different times. \n \n
- *  The default is to use date/time from the metadata in section 1 (faster),
- *  but by calling this method it is possible to change to use date/time
- *  from the data.
- */
-     void  useObsTime( bool b = true ){ useObsTime_ = b; }
-
-//! Set the filtering criteria for a single date/time
-     void  setTime( const TDynamicTime& anObsTime );
-
-//! Set the filtering criteria for a date/time range
-/*! Observation reports that have their data/time within the range
- *  'anObsTime'-'deltaInMinutes' and 'anObsTime'+'deltaInMinutes'
- *  will be selected.
- */
-     void  setTimeRange( const TDynamicTime& anObsTime, short deltaInMinutes );
-
-//! Set the filtering criteria for a date/time range
-     void  setTimeRange( const TDynamicTime& aBeginTime, const TDynamicTime& anEndTime );
-
-//! Set the filtering criteria for time range only (date ignored)
-/*! Observation reports that have their time stamp between 'aBeginTime'
- *  and 'anEndTime' will be selected. \n \n
- *  Time format is HHMM, i.e. 100*hours+minutes. Thus the value 1500
- *  signifies 3PM, and the value 15 signifies 15 mins past midnight.
- */
-     void  setTimeRangeWithoutDate( int aBegin, int anEnd );
-
-//! Set the filtering criteria for accepted WMO block numbers
-/*! This method can be called several times in order to set
- *  more than one accepted WMO block, i.e. WMO blocks are
- *  combined with logical OR operator.
- */
-     void  setWmoBlock( int aWmoBlock );
-
-//! Set the filtering criteria for accepted WMO station numbers
-/*! This method can be called several times in order to set
- *  more than one accepted WMO station, i.e. WMO stations are
- *  combined with logical OR operator.
- */
-     void  setWmoStation( long aWmoStation );
-
-//! Set the filtering criteria for an accepted area
-/*! Observation report locations must be within the given area.
- */
-     void  setArea( const MvLocation& aCorner1, const MvLocation& aCorner2 );
-
-//! Set filtering criteria for a proximity of a cross section line
-     void  setXSectionLine( const MvLocation& aStartPoint
-			  , const MvLocation& anEndPoint
-			  , float aDeltaInMeters );
-
-//! Set the filtering criteria for accepted BUFR message types
-/*! This method can be called several times in order to set
- *  more than one accepted BUFR message type, i.e. message types are
- *  combined with logical OR operator.
- */
-     void  setMessageType( int aMsgType );
-
-//! Set the filtering criteria for accepted BUFR message local subtypes
-/*! This method can be called several times in order to set
- *  more than one accepted BUFR message local subtype, i.e. message subtypes
- *  are combined with logical OR operator.
- */
-     void  setMessageSubtype( int aMsgSubtype );
-
-//! Set the filtering criteria for data 'aDescriptor' having value 'aValue'
-/*! Observation reports where the data corresponding to descriptor 'aDescriptor'
- *  has value 'aValue' will be selected.\n \n
- *  This method can be called several times in order to set more than one
- *  accepted value for the same 'aDescriptor', i.e. values are
- *  combined with logical OR operator.
-
- */
-     void  select( long aDescriptor
-		 , float aValue );
-
-
-//! Set the filtering criteria for the given data having its value within a range
-/*! Observation reports where the data corresponding to descriptor 'aDescriptor'
- *  has its value in the range 'firstValue'...'secondValue' will be selected.
- */
-     void  selectRange( long aDescriptor
-		      , float firstValue
-		      , float secondValue );
-
-//! Set the filtering criteria for the given data having its value outside a range
-/*! Observation reports where the data corresponding to descriptor 'aDescriptor'
- *  has its value outside the range 'firstValue'...'secondValue' will be selected.
- */
-     void  excludeRange( long aDescriptor
-		       , float firstValue
-		       , float secondValue );
-
- protected:
-
-     void  next();
-  boolean  AcceptedObs( MvObs& anObs ) const;
-  boolean  TimeOk( MvObs* anObs ) const;
-  boolean  WmoBlockOk( MvObs* anObs ) const;
-  boolean  WmoStationOk( MvObs* anObs ) const;
-  boolean  WithinXSectionLine( MvObs* anObs ) const;
-  boolean  msgTypeOk( MvObs* anObs ) const;
-  boolean  msgSubtypeOk( MvObs* anObs ) const;
-  boolean  InsideArea( MvObs* anObs ) const;
-  boolean  selectOk( MvObs* anObs ) const;
-    float  distanceFromXSectionLine( const MvLocation& aPoint ); //-- used anywhere?
-
- protected:
-         boolean  _NoFiltersSet;
-	    bool  useObsTime_;
-        TDynamicTime  fBeginTime, fEndTime;
-      // boolean  fTimeFilterSet;
-ETimeFilterState  _TimeFilterState;
-	     int  _WmoBlockCount;
-             int  _WmoBlockNumber[ MAX_FILTER_LIST_ARRAY_SIZE ];
-	     int  _WmoStationCount;
-            long  _WmoStation[ MAX_FILTER_LIST_ARRAY_SIZE ];
-  MvXSectionLine  fXSectionLine;
-          MvArea  fArea;
-	     int  _MsgTypeCount;
-	     int  _MsgType[ MAX_FILTER_LIST_ARRAY_SIZE ];
-	     int  _MsgSubtypeCount;
-	     int  _MsgSubtype[ MAX_FILTER_LIST_ARRAY_SIZE ];
- ESelectFilterState _SelectState;
-	    long  _SelectDescriptor;
-	   float  _SelectValue[ MAX_FILTER_LIST_ARRAY_SIZE ];
-	     int  _SelectValueCount;
-};
-
-#endif
-// MvObsSet_DEFINED
diff --git a/src/basic/BasicGraphicsObject.cc b/src/basic/BasicGraphicsObject.cc
index d535e66..7daafc2 100644
--- a/src/basic/BasicGraphicsObject.cc
+++ b/src/basic/BasicGraphicsObject.cc
@@ -69,7 +69,7 @@ void BasicGraphicsObjectContainer::visit(const BaseDriver& driver) const
 
 BasicGraphicsObjectContainer::~BasicGraphicsObjectContainer()
 {
-	MagLog::debug() << "delete CONTAINER" << objects_.size() << endl;
+
 	for (vector<BasicGraphicsObject*>::iterator object = objects_.begin(); object!= objects_.end(); ++object) {
 		if (*object)
 			delete *object;
@@ -80,7 +80,7 @@ BasicGraphicsObjectContainer::~BasicGraphicsObjectContainer()
 
 void BasicGraphicsObjectContainer::clear()
 {
-	MagLog::debug() << "CLEAR CONTAINER" << objects_.size() << endl;
+
 	for (vector<BasicGraphicsObject*>::iterator object = objects_.begin(); object!= objects_.end(); ++object) {
 		if (*object) {
 
diff --git a/src/basic/BasicSceneObject.cc b/src/basic/BasicSceneObject.cc
index 2ecfb70..c7bd4ae 100644
--- a/src/basic/BasicSceneObject.cc
+++ b/src/basic/BasicSceneObject.cc
@@ -106,6 +106,7 @@ void  BasicSceneObject::resolve()
 	for ( vector<BasicSceneObject*>::iterator item = items.begin(); item != items.end(); ++item)
 		(*item)->resolve();
 }
+
 bool  BasicSceneObject::needLegend()
 {
 	for ( vector<BasicSceneObject*>::iterator item = items_.begin(); item != items_.end(); ++item)
@@ -113,6 +114,12 @@ bool  BasicSceneObject::needLegend()
 				return true;
 	return false;
 }
+
+void  BasicSceneObject::getReady(const LegendVisitor& legend)
+{
+	for ( vector<BasicSceneObject*>::iterator item = items_.begin(); item != items_.end(); ++item)
+			(*item)->getReady(legend);
+}
 BasicSceneNode* BasicSceneNode::newNode(BasicPositionalObject* node)
 {
 	//MagLog::dev() << "BasicSceneNode::clone-->from " << *this << endl;	
diff --git a/src/basic/BasicSceneObject.h b/src/basic/BasicSceneObject.h
index 418580f..81b5319 100644
--- a/src/basic/BasicSceneObject.h
+++ b/src/basic/BasicSceneObject.h
@@ -98,6 +98,8 @@ public:
 	
 	virtual void text(TextVisitor* text) { assert(parent_); parent_->text(text); }
 	virtual void legend(LegendVisitor* legend) { assert(parent_); parent_->legend(legend); }
+	virtual void  getReady(const LegendVisitor&);
+
 
 	virtual void binning(BinningObject*)   { MagLog::warning() << "binning(BinningObject*) to be checked" << endl; }
 	virtual void data(Data*)     { MagLog::warning() << "data(Data*) to be checked" << endl; }
diff --git a/src/basic/CMakeLists.txt b/src/basic/CMakeLists.txt
new file mode 100644
index 0000000..05b25e3
--- /dev/null
+++ b/src/basic/CMakeLists.txt
@@ -0,0 +1,71 @@
+set( _basic_srcs
+BasicGraphicsObject.cc
+BasicGraphicsObject.h
+BasicSceneObject.cc
+BasicSceneObject.h
+BasicSceneVisitor.cc
+BasicSceneVisitor.h
+FortranMagics.cc
+FortranMagics.h
+HistoVisitor.cc
+HistoVisitor.h
+ImportObjectHandler.cc
+ImportObjectHandler.h
+Layer.cc
+Layer.h
+LayoutManager.cc
+LayoutManager.h
+LegendVisitor.cc
+LegendVisitor.h
+MagicsEvent.h
+MagicsObserver.h
+MagnifierVisitor.cc
+MagnifierVisitor.h
+MultiVisdef.cc
+MultiVisdef.h
+ParameterSettings.cc
+ParameterSettings.h
+PreviewVisitor.cc
+PreviewVisitor.h
+RootSceneNode.cc
+RootSceneNode.h
+SceneNode.cc
+SceneNode.h
+SceneVisitor.cc
+SceneVisitor.h
+TagHandler.cc
+TagHandler.h
+TextVisitor.cc
+TextVisitor.h
+ViewNode.cc
+ViewNode.h
+Visdef.h
+VisualAction.cc
+VisualAction.h
+WebFormat.cc
+WebFormat.h
+XmlMagics.cc
+XmlMagics.h
+)
+if ( ENABLE_METVIEW )
+	list (APPEND metview_include 
+			basic/MagicsObserver.h 
+			basic/MagicsEvent.h
+			basic/RootSceneNode.h
+			basic/BasicSceneObject.h
+			basic/BasicGraphicsObject.h
+			basic/DisplayManager.h
+			basic/Layer.h
+			basic/SceneVisitor.h 
+			basic/XmlMagics.h 
+			basic/LegendVisitor.h 
+			basic/Visdef.h 
+			)
+	set( metview_include ${metview_include} PARENT_SCOPE )
+endif()
+
+foreach( file ${_basic_srcs} )
+  list( APPEND basic_srcs basic/${file} )
+endforeach()
+
+set( basic_srcs ${basic_srcs} PARENT_SCOPE )
diff --git a/src/basic/DataConverter.cc b/src/basic/DataConverter.cc
new file mode 100644
index 0000000..51f3038
--- /dev/null
+++ b/src/basic/DataConverter.cc
@@ -0,0 +1,54 @@
+/*! \file DataConverter.cc
+    \brief Implementation of the Template class DataConverter.
+    
+    Magics Team - ECMWF 2009
+    
+    Started: Wed 22-Jul-2009
+    
+    Changes:
+    
+*/
+
+
+
+#include "DataConverter.h"
+
+using namespace magics;
+
+DataConverter::DataConverter(Data* data) : data_(data)
+{
+}
+
+
+DataConverter::~DataConverter() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void DataConverter::print(ostream& out)  const
+{
+	out << "DataConverter[";
+	out << "]";
+}
+
+PointsHandler& DataConverter::points()
+{ 
+       if ( points_.empty()) {
+            PointsHandler& points = data_->points();
+            points.setToFirst();
+                while (points.more()) {
+                    UserPoint geo = points.current();
+                    points_.push_back(new UserPoint(geo.x(), geo.y(), geo.value()));
+                    points.advance();
+                }
+       }
+       
+       pointsHandlers_.push_back(new PointsHandler(points_));
+       return *(pointsHandlers_.back());
+     
+      
+       
+        
+}
diff --git a/src/basic/DataConverter.h b/src/basic/DataConverter.h
new file mode 100644
index 0000000..d24d8f4
--- /dev/null
+++ b/src/basic/DataConverter.h
@@ -0,0 +1,59 @@
+/*! \file DataConverter.h
+    \brief Definition of the Template class DataConverter.
+    
+    Magics Team - ECMWF 2009
+    
+    Started: Wed 22-Jul-2009
+    
+    Changes:
+    
+*/
+
+#ifndef DataConverter_H
+#define DataConverter_H
+
+#include "magics.h"
+#include "Data.h"
+
+
+namespace magics {
+
+class DataConverter : public Data {
+
+public:
+	DataConverter(Data*);
+	virtual ~DataConverter();
+    virtual MatrixHandler& matrix() {  throw MethodNotYetImplemented("DataConverter::matrix");}
+
+    //! Methods to access the data as a 2Dmatrix Used by pwind action routine
+    virtual MatrixHandler& xComponent() {  throw MethodNotYetImplemented("DataConverter::yComponent");}
+    virtual MatrixHandler& yComponent() { throw MethodNotYetImplemented("DataConverter::yComponent"); }
+
+    //! Method to access the data as a list of points : Used by psymb.
+    virtual PointsHandler& points();
+
+
+    virtual void getReady(const Transformation&) {}
+    virtual void visit(Transformation&)          {}
+
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+     Data* data_;
+     PointsList points_;
+private:
+    //! Copy constructor - No copy allowed
+	DataConverter(const DataConverter&);
+    //! Overloaded << operator to copy - No copy allowed
+	DataConverter& operator=(const DataConverter&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const DataConverter& p)
+		{ p.print(s); return s; }
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/basic/DisplayManager.cc b/src/basic/DisplayManager.cc
new file mode 100644
index 0000000..6ec4614
--- /dev/null
+++ b/src/basic/DisplayManager.cc
@@ -0,0 +1,300 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file DisplayManager.cc
+    \brief Implementation of the Template class DisplayManager.
+    
+    Magics Team - ECMWF 2007
+    
+    Started: Fri 9-Mar-2007
+    
+    Changes:
+    
+*/
+
+
+
+#include "DisplayManager.h"
+#include "BasicSceneObject.h"
+
+
+using namespace magics;
+
+DisplayManager::DisplayManager()  :   fortran_(false), x_(-1), y_(-1) 
+{
+}
+
+
+DisplayManager::~DisplayManager() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void DisplayManager::print(ostream& out)  const
+{
+	out << "DisplayManager[";
+	out << "]";
+}
+
+
+void DisplayManager::operator()(BasicSceneObject& object,  BasicGraphicsObjectContainer& list)
+{
+	switch (object.display()) {
+		case INLINE: 
+				fortran_ ? (this->*style_)(object, list) : addInline(object, list);
+				break;
+		case BLOCK:
+				fortran_ ? (this->*style_)(object, list) : addBlock(object, list);
+				break;
+		default:
+				break;		
+	}
+}
+
+
+
+void DisplayManager::topHorizontal(BasicSceneObject& object, BasicGraphicsObjectContainer& list)
+{
+	object.resize();
+	if ( x_ == -1 && y_ == -1 ) {
+		// Calculate the position
+		x_ = 0;
+		y_ = 100 - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ = object.width();
+		object.firstPage(list);
+		return;
+	}	
+	// Try to fit to the right! 
+	if ( x_ + object.width() <= 100 ) {
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	
+	// Go to the line! 
+	if ( y_ - object.height() >= 0 ) {
+		x_ = 0;
+		y_ = y_ - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	// Ask for a new page! 
+	x_ = 0;
+	y_ = 100 - object.parent().topOffset() - object.height();
+	object.x(x_);
+	object.y(y_);
+	object.askNewPage(list);
+	x_ = object.width();
+}
+
+
+void DisplayManager::addBlock(BasicSceneObject& object, BasicGraphicsObjectContainer& list)
+{
+	object.resize();
+	if ( x_ == -1 && y_ == -1 ) {
+		// Calculate the position
+		x_ = 0;
+		y_ = 100 - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ = object.width();
+		object.firstPage(list);
+		return;
+	}	
+	
+    // go to the next list! 
+	if ( y_ - object.height() > 0 ) {
+		x_ = 0;
+		y_ = y_ - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	// ask for a new page	
+	x_ = 0;
+	y_ = 100 - object.parent().topOffset() - object.height();
+	object.x(x_);
+	object.y(y_);
+	object.askNewPage(list);
+	x_ = object.width();
+}
+
+
+void DisplayManager::addInline(BasicSceneObject& object, BasicGraphicsObjectContainer& list)
+{
+	object.resize();
+	if ( x_ == -1 && y_ == -1 ) {
+		// Calculate the position
+		x_ = 0;
+		y_ = 100 - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ = object.width();
+		object.firstPage(list);
+		return;
+	}	
+	// Try to fit to the right! 
+	if ( x_ + object.width() <= 100 ) {
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	
+	// Go to the line! 
+	if ( y_ - object.height() >= 0 ) {
+		x_ = 0;
+		y_ = y_ - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	// Ask for a new page! 
+	x_ = 0;
+	y_ = 100 - object.parent().topOffset() - object.height();
+	object.x(x_);
+	object.y(y_);
+	object.askNewPage(list);
+	x_ = object.width();
+}
+
+void DisplayManager::bottomVertical(BasicSceneObject& object, BasicGraphicsObjectContainer& list)
+{
+	object.resize();
+	if ( x_ == -1 && y_ == -1 ) {
+		// Calculate the position
+		x_ = object.x();
+		y_ = object.y();
+		object.x(x_);
+		object.y(y_);
+		y_ += object.height();
+		return;
+	}	
+	// Try to fit above! 
+	if ( y_ + object.height() <= 100 ) {
+		object.x(x_);
+		object.y(y_);
+		y_ += object.height();
+		object.currentPage(list);
+		return;
+	}
+	
+	// Go to the next column! 
+	if ( x_ + object.width() < 100 ) {
+		x_ += object.width();
+		y_ = object.y();		
+		object.x(x_);
+		object.y(y_);
+		y_ += object.height();
+		object.currentPage(list);
+		return;
+	}
+	// Ask for a new page! 
+	x_ = object.x();
+	y_ = object.y();
+	object.x(x_);
+	object.y(y_);
+	object.askNewPage(list);
+	y_ += object.height();
+}
+
+void DisplayManager::bottomHorizontal(BasicSceneObject&, BasicGraphicsObjectContainer&)
+{
+}
+
+void DisplayManager::nothing(BasicSceneObject& object, BasicGraphicsObjectContainer& list)
+{
+	if ( object.needNewPage() ) 
+		object.askNewPage(list);
+}
+
+void DisplayManager::topVertical(BasicSceneObject& object, BasicGraphicsObjectContainer& list)
+{
+	object.resize();
+	if ( x_ == -1 && y_ == -1 ) {
+		// Calculate the position
+		x_ = 0;
+		y_ = 100 - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ = object.width();
+		object.firstPage(list);
+		return;
+	}	
+	// Try to fit to the right! 
+	if ( x_ + object.width() <= 100 ) {
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	
+	// Go to the line! 
+	if ( y_ - object.height() >= 0 ) {
+		x_ = 0;
+		y_ = y_ - object.parent().topOffset() - object.height();
+		object.x(x_);
+		object.y(y_);
+		x_ += object.width();
+		object.currentPage(list);
+		return;
+	}
+	// Ask for a new page! 
+	x_ = 0;
+	y_ = 100 - object.parent().topOffset() - object.height();
+	object.x(x_);
+	object.y(y_);
+	object.askNewPage(list);
+	x_ = object.width();
+}
+
+
+	
+void DisplayManager::style(const string& style, const string& start, const string& direction)
+{
+	fortran_ = true;
+	if ( magCompare(style, "positional") ) {
+		style_ = &DisplayManager::nothing;
+		return;
+	}
+	if ( magCompare(start, "top") )
+		if ( magCompare(direction, "vertical") )
+			style_ = &DisplayManager::topVertical;
+		else 
+			style_ =  &DisplayManager::topHorizontal;
+	else
+		if ( magCompare(direction, "vertical") )
+			style_ = &DisplayManager::bottomVertical;
+		else 
+			style_ = &DisplayManager::bottomHorizontal;
+}
diff --git a/src/basic/FortranMagics.cc b/src/basic/FortranMagics.cc
index a820fdb..e2ef99f 100644
--- a/src/basic/FortranMagics.cc
+++ b/src/basic/FortranMagics.cc
@@ -75,15 +75,13 @@
 #include "ObsDecoder.h"
 #endif
 
-#ifdef MAGICS_JSON
 #include "ObsJSon.h"
-#endif
 
 #include "ObsPlotting.h"
 
 using namespace magics;
 
-FortranMagics::FortranMagics() :  drivers_(0), output_(0), geoaction_(0), xyaction_(0), empty_(true),
+FortranMagics::FortranMagics() :  drivers_(0), output_(0), action_(0), empty_(true),
 		gribindex_(0),legend_todo_(false), symbolinput_todo_ (false), matrixinput_todo_(false), polyinput_todo_(false)
 
 {
@@ -134,7 +132,7 @@ void FortranMagics::popen()
 	MagLog::userInfo() << "\n";
 	MagLog::userInfo() << "   The European Centre for Medium-Range Weather Forecasts\n";
 	MagLog::userInfo() << "\n";
-	MagLog::userInfo() << "		      Copyright ECMWF "<<MAGICS_COPYRIGHT_PERIOD<<"\n";
+	//MagLog::userInfo() << "		      Copyright ECMWF "<<MAGICS_COPYRIGHT_PERIOD<<"\n";
 	MagLog::userInfo() << "\n";
 	MagLog::userInfo() << "------------------------------------------------------------------\n";
    }
@@ -313,25 +311,15 @@ void FortranMagics::poverlay()
 {    
 	actions();
 
-	if (geographical()) {
-		geoaction_ = new VisualAction();
-		ImportAction* input = new ImportAction();
-		ImportPlot* plot = new ImportPlot();
-		top()->push_back(geoaction_);
-		geoaction_->data(input);
-//		MagLog::dev() << *input << "\n";   
-		geoaction_->visdef(plot);
-	}
-	else {
-		xyaction_ = new VisualAction();
 
+		action_ = new VisualAction();
 		ImportAction* input = new ImportAction();
 		ImportPlot* plot = new ImportPlot();
-		top()->push_back(xyaction_);
-		xyaction_->data(input);
-//		MagLog::dev() << *input << "\n";   
-		xyaction_->visdef(plot);
-	}
+		top()->push_back(action_);
+		action_->data(input);
+
+		action_->visdef(plot);
+
 }
 
 
@@ -345,6 +333,7 @@ void FortranMagics::pimport()
 void FortranMagics::pnew(const string& type)
 {
 	MagLog::info() << "pnew(" << type << ")" << endl;
+
 	if ( magCompare(type, "subpage") )
 	{
 		if ( empty_ ) return;
@@ -382,8 +371,8 @@ void FortranMagics::pnew(const string& type)
 	}
 	// WE reset ! 
 	axisContainer_ = 0;
-	geoaction_ = 0;
-	xyaction_ = 0;
+	action_ = 0;
+
 	
 	string legend;
 	ParameterManager::get("legend", legend);
@@ -419,27 +408,37 @@ void FortranMagics::ptaylor()
 	TaylorGrid* taylor = new TaylorGrid();
 	top()->push_back(taylor);
 }
+#include "TephiGrid.h"
+void FortranMagics::ptephi()
+{
+	actions();
 
+	TephiGrid* tephi = new TephiGrid();
+	top()->push_back(tephi);
+}
 void FortranMagics::pobs()
 {
 	actions();
 #ifdef MAGICS_BUFR
-	geoaction_ = new VisualAction();
+	action_ = new VisualAction();
 	ObsDecoder* obs = new ObsDecoder();
 	if ( obs->defined() ) {
-		geoaction_->data(obs);
-		top()->push_back(geoaction_);
-		geoaction_->visdef(new ObsPlotting());
+		action_->data(obs);
+		top()->push_back(action_);
+		action_->visdef(new ObsPlotting());
 		return;
 	}
 #endif
-#ifdef MAGICS_JSON
-	geoaction_ = new VisualAction();
-	geoaction_->data(new ObsJSon());
-	top()->push_back(geoaction_);
-	geoaction_->visdef(new ObsPlotting());
-#endif
 
+
+	action_ = new VisualAction();
+	action_->data(new ObsJSon());
+	top()->push_back(action_);
+	action_->visdef(new ObsPlotting());
+	return;
+
+
+    MagLog::warning() << "No Support for Obs Plotting" << endl;
 }
 
 
@@ -447,9 +446,9 @@ void FortranMagics::pobs()
 void FortranMagics::ptest()
 {
 	actions();
-	geoaction_ = new VisualAction();
-	geoaction_->data(new MatrixTestDecoder());
-	top()->push_back(geoaction_);
+	action_ = new VisualAction();
+	action_->data(new MatrixTestDecoder());
+	top()->push_back(action_);
 }
 
 
@@ -511,24 +510,18 @@ void FortranMagics::dispatch()
 void FortranMagics::pmapgen()
 {
 	actions();
-	if (geographical())
-	{
-		geoaction_ = new VisualAction();
-		geoaction_->data(new MapGenDecoder());
-		top()->push_back(geoaction_);
-	}
-	else {
-		xyaction_ = new VisualAction();
-		xyaction_->data(new MapGenDecoder());
-		top()->push_back(xyaction_);
-	}
+
+	action_ = new VisualAction();
+	action_->data(new MapGenDecoder());
+	top()->push_back(action_);
+
 }
 
 #ifdef MAGICS_GRIB
 void FortranMagics::pgrib()
 {
 	actions();
-	geoaction_ = new VisualAction();
+	action_ = new VisualAction();
 	static string gribfile;
 	
 	string grib;
@@ -536,6 +529,7 @@ void FortranMagics::pgrib()
 	int index;
 	ParameterManager::get("grib_field_position", index);
 	
+
 	if ( grib == gribfile  )
 	{
 		if ( index == gribindex_ )
@@ -554,28 +548,19 @@ void FortranMagics::pgrib()
     	gribindex_ = index;
     }
     
-	geoaction_->data(new GribDecoder());
-	top()->push_back(geoaction_);
+	action_->data(new GribDecoder());
+	top()->push_back(action_);
 }
 
 void FortranMagics::pimage()
 {
 	actions();
-
-	if ( geographical() )
-	{
-		if ( !geoaction_ ) {
-			geoaction_ = new VisualAction();
-			geoaction_->data(new GribDecoder());
-		}			
-		geoaction_->visdef(new ImagePlotting());
+	if ( !action_ ) {
+		action_ = new VisualAction();
+		action_->data(new GribDecoder());
 	}
-	else {
-		assert(xyaction_);
-		xyaction_->visdef(new ImagePlotting());
-	}
-	geoaction_ = 0;
-	xyaction_ = 0;
+	action_->visdef(new ImagePlotting());
+	action_ = 0;
 }
 #else
 void FortranMagics::pgrib()
@@ -590,26 +575,21 @@ void FortranMagics::pimage()
 void FortranMagics::pgeo()
 {
 	actions();
-	geoaction_ = new VisualAction();
-	geoaction_->data(new GeoPointsDecoder());
-	top()->push_back(geoaction_);
+	action_ = new VisualAction();
+	action_->data(new GeoPointsDecoder());
+	top()->push_back(action_);
 }
 
 void FortranMagics::pnetcdf()
 {
 #ifdef MAGICS_NETCDF
 	actions();
-	if (geographical())
-	{
-		geoaction_ = new VisualAction();
-		geoaction_->data(new NetcdfDecoder());
-		top()->push_back(geoaction_);
-	}
-	else {	
-		xyaction_ = new VisualAction();
-		xyaction_->data(new NetcdfDecoder());
-		top()->push_back(xyaction_);
-	}
+
+	action_ = new VisualAction();
+	action_->data(new NetcdfDecoder());
+	top()->push_back(action_);
+
+
 #endif
 }
 #include "InputData.h"
@@ -617,17 +597,11 @@ void FortranMagics::pinput()
 {
 
 	actions();
-	if (geographical())
-	{
-		geoaction_ = new VisualAction();
-		geoaction_->data(new InputData());
-		top()->push_back(geoaction_);
-	}
-	else {
-		xyaction_ = new VisualAction();
-		xyaction_->data(new InputData());
-		top()->push_back(xyaction_);
-	}
+
+		action_ = new VisualAction();
+		action_->data(new InputData());
+		top()->push_back(action_);
+
 
 }
 #include "TableDecoder.h"
@@ -635,17 +609,11 @@ void FortranMagics::ptable()
 {
 
 	actions();
-	if (geographical())
-	{
-		geoaction_ = new VisualAction();
-		geoaction_->data(new TableDecoder());
-		top()->push_back(geoaction_);
-	}
-	else {
-		xyaction_ = new VisualAction();
-		xyaction_->data(new TableDecoder());
-		top()->push_back(xyaction_);
-	}
+
+		action_ = new VisualAction();
+		action_->data(new TableDecoder());
+		top()->push_back(action_);
+
 }
 
 #ifdef MAGICS_ODB
@@ -656,27 +624,21 @@ void FortranMagics::podb()
 	actions();
 #ifdef MAGICS_ODB
 
-    if (geographical())
-    {
-    	geoaction_ = new VisualAction();
-    	geoaction_->data(new OdaGeoDecoder());
-    	top()->push_back(geoaction_);
-    }
-    else {
-    	xyaction_ = new VisualAction();
-    	xyaction_->data(new OdaXYDecoder());
-    	top()->push_back(xyaction_);
-    }
+
+    	action_ = new VisualAction();
+    	action_->data(new OdaGeoDecoder());
+    	top()->push_back(action_);
+
 #endif
 }
 
 
 void FortranMagics::data(Data* data)
 {
-	assert ( geoaction_ == 0);
-	geoaction_ = new VisualAction();
-	geoaction_->data(data);
-	top()->push_back(geoaction_);
+	assert ( action_ == 0);
+	action_ = new VisualAction();
+	action_->data(data);
+	top()->push_back(action_);
 }
 
 
@@ -687,6 +649,8 @@ bool FortranMagics::geographical()
 	ParameterManager::get("subpage_map_projection", projection);
 	if ( magCompare(projection, "cartesian") ) return false;
 	if ( magCompare(projection, "taylor") ) return false;
+	if ( magCompare(projection, "tephigram") ) return false;
+	if ( magCompare(projection, "tephiinfo") ) return false;
 	return true;
 }
 
@@ -748,75 +712,60 @@ void FortranMagics::pcont()
 	// First check any split contour! I hate it! 
 	Timer timer("pcont", "setting");
 	actions();		
-	if ( geographical() )
-	{
-		if ( !geoaction_  || matrixinput_todo_ )
+
+		if ( !action_  || matrixinput_todo_ )
 		{
-			geoaction_ = new VisualAction();
+			action_ = new VisualAction();
 			InputMatrix* input = new InputMatrix();
 			matrixinput_todo_ = false;
 			if (input->defined() )
-				geoaction_->data(input);
+				action_->data(input);
 			else {
 				delete input;
 #ifdef MAGICS_GRIB
 			// Sylvie: Is this causing GribDecoder MagExceptions when matrx input is faulty?
-				geoaction_->data(new GribDecoder());
+				action_->data(new GribDecoder());
 #else
 				MagLog::warning() <<" Attempt to decode data from GRIB, but GRIB support is disabled!"<< endl;
 #endif
 		}
-		top()->push_back(geoaction_);	
+		top()->push_back(action_);
 	}
 
-	split(*geoaction_);
-	geoaction_ = 0;
-	}
-	else {
-		if ( !xyaction_ )
-		{
-			xyaction_ = new VisualAction();
-			InputMatrix* input = new InputMatrix();
-			if (input->defined() ) 
-				xyaction_->data(input);						
-			else {
-				MagLog::error() << "No data defined!" << endl;
-				return;
-			}
-			top()->push_back(xyaction_);	
-		}
-		split(*xyaction_);
-		xyaction_ = 0;
-	}
+	split(*action_);
+
+
 }
 
 void FortranMagics::pwind()
 {
 	actions();		
 	if ( matrixinput_todo_ ) {
-		geoaction_ = 0;
+		action_ = 0;
 	}
-	if ( !geoaction_  )
+	if ( !action_  )
 	{
-		geoaction_ = new VisualAction();
+		action_ = new VisualAction();
 		InputMatrix* input = new InputMatrix();
 		matrixinput_todo_ = false;
 		if (input->defined() ) 
-			geoaction_->data(input);						
+			action_->data(input);
 		else {
 			delete input;
 #ifdef MAGICS_GRIB
 			// Sylvie: Is this causing GribDecoder MagExceptions when matrx input is faulty?
-			geoaction_->data(new GribDecoder());
+			GribDecoder* grib = new GribDecoder();
+			grib->dimension(2);
+			action_->data(grib);
 #else
 			MagLog::warning() <<" Attempt to decode Wind from GRIB, but GRIB support is disabled!"<< endl;
 #endif
 		}
-		top()->push_back(geoaction_);	
+		top()->push_back(action_);
 	}
-
-	geoaction_->visdef(new Wind());
-	geoaction_ = 0;
+	action_->set2D();
+	action_->visdef(new Wind());
+	action_ = 0;
 }
 
 
@@ -849,86 +798,59 @@ void FortranMagics::psymb()
  	ParameterManager::get("symbol_type", wind);
  	if ( magCompare(mode, "graph")  )
 	{
- 		xyaction_ = new VisualAction();
+ 		action_ = new VisualAction();
  		SymbolInput* input = new SymbolInput();
-		top()->push_back(xyaction_);
-		xyaction_->data(input);
+		top()->push_back(action_);
+		action_->data(input);
 		MagLog::dev() << *input << "\n";
 		SymbolPlotting* symbol = new SymbolPlotting();
 		MagLog::dev() << *symbol << "\n";
-		xyaction_->visdef(symbol);
-		xyaction_ = 0;
+		action_->visdef(symbol);
+		action_ = 0;
 	}
 	else
 	{
 
 
-		if ( geographical() ) {
-			    if ( !geoaction_ || symbolinput_todo_ ) {
-			    	geoaction_ = new VisualAction();
+
+			    if ( !action_ || symbolinput_todo_ ) {
+			    	action_ = new VisualAction();
 			    	SymbolInput* input = new SymbolInput();
-			    	top()->push_back(geoaction_);
-			    	geoaction_->data(input);
+			    	top()->push_back(action_);
+			    	action_->data(input);
 			    	MagLog::dev() << *input << "\n";
 			    	symbolinput_todo_ = false;
 			    }
 			    if (magCompare(wind, "wind")) {
 			    	Wind* wind = new Wind();
 			    	MagLog::dev() << *wind << "\n";
-			    	geoaction_->visdef(wind);
+			    	action_->visdef(wind);
 			    }
 			    else {
 			    	SymbolPlotting* symbol = new SymbolPlotting();
 			    	MagLog::dev() << *symbol << "\n";
-			    	geoaction_->visdef(symbol);
+			    	action_->visdef(symbol);
 			    }
-			geoaction_ = 0;
-		}
-		else {
-			
-		    if ( !xyaction_ || symbolinput_todo_ ) {
-		    	xyaction_ = new VisualAction();
-		    	SymbolInput* input = new SymbolInput();
-		    	top()->push_back(xyaction_);
-		    	xyaction_->data(input);
-		    	MagLog::dev() << *input << "\n";
-		    	symbolinput_todo_ = false;
-		    }
-		    if (magCompare(wind, "wind")) {
-		    	Wind* wind = new Wind();
-		    	MagLog::dev() << *wind << "\n";
-		    	xyaction_->visdef(wind);
-		    }
-		    else {
-		    	SymbolPlotting* symbol = new SymbolPlotting();
-		    	MagLog::dev() << *symbol << "\n";
-		    	xyaction_->visdef(symbol);
-		    }
-		    xyaction_ = 0;
-		}
+			action_ = 0;
+
 	}
-}
 
+}
 
 void FortranMagics::pline()
 {
 	actions();
-	if ( polyinput_todo_ )
-		geoaction_ = 0;
-	if (geographical() ) {
-		if ( !geoaction_ ) {
-			geoaction_ = new VisualAction();
-			polyinput_todo_ = false;
-			SimplePolylineInput* input = new SimplePolylineInput();
-			top()->push_back(geoaction_);
-			geoaction_->data(input);
-		}
-		geoaction_->visdef(new SimplePolylineVisualiser());
 
-	}
-	else {
-		MagLog::warning() << "pline is not yet implementde for cartesian projection" << endl;
-	}
+
+	action_ = new VisualAction();
+	polyinput_todo_ = false;
+	SimplePolylineInput* input = new SimplePolylineInput();
+	top()->push_back(action_);
+	action_->data(input);
+
+	action_->visdef(new SimplePolylineVisualiser());
+
+
 
 }
 
@@ -939,75 +861,86 @@ void  FortranMagics::wrepjson()
 	actions();
 
 
-	xyaction_ = new VisualAction();
+	action_ = new VisualAction();
 
 	WrepJSon* wrep = new WrepJSon();
 
-	top()->push_back(xyaction_);
-	xyaction_->data(wrep);
+	top()->push_back(action_);
+	action_->data(wrep);
 
 }
 
 void  FortranMagics::epscloud()
 {
 	actions();
-	if ( !xyaction_ ) {
+	if ( !action_ ) {
 		MagLog::error() << "epscloud -> No data defined " << endl;
 		exit(1);
 	}
 	EpsCloud* epscloud = new EpsCloud();
 
-	xyaction_->visdef(epscloud);
+	action_->visdef(epscloud);
+}
+void  FortranMagics::epsplumes()
+{
+	actions();
+	if ( !action_ ) {
+		MagLog::error() << "epsplumes -> No data defined " << endl;
+		exit(1);
+	}
+	EpsPlume* plumes = new EpsPlume();
+
+	action_->visdef(plumes);
 }
 
 void FortranMagics::epsgraph()
 {
 	actions();
-	if ( !xyaction_ ) {
+	if ( !action_ ) {
 			MagLog::error() << "epscloud -> No data defined " << endl;
 			exit(1);
 		}
 	EpsGraph* epsgraph = new EpsGraph();
-	xyaction_->visdef(epsgraph);
+	action_->visdef(epsgraph);
 }
 
 void FortranMagics::epswave()
 {
 	actions();
-	if ( !xyaction_ ) {
+	if ( !action_ ) {
 		MagLog::error() << "epscloud -> No data defined " << endl;
 		exit(1);
 	}
 	EpsWave* eps = new EpsWave();
-	xyaction_->visdef(eps);
+	action_->visdef(eps);
 }
 
 void FortranMagics::epswind()
 {
 	actions();
-	if ( !xyaction_ ) {
+	if ( !action_ ) {
 		MagLog::error() << "epscloud -> No data defined " << endl;
 		exit(1);
 	}
 	EpsWind* epswind = new EpsWind();
-	xyaction_->visdef(epswind);
+	action_->visdef(epswind);
 }
 
 
 void FortranMagics::epsbar()
 {
 	EpsBar* epsbar = new EpsBar();
-	xyaction_->visdef(epsbar);
+	action_->visdef(epsbar);
 }
 void FortranMagics::epsshading()
 {
 	actions();
-	if ( !xyaction_ ) {
+	if ( !action_ ) {
 		MagLog::error() << "epscloud -> No data defined " << endl;
 		exit(1);
 	}
 	EpsShade* eps = new EpsShade();
-	xyaction_->visdef(eps);
+	action_->visdef(eps);
 }
 
 void FortranMagics::paxis()
@@ -1048,35 +981,24 @@ void FortranMagics::pgraph()
 
 
 	GraphPlotting* graph = new GraphPlotting();
-	if (geographical() ) {
-			if ( !geoaction_ ) {
-				geoaction_ = new VisualAction();
-						top()->push_back(geoaction_);
-						XYList* input = new XYList();
-						geoaction_->data(input);
-						MagLog::dev() << *input << "\n";
-			}
-			geoaction_->visdef(graph);
-			return;
-		}
 
 
 	// do we need a new Action?
 	// we check the previous one!
 	// if it looks ok we create a new one
 
-	if ( ( xyaction_ && xyaction_->isValid() ) || !xyaction_ ) {
-		xyaction_ = new VisualAction();
-		top()->push_back(xyaction_);
+	if ( ( action_ && action_->isValid() ) || !action_ ) {
+		action_ = new VisualAction();
+		top()->push_back(action_);
 		XYList* input = new XYList();
-		xyaction_->data(input);
+		action_->data(input);
 		MagLog::dev() << *input << "\n";
 	}
 
 
 
 
-	xyaction_->visdef(graph);
+	action_->visdef(graph);
 }
 
 
@@ -1084,14 +1006,14 @@ void FortranMagics::pboxplot()
 {
 	actions();
 	
-	xyaction_ = new VisualAction();
+	action_ = new VisualAction();
 	
  	BoxPlotDecoder* input = new BoxPlotDecoder();
  	BoxPlotVisualiser* plot = new BoxPlotVisualiser();
-	top()->push_back(xyaction_);	
-	xyaction_->data(input);
+	top()->push_back(action_);
+	action_->data(input);
 	MagLog::dev() << *input << "\n";   
-	xyaction_->visdef(plot);
+	action_->visdef(plot);
 }
 
 FortranMagics* FortranMagics::singleton_ = 0;
diff --git a/src/basic/FortranMagics.h b/src/basic/FortranMagics.h
index ea0c446..67a14ed 100644
--- a/src/basic/FortranMagics.h
+++ b/src/basic/FortranMagics.h
@@ -58,6 +58,7 @@ public:
 	void pclose();
 	void pnew(const string&);
 	void pcoast();
+	void ptephi();
 	void prepare();
 	
 	void pgrib();
@@ -82,6 +83,7 @@ public:
 	//Wrep-Eps family!
 	void wrepjson();
 	void epscloud();
+	void epsplumes();
 	void epsgraph();
 	void epswave();
 	void epswind();
@@ -144,8 +146,7 @@ protected:
 	 vector<BasicSceneObject*>   later_;
 	 stack<Axis*>             axis_;
 	 BasicSceneObject* axisContainer_;
-	 VisualAction*    geoaction_;
-	 VisualAction*   xyaction_;
+	 VisualAction*    action_;
 	 bool empty_;
 	 int gribindex_;
 	 bool legend_todo_;
diff --git a/src/basic/Layer.h b/src/basic/Layer.h
index d478ae2..016ab6a 100644
--- a/src/basic/Layer.h
+++ b/src/basic/Layer.h
@@ -528,18 +528,7 @@ protected:
   	vector<int> dataIndex_;
 };
 
-/*class MetaDataCollector : public map<string, string>
-{
-public:
-	MetaDataCollector() {}
-	~MetaDataCollector() {}	
-	bool isIntegerItem(const string& s) { return (integerItems_.find(s) != integerItems_.end()) ? true: false;}	
-	void setIntegerItem(const string& s) { integerItems_.insert(s);}
 
-protected:	
-	std::set<string> integerItems_;
-	
-};*/
 
 class MetaDataAttribute
 {
diff --git a/src/basic/LegendVisitor.cc b/src/basic/LegendVisitor.cc
index 804d498..21ba62d 100644
--- a/src/basic/LegendVisitor.cc
+++ b/src/basic/LegendVisitor.cc
@@ -80,9 +80,7 @@ void LegendVisitor::print(ostream& out)  const
 
 void LegendVisitor::visit(BasicGraphicsObjectContainer&)
 {
-	// Noew populate the layout ...
-	//tree.push_back(current_);
-	// the Layout has been added to a Container, it will be delted automatically!
+
 }
 
 
@@ -111,18 +109,25 @@ PaperPoint LegendEntry::leftTextBox(const PaperPoint& middle)
 	// The width of the Symbol box is 100-width;
 
 	PaperPoint point(middle);
-	point.x_ = (middle.x_-1) + (2*(100-width_)/100);
+	point.x_ = (middle.x_-1) + (2.*(100-width_)/100);
 	MagLog::dev() << "LegendEntry::leftTextBox" << point << endl;
 	return point;
 }
 PaperPoint ArrowEntry::leftTextBox(const PaperPoint& middle)
 {
+	PaperPoint point(middle);
+	    point.x_ = (middle.x_-1) + (2.5*(100-width_)/100);
+	    point.y_ += 0.2;
+		return point;
+}
+PaperPoint FlagEntry::leftTextBox(const PaperPoint& middle)
+{
 	// The box is going from x-1 to x+1
 	// The width of the Symbol box is 100-width;
 
 	PaperPoint point(middle);
-	point.x_ = (middle.x_-0.8);
-	point.y_ -= 0.3;
+    point.x_ = (middle.x_-1) + (2.5*(100-width_)/100);
+	point.y_ += 0.5;
 	return point;
 }
 double LegendEntry::computeWidth(double width)
@@ -155,8 +160,8 @@ void DoubleLineEntry::columnBox(const PaperPoint& point, BasicGraphicsObjectCont
 
 void LegendVisitor::build()
 {
-	vector<pair<float, float> > positions;
-    double xtitle, ytitle;
+
+
 
 
 	legend_ = new LegendLayout();
@@ -171,35 +176,28 @@ void LegendVisitor::build()
 	current_->push_back(legend_);
 	
 
-	grid(positions, xtitle, ytitle);
+	grid();
 
 
 	// populate the layout!
 
 	vector<string>::const_iterator label = lines_.begin();		
-	vector<pair<float, float> >::const_iterator position = positions.begin();	
+	vector<PaperPoint>::const_iterator position = positions_.begin();
 	if ( title_ )
 	{
 		Text* legend = new Text();
 		MagFont font; 
-		font.size(font_size_);
-		font.colour(Colour(*colour_));	
-		//text->setAngle(( orientation_ == "horizontal" ) ? 0 : angle);
+		double font_size = (title_font_size_ == -1) ? font_size_ : title_font_size_;
+		font.size(font_size);
+		Colour colour = title_font_colour_->automatic() ? *colour_ : *title_font_colour_;
+		font.colour(colour);
+
 		legend->setFont(font);
 		legend->setText(title_text_);
-
+		legend->setJustification(titleJustification_);
+		legend->setAngle(titleAngle_);
+		legend->push_back(titlePosition_);
 		legend_->push_back(legend);
-		if ( magCompare(direction_, "column") ){
-			if  ( magCompare(title_orientation_, "horizontal") ) {
-				(*legend).push_back(PaperPoint(xtitle, ytitle));
-			}
-			else {
-			     legend->setAngle(3*3.14/2.);
-			     (*legend).push_back(PaperPoint(xtitle, ytitle));
-			}
-		}
-		else 
-			(*legend).push_back(PaperPoint(xtitle, ytitle));
 	}
 	
 	if ( use_min_ ) {
@@ -252,8 +250,8 @@ void LegendVisitor::build()
 		if (text=="ignore") continue;
 
 	    (magCompare(direction_, "column") ) ? 
-			(*method_).column(**entry, position->first, position->second, *legend, *legend_) :
-			(*method_).row(**entry, position->first, position->second, *legend, *legend_);
+			(*method_).column(**entry, position->x(), position->y(), *legend, *legend_) :
+			(*method_).row(**entry, position->x(), position->y(), *legend, *legend_);
 
 
 		++position;
@@ -265,110 +263,187 @@ void LegendVisitor::build()
 
 
 
-void LegendVisitor::grid(vector<pair<float, float> >& positions, double& xtitle, double& ytitle)
-{
-    if ( magCompare(direction_, "automatic")  ) {
-    	if ( current_->absoluteWidth() <  current_->absoluteHeight() ) 
-    		direction_ = "column";
-	}
 
-	unsigned int count = 0;
-	vector<string>::const_iterator label = lines_.begin();		
-	
-	for(vector<LegendEntry*>::const_iterator entry = begin(); entry != end(); ++entry)
-	{		 
-		
-		(*entry)->set(*this);
-		string text = ( label != lines_.end() && !label->empty() ) ? *label : (*entry)->label();			
-			
-		if ( ! lines_.empty() ) {
-			++label;		
-			if (label == lines_.end()) --label;
-		}
-		if (text=="ignore") continue;
-		count++;
-	}
-	
-	// here we know the number of entries.. count
-	
-	double xmin, ymin, xmax, ymax;
-	if (magCompare(direction_, "column") ){
-		int row = 1;
-		int column = 1;
-		int rows = count/columns_;
-		if ( count % columns_ )
-			rows++;
-
-		// calclate the number of rows we need! 
-		for (unsigned int i = 0; i < count; i++ ) {	
-			MagLog::debug() << "add position [" <<  column << ", " << row << "]" << endl;		 			 
-			positions.push_back(make_pair(column, row));
-			row++;
-			if (row > rows ) {		
-			 	row = 1;
-				column+=2;
+void  LegendVisitor::horizontal()
+{
+	//Here we have an horizontal legend
+		int rows = 1;
+		int column = 0;
+
+		for (unsigned int i = 0; i < entriesNumber_; i++ ) {
+			 if ( columns_ > 1 && column >= columns_ ) {
+				column = 0;
+				rows++;
 			 }
+			 positions_.push_back(PaperPoint(column*2+1, rows));
+			 column++;
 		}
 
-		// Check title and orientation...
+		int nb = ( columns_ > 1) ? columns_: entriesNumber_;
+		legend_->setCoordinates(0, nb*2,  rows + 1, 0);
+
 		if ( title_ ) {
-			if ( magCompare(title_orientation_, "horizontal") ) {
-				xmin = -0.1;
-				xmax = columns_*2,
-				ymin = 0;
-				ymax = rows + 1.;
-				xtitle = (xmax-xmin)/2;
-				ytitle = ymax - 0.4;
-				if ( magCompare(entry_orientation_, "top_bottom") ) {
-					ytitle = 0.4;
-					ymax= rows;
-					ymin=0;
-				}
-			}
-			else {
-				xmin = -0.8;
-				xmax = columns_*2,
-				ymin = 0.5;
-				ymax = rows + 0.5 ;
-				xtitle = -0.1;
-				ytitle = (ymax-ymin)/2;;
-			}
+			if ( title_position_ == M_AUTOMATIC)
+				title_position_ = M_TOP;
+			(this->*titleBuilders_[title_position_])();
 		}
-		else {
-			xmin = 0;
-			xmax = columns_*2,
-			ymin = 0.5;
-			ymax = rows+0.5;
+
+	// here we have a title, we need to adjust the coordinates used in the legend dependind on its position
+
+
+
+
+
+}
+void  LegendVisitor::vertical()
+{
+	double xmin, xmax, ymin, ymax;
+	double xtitle, ytitle;
+	int row = 1;
+	int column = 1;
+	int rows = entriesNumber_/columns_;
+	if ( entriesNumber_ % columns_ )
+		rows++;
+
+	// calculate the number of rows we need!
+	for (unsigned int i = 0; i < entriesNumber_; i++ ) {
+		MagLog::debug() << "add position [" <<  column << ", " << row << "]" << endl;
+		positions_.push_back(PaperPoint(column, row));
+		row++;
+		if (row > rows ) {
+			row = 1;
+			column+=1;
 		}
-		legend_->setCoordinates( xmin, xmax, ymin, ymax);
-		if ( magCompare(entry_orientation_, "top_bottom") )
-			legend_->setCoordinates(  xmin, xmax, ymax, ymin);
-	return;
 	}
 
-	int rows = 1;
-	int column = 0;
-
-	for (unsigned int i = 0; i < count; i++ ) {	
-		MagLog::debug() << "add position [" <<  column*2+1 << ", " << rows << "]" << endl;
-		 positions.push_back(make_pair(column*2+1, rows));
-		 column++;
-		 if ( columns_ > 1 && column >= columns_ ) {		
-			column = 0;
-			rows++;
-		 }
+	int nb = ( columns_ > 1) ? columns_: column;
+
+	legend_->setCoordinates(0, nb, 0.5, rows+0.5);
+	if ( title_ ) {
+		if ( title_position_ == M_AUTOMATIC)
+			title_position_ = M_LEFT;
+		(this->*titleBuilders_[title_position_])();
 	}
 
-	int nb = ( columns_ > 1) ? columns_: count;
+}
+void  LegendVisitor::topTitle()
+{
+	double minx =  legend_->minX();
+	double miny =  legend_->minY();
+	double maxx =  legend_->maxX();
+	double maxy =  legend_->maxY();
+
+	double height = (100 /(100-title_ratio_))*(maxy - miny);
+	double newmaxy = miny + height;
 
-	if ( title_ ) {
-		xtitle = nb;
-		ytitle = 0;
-		legend_->setCoordinates(nb*2 + 0.5, -0.5,  rows + 0.5, -2);
-		legend_->setCoordinates(0, nb*2, rows + 0.5, -1);
+	titleJustification_ = MCENTRE;
+	titleAngle_ = 0;
+	titlePosition_ = PaperPoint((maxx-minx)/2, (newmaxy + maxy)/2);
+
+	legend_->maxY(newmaxy);
+}
+void  LegendVisitor::bottomTitle()
+{
+	double minx =  legend_->minX();
+	double miny =  legend_->minY();
+	double maxx =  legend_->maxX();
+	double maxy =  legend_->maxY();
+
+	double height = (100 /(100-title_ratio_))*(maxy - miny);
+	double newminy = maxy - height;
+
+	titlePosition_ = PaperPoint((maxx-minx)/2, (newminy + miny)/2);
+	titleAngle_ = 0;
+	titleJustification_ = MCENTRE;
+
+	legend_->minY(newminy);
+}
+void  LegendVisitor::rightTitle()
+{
+	double minx =  legend_->minX();
+	double miny =  legend_->minY();
+	double maxx =  legend_->maxX();
+	double maxy =  legend_->maxY();
+
+	bool column =  ( legend_->absoluteWidth() <  legend_->absoluteHeight() );
+	double width = (100 /(100-title_ratio_))*(maxx - minx);
+	double newmaxx = minx + width;
+
+	titleAngle_ = column ? magics::PI * 0.5 : 0;
+	float factor = column ? 0.25 : 0.15;
+	titlePosition_ = PaperPoint(maxx+ (newmaxx-maxx)*factor, (maxy + 3*miny)/4);
+	titleJustification_ = MLEFT;
+
+	legend_->maxX(newmaxx);
+}
+void  LegendVisitor::leftTitle()
+{
+	double minx =  legend_->minX();
+	double miny =  legend_->minY();
+	double maxx =  legend_->maxX();
+	double maxy =  legend_->maxY();
+
+	bool column =  ( legend_->absoluteWidth() <  legend_->absoluteHeight() );
+
+	titleJustification_ = ( column ) ?  MCENTRE : MRIGHT;
+	float factor =  ( column ) ?  0.25 : 0.15;
+	titleAngle_ =  ( column ) ?  magics::PI * 1.5 : 0;
+
+	double width = (100 /(100-title_ratio_))*(maxx - minx);
+	double newminx = maxx - width;
+
+	titlePosition_ = PaperPoint(minx + (newminx-minx)*0.1, (maxy-miny)/2);
+	legend_->minX(newminx);
+
+}
+
+
+
+void LegendVisitor::grid()
+{
+	if ( builders_.empty() ) {
+		builders_["column"] = &LegendVisitor::vertical;
+		builders_["row"] = &LegendVisitor::horizontal;
 	}
-	else 
-		legend_->setCoordinates(0, nb*2,  rows + 1, 0);
+
+	if ( titleBuilders_.empty() ) {
+			titleBuilders_[M_TOP] = &LegendVisitor::topTitle;
+			titleBuilders_[M_BOTTOM] = &LegendVisitor::bottomTitle;
+			titleBuilders_[M_LEFT] = &LegendVisitor::leftTitle;
+			titleBuilders_[M_RIGHT] = &LegendVisitor::rightTitle;
+
+	}
+
+    if ( magCompare(direction_, "automatic")  ) {
+    	if ( current_->absoluteWidth() <  current_->absoluteHeight() ) 
+    		direction_ = "column";
+	}
+
+
+    vector<string>::const_iterator label = lines_.begin();
+    entriesNumber_ = 0;
+    for(vector<LegendEntry*>::const_iterator entry = begin(); entry != end(); ++entry)
+    {
+
+    		(*entry)->set(*this);
+    		string text = ( label != lines_.end() && !label->empty() ) ? *label : (*entry)->label();
+
+    		if ( ! lines_.empty() ) {
+    			++label;
+    			if (label == lines_.end()) --label;
+    		}
+    		if (text=="ignore") continue;
+    		entriesNumber_++;
+    }
+
+    std::map<string, Builder>::iterator builder = builders_.find(lowerCase(direction_));
+    if ( builder == builders_.end() ) {
+    	horizontal();
+    }
+    else {
+    	(this->*builder->second)();
+    }
+
 }
 
 void SymbolEntry::set(const PaperPoint& point, BasicGraphicsObjectContainer& legend)
@@ -464,20 +539,14 @@ void ArrowEntry::set(const PaperPoint& point, BasicGraphicsObjectContainer& lege
 }
 void ArrowEntry::rowBox(const PaperPoint& point, BasicGraphicsObjectContainer& legend)
 {
-	PaperPoint pos(centreSymbolBox(point));
-	double width = computeWidth(0.8)/2;
-	pos.x_ += (width/2);
+
+	set(point, legend);
 	Text* text = new Text();
 	text->addText(label_, font_);
-	text->push_back(pos);
+	text->push_back(leftTextBox(point));
+	text->setJustification(MLEFT);
 	legend.push_back(text);
 
-
-	pos.y_ += 0.2;
-	pos.x_ -= (width);
-
-	arrow_->push_back(ArrowPoint(arrow_->getScale(), 0, pos));
-	legend.push_back(arrow_);
 }
 void ArrowEntry::columnBox(const PaperPoint& point, BasicGraphicsObjectContainer& legend)
 {
@@ -506,7 +575,7 @@ void FlagEntry::set(const PaperPoint& point, BasicGraphicsObjectContainer& legen
     pos.x_ -= width;
 	flag_->push_back(ArrowPoint(0, 0, pos));
 	legend.push_back(flag_);
-	flag_->setLength(1.5);
+	flag_->setLength(legend.absoluteHeight());
 	flag_->back().set(40, 85);
 
 
@@ -1024,7 +1093,7 @@ void LineEntry::set(const PaperPoint& point, BasicGraphicsObjectContainer& legen
 void DoubleLineEntry::set(const PaperPoint& point, BasicGraphicsObjectContainer& legend)
 {
 	double width = computeWidth(0.8)/2;
-	double height = (line2_) ? 0.4 : 0;
+	double height = (line2_) ? 0.2 : 0;
 	PaperPoint p = centreSymbolBox(point);
 	double x = p.x();
 	double y = p.y();
@@ -1112,7 +1181,7 @@ void XmlLegendVisitor::getReady()
 	layout_->y(bottom.percent());
 	layout_->width(width.percent() );
 	layout_->height(height.percent());
-	
+
 	// adjust the font size!...	
 	Dimension text(font_dimension_,height.absolute(), 10);
 	font_size_ = text.absolute();
@@ -1131,16 +1200,20 @@ void FortranPositionalLegendVisitor::getReady()
 {
 	MagLog::dev() << "FortranLegendVisitor::getReady()" << endl;
 	LegendVisitor::getReady();
-	layout_->x(box_x_ / BasicPositionalObject::absoluteWidth() *100);
-	layout_->y(box_y_ / BasicPositionalObject::absoluteHeight() *100);
-	layout_->width( box_width_ / BasicPositionalObject::absoluteWidth() *100);
-	layout_->height( box_height_ / BasicPositionalObject::absoluteHeight() *100);
+	if ( box_x_ != -1)
+		layout_->x(box_x_ / BasicPositionalObject::absoluteWidth() *100);
+	if ( box_y_ != -1)
+		layout_->y(box_y_ / BasicPositionalObject::absoluteHeight() *100);
+	if ( box_width_ != -1)
+		layout_->width( box_width_ / BasicPositionalObject::absoluteWidth() *100);
+	if ( box_height_ != -1)
+		layout_->height( box_height_ / BasicPositionalObject::absoluteHeight() *100);
 	
 	// adjust the font size!...	
 	Dimension text(font_dimension_, box_height_, 10);
 	font_size_ = text.absolute();
-	
 	layout_->Layout::frame(blanking_, border_, *border_colour_, border_line_style_, border_thickness_);
+
 }
 
 
diff --git a/src/basic/LegendVisitor.h b/src/basic/LegendVisitor.h
index ecca65a..51f40d4 100644
--- a/src/basic/LegendVisitor.h
+++ b/src/basic/LegendVisitor.h
@@ -36,7 +36,6 @@
 
 #include "PaperPoint.h"
 #include "LegendVisitorAttributes.h"
-#include "LegendBoxAttributes.h"
 #include "XmlBasicNodeAttributes.h"
 #include "XmlNode.h"
 
@@ -273,6 +272,7 @@ public:
 	 virtual void rowBox(const PaperPoint&, BasicGraphicsObjectContainer&);
 	virtual void columnBox(const PaperPoint&, BasicGraphicsObjectContainer&);
 	bool needContinuousText() { return false;  }
+	PaperPoint leftTextBox(const PaperPoint&);
 protected:
 	Flag*  flag_;
 };
@@ -344,8 +344,29 @@ protected:
 	 typedef string (LegendVisitor::*Composition)(const string&, const string&);
     map<string, Composition> compositions_;
 	// Calculate the grid! 
-	void grid(vector<pair<float, float> >&, double&, double&);
+	void grid();
+
+	void horizontal();
+	void vertical();
+	void topTitle();
+	void bottomTitle();
+	void rightTitle();
+	void leftTitle();
+
+
+	typedef void (LegendVisitor::*Builder)();
+	map<string, Builder> builders_;
+	map<magics::Position, Builder> titleBuilders_;
+
 	void build();
+
+	vector<PaperPoint> positions_;
+	PaperPoint  titlePosition_;
+	Justification titleJustification_;
+	float titleAngle_;
+	int entriesNumber_;
+
+
 	bool positional_;
     LegendLayout* legend_;
 
diff --git a/src/basic/LegendVisitorAttributes.h b/src/basic/LegendVisitorAttributes.h
deleted file mode 100644
index 42e9e8a..0000000
--- a/src/basic/LegendVisitorAttributes.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LegendVisitorAttributes.h
-    \brief Definition of LegendVisitor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef LegendVisitorAttributes_H
-#define LegendVisitorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "LegendMethod.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LegendVisitorAttributes 
-{
-public:
-//  --  constructor
-    LegendVisitorAttributes();
-    
-//  --  destructor
-    virtual ~LegendVisitorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LegendVisitorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<Colour> colour_;
-	bool title_;
-	string title_text_;
-	string title_orientation_;
-	bool units_;
-	string units_text_;
-	bool use_min_;
-	string use_min_text_;
-	bool use_max_;
-	string use_max_text_;
-	auto_ptr<LegendMethod> method_;
-	string format_;
-	string box_;
-	string font_;
-	string font_style_;
-	string font_dimension_;
-	string text_quality_;
-	double orientation_;
-	stringarray lines_;
-	int columns_;
-	string direction_;
-	string entry_orientation_;
-	string composition_;
-	string text_;
-	string text1_;
-	string text2_;
-	string text3_;
-	string text4_;
-	string text5_;
-	string text6_;
-	string text7_;
-	string text8_;
-	string text9_;
-	string text10_;
-	double box_x_;
-	double box_y_;
-	double box_width_;
-	double box_height_;
-	bool blanking_;
-	bool border_;
-	LineStyle border_line_style_;
-	auto_ptr<Colour> border_colour_;
-	int border_thickness_;
-	bool wrep_;
-	double text_width_;
-	bool entry_border_;
-	auto_ptr<Colour> entry_border_colour_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LegendVisitorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/basic/MagnifierVisitorAttributes.h b/src/basic/MagnifierVisitorAttributes.h
deleted file mode 100644
index 5e9289c..0000000
--- a/src/basic/MagnifierVisitorAttributes.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file MagnifierVisitorAttributes.h
-    \brief Definition of MagnifierVisitor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:27 2013
-*/
-   
-
-#ifndef MagnifierVisitorAttributes_H
-#define MagnifierVisitorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class MagnifierVisitorAttributes 
-{
-public:
-//  --  constructor
-    MagnifierVisitorAttributes();
-    
-//  --  destructor
-    virtual ~MagnifierVisitorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const MagnifierVisitorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string symbol_name_;
-	string hidden_symbol_name_;
-	auto_ptr<Colour> symbol_colour_;
-	auto_ptr<Colour> hidden_symbol_colour_;
-	double symbol_height_;
-	double hidden_symbol_height_;
-	string text_font_name_;
-	double text_font_size_;
-	auto_ptr<Colour> text_font_colour_;
-	string text_format_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const MagnifierVisitorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/basic/Makefile.am b/src/basic/Makefile.am
deleted file mode 100644
index 1c11dc8..0000000
--- a/src/basic/Makefile.am
+++ /dev/null
@@ -1,46 +0,0 @@
-noinst_LTLIBRARIES	= libbasic.la
-
-ATTRIBUTES		= WrepRootNodeAttributes.cc XmlBasicNodeAttributes.cc XmlSceneNodeAttributes.cc \
-			XmlRootNodeAttributes.cc XmlViewNodeAttributes.cc LegendVisitorAttributes.cc \
-			ImportObjectHandlerAttributes.cc TextVisitorAttributes.cc MagnifierVisitorAttributes.cc
-
-include_H		= MagicsObserver.h MagicsEvent.h ParameterSettings.h \
-			BasicSceneObject.h BasicGraphicsObject.h\
-			RootSceneNode.h SceneNode.h ImportObjectHandler.h\
-			ViewNode.h PreviewVisitor.h MagnifierVisitor.h LegendVisitor.h \
-			TextVisitor.h DisplayManager.h FortranMagics.h Visdef.h  MultiVisdef.h\
-			XmlMagics.h XmlRootNodeAttributes.h WrepRootNodeAttributes.h \
-			ThreadNode.h \
-			TagHandler.h \
-			SceneVisitor.h LayoutManager.h WebFormat.h Layer.h  HistoVisitor.h \
-			XmlSceneNodeAttributes.h MagnifierVisitorAttributes.h XmlBasicNodeAttributes.h XmlViewNodeAttributes.h LegendVisitorAttributes.h  
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= 
-else
-include_HEADERS = 
-noinst_HEADERS	= $(include_H)
-endif
-
-nodist_libbasic_la_SOURCES	= ${ATTRIBUTES}
-
-libbasic_la_SOURCES	= FortranMagics.cc ParameterSettings.cc \
-			BasicSceneObject.cc BasicGraphicsObject.cc ImportObjectHandler.cc\
-			RootSceneNode.cc SceneNode.cc VisualAction.cc MultiVisdef.cc \
-			ViewNode.cc PreviewVisitor.cc MagnifierVisitor.cc LegendVisitor.cc  \
-			TextVisitor.cc  TagHandler.cc SceneVisitor.cc LayoutManager.cc \
-			XmlMagics.cc  WebFormat.cc Layer.cc  HistoVisitor.cc
-later		 =	DisplayManager.ccThreadNode.cc
-interface	 = 	FortranMagics.cc WebFormat.cc \
-			XmlMagics.cc  
-
-libbasic_la_LDFLAGS	= -no-undefined -no-install
-
-AM_CPPFLAGS		= ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/common -I$(top_srcdir)/src/web -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/oda -I$(top_srcdir)/src/decoders -I$(top_srcdir)/include -I$(top_srcdir)/src/libTable
-
-if MAGICS_QT
-AM_CPPFLAGS += $(QT_CPPFLAGS)
-endif
-
-EXTRA_DIST = BasicSceneVisitor.cc  BasicSceneVisitor.h VisualAction.cc VisualAction.h
diff --git a/src/basic/Makefile.in b/src/basic/Makefile.in
deleted file mode 100644
index 6ae1b00..0000000
--- a/src/basic/Makefile.in
+++ /dev/null
@@ -1,724 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_QT_TRUE@am__append_1 = $(QT_CPPFLAGS)
-subdir = src/basic
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libbasic_la_LIBADD =
-am_libbasic_la_OBJECTS = FortranMagics.lo ParameterSettings.lo \
-	BasicSceneObject.lo BasicGraphicsObject.lo \
-	ImportObjectHandler.lo RootSceneNode.lo SceneNode.lo \
-	VisualAction.lo MultiVisdef.lo ViewNode.lo PreviewVisitor.lo \
-	MagnifierVisitor.lo LegendVisitor.lo TextVisitor.lo \
-	TagHandler.lo SceneVisitor.lo LayoutManager.lo XmlMagics.lo \
-	WebFormat.lo Layer.lo HistoVisitor.lo
-am__objects_1 = WrepRootNodeAttributes.lo XmlBasicNodeAttributes.lo \
-	XmlSceneNodeAttributes.lo XmlRootNodeAttributes.lo \
-	XmlViewNodeAttributes.lo LegendVisitorAttributes.lo \
-	ImportObjectHandlerAttributes.lo TextVisitorAttributes.lo \
-	MagnifierVisitorAttributes.lo
-nodist_libbasic_la_OBJECTS = $(am__objects_1)
-libbasic_la_OBJECTS = $(am_libbasic_la_OBJECTS) \
-	$(nodist_libbasic_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libbasic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(libbasic_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libbasic_la_SOURCES) $(nodist_libbasic_la_SOURCES)
-DIST_SOURCES = $(libbasic_la_SOURCES)
-am__include_HEADERS_DIST = MagicsObserver.h MagicsEvent.h \
-	ParameterSettings.h BasicSceneObject.h BasicGraphicsObject.h \
-	RootSceneNode.h SceneNode.h ImportObjectHandler.h ViewNode.h \
-	PreviewVisitor.h MagnifierVisitor.h LegendVisitor.h \
-	TextVisitor.h DisplayManager.h FortranMagics.h Visdef.h \
-	MultiVisdef.h XmlMagics.h XmlRootNodeAttributes.h \
-	WrepRootNodeAttributes.h ThreadNode.h TagHandler.h \
-	SceneVisitor.h LayoutManager.h WebFormat.h Layer.h \
-	HistoVisitor.h XmlSceneNodeAttributes.h \
-	MagnifierVisitorAttributes.h XmlBasicNodeAttributes.h \
-	XmlViewNodeAttributes.h LegendVisitorAttributes.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = MagicsObserver.h MagicsEvent.h \
-	ParameterSettings.h BasicSceneObject.h BasicGraphicsObject.h \
-	RootSceneNode.h SceneNode.h ImportObjectHandler.h ViewNode.h \
-	PreviewVisitor.h MagnifierVisitor.h LegendVisitor.h \
-	TextVisitor.h DisplayManager.h FortranMagics.h Visdef.h \
-	MultiVisdef.h XmlMagics.h XmlRootNodeAttributes.h \
-	WrepRootNodeAttributes.h ThreadNode.h TagHandler.h \
-	SceneVisitor.h LayoutManager.h WebFormat.h Layer.h \
-	HistoVisitor.h XmlSceneNodeAttributes.h \
-	MagnifierVisitorAttributes.h XmlBasicNodeAttributes.h \
-	XmlViewNodeAttributes.h LegendVisitorAttributes.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libbasic.la
-ATTRIBUTES = WrepRootNodeAttributes.cc XmlBasicNodeAttributes.cc XmlSceneNodeAttributes.cc \
-			XmlRootNodeAttributes.cc XmlViewNodeAttributes.cc LegendVisitorAttributes.cc \
-			ImportObjectHandlerAttributes.cc TextVisitorAttributes.cc MagnifierVisitorAttributes.cc
-
-include_H = MagicsObserver.h MagicsEvent.h ParameterSettings.h \
-			BasicSceneObject.h BasicGraphicsObject.h\
-			RootSceneNode.h SceneNode.h ImportObjectHandler.h\
-			ViewNode.h PreviewVisitor.h MagnifierVisitor.h LegendVisitor.h \
-			TextVisitor.h DisplayManager.h FortranMagics.h Visdef.h  MultiVisdef.h\
-			XmlMagics.h XmlRootNodeAttributes.h WrepRootNodeAttributes.h \
-			ThreadNode.h \
-			TagHandler.h \
-			SceneVisitor.h LayoutManager.h WebFormat.h Layer.h  HistoVisitor.h \
-			XmlSceneNodeAttributes.h MagnifierVisitorAttributes.h XmlBasicNodeAttributes.h XmlViewNodeAttributes.h LegendVisitorAttributes.h  
-
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = 
-nodist_libbasic_la_SOURCES = ${ATTRIBUTES}
-libbasic_la_SOURCES = FortranMagics.cc ParameterSettings.cc \
-			BasicSceneObject.cc BasicGraphicsObject.cc ImportObjectHandler.cc\
-			RootSceneNode.cc SceneNode.cc VisualAction.cc MultiVisdef.cc \
-			ViewNode.cc PreviewVisitor.cc MagnifierVisitor.cc LegendVisitor.cc  \
-			TextVisitor.cc  TagHandler.cc SceneVisitor.cc LayoutManager.cc \
-			XmlMagics.cc  WebFormat.cc Layer.cc  HistoVisitor.cc
-
-later = DisplayManager.ccThreadNode.cc
-interface = FortranMagics.cc WebFormat.cc \
-			XmlMagics.cc  
-
-libbasic_la_LDFLAGS = -no-undefined -no-install
-AM_CPPFLAGS = ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/common \
-	-I$(top_srcdir)/src/web -I$(top_srcdir)/src/visualisers \
-	-I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/oda \
-	-I$(top_srcdir)/src/decoders -I$(top_srcdir)/include \
-	-I$(top_srcdir)/src/libTable $(am__append_1)
-EXTRA_DIST = BasicSceneVisitor.cc  BasicSceneVisitor.h VisualAction.cc VisualAction.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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/basic/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/basic/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libbasic.la: $(libbasic_la_OBJECTS) $(libbasic_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libbasic_la_LINK)  $(libbasic_la_OBJECTS) $(libbasic_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BasicGraphicsObject.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BasicSceneObject.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FortranMagics.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HistoVisitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImportObjectHandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImportObjectHandlerAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Layer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LayoutManager.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LegendVisitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LegendVisitorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagnifierVisitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagnifierVisitorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MultiVisdef.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ParameterSettings.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PreviewVisitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/RootSceneNode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SceneNode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SceneVisitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TagHandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TextVisitor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TextVisitorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ViewNode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/VisualAction.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WebFormat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WrepRootNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlBasicNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlMagics.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlRootNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlSceneNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlViewNodeAttributes.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/basic/RootSceneNode.cc b/src/basic/RootSceneNode.cc
index 39d197a..1d7c9c6 100644
--- a/src/basic/RootSceneNode.cc
+++ b/src/basic/RootSceneNode.cc
@@ -90,7 +90,7 @@ void FortranRootSceneNode::setPage(RootScenePage* node)
 }
 
 RootSceneNode::RootSceneNode() : 
-	absoluteWidth_(29.7), absoluteHeight_(21.), current_(0), scale_(1), newpage_(true), endpage_(false)
+	absoluteWidth_(29.7), absoluteHeight_(20.), current_(0), scale_(1), newpage_(true), endpage_(false)
 {
 	name_ = "root";
 	
@@ -189,7 +189,7 @@ void FortranRootSceneNode::print(ostream& out)  const
 XmlRootSceneNode::XmlRootSceneNode() 
 {
 	setPage(new RootScenePage());
-	absoluteWidth_  = 21.;
+	absoluteWidth_  = 20.;
 	absoluteHeight_ = 29.7;
 	ParameterManager::set(string("layout"), string("magml")); 
 	mode(basic);
@@ -230,7 +230,7 @@ void XmlRootSceneNode::getReady()
 WrepRootSceneNode::WrepRootSceneNode() 
 {
 	
-	absoluteWidth_  = 21.;
+	absoluteWidth_  = 20.;
 	absoluteHeight_ = 29.7;
 	ParameterManager::set(string("layout"), string("magml")); 
 	ParameterManager::set(string("legend_box_blanking"), string("on")); 
@@ -245,6 +245,13 @@ WrepRootSceneNode::~WrepRootSceneNode()
 {
 }
 
+LegacyRootSceneNode::LegacyRootSceneNode()
+{
+}
+LegacyRootSceneNode::~LegacyRootSceneNode()
+{
+}
+
 /*!
  Class information are given to the output-stream.
 */		
@@ -253,10 +260,14 @@ void WrepRootSceneNode::print(ostream& out)  const
 	out << "RootSceneNode[";
 	out << "]";
 }
-
+void LegacyRootSceneNode::print(ostream& out)  const
+{
+	out << "LegacySceneNode[";
+	out << "]";
+}
 void  WrepRootSceneNode::absoluteRootWidth(double width) 
 {
-	if ( width <  absoluteWidth_ ) {
+	if ( width !=  absoluteWidth_ ) {
 		// We need to calculate the new pixel Width!
 		pixel_width_ = width * 800./20.;
 	}
@@ -264,7 +275,16 @@ void  WrepRootSceneNode::absoluteRootWidth(double width)
 	absoluteWidth_ = width;
 	absoluteHeight_ = (pixel_height_/pixel_width_)*absoluteWidth_;
 }
-
+void  LegacyRootSceneNode::absoluteRootWidth(double width)
+{
+	if ( width <  absoluteWidth_ ) {
+		// We need to calculate the new pixel Width!
+		pixel_width_ = width * 20./800.;
+	}
+	scale_ = pixel_width_;
+	absoluteWidth_ = width;
+	absoluteHeight_ = (pixel_height_/pixel_width_)*absoluteWidth_;
+}
 void WrepRootSceneNode::getReady()
 {
 	// 300 px by inch! 
@@ -275,14 +295,34 @@ void WrepRootSceneNode::getReady()
 	widthResolution_ = pixel_width_;
 	heightResolution_ = pixel_height_;
 	
+
 	if ( layout_ ) delete layout_; 
 	layout_ = new RootLayout(absoluteWidth_, absoluteHeight_);
-	widthResolution_ = absoluteWidth_*40;
-	heightResolution_ = absoluteHeight_*40;
+	widthResolution_ = absoluteWidth_*800./20.;
+	heightResolution_ = absoluteHeight_*800./20.;
 	layout_->name(name_);
 }
 
+void LegacyRootSceneNode::getReady()
+{
+	// 300 px by inch!
 
+	absoluteWidth_ =  pixel_width_;
+	absoluteHeight_ = pixel_height_;
+
+
+	widthResolution_ = pixel_width_;
+		heightResolution_ = pixel_height_;
+	scale_ = (absoluteWidth_/20.)*800.;
+
+
+		if ( layout_ ) delete layout_;
+		layout_ = new RootLayout(absoluteWidth_, absoluteHeight_);
+		widthResolution_ = absoluteWidth_*800./20.;
+		heightResolution_ = absoluteHeight_*800./20.;
+		layout_->name(name_);
+
+}
 void  RootSceneNode::execute()
 {
 	Timer timer("execute", "preparation of the graphical tree");
diff --git a/src/basic/RootSceneNode.h b/src/basic/RootSceneNode.h
index b859394..9832894 100644
--- a/src/basic/RootSceneNode.h
+++ b/src/basic/RootSceneNode.h
@@ -231,6 +231,17 @@ public:
 protected:
 	void print(ostream&) const; 
 };
+class LegacyRootSceneNode : public WrepRootSceneNode
+{
+public:
+	LegacyRootSceneNode();
+	~LegacyRootSceneNode();
+	void  absoluteRootWidth(double width);
+	void getReady();
+
+protected:
+	void print(ostream&) const;
+};
 
 } // namespace magics
 #endif
diff --git a/src/basic/SceneNode.cc b/src/basic/SceneNode.cc
index bd550de..7651953 100644
--- a/src/basic/SceneNode.cc
+++ b/src/basic/SceneNode.cc
@@ -41,8 +41,7 @@ using namespace magics;
 SceneNode::SceneNode() : legend_(0)
 {
 	static int i = 0;
-	//displayType_ = INLINE;
-    //margin(0,0,0,0);
+
     
     ostringstream n;
 	n << "Page" << i;
@@ -236,17 +235,11 @@ void XmlSceneNode::getReady()
 	
 	
 
-	//margin(mt.percent(), mr.percent(), mb.percent(), ml.percent());
 	
-	//push_back(page_id_.clone());
-		
-		
-	//border(0, 0, 0, 0);
-	//padding(0, 0, 0, 0);
-	//ayout_.frame(border_);
+	layout_->frame(false, border_, *border_colour_, border_style_, border_thickness_);
 	
-	layout_->frame(false, false, *border_colour_, border_style_, border_thickness_);
 	
+
 	BasicSceneObject::getReady();
 	
 }
diff --git a/src/basic/SceneVisitor.cc b/src/basic/SceneVisitor.cc
index 59289e4..6defa38 100644
--- a/src/basic/SceneVisitor.cc
+++ b/src/basic/SceneVisitor.cc
@@ -91,7 +91,7 @@ void VerticalAxisVisitor::minortick(double&, double&, bool) {}
 double VerticalAxisVisitor::offsetTickLabel(double, double) { return 0; }
 double VerticalAxisVisitor::angleTickLabel() {return 0;}
 double VerticalAxisVisitor::angleTitle() {return 0;}
-double VerticalAxisVisitor::offsetTitle() {return 0;}
+double VerticalAxisVisitor::offsetTitle(int) {return 0;}
 double VerticalAxisVisitor::angleTip() {return 0;}
 double VerticalAxisVisitor::offsetTip() {return 0;}
 
@@ -100,7 +100,7 @@ void HorizontalAxisVisitor::minortick(double&, double&, bool) {}
 double HorizontalAxisVisitor::offsetTickLabel(double, double) {return 0;}
 double HorizontalAxisVisitor::angleTickLabel() {return 0;}
 double HorizontalAxisVisitor::angleTitle() {return 0;}
-double HorizontalAxisVisitor::offsetTitle() {return 0;} 
+double HorizontalAxisVisitor::offsetTitle(int) {return 0;}
 double HorizontalAxisVisitor::angleTip() {return 0;}
 double HorizontalAxisVisitor::offsetTip() {return 0;} 
 
@@ -184,7 +184,7 @@ double  LeftAxisVisitor::angleTitle()
 	return 3*3.14/2;
 }
 
-double  LeftAxisVisitor::offsetTitle()
+double  LeftAxisVisitor::offsetTitle(int)
 {
 	return current_->xmin_;
 }
@@ -229,7 +229,7 @@ double  RightAxisVisitor::angleTitle()
 	return 3.14/2;
 }
 
-double  RightAxisVisitor::offsetTitle()
+double  RightAxisVisitor::offsetTitle(int)
 {
 	return current_->xmax_;
 }
@@ -273,7 +273,7 @@ double  TopAxisVisitor::angleTitle()
 	return 0;
 }
 
-double  TopAxisVisitor::offsetTitle()
+double  TopAxisVisitor::offsetTitle(int)
 {
 	return current_->ymax_;
 }
@@ -323,7 +323,7 @@ double  BottomAxisVisitor::angleTitle()
 	return 0;
 }
 
-double  BottomAxisVisitor::offsetTitle()
+double  BottomAxisVisitor::offsetTitle(int)
 {
 	return current_->ymin_;
 }
diff --git a/src/basic/SceneVisitor.h b/src/basic/SceneVisitor.h
index 6de28ff..38c1ef6 100644
--- a/src/basic/SceneVisitor.h
+++ b/src/basic/SceneVisitor.h
@@ -52,7 +52,7 @@ class LayoutVisitor: public SceneVisitor
 {
 public:
 	LayoutVisitor(): layout_(0), current_(0)  {}
-	~LayoutVisitor() {}
+	~LayoutVisitor() { if ( layout_ ) delete layout_; }
 	void redisplay(const BaseDriver& driver) const;
 	
 	virtual void reset() {};
@@ -134,7 +134,7 @@ public:
 		virtual double offsetTickLabel(double, double);
 		virtual double angleTickLabel();	
 		virtual double angleTitle();
-		virtual double offsetTitle();
+		virtual double offsetTitle(int);
 		virtual double angleTip();
 		virtual double offsetTip();
 		virtual VerticalAlign textAlignment(const string&) { return MBOTTOM; }
@@ -154,7 +154,7 @@ public:
 	virtual double offsetTickLabel(double, double);
 	virtual double angleTickLabel();	
 	virtual double angleTitle();
-	virtual double offsetTitle();
+	virtual double offsetTitle(int);
 	virtual double angleTip();
 	virtual double offsetTip();
 	virtual Justification justificationTickLabel(const string&);
@@ -175,7 +175,7 @@ public:
 	virtual double offsetTickLabel(double, double);
 	virtual double angleTickLabel();	
 	virtual double angleTitle();
-	virtual double offsetTitle();
+	virtual double offsetTitle(int);
 	virtual double angleTip();
 	virtual double offsetTip();
 	virtual VerticalAlign textAlignment(const string&);
@@ -196,7 +196,7 @@ public:
 	virtual double offsetTickLabel(double, double);
 	virtual double angleTickLabel();	
 	virtual double angleTitle();
-	virtual double offsetTitle();	
+	virtual double offsetTitle(int);
 	virtual double angleTip();
 	virtual double offsetTip();
 	virtual VerticalAlign textAlignment(const string&);
@@ -219,7 +219,7 @@ public:
 	virtual double offsetTickLabel(double, double);
 	virtual double angleTickLabel();	
 	virtual double angleTitle();
-	virtual double offsetTitle();
+	virtual double offsetTitle(int);
 	virtual double angleTip();
 	virtual double offsetTip();
 	virtual VerticalAlign textAlignment(const string&);
@@ -240,7 +240,7 @@ public:
 	virtual double offsetTickLabel(double, double);
 	virtual double angleTickLabel();	
 	virtual double angleTitle();
-	virtual double offsetTitle();
+	virtual double offsetTitle(int);
 	virtual double angleTip();
 	virtual double offsetTip();
 	virtual VerticalAlign textAlignment(const string&);
diff --git a/src/basic/TagHandler.cc b/src/basic/TagHandler.cc
index d1ec133..7561e9b 100644
--- a/src/basic/TagHandler.cc
+++ b/src/basic/TagHandler.cc
@@ -99,6 +99,7 @@ TagConverter::TagConverter(TagHandler& owner) : owner_(owner), text_(0) {
 		map_["json_info"] =  &TagConverter::json;
 		map_["spot_info"] =  &TagConverter::spot;
 		map_["netcdf_info"] =  &TagConverter::netcdf;
+		map_["spot_info"] =  &TagConverter::spot;
 		map_["magics_title"] =  &TagConverter::magics;
 		map_["base_date"] =  &TagConverter::base_date;
 		map_["text"] =  &TagConverter::pass;
@@ -155,7 +156,7 @@ void TagConverter::grib(const XmlNode& node) {
 	font_ = top().font();
 	elevation_ = top().elevation();
 }
-
+/*
 void TagConverter::spot(const XmlNode& node) {
 
 	push();
@@ -167,7 +168,7 @@ void TagConverter::spot(const XmlNode& node) {
 	node.visit(*this);
 	pop();
 }
-
+*/
 
 void TagConverter::json(const XmlNode& node) {
 
@@ -183,14 +184,27 @@ void TagConverter::json(const XmlNode& node) {
 	font_ = top().font();
 	elevation_ = top().elevation();
 }
+void TagConverter::spot(const XmlNode& node) {
+
+	push();
+	const map<string, string>& attributes = node.attributes();
+	if (attributes.find("key") != attributes.end() ) {
+		string result = owner_.get("spot", attributes.find("key")->second);
+		check(owner_.get("spot", attributes.find("key")->second));
+	}
+	node.visit(*this);
+	pop();
 
+	font_ = top().font();
+	elevation_ = top().elevation();
+}
 void TagConverter::netcdf(const XmlNode& node) {
 
 	push();
 	const map<string, string>& attributes = node.attributes();
 	string key =  ( attributes.find("variable") != attributes.end() ) ? attributes.find("variable")->second : "";
 	if (attributes.find("attribute") != attributes.end() ) {
-		string result = owner_.get("netcdf"+key, attributes.find("key")->second);
+		string result = owner_.get("netcdf"+key, attributes.find("attribute")->second);
 		if ( result.empty() ) {
 			if ( automatic_ == 1 )
 				automatic_ = 0;
@@ -199,7 +213,7 @@ void TagConverter::netcdf(const XmlNode& node) {
 			if ( automatic_ == 0 )
 				automatic_ = 1;
 			automatic_++;
-			check(owner_.get("netcdf"+key, attributes.find("key")->second));
+			check(owner_.get("netcdf"+key, attributes.find("attribute")->second));
 		}
 	}
 	if (attributes.find("definition") != attributes.end() ) {
@@ -382,7 +396,7 @@ void TagConverter::decode(const string& line, Text* text)
 {
 	text_ = text;
 	elevation_ = NORMAL;
-	
+
 	NiceText nice;
 	nice.font(font_);
 	nice.elevation(elevation_);
@@ -397,19 +411,20 @@ void TagConverter::decode(const string& line, Text* text)
 	xml << line << "\n";
 	xml << "\n</xml>";
 	automatic_ = 1;
-	
 
-	if ( parser.decode(xml.str(), &tree)== 0) {		
+
+
+	if ( parser.decode(xml.str(), &tree) == 0 )
 		tree.visit(*this);
-	}
-	else  {
+	else {
+
 		label_ += line;
 		text_->addText(line, font_);
-	}	
+	}
 	if (automatic_ == 0 ) {
 		text->clear();
 	}
 
-	} 
+}
 
 
diff --git a/src/basic/TextVisitor.cc b/src/basic/TextVisitor.cc
index c270e62..567e402 100644
--- a/src/basic/TextVisitor.cc
+++ b/src/basic/TextVisitor.cc
@@ -36,7 +36,7 @@
 #include "AnimationRules.h"
 #include "Layer.h"
 #include "MagicsFormat.h"
-
+#include "OutputHandler.h"
 #include "MetaData.h"
 
 using namespace magics;
@@ -77,7 +77,6 @@ TextVisitor::TextVisitor() :positional_(true)
 }
 
 
-
 TextVisitor::~TextVisitor() 
 {
 }
@@ -240,7 +239,8 @@ void TextVisitor::finish(BasicGraphicsObjectContainer& parent)
 
 	double height = (font_size_ /absheight)*100;
 	double last = (0.10/absheight)*100; //in %
-	double gap = height*1.2;
+	double ratio = OutputHandler::patchLineSpacing();
+	double gap = height*ratio;
 
 
 
@@ -257,7 +257,7 @@ void TextVisitor::finish(BasicGraphicsObjectContainer& parent)
 		(*text)->setJustification(justification_);
 		(*text)->setVerticalAlign(MBOTTOM);
 
-		gap = (*text)->noText() ?  height*1.2 : (((*text)->getFontMax()/absheight)*100)*1.2;
+		gap = (*text)->noText() ?  height*ratio : (((*text)->getFontMax()/absheight)*100)*ratio;
 		(*text)->push_back(PaperPoint(x, last)); // approximate position to be improved 
 
 		last += gap;
@@ -348,9 +348,7 @@ void XmlTextVisitor::set(const XmlNode& node)
 			lines_.push_back(lines[i]);
 	}
 
-	for (TextHelper::const_iterator line = helper.begin(); line != helper.end(); ++line) {
-		lines_.push_back(*line);
-	}
+
 }
 
 void XmlTextVisitor::getReady()
@@ -367,33 +365,18 @@ void XmlTextVisitor::getReady()
 	Dimension mr(margin_right_, width.absolute(), 5);
 	Dimension mt(margin_top_, height.absolute(), 0);
 
-	// We have to calculate the new x, y, width, height
-	const double xl = ml.percent()*width.absolute()*0.01;
-	const double xr = mr.percent()*width.absolute()*0.01;
-	const double yb = mb.percent()*height.absolute()*0.01;
-	const double yt = mt.percent()*height.absolute()*0.01;
-
-	const double text_x =  left.percent()  + xl *100./BasicSceneObject::parent_->absoluteWidth();
-	const double text_y =  bottom.percent()+ yb *100./BasicSceneObject::parent_->absoluteHeight();;
-
-	double text_width  = width.percent();
-	double text_height = height.percent();
 
-	if ( ( text_height + text_y ) > 100 ) 
-		text_height = 100 - text_y ;
-	if ( ( text_width + text_x ) > 100 ) 
-		text_width = 100 - text_x ;
 
-	this->x(text_x);
-	this->y(text_y);
-	this->width (text_width  - xr *100/BasicSceneObject::parent_->absoluteWidth());
-	this->height(text_height - yt *100/BasicSceneObject::parent_->absoluteHeight());
+	this->x(left.percent()+ml.percent());
+	this->y(bottom.percent() + mb.percent());
+	this->width (width.percent() - ml.percent() - mr.percent());
+	this->height(height.percent() - mt.percent() - mb.percent());
 
 	// adjust the font size!...	
 	Dimension text(font_dimension_,height.absolute(), 10);
 	font_size_ = text.absolute();
 
-	layout_->display( XmlBasicNodeAttributes::display_); 
+	layout_->display(ABSOLUTE);
 	layout_->frame(TextVisitorAttributes::blanking_, TextVisitorAttributes::border_, *TextVisitorAttributes::border_colour_, M_SOLID, 1);
 
 	}
diff --git a/src/basic/ThreadNode.h b/src/basic/ThreadNode.h
deleted file mode 100644
index 4231279..0000000
--- a/src/basic/ThreadNode.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*! \file ThreadNode.h
-    \brief Definition of the Template class ThreadNode.
-    
-    Magics Team - ECMWF 2008
-    
-    Started: Tue 23-Sep-2008
-    
-    Changes:
-    
-*/
-
-#ifndef ThreadNode_H
-#define ThreadNode_H
-
-#include "magics.h"
-
-#include "BasicSceneObject.h"
-
-namespace magics {
-
-class ThreadNode: public BasicSceneObject {
-
-public:
-	ThreadNode();
-	virtual ~ThreadNode();
-	
-	void visit(BasicGraphicsObjectContainer&);
-
-protected:
-     //! Method to print string about this class on to a stream of type ostream (virtual).
-	 virtual void print(ostream&) const; 
-
-private:
-    //! Copy constructor - No copy allowed
-	ThreadNode(const ThreadNode&);
-    //! Overloaded << operator to copy - No copy allowed
-	ThreadNode& operator=(const ThreadNode&);
-
-
-
-};
-
-} // namespace magics
-#endif
diff --git a/src/basic/ViewNode.cc b/src/basic/ViewNode.cc
index e224efa..6933b80 100644
--- a/src/basic/ViewNode.cc
+++ b/src/basic/ViewNode.cc
@@ -203,20 +203,15 @@ void ViewNode::prepareLayout(SceneLayer& tree)
 	if ( legend_)
 	{
 		tree.legend(legend_);
-		if ( !legend_->positional())
-		{
-			legend_->height(5);
-			helper.attachTop(legend_);
-			legend_->x(drawing_left_);
-			legend_->width(100-drawing_left_-drawing_right_);
+		legend_->height(5);
+		helper.attachTop(legend_);
+		legend_->x(drawing_left_);
+		legend_->width(100-drawing_left_-drawing_right_);
+		if ( !legend_->positional() )
 			helper.add(legend_);
-			legend_->getReady();
-		}
-		else
-		{
-			((BasicSceneObject*)legend_)->parent((BasicSceneObject*)this);
-			legend_->getReady();
-		}
+		((BasicSceneObject*)legend_)->parent((BasicSceneObject*)this);
+		legend_->getReady();
+
 		components_.push_back(legend_);
 	}
 
@@ -286,6 +281,11 @@ void ViewNode::visit(SceneLayer& tree)
 	{
 		push_back(new EmptySceneObject() );
 	}
+	if (legend_) {
+	for ( vector<BasicSceneObject*>::iterator item = items_.begin(); item != items_.end(); ++item)  {
+		(*item)->getReady(*legend_);
+	}
+	}
 	for ( vector<BasicSceneObject*>::iterator item = items_.begin(); item != items_.end(); ++item)  {
 		(*item)->visit(tree, components_);
 	}
@@ -367,24 +367,32 @@ void XmlViewNode::getReady()
 	double wab =  width.absolute()  - mr.absolute() - ml.absolute();
 	double hab =  height.absolute()  - mt.absolute() - mb.absolute();
 	vaxis_ = 1.;
-	haxis_ = 1.;
+	haxis_ = 0.5;
 	double waa = wab;
 	double haa = hab;
-//	MagLog::dev() << "befor aspect ratio -->[" << waa << ", " << haa << "]" << endl;
 	MagLog::dev() << "after aspect ratio -->[" << waa << ", " << haa << "]" << endl; 
 
-	// could be usefull if we want to add the option compressed layout! 
-	//double w1 = (waa + mr.absolute() + ml.absolute()) / absoluteWidth() *100;
-	//double h1 = (haa +  mt.absolute() + mb.absolute()) / absoluteHeight() *100;
 	
 	double w2 = 100;
 	double h2 =100;
 	
+	// Fitted can be: expand/tiling/crop/off
+
 	if ( fitted_  == "expand" )
 	{
 		viewTransformation_->fill(waa, haa);
+		absoluteRootWidth(waa);
+		absoluteRootHeight(haa);
+		viewTransformation_->aspectRatio(waa, haa);
+		w2 = waa / width.absolute() *100;
+		h2 = haa / height.absolute() *100;
+	}
+	if ( fitted_  == "tiling" )
+	{
+
+		viewTransformation_->tile(waa, haa);
+		absoluteRootWidth(waa);
 		absoluteRootHeight(haa);
-		absoluteRootWidth(waa); 
 	}
 	if ( fitted_  == "crop" )
 	{
@@ -392,13 +400,13 @@ void XmlViewNode::getReady()
 		absoluteRootWidth(waa); 
 		absoluteRootHeight(haa);
 	}
-	else
+
+	if ( fitted_  == "off" )
 	{
 		viewTransformation_->aspectRatio(waa, haa);
-		w2 = waa / width.absolute() *100;
-		h2 = haa / height.absolute() *100;
-	}
-
+				w2 = waa / width.absolute() *100;
+				h2 = haa / height.absolute() *100;
+		}
 	drawing_top_ = 100 - drawing_bottom_ - h2;	
 	drawing_right_ = 100 - drawing_left_- w2;
 	
diff --git a/src/basic/Visdef.h b/src/basic/Visdef.h
index 6a819c8..e8b8271 100644
--- a/src/basic/Visdef.h
+++ b/src/basic/Visdef.h
@@ -33,7 +33,7 @@
 #include "magics.h"
 #include "BasicSceneObject.h"
 #include "Data.h"
-
+#include "LegendVisitor.h"
 
 namespace magics {
 
@@ -64,12 +64,15 @@ public:
     virtual void visit(Layer& layer) { MetviewIcon::visit(layer); }
     virtual void beanInfo(IntervalMap<Colour>&) { assert(false); }
     virtual bool needLegend() { return false; }
+    virtual void  getReady(const LegendVisitor& legend) { legendOnly_ = legend.only_; }
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream& out) const { 
 	 	out << "visdef"; 
 	 }
 	 
+	 bool legendOnly_;
+
 private:
     //! Copy constructor - No copy allowed
 	Visdef(const Visdef&);
diff --git a/src/basic/VisualAction.cc b/src/basic/VisualAction.cc
index e1bf1aa..4ae3cf7 100644
--- a/src/basic/VisualAction.cc
+++ b/src/basic/VisualAction.cc
@@ -40,15 +40,22 @@
 using namespace magics;
 
 
-VisualAction::VisualAction() : data_(0)
+VisualAction::VisualAction() : data_(0), layer_(0)
 {
 }
 
 
 VisualAction::~VisualAction()
 {
-	MagLog::debug() << "delete VisualAction" << endl;
+
 	if (data_) delete data_;
+	for (  vector<Visdef* >::iterator visdef = visdefs_.begin(); visdef != visdefs_.end(); ++visdef)
+		{
+			if ( *visdef )
+				delete *visdef;
+			*visdef = 0;
+		}
+	if (layer_) delete layer_;
 }
 
 /*!
@@ -90,9 +97,10 @@ void VisualAction::visit(LevelDescription& level) {
 
 void VisualAction::visit(DrawingVisitor& drawing)
 {
-	if ( !data_ || visdefs_.empty() )
+
+	if ( !data_ || ( data_ && !data_->valid() ) || visdefs_.empty() )
 	{
-		MagLog::warning() << " No proper action defined!" << endl;
+		MagLog::warning() << " Check data or visual action!" << endl;
 		return;
 	}
 	data_->getReady(drawing.transformation());
@@ -138,11 +146,13 @@ void VisualAction::visit(HistoVisitor& drawing)
 
 void VisualAction::visit(Transformation& transformation)
 {
-	if ( !data_ || visdefs_.empty() ) {
+	if ( !data_ || !data_->valid() || visdefs_.empty() ) {
 		MagLog::warning() << " No proper action defined!" << endl;
 		return;
 	}
 	data_->visit(transformation);	
+	// We need to make sure that the transformation is initialised properly!
+	transformation.cleaninit();
 	for ( vector<Visdef* >::iterator visdef = visdefs_.begin(); visdef != visdefs_.end(); ++visdef)
 		(**visdef).visit(transformation, *data_);
 }
@@ -157,17 +167,20 @@ void VisualAction::visit(LegendVisitor& legend)
 	for ( vector<Visdef* >::iterator visdef = visdefs_.begin(); visdef != visdefs_.end(); ++visdef) {
 		if ( needEmpty ) 
 			legend.add(new EmptyEntry() );
+		entries = legend.size();
+
 		(**visdef).visit(*data_, legend);
+
 		needEmpty = ( entries != legend.size() );
-		entries = legend.size();
+
 	}
-	data_->visit(legend);
+	if ( data_->valid() ) data_->visit(legend);
 }
 
 
 void VisualAction::visit(TextVisitor& title)
 {
-	if ( data_ ) data_->visit(title);
+	if ( data_ &&  data_->valid() ) data_->visit(title);
 }
 
 void VisualAction::visit(TopAxisVisitor& top)
@@ -179,41 +192,46 @@ void VisualAction::visit(TopAxisVisitor& top)
 
 void VisualAction::visit(MetaDataVisitor& infos)
 {
-	if ( data_ ) data_->visit(infos);
+	if ( data_ &&  data_->valid() ) data_->visit(infos);
 	for ( vector<Visdef* >::iterator visdef = this->visdefs_.begin(); visdef != this->visdefs_.end(); ++visdef) {
 		(*visdef)->visit(infos);
 	}
 }
 
-
+void   VisualAction::getReady(const LegendVisitor& legend)
+{
+	for ( vector<Visdef* >::iterator visdef = this->visdefs_.begin(); visdef != this->visdefs_.end(); ++visdef) {
+			(*visdef)->getReady(legend);
+		}
+}
 void VisualAction::visit(MetaDataCollector& infos)
 {
 	infos.transformation(&transformation());
-	if ( data_ ) data_->visit(infos);
+	if ( data_  && data_->valid() ) data_->visit(infos);
 }
 
 
 void VisualAction::visit(ValuesCollector& infos)
 {
 	infos.transformation(&transformation());
-	if ( data_ ) data_->visit(infos);
+	if ( data_  && data_->valid() ) data_->visit(infos);
 }
 
 void VisualAction::visit(DataIndexCollector& infos)
 {
-	if ( data_ ) data_->visit(infos);
+	if ( data_ && data_->valid() ) data_->visit(infos);
 }
 
 void VisualAction::visit(MagnifierCollector& infos)
 {
 	infos.transformation(&transformation());
-	if ( data_ ) data_->visit(infos);
+	if ( data_  && data_->valid() ) data_->visit(infos);
 }
 
 
 void VisualAction::visit(AnimationRules& rules)
 {
-	if ( data_ ) data_->visit(rules);
+	if ( data_  && data_->valid() ) data_->visit(rules);
 }
 
 static string unknown("unknown");
@@ -226,7 +244,7 @@ const string& VisualAction::name()
 
 const string& VisualAction::id() {
 	static string name("unknown");
-	return ( data_ ) ? data_->layerId() : unknown;
+	return ( data_  ) ? data_->layerId() : unknown;
 }
 
 
@@ -239,7 +257,7 @@ VisualAnimation::VisualAnimation():loop_(0)
 
 VisualAnimation::~VisualAnimation()
 {
-	cout << "delete VisualAnimation" << endl;
+
 	if (loop_) delete loop_;
 }
 
@@ -326,21 +344,21 @@ bool VisualAction::needLegend()
 
 void VisualAction::visit(SceneLayer& layer, vector<LayoutVisitor*>& visitors)
 {
-	StaticLayer* plot = new StaticLayer(this);
+	layer_ = new StaticLayer(this);
 	
 
 	if ( data_ ) 
-		data_->visit(*plot);
- 	layer.add(plot);
+		data_->visit(*layer_);
+ 	layer.add(layer_);
 
 	for  (vector<LayoutVisitor*>::iterator visitor = visitors.begin(); visitor != visitors.end(); ++visitor) {
-		plot->set(*visitor);
+		layer_->set(*visitor);
 		(*visitor)->visit(*this);
 	}
 
 	for(vector<Visdef* >::iterator visdef = this->visdefs_.begin(); visdef != this->visdefs_.end(); ++visdef)
 	{    
-		(*visdef)->visit(*plot);
+		(*visdef)->visit(*layer_);
 	}
 
 
diff --git a/src/basic/VisualAction.h b/src/basic/VisualAction.h
index 6250fbf..7c878d0 100644
--- a/src/basic/VisualAction.h
+++ b/src/basic/VisualAction.h
@@ -49,6 +49,7 @@ public:
 	virtual ~VisualAction();
 	
 	void data(Data* data)     { data_ = data; }
+	void set2D()     { data_->dimension(2); }
 	void visdef(Visdef* visdef) { visdefs_.push_back(visdef); }
 	void binning(BinningObject* binning)     { if (data_) data_->binning(binning); }
 	const string& name();
@@ -58,6 +59,7 @@ public:
     bool isValid() const { return data_ && visdefs_.empty() == false; }
 
     bool needLegend();
+    void  getReady(const LegendVisitor&);
 
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
@@ -84,6 +86,7 @@ protected:
 	 
 	 Data*                       data_;
 	 vector<Visdef*>       visdefs_;
+	 StaticLayer* layer_;
 
 	 void visit(DateDescription&);
 	 void visit(LevelDescription&);
diff --git a/src/basic/WebFormat.cc b/src/basic/WebFormat.cc
index 5fab67f..d4839a4 100644
--- a/src/basic/WebFormat.cc
+++ b/src/basic/WebFormat.cc
@@ -17,11 +17,9 @@
  ******************************** LICENSE ********************************/
 
 #include "WebFormat.h"
-#ifdef MAGICS_JSON
 #include "MagJSon.h"
-#endif
 using namespace magics;
-
+#include "Timer.h"
 
 pair<string, string> cut(const string& in)
 {
@@ -44,7 +42,7 @@ pair<string, string> cut(const string& in)
 		var = current;
 		current = "";
 	}
-	return make_pair(var, current);
+	return std::make_pair(var, current);
 }
 
 
@@ -53,7 +51,7 @@ pair<string, string> cut(const string& in)
 
 string replace(const string& in, const map<string, string>& variables)
 {
-	pair<string, string> var = cut(in);
+	std::pair<string, string> var = cut(in);
 
 	map<string, string>::const_iterator variable = variables.find(var.first);
 
@@ -146,11 +144,8 @@ void WebInterpretor::magml(const string& file)
 
 void WebInterpretor::json(const string& file)
 {
-#ifdef MAGICS_JSON
+
 	MagJSon json;
 	json.execute(file, web_);
 	web_.clear();
-#else
-    MagLog::error() << "No Json support" << endl;
-#endif
 }
diff --git a/src/basic/WrepRootNodeAttributes.h b/src/basic/WrepRootNodeAttributes.h
deleted file mode 100644
index 1a23158..0000000
--- a/src/basic/WrepRootNodeAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file WrepRootNodeAttributes.h
-    \brief Definition of WrepRootNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef WrepRootNodeAttributes_H
-#define WrepRootNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class WrepRootNodeAttributes 
-{
-public:
-//  --  constructor
-    WrepRootNodeAttributes();
-    
-//  --  destructor
-    virtual ~WrepRootNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const WrepRootNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double pixel_width_;
-	double pixel_height_;
-	string anchor_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const WrepRootNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/basic/XmlBasicNodeAttributes.h b/src/basic/XmlBasicNodeAttributes.h
deleted file mode 100644
index 2c8789a..0000000
--- a/src/basic/XmlBasicNodeAttributes.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file XmlBasicNodeAttributes.h
-    \brief Definition of XmlBasicNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef XmlBasicNodeAttributes_H
-#define XmlBasicNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class XmlBasicNodeAttributes 
-{
-public:
-//  --  constructor
-    XmlBasicNodeAttributes();
-    
-//  --  destructor
-    virtual ~XmlBasicNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const XmlBasicNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	bool standalone_;
-	string standalone_path_;
-	string standalone_format_;
-	double standalone_width_;
-	double standalone_height_;
-	DisplayType display_;
-	string bottom_;
-	string left_;
-	string width_;
-	string height_;
-	string margin_bottom_;
-	string margin_left_;
-	string margin_right_;
-	string margin_top_;
-	auto_ptr<Colour> background_;
-	string border_bottom_;
-	string border_left_;
-	string border_right_;
-	string border_top_;
-	bool border_;
-	bool blanking_;
-	auto_ptr<Colour> border_colour_;
-	LineStyle border_style_;
-	int border_thickness_;
-	string padding_bottom_;
-	string padding_left_;
-	string padding_right_;
-	string padding_top_;
-	auto_ptr<Colour> padding_colour_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const XmlBasicNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/basic/XmlMagics.cc b/src/basic/XmlMagics.cc
index 27cb0e5..f32f77e 100644
--- a/src/basic/XmlMagics.cc
+++ b/src/basic/XmlMagics.cc
@@ -36,7 +36,7 @@
 #include "ViewNode.h"
 #include "Coastlines.h"
 #include "BinaryObject.h"
-
+#include "TephiGrid.h"
 #include "TaylorGrid.h"
 #ifdef MAGICS_GRIB
 #include "GribDecoder.h"
@@ -44,12 +44,8 @@
 #include "TableDecoder.h"
 #include "VisualAction.h"
 #include "XYList.h"
-#include "LandgramDecoder.h"
 #include "EpsXmlInput.h"
-#ifdef MAGICS_JSON
 #include "WrepJSon.h"
-#endif
-#include "LandgramBox.h"
 #include "ImagePlotting.h"
 #include "SymbolPlotting.h"
 #include "Contour.h"
@@ -68,7 +64,6 @@
 #include "SimplePolylineVisualiser.h"
 
 #include "MetaData.h"
-#include "ThreadNode.h"
 
 
 #ifdef MAGICS_SPOT
@@ -98,6 +93,7 @@ XmlMagics::XmlMagics() : root_(0),
 	actions_["matrix"] = &XmlMagics::matrix;
 	actions_["cartesian"] = &XmlMagics::cartesian;
 	actions_["taylor"] = &XmlMagics::cartesian;
+
 	actions_["cylindrical"] = &XmlMagics::geographical;
 	actions_["polar_stereographic"] = &XmlMagics::geographical;
 
@@ -105,7 +101,8 @@ XmlMagics::XmlMagics() : root_(0),
 	actions_["vertical_axis"] = &XmlMagics::verticalAxis;
 	actions_["coastlines"] = &XmlMagics::coastlines;
 	actions_["taylorgrid"] = &XmlMagics::taylor;
-
+	actions_["tephigrid"] = &XmlMagics::tephigrid;
+	actions_["tephigram"] = &XmlMagics::cartesian;
 	actions_["grib"] = &XmlMagics::grib;
 	actions_["netcdf"] = &XmlMagics::netcdf;
 	actions_["table"] = &XmlMagics::table;
@@ -113,14 +110,12 @@ XmlMagics::XmlMagics() : root_(0),
 	actions_["odb"] = &XmlMagics::odb;
 	actions_["xyinput"] = &XmlMagics::xyinput;
 	actions_["input"] = &XmlMagics::input;
-	actions_["landgram"] = &XmlMagics::landgram;
 
 	actions_["wind"] = &XmlMagics::wind;
 	actions_["image"] = &XmlMagics::image;
 	actions_["symbol"] = &XmlMagics::symbol;	
 	actions_["contour"] = &XmlMagics::contour;
 	actions_["histogram"] = &XmlMagics::histogram;
-	actions_["landgrambox"] = &XmlMagics::landgrambox;
 	actions_["legend"] = &XmlMagics::legend;
 	actions_["meta"] = &XmlMagics::metadata;
 
@@ -180,7 +175,7 @@ void XmlMagics::print(ostream& out)  const
 void XmlMagics::execute(XmlTree& tree) 
 {
 	{
-	Timer timer("Total", "Execution of the tree");
+
 	try {
 		tree.visit(*this);
 	}
@@ -307,7 +302,12 @@ void XmlMagics::magics(const XmlNode& node)
 	}
 	string method = node.getAttribute("method") ;
 	
-	root_ =  ( method == "wrep" ) ? new  WrepRootSceneNode() : new  XmlRootSceneNode();
+	if  ( method == "wrep" )
+		root_ = new  WrepRootSceneNode();
+	else if  ( method == "legacy" )
+		root_ =  new  LegacyRootSceneNode();
+	else
+		root_ =  new  XmlRootSceneNode();
 
 	push(root_);
 	root_->set(node);
@@ -426,7 +426,12 @@ void XmlMagics::taylor(const XmlNode& node)
 	grid->set(node);
 	top()->push_back(grid);
 }
-
+void XmlMagics::tephigrid(const XmlNode& node)
+{
+	TephiGrid* grid = new TephiGrid();
+	grid->set(node);
+	top()->push_back(grid);
+}
 void XmlMagics::horizontalAxis(const XmlNode& node)
 {	
 	HorizontalAxis* axis = new HorizontalAxis();
@@ -581,19 +586,6 @@ void XmlMagics::input(const XmlNode& node)
 	top()->data(data);
 
 }
-void XmlMagics::landgram(const XmlNode& node)
-{	
-	LandgramDecoder* list = new LandgramDecoder();
-	list->set(node);
-	top()->data(list);
-}
-
-void XmlMagics::landgrambox(const XmlNode& node)
-{	
-	LandgramBox* box = new LandgramBox();
-	box->set(node);
-	top()->visdef(box);
-}
 
 #include "GraphPlotting.h"
 void XmlMagics::graph(const XmlNode& node)
@@ -649,39 +641,31 @@ void XmlMagics::efigram(const XmlNode& node)
 
 void XmlMagics::cdfgraph(const XmlNode& node)
 {	
-#ifdef MAGICS_JSON
 	CdfGraph* cdf = new CdfGraph();
 	cdf->set(node);
 	top()->visdef(cdf);
-#endif
 }
 
 void XmlMagics::efigraph(const XmlNode& node)
 {	
-#ifdef MAGICS_JSON
 	EfiGraph* efi = new EfiGraph();
 	efi->set(node);
 	top()->visdef(efi);
-#endif
 }
 
 
 void XmlMagics::epsplume(const XmlNode& node)
 {	
-#ifdef MAGICS_JSON
 	EpsPlume* plume = new EpsPlume();
 	plume->set(node);
 	top()->visdef(plume);
-#endif
 }
 
 void XmlMagics::epsdirection(const XmlNode& node)
 {	
-#ifdef MAGICS_JSON
 	EpsDirection* direction = new EpsDirection();
 	direction->set(node);
 	top()->visdef(direction);
-#endif
 }
 
 void XmlMagics::metgram(const XmlNode& node)
@@ -721,11 +705,9 @@ void XmlMagics::epsxml(const XmlNode& node)
 void XmlMagics::wrepjson(const XmlNode& node)
 {	
 
-#ifdef MAGICS_JSON
 	WrepJSon* wrep = new WrepJSon();
 	wrep->set(node);
 	top()->data(wrep);
-#endif
 }
 
 
diff --git a/src/basic/XmlMagics.h b/src/basic/XmlMagics.h
index 5d0eeb9..02c2207 100644
--- a/src/basic/XmlMagics.h
+++ b/src/basic/XmlMagics.h
@@ -71,8 +71,9 @@ public:
 	void text(const XmlNode&);
 	void map(const XmlNode&);
 	void coastlines(const XmlNode&);
+	void tephigrid(const XmlNode&);
+	void tephigram(const XmlNode&);
 	void taylor(const XmlNode&);
-	void landgram(const XmlNode&);
 	void layer(const XmlNode&);
 	void grib(const XmlNode&);
 	void table(const XmlNode&);
@@ -87,7 +88,6 @@ public:
 	void wind(const XmlNode&);
 	void symbol(const XmlNode&);
 	void matrix(const XmlNode&);
-	void landgrambox(const XmlNode&);
 	void cartesian(const XmlNode&);
 	void geographical(const XmlNode&);
 
diff --git a/src/basic/XmlRootNodeAttributes.h b/src/basic/XmlRootNodeAttributes.h
deleted file mode 100644
index 73ca674..0000000
--- a/src/basic/XmlRootNodeAttributes.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file XmlRootNodeAttributes.h
-    \brief Definition of XmlRootNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef XmlRootNodeAttributes_H
-#define XmlRootNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class XmlRootNodeAttributes 
-{
-public:
-//  --  constructor
-    XmlRootNodeAttributes();
-    
-//  --  destructor
-    virtual ~XmlRootNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const XmlRootNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string format_;
-	string orientation_;
-	double width_;
-	double height_;
-	bool border_;
-	auto_ptr<Colour> border_colour_;
-	LineStyle border_style_;
-	int border_thickness_;
-	string application_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const XmlRootNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/basic/XmlSceneNodeAttributes.h b/src/basic/XmlSceneNodeAttributes.h
deleted file mode 100644
index 70e0e6b..0000000
--- a/src/basic/XmlSceneNodeAttributes.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file XmlSceneNodeAttributes.h
-    \brief Definition of XmlSceneNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef XmlSceneNodeAttributes_H
-#define XmlSceneNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "PageID.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class XmlSceneNodeAttributes 
-{
-public:
-//  --  constructor
-    XmlSceneNodeAttributes();
-    
-//  --  destructor
-    virtual ~XmlSceneNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const XmlSceneNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	DisplayType display_;
-	string bottom_;
-	string left_;
-	string width_;
-	string height_;
-	string margin_bottom_;
-	string margin_left_;
-	string margin_right_;
-	string margin_top_;
-	auto_ptr<Colour> background_;
-	string border_bottom_;
-	string border_left_;
-	string border_right_;
-	bool border_;
-	string border_top_;
-	auto_ptr<Colour> border_colour_;
-	LineStyle border_style_;
-	int border_thickness_;
-	string padding_bottom_;
-	string padding_left_;
-	string padding_right_;
-	string padding_top_;
-	auto_ptr<Colour> padding_colour_;
-	auto_ptr<NoPageID> page_id_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const XmlSceneNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/basic/XmlViewNodeAttributes.h b/src/basic/XmlViewNodeAttributes.h
deleted file mode 100644
index a50cf78..0000000
--- a/src/basic/XmlViewNodeAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file XmlViewNodeAttributes.h
-    \brief Definition of XmlViewNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef XmlViewNodeAttributes_H
-#define XmlViewNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Transformation.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class XmlViewNodeAttributes 
-{
-public:
-//  --  constructor
-    XmlViewNodeAttributes();
-    
-//  --  destructor
-    virtual ~XmlViewNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const XmlViewNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string fitted_;
-	auto_ptr<Transformation> transformation_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const XmlViewNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/ArrowProperties.cc b/src/common/ArrowProperties.cc
index f785153..2fd6904 100644
--- a/src/common/ArrowProperties.cc
+++ b/src/common/ArrowProperties.cc
@@ -54,6 +54,7 @@ void ArrowProperties::copy(const ArrowProperties& from)
 	headRatio_     = from.headRatio_;
 }
 
+
 void ArrowProperties::print(ostream& out)  const
 {
 	out << ", scale=" << scale_;
diff --git a/src/common/ArrowProperties.h b/src/common/ArrowProperties.h
index bc2354b..bd64ccc 100644
--- a/src/common/ArrowProperties.h
+++ b/src/common/ArrowProperties.h
@@ -41,6 +41,12 @@ class ArrowProperties
 public:
 	ArrowProperties();
 	virtual ~ArrowProperties(){}
+	ArrowProperties* clone() {
+		ArrowProperties* arrow = new ArrowProperties();
+		arrow->copy(*this);
+		return arrow;
+	}
+
 // Accessors :
 	double getScale() const                { return scale_; }
 	void setScale(double scale)            { scale_ = scale; }
diff --git a/src/common/AutoLocker.cc b/src/common/AutoLocker.cc
index c6be0c8..cd206e0 100644
--- a/src/common/AutoLocker.cc
+++ b/src/common/AutoLocker.cc
@@ -30,12 +30,12 @@
 #include "MagExceptions.h"
 #endif
 
-typedef map<void*,pthread_t,less<void*> > GotMap;
-typedef map<pthread_t,void*,less<pthread_t> > WantMap;
+typedef map<void*,pthread_t,std::less<void*> > GotMap;
+typedef map<pthread_t,void*,std::less<pthread_t> > WantMap;
 static WantMap*   wantMap = 0;
 static GotMap*   gotMap = 0;
-static Mutex* mutex = 0;
-typedef set<pthread_t,less<pthread_t> > Set;
+static Mutex* texmu = 0;
+typedef set<pthread_t,std::less<pthread_t> > Set;
 
 static pthread_once_t once = PTHREAD_ONCE_INIT;
 
@@ -55,7 +55,7 @@ static void unlock()
 
 static void init(void)
 {
-	mutex   = new Mutex;
+    texmu   = new Mutex;
 	wantMap = new WantMap;
 	gotMap  = new GotMap;
 	pthread_atfork(lock,unlock,unlock);
diff --git a/src/common/AutomaticPlotManager.cc b/src/common/AutomaticPlotManager.cc
new file mode 100644
index 0000000..d05dc5e
--- /dev/null
+++ b/src/common/AutomaticPlotManager.cc
@@ -0,0 +1,161 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AutomaticPlotManager.cc
+    \brief Implementation of the Template class AutomaticPlotManager.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Tue 17-Aug-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "AutomaticPlotManager.h"
+
+using namespace magics;
+
+
+
+AutomaticPlotManager::AutomaticPlotManager() : 
+    x_(-1), y_(-1), pageX_(-1), pageY_(-1),
+    pwidth_(0), pheight_(0),
+    swidth_(0), sheight_(0)
+{
+}
+
+
+AutomaticPlotManager::~AutomaticPlotManager() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AutomaticPlotManager::print(ostream& out)  const
+{
+	out << "AutomaticPlotManager[";
+	out << "]";
+}
+
+AutomaticPlotManager::PlotDirection AutomaticPlotManager::direction() 
+{
+        string val = lowerCase(plot_direction_);
+		// enum PlotDirection { VERTICAL, HORIZONTAL };
+        if (val  == "vertical") return VERTICAL;
+		if (val  == "horizontal") return HORIZONTAL;
+
+        return VERTICAL;
+}
+
+AutomaticPlotManager::PlotStart AutomaticPlotManager::start() 
+{
+        string val = lowerCase(plot_start_);
+		// enum PlotStart { BOTTOM, TOP };
+        if (val  == "bottom") return BOTTOM;
+		if (val  == "top") return TOP;
+
+        return BOTTOM;
+}
+
+void AutomaticPlotManager::page(MagicsManager& magics)
+{
+    // Does it fit in the superpge?
+    MagLog::dev() << "Width = " << magics.root()->getWidth() << "\n";
+    MagLog::dev() << "Height = " << magics.root()->getHeight() << "\n";
+    if ( !empty() ) pop();
+    page_ = true;
+}
+ 
+void AutomaticPlotManager::addpage(MagicsManager& magics)
+{
+    if (empty()) addRoot(magics);
+    PageNode* page = new PageNode();
+    page->setParent(top());
+    page->setFromFortran();
+    MagLog::dev() << " try to fit page[" << page->width() << ", " <<  page->height() << "]" << "\n";
+    // calculate position 
+    pageX_ = x_; 
+    pageY_ = y_;
+    if ( x_ == -1 && y_ == -1) {
+        pwidth_ =  page->width();
+        pheight_ = page->height();
+        swidth_ =  magics.root()->getWidth();
+        sheight_ = magics.root()->getHeight();
+        x_ = 0;
+        y_ = (start() == BOTTOM) ? 0 : sheight_ - pheight_;
+    } 
+    else {
+        // Calculate new coordinates :
+        if (direction() == VERTICAL) {
+            y_ += (start() == BOTTOM) ? pheight_ : -pheight_;
+            if (y_ <= 0 || y_ + pheight_ > sheight_) {// Go to next column... 
+                y_ = (start() == BOTTOM) ? 0 : sheight_ - pheight_;
+                x_ += pwidth_;
+                if (x_ + pwidth_ > swidth_) { // go to next superpage...
+                    addRoot(magics);
+                    x_ = 0;
+                    y_ = (start() == BOTTOM) ? 0 : sheight_ - pheight_;
+                }
+            }
+        }
+        else {
+            x_ += pwidth_;
+            if (x_ + pwidth_>= swidth_) { // go to next line ..
+                x_ = 0;
+                y_ += (start() == BOTTOM) ? pheight_ : -pheight_;
+                if (y_ <= 0 || y_ + pheight_ > sheight_) {// go to next superpage...
+                    addRoot(magics);
+                    x_ = 0;
+                    y_ = (start() == BOTTOM) ? 0 : sheight_ - pheight_;
+                }
+            }
+        }
+    }
+    
+   
+    page->x(x_);
+    page->y(y_);
+   
+    
+    
+    MagLog::dev() << " fit it at [" << x_ << ", " << y_ << "]" << "\n";
+    
+    top()->addChild(page);
+    push(page);
+    page_ = false;
+    
+}
+
+
+
+void AutomaticPlotManager::subpage(MagicsManager&)
+{
+    if ( !empty() ) pop();
+    x_ = pageX_;
+    y_ = pageY_;
+  
+    page_ = true;
+}
+
+
+static SimpleObjectMaker<AutomaticPlotManager, PlotManager> automatic_plot_manager("automatic");
+
diff --git a/src/common/AutomaticPlotManager.h b/src/common/AutomaticPlotManager.h
new file mode 100644
index 0000000..5af828e
--- /dev/null
+++ b/src/common/AutomaticPlotManager.h
@@ -0,0 +1,81 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AutomaticPlotManager.h
+    \brief Definition of the Template class AutomaticPlotManager.
+    \author Meteorological Visualisation Section, ECMWF
+
+    Started: Aug-2004
+
+*/
+
+#ifndef AutomaticPlotManager_H
+#define AutomaticPlotManager_H
+
+#include "magics.h"
+
+#include "PlotManager.h"
+#include "AutomaticPlotManagerAttributes.h"
+
+namespace magics {
+
+class AutomaticPlotManager: public PlotManager, public AutomaticPlotManagerAttributes  {
+
+public:
+	AutomaticPlotManager();
+	virtual ~AutomaticPlotManager();
+	virtual void set(const map<string, string>& map ) 
+		{ AutomaticPlotManagerAttributes::set(map); }
+
+	void page(MagicsManager&);
+	void subpage(MagicsManager&);
+
+	void addpage(MagicsManager&);
+	void addRoot(MagicsManager& magics) 
+		{ x_ = -1; y_ = -1; PlotManager::addRoot(magics); }
+protected:
+	enum PlotStart { BOTTOM, TOP };
+	enum PlotDirection { VERTICAL, HORIZONTAL };
+	//! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+	double x_;
+	double y_;
+	double pageX_;
+	double pageY_;
+	double pwidth_;
+	double pheight_;
+	double swidth_;
+	double sheight_;
+
+	PlotDirection direction();
+	PlotStart start();
+
+private:
+	//! Copy constructor - No copy allowed
+	AutomaticPlotManager(const AutomaticPlotManager&);
+	//! Overloaded << operator to copy - No copy allowed
+	AutomaticPlotManager& operator=(const AutomaticPlotManager&);
+
+// -- Friends
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AutomaticPlotManager& p)
+		{ p.print(s); return s; }
+};
+
+} // namespace magics
+#endif
diff --git a/src/common/BaseParameter.cc b/src/common/BaseParameter.cc
index d562a75..1c3978d 100644
--- a/src/common/BaseParameter.cc
+++ b/src/common/BaseParameter.cc
@@ -36,7 +36,7 @@ using namespace magics;
 
 
 
-BaseParameter::BaseParameter(const string& name)  : name_(lowerCase(name))
+BaseParameter::BaseParameter(const string& name)  : name_(name)
 {
    ParameterManager::add(name_, this);
 }
diff --git a/src/common/BaseParameter.h b/src/common/BaseParameter.h
index b30bb64..dac08c3 100644
--- a/src/common/BaseParameter.h
+++ b/src/common/BaseParameter.h
@@ -36,12 +36,12 @@
 #include <PaperPoint.h>
 #include "Matrix.h"
 
-#if MAGICS_CAIRO
+#ifdef MAGICS_CAIRO
  #include "cairo.h"
  typedef cairo_t* CairoPtr;
 #endif
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
  #include "Qt/qwidget.h"
  #include "Qt/qgraphicsscene.h"	
  typedef QWidget* QWidgetPtr;
@@ -193,7 +193,7 @@ public:
 	
 
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 	virtual void set(const QWidgetPtr&) { throw MistmatchType(name_, "qt_widget", type()); }
 	virtual void get(QWidgetPtr&) const { throw MistmatchType(name_, "qt_widget", type()); }
 	string getType(QWidgetPtr) const { return "qt_widget"; }
@@ -203,7 +203,7 @@ public:
 	string getType(QGraphicsScenePtr) const { return "qt_scene"; }
 #endif
 
-#if MAGICS_CAIRO
+#ifdef MAGICS_CAIRO
 	virtual void set(const CairoPtr&) { throw MistmatchType(name_, "cairo_context", type()); }
 	virtual void get(CairoPtr&) const { throw MistmatchType(name_, "cairo_context", type()); }
 	string getType(CairoPtr) const { return "cairo_context"; }
diff --git a/src/common/BasePointsHandler.h b/src/common/BasePointsHandler.h
index e58e340..9c2cd9d 100644
--- a/src/common/BasePointsHandler.h
+++ b/src/common/BasePointsHandler.h
@@ -46,6 +46,7 @@ public:
     MinMaxHelper(AbstractPoints& points);
     void operator()(const UserPoint& point)
     {
+    	if ( point.missing() ) return;
         if (point.x() < minX_ ) minX_ = point.x();
         if (point.x() > maxX_ ) maxX_ = point.x();
         if (point.y() < minY_ ) minY_ = point.y();
diff --git a/src/common/BinaryObject.h b/src/common/BinaryObject.h
index 7b831cf..6fed606 100644
--- a/src/common/BinaryObject.h
+++ b/src/common/BinaryObject.h
@@ -42,10 +42,10 @@ public:
 
 
 	double getTransparency() const { return transparency_; }
-	int getMgb_x() const { return mgb_x_; }
-	int getMgb_y() const { return mgb_y_; }
-	int getMgb_width() const { return mgb_width_; }
-	int getMgb_height() const { return mgb_height_; }
+	double getMgb_x() const { return mgb_x_; }
+	double getMgb_y() const { return mgb_y_; }
+	double getMgb_width() const { return mgb_width_; }
+	double getMgb_height() const { return mgb_height_; }
 
 protected:
 	//! Method to print string about this class on to a stream of type ostream (virtual).
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
new file mode 100644
index 0000000..12d437e
--- /dev/null
+++ b/src/common/CMakeLists.txt
@@ -0,0 +1,144 @@
+list( APPEND _common_srcs
+
+	OutputFactory.h MagLog.h
+	BaseParameter.h Colour.h MagException.h
+	Factory.cc Factory.h
+	ParameterManager.h Frame.h Layout.h
+	PaperPoint.h GeoPoint.h  Tokenizer.h Node.h MagTranslator.h
+	ImageProperties.h LogoPlotting.h
+	ImportObject.h ColourTable.h PageID.h
+	Transformation.h Dimension.h
+	XmlNode.h XmlTree.h XmlReader.h BackgroundColour.h
+	ColourTableDefinition.h ColourTableDefinitionCompute.h ColourTableDefinitionComputeInterface.h
+	ColourTableDefinitionList.h ColourTableDefinitionListInterface.h 
+	TableDefinition.h TableDefinitionList.h TableDefinitionListInterface.h
+	TableDefinitionCompute.h TableDefinitionComputeInterface.h
+	HeightTableDefinition.h LevelTableDefinition.h IntervalMap.h PaperDimension.h
+	Matrix.h MatrixHandler.h Data.h Decoder.h
+	BasePointsHandler.h RasterData.h  Visualiser.h CustomisedPoint.h PointsHandler.h
+	MetaData.h
+	Polyline.h
+	Text.h
+	Symbol.h
+	BinaryObject.h
+	Arrow.h
+	Flag.h
+	Image.h 
+	ArrowProperties.h
+	MagicsParameter.cc MagicsParameter.h Clipper.h LogoPlottingBase.h
+	TableDefinitionCompute.cc 
+	TableDefinitionList.cc
+	Coordinate.h OutputHandler.h
+	MagFont.h 
+	AnimationRules.h SymbolItem.h
+	UserPoint.h Label.h
+	Timer.h
+	CustomisedPoint.h Static.h DriverStatic.h ProgressObject.h PolyCoast.h
+	ProgressTask.h FullPaperPoint.h
+	BasePointsHandler.h PointsHandler.h Decoder.h Data.h
+	Visualiser.h MatrixHandler.h
+	Seconds.h
+	Matrix.h Matrix.cc
+	Path.h
+	MagicsSingleton.h
+	PlotManager.h
+	Image.h 
+	XmlReader.h XmlTree.h XmlNode.h
+	MagicsFormat.h
+	CartesianTransformation.h
+	Dimension.cc
+	XCoordinate.h YCoordinate.h marsmachine.h linux.h aix.h
+	Thread.h MutexCond.h Mutex.h AutoLock.h ThreadControler.h Task.h MagExceptions.h ThreadSingleton.h 
+	DataStats.h SciMethods.h Tephigram.cc  Tephigram.h
+
+# sources
+	Data.cc Matrix.cc MagicsCalls.cc Static.cc DriverStatic.cc MagLog.cc Colour.cc Transformation.cc MagException.cc
+	BaseParameter.cc ParameterManager.cc  
+	Tokenizer.cc Timer.cc Seconds.cc Label.cc
+	ArrowProperties.cc
+	XmlReader.cc XmlTree.cc XmlNode.cc Dimension.cc
+	MetaData.cc
+	MagicsFormat.cc
+	OutputHandler.cc  OutputFactory.cc
+	MagFont.cc
+	ColourTable.cc ColourTableDefinitionList.cc
+	ColourTableDefinitionCompute.cc CartesianTransformation.cc
+	BinaryObject.cc
+	Coordinate.cc
+	LogoPlotting.cc
+	PageID.cc AnimationRules.cc Layout.cc SymbolItem.cc Symbol.cc Polyline.cc
+	Text.cc Flag.cc  
+	Mutex.cc MutexCond.cc Thread.cc MagExceptions.cc AutoLocker.cc
+	ThreadControler.cc Task.cc
+	DataStats.cc SciMethods.cc BasePointsHandler.cc PointsHandler.cc ProgressObject.cc
+
+# projection
+    GeoRectangularProjection.cc  PolarStereographicProjection.cc TaylorProjection.cc
+    GeoRectangularProjection.h   PolarStereographicProjection.h SatelliteProjection.h TaylorProjection.h
+    Proj4Projection.cc  Proj4Projection.h
+
+# unused
+
+
+ )
+
+
+list( APPEND _common_templates 
+    Factory.cc 
+    MagicsParameter.cc
+    TableDefinitionList.cc
+    TableDefinitionCompute.cc
+ )
+
+foreach( file ${_common_srcs} )
+  list( APPEND common_srcs common/${file} )
+endforeach()
+foreach( file ${_common_templates} )
+  list( APPEND common_templates common/${file} )
+endforeach()
+
+set( common_srcs ${common_srcs} PARENT_SCOPE )
+set( common_templates ${common_templates} PARENT_SCOPE )
+
+if ( ENABLE_METVIEW )
+	list (APPEND metview_include 
+				common/MagLog.h 
+				common/MagTranslator.h 
+				common/Factory.h 
+				common/Factory.cc 
+				common/Colour.h 
+				common/Tokenizer.h 
+				common/MagException.h 
+				common/ParameterManager.h
+				common/PaperPoint.h 
+				common/Matrix.h
+				common/BaseParameter.h
+				common/OutputHandler.h
+				common/OutputFactory.h
+				common/Layout.h
+				common/XmlNode.h 
+				common/Transformation.h
+				common/UserPoint.h
+				common/CustomisedPoint.h
+				common/XmlTree.h
+				common/XmlReader.h
+				common/RasterData.h
+				common/Decoder.h
+				common/Data.h
+				common/MatrixHandler.h
+				common/BasePointsHandler.h
+				common/Timer.h
+                common/DataStats.h
+                common/IntervalMap.h
+                common/GeoRectangularProjection.h
+                common/Text.h
+                common/Label.h
+                common/MagFont.h
+                common/Image.h
+                common/ImageProperties.h
+                common/ColourTable.h
+                common/ColourTableDefinition.h
+                common/PointsHandler.h
+				)
+	set( metview_include ${metview_include} PARENT_SCOPE )
+endif()
diff --git a/src/common/CartesianTransformation.cc b/src/common/CartesianTransformation.cc
index 4f14489..0c0391a 100644
--- a/src/common/CartesianTransformation.cc
+++ b/src/common/CartesianTransformation.cc
@@ -111,8 +111,8 @@ void CartesianTransformation::adjustXAxis(Layout& layout) const
 	
 	if (dataMaxX_ - dataMinX_ < 4 ) dataMaxX_ = dataMinX_ + 4;// this needs to be done with more care later!
 	// Should become a user option...
-	const_cast<CartesianTransformation*>(this)->x_->min(dataMinX_);
-	const_cast<CartesianTransformation*>(this)->x_->max(dataMaxX_);
+	const_cast<CartesianTransformation*>(this)->x_->minmax(dataMinX_, dataMaxX_);
+
 	
 	(*this)(layout);
 }
@@ -126,9 +126,9 @@ void CartesianTransformation::adjustYAxis(Layout& layout) const
 	MagLog::dev() << "CartesianTransformation::adjustYAxis()--->[" << dataMinY_ << ", " << dataMaxY_ << "]\n";
 	if (dataMaxY_ - dataMinY_ < 4) dataMaxY_ = dataMinY_ + 4; // this needs to be done with more care later!
 	// Should become a user option...
-	const_cast<CartesianTransformation*>(this)->y_->min(dataMinY_);
-	const_cast<CartesianTransformation*>(this)->y_->max(dataMaxY_);
+	const_cast<CartesianTransformation*>(this)->y_->minmax(dataMinY_, dataMaxY_);
 	const_cast<CartesianTransformation*>(this)->referenceY_ = dataReferenceY_;
+
 	(*this)(layout);
 	
 }
@@ -148,7 +148,7 @@ MAGICS_NO_EXPORT void CartesianTransformation::operator()(Layout& ) const
 }
 void CartesianTransformation::aspectRatio(double& width, double& height)
 {
-
+    init();
 	double w = getAbsoluteMaxPCX() - getAbsoluteMinPCX();
 	double h = getAbsoluteMaxPCY() - getAbsoluteMinPCY();
 	return;
@@ -240,3 +240,9 @@ void CartesianTransformation::setDefinition(const string& json)
 
 
 }
+void CartesianTransformation::reprojectComponents(double& x, double& y, pair<double, double>&) const
+{
+	fast_reproject(x, y);
+}
+
+
diff --git a/src/common/CartesianTransformation.h b/src/common/CartesianTransformation.h
index 4c5d6dd..15af735 100644
--- a/src/common/CartesianTransformation.h
+++ b/src/common/CartesianTransformation.h
@@ -47,6 +47,7 @@ public:
     void init() {
     	x_->set();
     	y_->set();
+    	Transformation::init();
     }
     virtual void toxml(ostream& out) const { CartesianTransformationAttributes::toxml(out); }
     virtual void set(const map<string, string>& map) { CartesianTransformationAttributes::set(map); }
@@ -57,7 +58,8 @@ public:
 	virtual double rx(double x) const { return (*x_).revert(x); }
 	virtual double ry(double y) const { return (*y_).revert(y); }
 	virtual void fast_reproject(double& x, double& y) const { x = (*x_)(x); y = (*y_)(y);  }
-	
+	void reprojectComponents(double& x, double& y, pair<double, double>&) const;
+
 	virtual PaperPoint operator()(const UserPoint& xy) const 
                  { return PaperPoint((*x_)(xy.x()), (*y_)(xy.y()),  xy.value()); }
 		
@@ -86,19 +88,17 @@ public:
 	double y(const string& val) const { return (*y_)(val); }
 
 	
-	virtual void setMinX(double x)   { x_->min(x); }
-	virtual void setMaxX(double x)   { x_->max(x); }
-	virtual void setMinY(double y)   { y_->min(y); }
-	virtual void setMaxY(double y)   { y_->max(y); }
+	virtual void setMinMaxX(double min, double max)   { x_->minmax(min, max); }
+	virtual void setMinMaxY(double min, double max)   { y_->minmax(min, max); }
+
 
     virtual const string& getReferenceX() const  { referenceX_ = x_->reference(); return referenceX_;}
     virtual const string& getReferenceY() const  { referenceY_ = y_->reference(); return referenceY_; }
 
 	
-	virtual void setDataMinX(double minx) const { x_->dataMin(minx); }
-	virtual void setDataMaxX(double maxx) const { x_->dataMax(maxx); }
-	virtual void setDataMinY(double miny) const { y_->dataMin(miny); }
-	virtual void setDataMaxY(double maxy) const { y_->dataMax(maxy); }
+	virtual void setDataMinMaxX(double min, double max) const { x_->dataMinMax(min, max); }
+	virtual void setDataMinMaxY(double min, double max) const { y_->dataMinMax(min, max); }
+
 	
 	vector<double> getDataVectorMinX() const  { return  x_->mins(); }
 	vector<double> getDataVectorMaxX() const { return  x_->maxs(); }
@@ -111,26 +111,16 @@ public:
 	void boxes() const;
 
 
-    virtual void setDataMinX(double minx, const string& ref) const { 
-    	dataMinX_ = std::min(minx, dataMinX_);
-    	x_->dataMin(dataMinX_, ref); 
+    virtual void setDataMinMaxX(double minx, double maxx, const string& ref) const {
+    	x_->dataMinMax(minx, maxx, ref);
     	referenceX_ = x_->reference();
     }
-	virtual void setDataMaxX(double maxx, const string& ref) const { 
-		dataMaxX_ = std::max(maxx, dataMaxX_);
-		x_->dataMax(dataMaxX_, ref); 
-		referenceX_ = x_->reference();
-	}
-	virtual void setDataMinY(double miny, const string& ref) const { 
-		dataMinY_ = std::min(miny, dataMinY_);
-		y_->dataMin(dataMinY_, ref); 
-		referenceY_ = y_->reference();
-	}
-	virtual void setDataMaxY(double maxy, const string& ref) const { 
-		dataMaxY_ = std::max(maxy, dataMaxY_);
-		y_->dataMax(dataMaxY_, ref); 
-		referenceY_ = y_->reference();
-	}; 
+    virtual void setDataMinMaxY(double min, double max, const string& ref) const {
+    	y_->dataMinMax(min, max, ref);
+    	referenceY_ = y_->reference();
+    }
+
+
 	virtual void setAutomaticX(bool automatic) { x_->automatic(automatic); }
 		virtual void setAutomaticY(bool automatic) { y_->automatic(automatic); }
 		virtual bool getAutomaticX() const { return  x_->automatic(); } 
diff --git a/src/common/Colour.cc b/src/common/Colour.cc
index 5288223..5cf8858 100644
--- a/src/common/Colour.cc
+++ b/src/common/Colour.cc
@@ -394,30 +394,32 @@ Rgb::Rgb(const string& name): red_(1.), green_(1.), blue_(1.),alpha_(1.)
   {
 	      in.ignore(name.length(), '(');
 	      in >> red_; 
-	      if (red_ <0 || red_>1) throw BadRgbFormat();
 
 	      in.ignore(name.length(), ',');
 	      if (in.eof()) throw BadRgbFormat();
 	      in >> green_;
-	      if (green_ <0 || green_>1) throw BadRgbFormat();
+
 	      in.ignore(name.length(), ',');
 	      if (in.eof()) throw BadRgbFormat();
-	      in >> blue_; 
-	      if (blue_ <0 || blue_>1) throw BadRgbFormat();
+	      in >> blue_;
+
+
   }
   else if (magCompare(token.str(), "rgba")) {
 	      in.ignore(name.length(), '(');
-	      in >> red_; 
-	      if (red_ <0 || red_>1) throw BadRgbFormat();
+	      in >> red_;
+
+
 
 	      in.ignore(name.length(), ',');
 	      if (in.eof()) throw BadRgbFormat();	    
 	      in >> green_;
-	      if (green_ <0 || green_>1) throw BadRgbFormat();
+
+
 	      in.ignore(name.length(), ',');
 	      if (in.eof()) throw BadRgbFormat();	    
 	      in >> blue_; 
-	      if (blue_ <0 || blue_>1) throw BadRgbFormat();
+
 	      in.ignore(name.length(), ',');
 	      if (in.eof()) throw BadRgbFormat();	    
 	      in >> alpha_; 
@@ -425,6 +427,16 @@ Rgb::Rgb(const string& name): red_(1.), green_(1.), blue_(1.),alpha_(1.)
     }
     else 
           throw BadRgbFormat();
+    if ( red_ > 1 || green_ > 1 || blue_ > 1) {
+    	// WE are using the second convention ( Colour defined between, 0 and 1)
+    	red_ = red_/256;
+
+    	green_ = green_/256;
+    	blue_ = blue_/256.;
+    }
+    if (red_ <0 || red_>1) throw BadRgbFormat();
+    if (green_ <0 || green_>1) throw BadRgbFormat();
+    if (blue_ <0 || blue_>1) throw BadRgbFormat();
 }
 
 
diff --git a/src/common/ColourTableDefinitionList.cc b/src/common/ColourTableDefinitionList.cc
index 0cc8dde..a4bfb9a 100644
--- a/src/common/ColourTableDefinitionList.cc
+++ b/src/common/ColourTableDefinitionList.cc
@@ -55,6 +55,7 @@ void ColourTableDefinitionList::print(ostream& out)  const
 void ColourTableDefinitionList::set(const ColourTableDefinitionListInterface& attributes)
 {
 	colours_ = attributes.getValues();
+
 }
 
 void ColourTableDefinitionList::set(const XmlNode& node)
@@ -89,8 +90,14 @@ void  ColourTableDefinitionList::set(ColourTable& table, int nb)
 	for ( int i = 0; i < nb-1; i++) {
         
 		if ( colour == colours_.end() ) {
-                MagLog::warning() << "List of colours not big enough: reuse the last colour!" << endl;
-				table.push_back(Colour(colours_.back()));
+				if (policy_ == M_LASTONE)
+					table.push_back(Colour(colours_.back()));
+				else {
+					colour = colours_.begin();
+					table.push_back(Colour(*colour));
+					colour++;
+				}
+
 			
 		}
 		else {
diff --git a/src/common/ColourTableDefinitionList.h b/src/common/ColourTableDefinitionList.h
index 0fe3bf8..30e94ee 100644
--- a/src/common/ColourTableDefinitionList.h
+++ b/src/common/ColourTableDefinitionList.h
@@ -56,6 +56,7 @@ protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
 	 mutable stringarray colours_;
+	 mutable ListPolicy policy_;
 
 private:
     //! Copy constructor - No copy allowed
diff --git a/src/common/Coordinate.cc b/src/common/Coordinate.cc
index c4fc2d4..cd8220e 100644
--- a/src/common/Coordinate.cc
+++ b/src/common/Coordinate.cc
@@ -34,8 +34,8 @@ using namespace magics;
 Coordinate::Coordinate() 
 {
 	if ( automatic() ) {
-		min(std::numeric_limits<double>::max());
-		max(-std::numeric_limits<double>::max());
+		minmax(std::numeric_limits<double>::max(), -std::numeric_limits<double>::max());
+
 	}
 
 }
diff --git a/src/common/Coordinate.h b/src/common/Coordinate.h
index b3b6905..284d36e 100644
--- a/src/common/Coordinate.h
+++ b/src/common/Coordinate.h
@@ -69,8 +69,7 @@ public:
     virtual vector<double> mins() { vector<double> vmin; vmin.push_back(min()); return vmin; }
     virtual string reference() { return ""; }
     
-    virtual void min(double) { }
-    virtual void max(double) { }
+
     
     virtual double operator()(double c) { return c; }
     virtual double revert(double c) { return c; }
@@ -92,23 +91,15 @@ public:
     virtual void toxml(ostream&) const {}
     virtual AxisAutomaticSetting automatic() { return m_off; }
     virtual void automatic(bool) {  }
+
     virtual double operator()(const string& val) const { return tonumber(val); }
     virtual string type() const { return "regular"; }
     
+    virtual void minmax(double max, double min) { assert(false); }
     
-    virtual void dataMin(double m) { 
-    	if ( automatic() == m_off || automatic()== m_max_only) return;
-//    	MagLog::dev()<< "new min-->" << m << "< " << min() << ???" << endl;  
-    	if (min() > m) min(m); 
-    }
-    virtual void dataMax(double m) { 
-    	if ( automatic()== m_off || automatic() == m_min_only) return;
-//   	MagLog::dev()<< "new max-->" << m << endl; 
-//    	MagLog::dev()<< "new max-->" << m << "> " << max() << "???" << endl;  
-    	if (  max() < m ) max(m); 
-    }
-    virtual void dataMin(double m, const string&) { if (min() > m) dataMin(m); }
-    virtual void dataMax(double m, const string&) { if (max() < m)dataMax(m); }    
+    virtual void dataMinMax(double min, double max) = 0;
+    virtual void dataMinMax(double min, double max, const string&) = 0;
+
     virtual void setAutomatic(AxisAutomaticSetting) {}
     virtual void getNewDefinition(const UserPoint&, const UserPoint&, map<string, string>&) const
     {}
@@ -146,7 +137,7 @@ public:
 	void print(ostream& out) const {  }
     virtual AxisAutomaticSetting automatic() { return m_off; }
     virtual void automatic(bool val) {  }
-    bool accept(const string& tag) { }
+    bool accept(const string& tag) { return false; }
     //! Overloaded << operator to call print().
 	friend ostream& operator<<(ostream& s,const XCoordinate& p)
 		{ p.print(s); return s; }
@@ -157,6 +148,8 @@ public:
 		def["x_max"]= tostring(ur.x_);
 		def["x_automatic"]= "off";
 	}
+	virtual void dataMinMax(double min, double max) { minmax(min, max); }
+    virtual void dataMinMax(double min, double max, const string&) {  minmax(min, max); }
 };
 
 class YCoordinate : public Coordinate
@@ -186,6 +179,8 @@ public:
 			def["y_max"]= tostring(ur.y_);
 			def["y_automatic"]= "off";
 		}
+	virtual void dataMinMax(double min, double max) { minmax(min, max); }
+	virtual void dataMinMax(double min, double max, const string&) {  minmax(min, max); }
 };
 
 class RegularCoordinate 
@@ -206,8 +201,14 @@ public:
 	void set() {
 		switch ( automatic_ ) {
 			case m_both:
-				min_ = std::numeric_limits<double>::max();
-				max_ = -min_;
+				if (reverse_) {
+					max_ = std::numeric_limits<double>::max();
+					min_ = -max_;
+				}
+				else {
+					min_ = std::numeric_limits<double>::max();
+					max_ = -min_;
+				}
 				break;
 			case m_min_only:
 				min_ = std::numeric_limits<double>::max();
@@ -238,27 +239,35 @@ public:
     virtual void setAutomatic(AxisAutomaticSetting automatic) { automatic_ = automatic; }
     virtual void  automatic(bool automatic) { automatic_ = automatic?m_both:m_off; set(); }
 
-    void min(double m) {
-      	switch ( automatic_ ) {
-      					case m_both:
-      					case m_min_only:
-      						min_ = std::min(min_, m);
-      						break;
-      					default:
-      						break;
-      				}
-      }
-      void max(double m) {
-      	switch ( automatic_ ) {
-      		case m_both:
-      		case m_max_only:
-      			max_ = std::max(max_, m);
-      			break;
-      		default:
-      			break;
-      	}
-      }
-    
+    void minmax(double min, double max) {
+    	switch ( automatic_ ) {
+    	    	case m_both:
+    	    		// set the
+    	    		if ( reverse_ ) {
+    	    			max_ = std::min(min, max_);
+    	    			min_ = std::max(max, min_);
+    	    		}
+    	    		else {
+    	    			min_ = std::min(min, min_);
+    	    			max_ = std::max(max, max_);
+    	    		}
+    	    		break;
+    	    	case m_min_only:
+    	    		if ( reverse_ )
+    	    			max_ = std::min(min, max_);
+    	    		else
+    	    			min_ = std::min(min, min_);
+    	    		break;
+    	    	case m_max_only:
+    	    		if ( reverse_ )
+    	    			min_ = std::max(max, min_);
+    	    		else
+    	    			max_ = std::max(max, max_);
+    	    		break;
+    	    	default:
+    	    		break;
+    	    	}
+       }
     virtual XCoordinate* clone() const {
     	XRegularCoordinate* x = new XRegularCoordinate();
     	x->copy(*this);
@@ -288,13 +297,21 @@ public:
 	void set() {
 		switch ( automatic_ ) {
 				case m_both:
-					min_ = std::numeric_limits<double>::max();
-					max_ = -min_;
+					if (reverse_) {
+						max_ = std::numeric_limits<double>::max();
+						min_ = -max_;
+					}
+					else {
+						min_ = std::numeric_limits<double>::max();
+						max_ = -min_;
+					}
 					break;
 				case m_min_only:
+
 					min_ = std::numeric_limits<double>::max();
 					break;
 				case m_max_only:
+
 					max_ = -std::numeric_limits<double>::max();
 					break;
 				default:
@@ -306,25 +323,34 @@ public:
     double minpc() { return min_; }
     double maxpc() { return max_; }
     virtual void setAutomatic(AxisAutomaticSetting automatic) { automatic_ = automatic; set(); }
-    void min(double m) {
-    	switch ( automatic_ ) {
-    					case m_both:
-    					case m_min_only:
-    						min_ = std::min(m, min_);
-    						break;
-    					default:
-    						break;
-    				}
-    }
-    void max(double m) {
+    void minmax(double min, double max) {
     	switch ( automatic_ ) {
-    		case m_both:
-    		case m_max_only:
-    			max_ = std::max(m, max_);
-    			break;
-    		default:
-    			break;
-    	}
+    	    	case m_both:
+    	    		// set the
+    	    		if ( reverse_ ) {
+    	    			max_ = std::min(min, max_);
+    	    			min_ = std::max(max, min_);
+    	    		}
+    	    		else {
+    	    			min_ = std::min(min, min_);
+    	    			max_ = std::max(max, max_);
+    	    		}
+    	    		break;
+    	    	case m_min_only:
+    	    		if ( reverse_ )
+    	    			max_ = std::min(min, max_);
+    	    		else
+    	    			min_ = std::min(min, min_);
+    	    		break;
+    	    	case m_max_only:
+    	    		if ( reverse_ )
+    	    			min_ = std::max(max, min_);
+    	    		else
+    	    			max_ = std::max(max, max_);
+    	    		break;
+    	    	default:
+    	    		break;
+    	    	}
     }
 
     virtual void automatic(bool automatic) { automatic_ = automatic?m_both:m_off; set();}
@@ -383,39 +409,56 @@ public:
     void set() {
     		switch ( automatic_ ) {
     				case m_both:
-    					min_ = std::numeric_limits<double>::max();
-    					max_ = -min_;
+						if (reverse_) {
+							max_ = std::numeric_limits<double>::max();
+							min_ = -max_;
+						}
+						else {
+							min_ = std::numeric_limits<double>::max();
+							max_ = -min_;
+						}
     					break;
     				case m_min_only:
+    					automatic_ = m_off;
     					min_ = std::numeric_limits<double>::max();
     					break;
     				case m_max_only:
+    					automatic_ = m_off;
     					max_ = -std::numeric_limits<double>::max();
     					break;
     				default:
     					break;
     			}
     	}
-    void min(double m) {
+    void minmax(double min, double max) {
     	switch ( automatic_ ) {
-    					case m_both:
-    					case m_min_only:
-    						min_ =std::min(m, min_);
-    						break;
-    					default:
-    						break;
-    				}
-    }
-    void max(double m) {
-    	switch ( automatic_ ) {
-    		case m_both:
-    		case m_max_only:
-    			max_ = std::max(m, max_);
-    			break;
-    		default:
-    			break;
-    	}
-    }
+    	    	case m_both:
+    	    		// set the
+    	    		if ( reverse_ ) {
+    	    			max_ = std::min(min, max_);
+    	    			min_ = std::max(max, min_);
+    	    		}
+    	    		else {
+    	    			min_ = std::min(min, min_);
+    	    			max_ = std::max(max, max_);
+    	    		}
+    	    		break;
+    	    	case m_min_only:
+    	    		if ( reverse_ )
+    	    			max_ = std::min(min, max_);
+    	    		else
+    	    			min_ = std::min(min, min_);
+    	    		break;
+    	    	case m_max_only:
+    	    		if ( reverse_ )
+    	    			min_ = std::max(max, min_);
+    	    		else
+    	    			max_ = std::max(max, max_);
+    	    		break;
+    	    	default:
+    	    		break;
+    	    	}
+       }
 
     double operator()(double c ) { return (c) ? log10(c) :0 ; }
     double revert(double c ) { return pow(c, 10); }
@@ -434,6 +477,9 @@ public:
 		def["x_max"]= tostring( ur.x_);
 		def["x_automatic"]= "off";
     }
+
+    virtual void dataMinMax(double min, double max) { assert(false); }
+        virtual void dataMinMax(double min, double max, const string&) { assert(false); }
     AxisAutomaticSetting automatic() { return automatic_; }
     virtual void automatic(bool automatic) { automatic_ = (automatic?m_both:m_off);}
     virtual void setAutomatic(AxisAutomaticSetting automatic) { automatic_ = automatic; }
@@ -466,8 +512,14 @@ public:
 	void set() {
 		switch ( automatic_ ) {
 				case m_both:
-					min_ = std::numeric_limits<double>::max();
-					max_ = -min_;
+					if (reverse_) {
+						max_ = std::numeric_limits<double>::max();
+						min_ = -max_;
+					}
+					else {
+						min_ = std::numeric_limits<double>::max();
+						max_ = -min_;
+					}
 					break;
 				case m_min_only:
 					min_ = std::numeric_limits<double>::max();
@@ -483,40 +535,50 @@ public:
     double max() { return max_; }
     double minpc() { return (*this)(min_); }
     double maxpc() { return (*this)(max_); }
-
-    void min(double m) {
-    	switch ( automatic_ ) {
-    					case m_both:
-    					case m_min_only:
-    						min_  =std::min(m, min_);;
-    						break;
-    					default:
-    						break;
-    				}
-    }
-    void max(double m) {
-    	switch ( automatic_ ) {
-    		case m_both:
-    		case m_max_only:
-    			max_ = std::max(m, max_);;
-    			break;
-    		default:
-    			break;
-    	}
-    }
+    virtual void dataMinMax(double min, double max) { assert(false); }
+        virtual void dataMinMax(double min, double max, const string&) { assert(false); }
+        void minmax(double min, double max) {
+        	switch ( automatic_ ) {
+        	    	case m_both:
+        	    		// set the
+        	    		if ( reverse_ ) {
+        	    			max_ = std::min(min, max_);
+        	    			min_ = std::max(max, min_);
+        	    		}
+        	    		else {
+        	    			min_ = std::min(min, min_);
+        	    			max_ = std::max(max, max_);
+        	    		}
+        	    		break;
+        	    	case m_min_only:
+        	    		if ( reverse_ )
+        	    			max_ = std::min(min, max_);
+        	    		else
+        	    			min_ = std::min(min, min_);
+        	    		break;
+        	    	case m_max_only:
+        	    		if ( reverse_ )
+        	    			min_ = std::max(max, min_);
+        	    		else
+        	    			max_ = std::max(max, max_);
+        	    		break;
+        	    	default:
+        	    		break;
+        	    	}
+           }
     void getNewDefinition(const UserPoint& ll, const UserPoint& ur, map<string, string>& def) const
     {
     	def["y_axis_type"]= "logarithmic";
-    	def["y_min"]= tostring(exp10(ll.y_));
-    	def["y_max"]= tostring(exp10(ur.y_));
+        def["y_min"]= tostring(::pow(10.,ll.y_));
+        def["y_max"]= tostring(::pow(10.,ur.y_));
 		def["y_automatic"]= "off";
     }
     AxisAutomaticSetting automatic() { return automatic_; }
     
-    void setMin(double min) { min_ = min; }
-    void setMax(double max) { max_ = max; }
+    void setMinMax(double min, double max) { min_ = min; max_ = max; }
+
     double operator()(double c ) {  return (c) ? log10(c) :0 ; }
-    double revert(double c ) { return exp10(c); }
+    double revert(double c ) { return ::pow(10.,c); }
     virtual YCoordinate* clone() const {
     	YLogarithmicCoordinate* y = new YLogarithmicCoordinate();
     	y->copy(*this);
@@ -577,36 +639,55 @@ public:
     void automatic(bool automatic) { automatic_ = (automatic?m_both:m_off); }
     virtual void setAutomatic(AxisAutomaticSetting automatic) { automatic_ = (automatic); }
     
-    void setMin(const string& min) { date_min_ = min; }
-    void setMax(const string& max) { date_max_ = max;}
+    void setMinMax(const string& min, const string& max ) { date_min_ = min;  date_max_ = max; }
+
     
-    void dataMin(double min, const string& date) { 
-    	switch ( automatic_ ) {
-    		case m_both:
-    		case m_min_only: {
-    			DateTime newmin(date);
-    			newmin = newmin + Second(min);
-    			date_min_ = string(newmin);
-    			break;
-    		}
-    		default:
-    			break;
-    	}
 
-    }
-    void dataMax(double max, const string& date) { 
-    	switch ( automatic_ ) {
-			case m_both:
-			case m_max_only: {
-				DateTime newmax(date);
-				newmax = newmax + Second(max);
-				date_max_ = string(newmax);
-				break;
-			}
-			default:
-				break;
-		}
-    } 
+    void dataMinMax(double min, double max, const string& date) {
+    			DateTime base(date);
+    			DateTime mind =  base + Second(min);
+    			DateTime maxd =  base + Second(max);
+    			if ( date_min_.empty() )
+    				date_min_ = string(mind);
+    			if ( date_max_.empty() )
+    			    date_max_ = string(maxd);
+    			DateTime mind_(date_min_);
+    			DateTime maxd_(date_max_);
+
+    			switch ( automatic_ ) {
+    			    	case m_both:
+    			    		// set the
+    			    		if ( reverse_ ) {
+    			    			maxd_ = std::min(mind, maxd_);
+    			    			mind_ = std::max(maxd, mind_);
+    			    		}
+    			    		else {
+    			    			mind_ = std::min(mind, mind_);
+    			    			maxd_ = std::max(maxd, maxd_);
+    			    		}
+    			    		break;
+    			    	case m_min_only:
+    			    		if ( reverse_ )
+    			    			maxd_ = std::min(mind, maxd_);
+    			    		else
+    			    			mind_ = std::min(mind, mind_);
+    			    		break;
+    			    	case m_max_only:
+    			    		if ( reverse_ )
+    			    			mind_ = std::max(maxd, mind_);
+    			    		else
+    			    			maxd_ = std::max(maxd, maxd_);
+    			    		break;
+    			    	default:
+    			    		break;
+    			    	}
+    			date_max_ = string(maxd_);
+    			date_min_ = string(mind_);
+    	    }
+
+
+
+
      
     double operator()(double c ) { return c; }
     
@@ -664,44 +745,65 @@ public:
     }
     AxisAutomaticSetting automatic() { return automatic_ ? m_both:  m_off; }
     
-    void setMin(double) { }
-    void setMax(double) { }
+    void setMinMax(double, double) { }
+
     
-    void setMin(const string& min) { date_min_ = min; }
-    void setMax(const string& max) { date_max_ = max;}
+    void setMinMax(const string& min, const string& max) { date_min_ = min; date_max_ = max;}
+
     
     double operator()(double c ) { return c; }
     double operator()(const string& val) const  { 
     	DateTime date(val); 
     	return date -  DateTime(date_min_);
     }
-    void dataMin(double min, const string& date) { 
-        	switch ( automatic_ ) {
-        		case m_both:
-        		case m_min_only: {
-        			DateTime newmin(date);
-        			newmin = newmin + Second(min);
-        			setMin(string(newmin));
-        			break;
-        		}
-        		default:
-        			break;
-        	}
 
-        }
-        void dataMax(double max, const string& date) {
-        	switch ( automatic_ ) {
-    			case m_both:
-    			case m_max_only: {
-    				DateTime newmax(date);
-    				newmax = newmax + Second(max);
-    				setMax(string(newmax));
-    				break;
-    			}
-    			default:
-    				break;
-    		}
-        }
+    	 void dataMinMax(double min, double max, const string& date) {
+    	    			DateTime base(date);
+    	    			DateTime mind =  base + Second(min);
+    	    			DateTime maxd =  base + Second(max);
+    	    			if ( date_min_.empty() )
+    	    				date_min_ = string(mind);
+    	    			if ( date_max_.empty() )
+    	    			    date_max_ = string(maxd);
+    	    			DateTime mind_(date_min_);
+    	    			DateTime maxd_(date_max_);
+
+    	    			switch ( automatic_ ) {
+    	    			    	case m_both:
+    	    			    		// set the
+    	    			    		if ( reverse_ ) {
+    	    			    			maxd_ = std::min(mind, maxd_);
+    	    			    			mind_ = std::max(maxd, mind_);
+    	    			    		}
+    	    			    		else {
+    	    			    			mind_ = std::min(mind, mind_);
+    	    			    			maxd_ = std::max(maxd, maxd_);
+    	    			    		}
+    	    			    		break;
+    	    			    	case m_min_only:
+    	    			    		if ( reverse_ )
+    	    			    			maxd_ = std::min(mind, maxd_);
+    	    			    		else
+    	    			    			mind_ = std::min(mind, mind_);
+    	    			    		break;
+    	    			    	case m_max_only:
+    	    			    		if ( reverse_ )
+    	    			    			mind_ = std::max(maxd, mind_);
+    	    			    		else
+    	    			    			maxd_ = std::max(maxd, maxd_);
+    	    			    		break;
+    	    			    	default:
+    	    			    		break;
+    	    			    	}
+    	    			date_max_ = string(maxd_);
+    	    			date_min_ = string(mind_);
+    	    	    }
+
+
+
+
+
+
         void getNewDefinition(const UserPoint& ll, const UserPoint& ur, map<string, string>& def) const
         {
         	DateTime min = DateTime(date_min_) + Second(ll.y_);
@@ -724,10 +826,10 @@ class YHyperCoordinate : public YHyperCoordinateAttributes, public YCoordinate
 public:
 	YHyperCoordinate() {}
 	virtual ~YHyperCoordinate() {}
-	double min()   { return min_lon_; }
-    double max()   { return max_lon_; }
-    double minpc()     { return min_lon_; }
-    double maxpc()     { return max_lon_; }
+	double min()   { return  (min_lon_ == max_lon_ ) ?  min_lat_ : min_lon_; }
+	double max()   { return  (min_lon_ == max_lon_ ) ?  max_lat_ : max_lon_; }
+	double minpc()     { return (min_lon_ == max_lon_ ) ?  min_lat_ : min_lon_; }
+	double maxpc()     { return  (min_lon_ == max_lon_ ) ?  max_lat_ : max_lon_;  }
     string reference() { return ""; }
     void toxml(ostream& out) const { YHyperCoordinateAttributes::toxml(out); }
      bool accept(const string& xml) { return YHyperCoordinateAttributes::accept(xml); }
@@ -743,8 +845,8 @@ public:
     }
     AxisAutomaticSetting automatic() { return automatic_ ; }
     
-    void setMin(double) { }
-    void setMax(double) { }
+    void setMinMax(double, double) { }
+
     
     vector<double> mins() { vector<double> mins; mins.push_back(min_lon_); mins.push_back(min_lat_);  return mins; }
      vector<double> maxs() {  vector<double> maxs; maxs.push_back(max_lon_); maxs.push_back(max_lat_);  return maxs; }
@@ -762,7 +864,8 @@ public:
 		def["y_max_latitude"]= tostring(lat2);
 		def["y_min_longitude"]= tostring(lon1);
 		def["y_max_longitude"]= tostring(lon2);
-     }void dataMin(double min, const string& info) {
+     }
+     void dataMinMax(double min, double max, const string& info) {
 
     	 //interpret the info : lonmin/latmin
     	 Tokenizer tokenizer("/");
@@ -770,33 +873,50 @@ public:
     	 tokenizer(info, tokens);
             	switch ( automatic_ ) {
             		case m_both:
+
             		case m_min_only: {
-            			min_lon_ = tonumber(tokens[0]);
-            			min_lat_ = tonumber(tokens[1]);
+
+            			if (reverse_) {
+            				max_lon_ = tonumber(tokens[0]);
+            				max_lat_ = tonumber(tokens[1]);
+            			}
+            			else {
+            				min_lon_ = tonumber(tokens[0]);
+            				min_lat_ = tonumber(tokens[1]);
+            			}
             			break;
             		}
             		default:
             			break;
             	}
+            	automatic_ = (automatic_ == m_both) ? m_max_only : m_off;
+
 
-            }
-            void dataMax(double max, const string& info) {
 
             	//interpret the info : lonmin/latmin
-            	Tokenizer tokenizer("/");
-            	vector<string> tokens;
+
+            	tokens.clear();
             	tokenizer(info, tokens);
             	switch ( automatic_ ) {
         			case m_both:
         			case m_max_only: {
-        				max_lon_ = tonumber(tokens[0]);
-        				max_lat_ = tonumber(tokens[1]);
+        				if (reverse_) {
+        					min_lon_ = tonumber(tokens[2]);
+        					min_lat_ = tonumber(tokens[3]);
+        				}
+        				else {
+        					max_lon_ = tonumber(tokens[2]);
+        					max_lat_ = tonumber(tokens[3]);
+        				}
+
         				break;
         			}
         			default:
         				break;
         		}
+            	 automatic_ = (automatic_ == m_both) ? m_min_only : m_off;
             }
+
 protected:
 	virtual void print(ostream& out) const  {
 		YHyperCoordinateAttributes::print(out);
@@ -808,10 +928,10 @@ class XHyperCoordinate : public XHyperCoordinateAttributes, public XCoordinate
 public:
 	XHyperCoordinate() {}
 	virtual ~XHyperCoordinate() {}
-	double min()   { return min_lon_; }
-    double max()   { return max_lon_; }
-    double minpc()     { return min_lon_; }
-    double maxpc()     { return max_lon_; }
+	double min()   { return  (min_lon_ == max_lon_ ) ?  min_lat_ : min_lon_; }
+	double max()   { return  (min_lon_ == max_lon_ ) ?  max_lat_ : max_lon_; }
+	double minpc()     { return (min_lon_ == max_lon_ ) ?  min_lat_ : min_lon_; }
+	double maxpc()     { return  (min_lon_ == max_lon_ ) ?  max_lat_ : max_lon_;  }
     string reference() { return ""; }
     void toxml(ostream& out) const { XHyperCoordinateAttributes::toxml(out); }
      bool accept(const string& xml) { return XHyperCoordinateAttributes::accept(xml); }
@@ -829,11 +949,11 @@ public:
     }
     AxisAutomaticSetting automatic() { return automatic_ ? m_both:  m_off; }
     
-    void setMin(double) { }
-    void setMax(double) { }
+    void setMinMax(double, double) { }
+
     
      string type() const { return "geoline"; }
-     void dataMin(double min, const string& info) {
+     void dataMinMax(double min, double max,  const string& info) {
 
     	 //interpret the info : lonmin/latmin
     	 Tokenizer tokenizer("/");
@@ -842,31 +962,42 @@ public:
             	switch ( automatic_ ) {
             		case m_both:
             		case m_min_only: {
-            			min_lon_ = tonumber(tokens[0]);
-            			min_lat_ = tonumber(tokens[1]);
+            			if (reverse_) {
+            				max_lon_ = tonumber(tokens[0]);
+            				max_lat_ = tonumber(tokens[1]);
+            			}
+            			else {
+            				min_lon_ = tonumber(tokens[0]);
+            				min_lat_ = tonumber(tokens[1]);
+            			}
             			break;
             		}
             		default:
             			break;
             	}
 
-            }
-            void dataMax(double max, const string& info) {
+            	automatic_ = (automatic_ == m_both) ? m_max_only : m_off;
 
             	//interpret the info : lonmin/latmin
-            	Tokenizer tokenizer("/");
-            	vector<string> tokens;
-            	tokenizer(info, tokens);
+
             	switch ( automatic_ ) {
-        			case m_both:
-        			case m_max_only: {
-        				max_lon_ = tonumber(tokens[0]);
-        				max_lat_ = tonumber(tokens[1]);
-        				break;
-        			}
-        			default:
-        				break;
-        		}
+            	case m_both:
+            	case m_max_only: {
+            		if (reverse_) {
+            			min_lon_ = tonumber(tokens[2]);
+            			min_lat_ = tonumber(tokens[3]);
+            		}
+            		else {
+            			max_lon_ = tonumber(tokens[2]);
+            			max_lat_ = tonumber(tokens[3]);
+            		}
+
+
+            	}
+            	default:
+            		break;
+            	}
+            	automatic_ = (automatic_ == m_both) ? m_min_only : m_off;
             }
             void getNewDefinition(const UserPoint& ll, const UserPoint& ur, map<string, string>& def) const
             {
diff --git a/src/common/Data.cc b/src/common/Data.cc
index 885b082..738961b 100644
--- a/src/common/Data.cc
+++ b/src/common/Data.cc
@@ -129,4 +129,36 @@ void Data::computeStats()
 }
 
 int Data::uniqueOwnerId_ = 0;
+DataList::DataList()
+{
+	current_ = data_.begin();
+}
+DataList::~DataList()
+{
+
+}
 
+void DataList::setToFirst()
+{
+	current_ = data_.begin();
+}
+
+Data* DataList::current()
+{
+	return *current_;
+}
+
+bool DataList::hasMore()
+{
+	return ( current_ != data_.end() );
+}
+
+void DataList::next()
+{
+	++current_;
+}
+
+void DataList::add(Data* data)
+{
+	data_.push_back(data);
+}
diff --git a/src/common/Data.h b/src/common/Data.h
index 83599b6..b77afa7 100644
--- a/src/common/Data.h
+++ b/src/common/Data.h
@@ -72,13 +72,13 @@ public:
 class Data: public MetviewIcon{
 
 public:
-	Data(): name_("no_name"), binning_(0), dimension_(1) {}
+	Data(): name_("no_name"), binning_(0), dimension_(1), valid_(true) {}
 	virtual ~Data() { if ( binning_ ) delete binning_; }
     //! Method to access the data as a matrix Used by pcont action routine
     virtual MatrixHandler& matrix() { throw MethodNotYetImplemented("Data::matrix"); }
     virtual MatrixHandler& matrix(const Transformation&) { throw MethodNotYetImplemented("Data::matrix"); }
-    
-
+    virtual MatrixHandler& norm() { throw MethodNotYetImplemented("Data::norm"); }
+    virtual MatrixHandler& direction() { throw MethodNotYetImplemented("Data::norm"); }
     void binning(BinningObject* binning) { binning_ = binning; }
 
   
@@ -125,6 +125,7 @@ public:
     	layer.name(name());
     	layer.valid(from(), to());
     }
+   bool valid() { return valid_; }
     virtual void visit(MetaDataCollector& collector)  {MetviewIcon::visit(collector);}  
     virtual void visit(ValuesCollector&) {}
     virtual void visit(DataIndexCollector& dc) {dc.setDataIndex(dataIndex_);} 
@@ -150,6 +151,7 @@ public:
     virtual const LevelDescription& level()  { return dataLevel_; }
  virtual string legendText(double,double) {return string();}
  	 int dimension() const { return dimension_; }
+ 	 void dimension(int dim ) { dimension_ = dim; }
  	 void index(int i ) { index_ = i; }
  	 static int getUniqueOwnerId() {
  		uniqueOwnerId_++;
@@ -158,6 +160,7 @@ public:
 protected:
      int dimension_;
      int index_;
+     bool valid_;
      static int uniqueOwnerId_; // Metview usage for overlay control
 
  	 DateDescription timeStamp_;
@@ -218,6 +221,21 @@ public:
 	virtual void visit(Transformation&) {}
 	void visit(Layer& layer) { MetviewIcon::visit(layer); }
 };
+
+class DataList : public DataLoop
+{
+public:
+	DataList();
+	~DataList();
+	void setToFirst();
+	Data* current();
+	bool hasMore();
+	void next();
+	void add(Data*);
+protected:
+	vector<Data*>::iterator current_;
+	vector<Data*> data_;
+};
 } // namespace magics
 
 
diff --git a/src/common/Factory.cc b/src/common/Factory.cc
index f044662..939f24a 100644
--- a/src/common/Factory.cc
+++ b/src/common/Factory.cc
@@ -27,6 +27,7 @@
     
 */
 
+#include "MagLog.h"
 using namespace magics;
 using namespace std;   // to run on AIX
 
@@ -65,6 +66,7 @@ B* SimpleFactory<B>::create(const string& name)
 #ifdef MAGICS_EXCEPTION
 	throw NoFactoryException(name);
 #else 
+    MagLog::info() << "SimpleFactory: Failed to create an object named '" << name << "'" << endl;
 	return 0;
 #endif	
 } 
@@ -81,6 +83,7 @@ SimpleFactory<B>* SimpleFactory<B>::get(const string& name)
 #ifdef MAGICS_EXCEPTION
 	throw NoFactoryException(name);
 #else 
+    MagLog::info() << "SimpleFactory: Failed to get an object named '" << name << "'" << endl;
 	return 0;
 #endif
 }
diff --git a/src/common/FortranRootSceneNodeAttributes.h b/src/common/FortranRootSceneNodeAttributes.h
deleted file mode 100644
index 56e06dc..0000000
--- a/src/common/FortranRootSceneNodeAttributes.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file FortranRootSceneNodeAttributes.h
-    \brief Definition of FortranRootSceneNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef FortranRootSceneNodeAttributes_H
-#define FortranRootSceneNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class FortranRootSceneNodeAttributes 
-{
-public:
-//  --  constructor
-    FortranRootSceneNodeAttributes();
-    
-//  --  destructor
-    virtual ~FortranRootSceneNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const FortranRootSceneNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double width_;
-	double height_;
-	bool frame_;
-	auto_ptr<Colour> colour_;
-	LineStyle style_;
-	int thickness_;
-	string plot_layout_;
-	string plot_start_;
-	string plot_direction_;
-	bool legend_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const FortranRootSceneNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/FortranSceneNodeAttributes.h b/src/common/FortranSceneNodeAttributes.h
deleted file mode 100644
index a367dac..0000000
--- a/src/common/FortranSceneNodeAttributes.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file FortranSceneNodeAttributes.h
-    \brief Definition of FortranSceneNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef FortranSceneNodeAttributes_H
-#define FortranSceneNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "PageID.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class FortranSceneNodeAttributes 
-{
-public:
-//  --  constructor
-    FortranSceneNodeAttributes();
-    
-//  --  destructor
-    virtual ~FortranSceneNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const FortranSceneNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double x_;
-	double y_;
-	double width_;
-	double height_;
-	bool frame_;
-	auto_ptr<Colour> frame_colour_;
-	LineStyle frame_line_style_;
-	int frame_thickness_;
-	auto_ptr<NoPageID> page_id_;
-	string plot_layout_;
-	string plot_start_;
-	string plot_direction_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const FortranSceneNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/FortranViewNodeAttributes.h b/src/common/FortranViewNodeAttributes.h
deleted file mode 100644
index 427218b..0000000
--- a/src/common/FortranViewNodeAttributes.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file FortranViewNodeAttributes.h
-    \brief Definition of FortranViewNode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:27 2013
-*/
-   
-
-#ifndef FortranViewNodeAttributes_H
-#define FortranViewNodeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "PreviewVisitor.h"
-#include "Transformation.h"
-#include "MagnifierVisitor.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class FortranViewNodeAttributes 
-{
-public:
-//  --  constructor
-    FortranViewNodeAttributes();
-    
-//  --  destructor
-    virtual ~FortranViewNodeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const FortranViewNodeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string vertical_;
-	string horizontal_;
-	double top_;
-	double bottom_;
-	double left_;
-	double bottom_internal_;
-	double left_internal_;
-	double right_;
-	double width_;
-	double height_;
-	double height_internal_;
-	double width_internal_;
-	auto_ptr<Colour> background_;
-	bool frame_;
-	auto_ptr<Colour> frame_colour_;
-	LineStyle frame_line_style_;
-	int frame_thickness_;
-	double vertical_axis_with_;
-	double horizontal_axis_height_;
-	string overlay_;
-	auto_ptr<Transformation> transformation_;
-	string json_;
-	bool title_;
-	auto_ptr<NoPreviewVisitor> preview_;
-	auto_ptr<NoMagnifierVisitor> magnify_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const FortranViewNodeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/Frame.cc b/src/common/Frame.cc
new file mode 100644
index 0000000..ea31f0e
--- /dev/null
+++ b/src/common/Frame.cc
@@ -0,0 +1,94 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Frame.h
+    \brief Implementation of the Template class Frame.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Mon 29-Mar-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "Frame.h"
+#include "Polyline.h"
+#include "PaperPoint.h"
+
+using namespace magics;
+
+Frame::Frame() 
+{
+}
+
+
+Frame::~Frame() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void Frame::print(ostream& out)  const
+{
+	out << "Frame[";
+	FrameAttributes::print(out);
+	out << "]";
+}
+
+void NoFrame::print(ostream& out)  const
+{
+	out << "NoFrame[]";
+
+}
+
+void Frame::set(Polyline& frame)
+{
+	frame.setColour(*colour_);
+    frame.setLineStyle(style_);
+    frame.setThickness(thickness_);
+}
+
+void Frame::blank(Polyline& frame)
+{
+	
+	//if (blanking_) {
+		FillShadingProperties* shading = new FillShadingProperties();        
+        shading->left_      = Colour("BACKGROUND");
+        shading->right_     = *colour_;
+        frame.setShading(shading);
+        frame.setFilled(true);   
+        frame.setColour(*colour_);
+        frame.setFillColour(Colour("BACKGROUND"));
+	//}
+	
+    
+}
+
+FrameBase* Frame::clone() const
+{
+	Frame* frame = new Frame();
+	
+	frame->copy(*this);
+    return frame;
+}
+
+
diff --git a/src/common/FrameLoop.cc b/src/common/FrameLoop.cc
new file mode 100644
index 0000000..839058e
--- /dev/null
+++ b/src/common/FrameLoop.cc
@@ -0,0 +1,232 @@
+/*! \file FrameLoop.cc
+    \brief Implementation of the Template class FrameLoop.
+    
+    Magics Team - ECMWF 2008
+    
+    Started: Fri 29-Aug-2008
+    
+    Changes:
+    
+*/
+
+
+
+#include "FrameLoop.h"
+#include "BaseDriver.h"
+#include "Text.h"
+#include "PaperPoint.h"
+using namespace magics;
+
+FrameLoop::FrameLoop() 
+{
+	//concept_ = true;
+}
+
+
+FrameLoop::~FrameLoop() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void FrameLoop::print(ostream& out)  const
+{
+	out << "FrameLoop[" << size() << "entries";
+	out << "]";
+}
+
+FrameEntry::FrameEntry() 
+{
+	static int index = 0;
+	ostringstream name;
+	
+	name << "frame" << index++;
+	name_ = name.str();
+	label_ =  name.str();
+	Text* text = new Text(LayerManager::layer(name_), "drawing_area");
+	text->setText(name_);
+	text->push_back(PaperPoint(0,0));
+	//GraphicsList::push_back(text);
+	
+}
+
+
+FrameEntry::~FrameEntry() 
+{
+}
+
+void FrameEntry::visit(AnimationRules& rules) {
+	MagLog::dev() << "Animation Rules to be applied -->" << rules <<endl;
+	rules.callback(*this);
+}
+void  FrameEntry::tag(AnimationRules& rules)
+{
+	BasicSceneObject::visit(rules);
+}
+
+void FrameEntry::animate(AsIsAnimationRules& rules) 
+{
+	AnimationStep* step = rules.step(index_);
+	step->push_back(this);	
+}
+
+void FrameEntry::execute(const BaseDriver& driver) 
+{
+// Prepare the graphics list! 
+   if ( GraphicsList::empty() )
+	BasicSceneObject::visit(*this);
+	
+   MagLog::dev() << "FrameEntry::execute()-->" <<*this << "[" << GraphicsList::size() << "]"<< endl;
+   
+   for (iterator object =begin(); object!=end();++object)
+	   	(*object)->redisplay(driver);
+}
+/*!
+ Class information are given to the output-stream.
+*/		
+void FrameEntry::print(ostream& out)  const
+{
+	out << "FrameEntry[" << name_ << ", "<< size() << "entries";
+	out << "]\n";
+	BasicSceneObject::print(out);
+}
+
+bool FrameLoop::reproject(const Transformation&, BaseGraphicsList& out) const
+{
+	out.push_back(const_cast<FrameLoop*>(this));
+		return true;
+}
+void FrameLoop::redisplay(const BaseDriver& driver) const
+{
+	//static int i = 0;
+	//if ( i == size() ) i = 0;
+	//(*this)[i]->execute(driver);
+	//i++;
+	//for (const_iterator entry = this->begin(); entry != this->end(); ++entry) {
+		//(*entry)->execute(driver);
+	//}
+	
+	driver.redisplay(*this);
+}
+
+
+AnimationStep::AnimationStep() 
+{
+	
+}
+
+
+AnimationStep::~AnimationStep() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AnimationStep::print(ostream& out)  const
+{
+	out << "AnimationStep[" << size() << " entries";
+	out << "]";
+}
+
+AnimationRules::AnimationRules() 
+{
+	
+}
+
+
+AnimationRules::~AnimationRules() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AnimationRules::print(ostream& out)  const
+{
+	out << "AnimationRules[" << size() << " steps";
+	TagHandler::print(out);
+	out << "]";
+}
+void AnimationRules::rules(vector<string>& infos) const
+{
+	
+}
+
+
+AsIsAnimationRules::AsIsAnimationRules() 
+{
+	
+}
+
+
+AsIsAnimationRules::~AsIsAnimationRules() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AsIsAnimationRules::print(ostream& out)  const
+{
+	out << "AsIsAnimationRules[" << this->size() << " entries";
+	TagHandler::print(out);
+	out << "]";
+}
+
+
+AnimationStep* AsIsAnimationRules::step(int index)
+{
+	map<int, AnimationStep*>::iterator step = steps_.find(index);
+	if ( step == steps_.end() )
+		steps_.insert(make_pair(index, new AnimationStep()));
+	 step = steps_.find(index);
+	 return step->second;
+	
+}
+
+void AsIsAnimationRules::rules(vector<string>& infos) const
+{
+	infos.push_back("<grib_info key='shortName'/>");
+	infos.push_back("<grib_info key='stepRange'/>");
+	infos.push_back("<grib_info key='level'/>");
+}
+
+void AsIsAnimationRules::getReady()
+{
+	MagLog::dev() << "AsIsAnimationRules --> get Ready!" << endl;
+	
+	for ( map<int, AnimationStep*>::iterator step = steps_.begin(); step != steps_.end(); ++step) {
+		reset();
+		for (AnimationStep::iterator frame = step->second->begin(); frame != step->second->end(); ++frame) {
+			(*frame)->tag(*this);
+		}
+		push_back(step->second);
+		MagLog::dev() << "tag-->" << step->first << " = " << *this << endl;
+		string label = "param: " + get("grib", "shortName") + " (" + get("grib", "level") + ") at step:" +  get("grib", "stepRange");
+		step->second->label(label);
+	}
+	
+}
+
+DateAnimationRules::DateAnimationRules() 
+{
+	
+}
+
+
+DateAnimationRules::~DateAnimationRules() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void DateAnimationRules::print(ostream& out)  const
+{
+	out << "DateAnimationRules[" << this->size() << " entries";
+	TagHandler::print(out);
+	out << "]";
+}
+
diff --git a/src/common/FrameLoop.h b/src/common/FrameLoop.h
new file mode 100644
index 0000000..013a704
--- /dev/null
+++ b/src/common/FrameLoop.h
@@ -0,0 +1,164 @@
+/*! \file FrameLoop.h
+    \brief Definition of the Template class FrameLoop.
+    
+    Magics Team - ECMWF 2008
+    
+    Started: Fri 29-Aug-2008
+    
+    Changes:
+    
+*/
+
+#ifndef FrameLoop_H
+#define FrameLoop_H
+
+#include "magics.h"
+
+#include "BaseGraphicsObject.h"
+#include "BasicSceneObject.h"
+#include "TagHandler.h"
+
+namespace magics {
+
+class AnimationRules;
+class AsIsAnimationRules;
+
+class FrameEntry :public BasicSceneObject, public GraphicsList {
+public:
+    FrameEntry();
+	virtual ~FrameEntry();
+    void execute(const BaseDriver&);
+    void add(BasicSceneObject* object) { BasicSceneObject::push_back(object); }
+    void add(BaseGraphicsObject* object) { GraphicsList::push_back(object); }
+    void  visit(AnimationRules&);
+    void  tag(AnimationRules&);
+    void animate(AsIsAnimationRules&);
+    string label() const {
+    	return label_;
+    }
+    void index(int index) { index_ = index; }
+    
+protected:
+    void print(ostream&) const; 
+    string label_;
+    int index_;
+
+};
+
+
+class FrameLoop: public BaseGraphicsObject, public vector<FrameEntry*> {
+
+public:
+	FrameLoop();
+	virtual ~FrameLoop();
+	bool reproject(const Transformation&, BaseGraphicsList& out) const;
+	void redisplay(const BaseDriver& driver) const;
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+	 AnimationRules* rules_; //Later will probably come from an Attributes! 
+
+private:
+    //! Copy constructor - No copy allowed
+	FrameLoop(const FrameLoop&);
+    //! Overloaded << operator to copy - No copy allowed
+	FrameLoop& operator=(const FrameLoop&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const FrameLoop& p)
+		{ p.print(s); return s; }
+
+};
+
+class AnimationStep : public vector<FrameEntry*>
+{
+public:
+	AnimationStep();
+	virtual ~AnimationStep();
+	string label() { return label_; }
+	void label(const string& label) { label_ = label; }
+		
+protected:
+	     //! Method to print string about this class on to a stream of type ostream (virtual).
+		virtual void print(ostream&) const; 
+		string label_;
+private:
+	    //! Copy constructor - No copy allowed
+	AnimationStep(const AnimationStep&);
+	    //! Overloaded << operator to copy - No copy allowed
+	AnimationStep& operator=(const AnimationStep&);
+
+	// -- Friends
+	    //! Overloaded << operator to call print().
+		friend ostream& operator<<(ostream& s,const AnimationStep& p)
+			{ p.print(s); return s; }
+};
+
+
+
+class AnimationRules : public TagHandler, public vector<AnimationStep*>
+{
+public:
+	AnimationRules();
+	virtual ~AnimationRules();
+	virtual void callback(FrameEntry&) {};
+	
+	string labelFormat() const { return labelFormat_; }
+
+	virtual void getReady() {}
+	virtual void rules(vector<string>&) const;
+	
+	
+	
+protected:
+	     //! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+	string labelFormat_;
+	
+private:
+	    //! Copy constructor - No copy allowed
+	AnimationRules(const AnimationRules&);
+	    //! Overloaded << operator to copy - No copy allowed
+	AnimationRules& operator=(const AnimationRules&);
+
+	// -- Friends
+	    //! Overloaded << operator to call print().
+		friend ostream& operator<<(ostream& s,const AnimationRules& p)
+			{ p.print(s); return s; }
+};
+
+
+
+class AsIsAnimationRules : public AnimationRules
+{
+public:
+	AsIsAnimationRules();
+	virtual ~AsIsAnimationRules();
+	virtual void callback(FrameEntry& entry) { entry.animate(*this); }
+	AnimationStep* step(int);
+	void getReady(); 
+	void rules(vector<string>&) const;
+		
+protected:
+	     //! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+	map<int, AnimationStep*> steps_;
+};
+class  DateAnimationRules : public AnimationRules
+{
+public:
+	DateAnimationRules();
+	virtual ~DateAnimationRules();
+
+	
+		
+protected:
+	     //! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+ 
+};
+
+} // namespace magics
+#endif
diff --git a/src/common/GeoRectangularProjection.cc b/src/common/GeoRectangularProjection.cc
index afc5c75..547e381 100644
--- a/src/common/GeoRectangularProjection.cc
+++ b/src/common/GeoRectangularProjection.cc
@@ -47,6 +47,14 @@ using namespace magics;
 GeoRectangularProjection::GeoRectangularProjection() : projection_(0)
 {
 	init();
+	// Tiling information
+
+		originX_ = 0;
+		originY_ = 0;
+		tile_ = 256;
+		unit_ = 360.;
+		unitEpsilon_ = unit_ * 0.0001;
+
 }
 
 /*!
@@ -101,13 +109,13 @@ void GeoRectangularProjection::revert(const PaperPoint& xy, UserPoint& point)  c
 
 
 
-void GeoRectangularProjection::revert(const vector<pair<double, double> > & input, vector<pair<double, double> > & output) const
+void GeoRectangularProjection::revert(const vector< std::pair<double, double> > & input, vector< std::pair<double, double> > & output) const
 {
 	output.reserve(input.size());
-	const vector<pair<double, double> >::const_iterator in_end =input.end();
+	const vector< std::pair<double, double> >::const_iterator in_end =input.end();
 	if ( !projection_ )
 	{
-		for ( vector<pair<double, double> >::const_iterator pt = input.begin();  pt != in_end; ++pt)
+		for ( vector< std::pair<double, double> >::const_iterator pt = input.begin();  pt != in_end; ++pt)
 		{
 			output.push_back(*pt);
 		}
@@ -115,7 +123,7 @@ void GeoRectangularProjection::revert(const vector<pair<double, double> > & inpu
 	}
 	assert(projection_);
 
-	for ( vector<pair<double, double> >::const_iterator pt = input.begin();  pt != in_end; ++pt)
+	for ( vector< std::pair<double, double> >::const_iterator pt = input.begin();  pt != in_end; ++pt)
 	{
 		TeCoord2D texy = TeCoord2D(pt->first, pt->second);
 		TeCoord2D geo = projection_->PC2LL(texy);
@@ -382,7 +390,7 @@ void GeoRectangularProjection::labels(const LabelPlotting& label, RightAxisVisit
 double GeoRectangularProjection::patchDistance(double res) const
 {
 
-	return (res/110)*5.;
+	return res;
 }
 
 void GeoRectangularProjection::init()
@@ -425,8 +433,8 @@ void GeoRectangularProjection::init()
 		max_longitude_ -= 360;
 	}
 
-	if ( min_latitude_ < -90) min_latitude_ = -90.;
-	if ( max_latitude_ > 90 ) max_latitude_ = 90;
+//	if ( min_latitude_ < -90) min_latitude_ = -90.;
+//	if ( max_latitude_ > 90 ) max_latitude_ = 90;
 
 
 	xpcmin_ = min_longitude_;
@@ -445,6 +453,12 @@ void GeoRectangularProjection::init()
 	PCEnveloppe_->push_back(PaperPoint(max_longitude_, max_latitude_));
 	PCEnveloppe_->push_back(PaperPoint(max_longitude_, min_latitude_));
 	PCEnveloppe_->push_back(PaperPoint(min_longitude_, min_latitude_));
+
+	askedxmin_ =  std::min(xpcmin_, xpcmax_);
+			askedxmax_ =  std::max(xpcmin_, xpcmax_);
+			askedymin_ =  std::min(ypcmin_, ypcmax_);
+			askedymax_ =  std::max(ypcmin_, ypcmax_);
+
 }
 
 MercatorProjection::MercatorProjection()
@@ -577,9 +591,41 @@ void GeoRectangularProjection::coastSetting(map<string, string>& setting, double
 
 MatrixHandler* GeoRectangularProjection::prepareData(const AbstractMatrix& matrix) const
 {
+	//return new MatrixHandler(matrix);
 	return new GeoBoxMatrixHandler(matrix, *this);
 }
 
+void GeoRectangularProjection::populate(double lon, double lat, double value, vector<UserPoint>& out) const
+{
+
+
+
+
+	 while ( lon < min_longitude_)
+	      lon += 360;
+	 while ( lon > min_longitude_ + 360. )
+	      lon -= 360.;
+
+	 if ( !in(lon, lat) )
+	 		return;
+
+
+	 out.push_back(UserPoint(lon, lat, value));
+
+	lon += 360.;
+	 while ( lon >  min_longitude_ && lon < max_longitude_) {
+		 out.push_back(UserPoint(lon, lat, value));
+	     lon += 360;
+	 }
+	 // To the West
+	 lon -=  360.;
+	 while (lon >  min_longitude_ && lon < max_longitude_) {
+	 	out.push_back(UserPoint(lon, lat, value));
+	 	lon -= 360;
+	 }
+
+}
+
 void GeoRectangularProjection::wraparound(const UserPoint& origin, stack<UserPoint>& out) const
 {
 	 UserPoint point = origin;
diff --git a/src/common/GeoRectangularProjection.h b/src/common/GeoRectangularProjection.h
index e6cef4f..84ee067 100644
--- a/src/common/GeoRectangularProjection.h
+++ b/src/common/GeoRectangularProjection.h
@@ -81,6 +81,7 @@ public:
 
     Polyline& getPCBoundingBox() const;
     Polyline& getUserBoundingBox() const;
+    void populate(double lon, double lat, double value, vector<UserPoint>& out) const;
 
     double patchDistance(double) const;
 	/*!
@@ -96,7 +97,7 @@ public:
 	*/
 	virtual void revert(const PaperPoint&, UserPoint&) const;
 
-	void revert(const vector<pair<double, double> > &, vector<pair<double, double> > &) const;
+	void revert(const vector< std::pair<double, double> > &, vector< std::pair<double, double> > &) const;
 	/*!
 	\\brief Does the projection needs the coastalines to be shifted!
 	*/
diff --git a/src/common/GeoRectangularProjectionAttributes.h b/src/common/GeoRectangularProjectionAttributes.h
deleted file mode 100644
index 6d9af21..0000000
--- a/src/common/GeoRectangularProjectionAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file GeoRectangularProjectionAttributes.h
-    \brief Definition of GeoRectangularProjection Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:27 2013
-*/
-   
-
-#ifndef GeoRectangularProjectionAttributes_H
-#define GeoRectangularProjectionAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class GeoRectangularProjectionAttributes 
-{
-public:
-//  --  constructor
-    GeoRectangularProjectionAttributes();
-    
-//  --  destructor
-    virtual ~GeoRectangularProjectionAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const GeoRectangularProjectionAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double min_latitude_;
-	double min_longitude_;
-	double max_latitude_;
-	double max_longitude_;
-	double min_area_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const GeoRectangularProjectionAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/InteractiveSet.cc b/src/common/InteractiveSet.cc
new file mode 100644
index 0000000..4afa5ec
--- /dev/null
+++ b/src/common/InteractiveSet.cc
@@ -0,0 +1,116 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+// File InteractiveSet.cc
+// Magics Team - ECMWF 2004
+
+#include "InteractiveSet.h"
+#include "BaseDriver.h"
+
+using namespace magics;
+
+
+InteractiveSet::InteractiveSet(Layer* layer, const string& box) : BasicGraphicsObject(layer, box)
+{
+	begin_ = new InteractiveBegin();
+	
+	end_ = new InteractiveEnd();
+}
+
+
+bool InteractiveSet::reproject(const Transformation& transformation, GraphicsList& out) const
+{
+	out.push_back(begin_);
+	for ( const_iterator item = begin(); item != end(); ++item) {
+		(*item)->reproject(transformation, out);
+		MagLog::dev() << "InteractiveSet::reproject-->" << **item << endl;
+	}
+	out.push_back(end_);
+	return false;
+}
+	
+void InteractiveSet::redisplay(const BaseDriver& driver) const
+{
+	MagLog::dev() << "	InteractiveSet::redisplay---> to be implemented!\n";
+	
+}
+
+void InteractiveSet::print(ostream& out) const
+{
+	out << "InteractiveSet[]" << endl;
+}
+
+InteractiveBegin::InteractiveBegin(Layer* layer, const string& box) : BasicGraphicsObject(layer, box)
+{
+}
+
+	
+void InteractiveBegin::redisplay(const BaseDriver& driver) const
+{
+	driver.redisplay(*this);
+	
+}
+ 
+void InteractiveBegin::print(ostream& out) const
+{
+	out << "InteractiveBegin[";
+	string sep = "";
+	for ( const_iterator action = begin(); action != end(); ++action) {
+		out << sep << action->first << "=" << *action->second;
+		sep =",";
+	}
+	out << "]";
+}
+
+bool InteractiveBegin::reproject(const Transformation& transformation, GraphicsList& out) const
+{
+	return true;
+}
+
+
+InteractiveEnd::InteractiveEnd(Layer* layer, const string& box)  : BasicGraphicsObject(layer, box)
+{
+	
+}
+
+void InteractiveEnd::redisplay(const BaseDriver& driver) const
+{
+	driver.redisplay(*this);
+}
+
+bool InteractiveEnd::reproject(const Transformation& transformation, GraphicsList& out) const
+{
+	return true;
+}
+
+	
+
+void InteractiveEnd::print(ostream& out) const
+{
+	out << "InteractiveEnd[]";	
+}
+
+void InteractiveLink::print(ostream& out) const
+{
+	out << "InteractiveLink[url=" << url_ << "]";
+}
+
+void InteractiveMagnify::print(ostream& out) const
+{
+	out << "InteractiveMagnify[factor=" << factor_ << "]";
+}
diff --git a/src/common/InteractiveSet.h b/src/common/InteractiveSet.h
new file mode 100644
index 0000000..3a9457e
--- /dev/null
+++ b/src/common/InteractiveSet.h
@@ -0,0 +1,144 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file InteractiveSet.h
+    \brief Implementation of InteractiveSet class.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: March 2004
+    
+    Changes:
+    
+*/
+#ifndef InteractiveSet_H
+#define InteractiveSet_H
+
+#include "BasicGraphicsObject.h"
+
+
+namespace magics {
+
+class InteractiveAction
+{
+public:
+	InteractiveAction() {}
+	virtual ~InteractiveAction() {}
+	
+	virtual void execute() {} //protype to be confirmed!
+protected:
+	virtual	void print(ostream&) const {}
+	friend ostream& operator<<(ostream& s,const InteractiveAction& p)
+		{ p.print(s); return s; }
+	
+};
+
+class InteractiveBegin : public BasicGraphicsObject, public map<string, InteractiveAction*> 
+{
+public :
+	InteractiveBegin(Layer* layer = 0, const string& box = "");
+	~InteractiveBegin() {}	
+	
+	bool reproject(const Transformation& transformation, BasicGraphicsObjectContainer& out) const;
+	
+	virtual void redisplay(const BaseDriver&) const;
+protected:
+    virtual	void print(ostream&) const;
+	
+};
+
+class InteractiveEnd : public BasicGraphicsObject
+{
+public :
+	InteractiveEnd(Layer* layer = 0, const string& box = "");
+	~InteractiveEnd() {}	
+	
+	virtual void redisplay(const BaseDriver&) const;	
+	bool reproject(const Transformation& transformation, BasicGraphicsObjectContainer& out) const;
+protected:
+	virtual	void print(ostream&) const;
+	
+};
+
+
+class InteractiveSet : public BasicGraphicsObject, public vector<BasicGraphicsObject* > {
+public:
+	InteractiveSet(Layer* layer = 0, const string& box = "");
+	virtual ~InteractiveSet() {}
+
+	virtual bool reproject(const Transformation&, BasicGraphicsObjectContainer&) const;		
+	virtual void redisplay(const BaseDriver&) const;
+	void addAction(const string& name, InteractiveAction* action) 
+		 { begin_->insert(make_pair(name, action)); }
+
+protected:
+	virtual	void print(ostream&) const;
+	Layer	*layer_;
+	string	box_;
+	mutable Label	*label_; 
+	Colour	colour_;
+	bool    toBeDeleted_;
+	InteractiveBegin *begin_;
+	InteractiveEnd *end_;
+	
+private:
+// No copy allowed
+	InteractiveSet& operator=(const InteractiveSet&);
+
+// -- Friends
+	friend ostream& operator<<(ostream& s,const InteractiveSet& p)
+		{ p.print(s); return s; }
+};
+
+
+
+
+class InteractiveLink : public InteractiveAction
+{
+public:
+	InteractiveLink(const string& url="http://www.ecmwf.int") : url_(url) {}
+	~InteractiveLink() {}	
+	void url(const string& url) { url_ = url; }
+	const string& url() const { return url_; }
+protected:
+	string url_;
+	virtual	void print(ostream&) const;
+	
+};
+
+class InteractiveMagnify: public InteractiveAction
+{
+public:
+	InteractiveMagnify(float factor = 2 ) : factor_(factor) {}
+	~InteractiveMagnify() {}	
+	void factor(float factor) { factor_ = factor; }
+	float factor() const { return factor_; }
+protected:
+	float factor_;
+	virtual	void print(ostream&) const;
+	
+};
+
+
+
+
+
+
+
+} // namespace magics
+#endif
diff --git a/src/common/Label.h b/src/common/Label.h
index 119f194..258c909 100644
--- a/src/common/Label.h
+++ b/src/common/Label.h
@@ -70,7 +70,17 @@ public:
 		return label;
     }
 
+    void copy(const Label& other) {
 
+    		font_ = other.font_;
+    		visible_ = other.visible_;
+    		blanking_= other.blanking_;
+    		justification_= other.justification_;
+    		verticalAlign_= other.verticalAlign_;
+    		angle_= other.angle_;
+
+
+        }
 	string getFont() const { return font_.name(); }
 	void setFont(const string& font) { font_.name(font); }
 
diff --git a/src/common/Layout.cc b/src/common/Layout.cc
index 835e19c..eef2016 100644
--- a/src/common/Layout.cc
+++ b/src/common/Layout.cc
@@ -158,6 +158,7 @@ Layout* Layout::execute(AnimationStep& /*step*/,  const Layout* /*visitor*/)
 
 void LayoutFrame::blank(Layout& owner)
 {
+
 	
 	if ( ! blanking_ ) return;
 		// Create and push_back the frame!
@@ -191,7 +192,8 @@ void LayoutFrame::frame(Layout& owner)
 	frame->setLineStyle(style_);
 	frame->setThickness(thickness_);
 	frame->setColour(colour_); 
-	
+	frame->setThickness(2);
+		frame->setColour(Colour("charcoal"));
 	double px = (owner.maxX() - owner.minX())*0.00;
 	double py = (owner.maxY() - owner.minY())*0.00;
 	
@@ -464,9 +466,6 @@ bool Layout::buildTree(const Layout& parent, unsigned int frame, const BaseDrive
 			more = true;
 	}
 
-	// here we can release the graphics object!
-	//		cout << "Layout::buildTree-->RELEASE OBJECTS!!!!!!!!!!!!" << endl;
-	//		const_cast<Layout*>(this)->clear();
 
 
 	return more;
diff --git a/src/common/Layout.h b/src/common/Layout.h
index 281db72..58312b5 100644
--- a/src/common/Layout.h
+++ b/src/common/Layout.h
@@ -179,7 +179,7 @@ public:
 			height = driverInfos_.front().height_;
 		}
 		else {
-			if ( parent_) 
+			if (parent_)
 				parent_->getDriverInfo(x, y, width, height);
 		}
 	}
diff --git a/src/common/LogoPlottingAttributes.h b/src/common/LogoPlottingAttributes.h
deleted file mode 100644
index 507d04e..0000000
--- a/src/common/LogoPlottingAttributes.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LogoPlottingAttributes.h
-    \brief Definition of LogoPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef LogoPlottingAttributes_H
-#define LogoPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LogoPlottingAttributes 
-{
-public:
-//  --  constructor
-    LogoPlottingAttributes();
-    
-//  --  destructor
-    virtual ~LogoPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LogoPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LogoPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/MagException.h b/src/common/MagException.h
index 6e8c82b..791a448 100644
--- a/src/common/MagException.h
+++ b/src/common/MagException.h
@@ -113,7 +113,9 @@ public:
 
 } // end namespace magics
 
+#ifndef ASSERT
 #define ASSERT(a)  Assert(!(a),#a,__LINE__,__FILE__,__FUNCTION__)
+#endif 
 
 #endif
 // EXCEPTION_H_
diff --git a/src/common/MagExceptions.cc b/src/common/MagExceptions.cc
index 9cae9ea..f0a9c9f 100644
--- a/src/common/MagExceptions.cc
+++ b/src/common/MagExceptions.cc
@@ -36,7 +36,7 @@ void xldb_throw(const char *c) // To set a break point in xldb
 {
 	if(getenv("PAUSE_MagExceptionS"))
 	{
-		cout << "debug me " << getpid() << endl;
+		std::cout << "debug me " << getpid() << endl;
 		pause();
 	}
 
diff --git a/src/common/MagFont.cc b/src/common/MagFont.cc
index 70d4318..f966334 100644
--- a/src/common/MagFont.cc
+++ b/src/common/MagFont.cc
@@ -34,7 +34,7 @@ using namespace magics;
 MagFont::MagFont(const string& name, const string& style, double size) :
 	name_(name), size_(size)
 {
-	styles_.insert(style);
+	styles_.insert(lowerCase(style));
 }
 
 MagFont::MagFont(const string& name) :
@@ -64,7 +64,8 @@ void MagFont::print(ostream& out)  const
 
 void MagFont::style(const string& style) 
 { 
+	string lowstyle = lowerCase(style);
 	if ( styles_.size() == 1 && styles_.begin()->empty() )
 		styles_.clear();
-	styles_.insert(style); 
+	styles_.insert(lowstyle);
 }
diff --git a/src/common/MagLog.cc b/src/common/MagLog.cc
index 7c2ea79..1f08592 100644
--- a/src/common/MagLog.cc
+++ b/src/common/MagLog.cc
@@ -41,7 +41,7 @@ public:
 	
 	void broadcast()
 	{
-		cout << "BROADCAST---->" << str() << "<---BROADCAST----";
+		std::cout << "BROADCAST---->" << str() << "<---BROADCAST----";
 		flush();
 	}
 };
@@ -137,7 +137,7 @@ ostream& MagLog::warning()
 
 		if  ( log_.warnings_  < 100 ) {
 			if ( log_.observers_.empty() ) {
-				cout  << "Magics-warning: ";
+				std::cout  << "Magics-warning: ";
 				return cout;
 			}
 			log_.warningstream_ << "Magics-warning: ";
@@ -154,7 +154,7 @@ ostream& MagLog::error()
 	if (log_.error_)
 	{
 		if ( log_.observers_.empty() ) {
-			cout  << "Magics-ERROR: ";
+			std::cout  << "Magics-ERROR: ";
 			return cout;
 		}
 		log_.errorstream_ << "Magics-ERROR: ";
@@ -169,7 +169,7 @@ ostream& MagLog::debug()
 	if (log_.debug_)
 	{
 		string text = ( header_ )  ? "Magics-debug: " : "";
-		cout << text;
+		std::cout << text;
 		return cout;
 	}
 	return log_.devnull_;
@@ -180,7 +180,7 @@ ostream& MagLog::profile()
 	if (log_.profiling_)
 	{
 		string text = ( header_ )  ? "Magics-profile: " : "";
-		cout << text;
+		std::cout << text;
 		return cout;
 	}
 	return log_.devnull_;
@@ -190,7 +190,7 @@ ostream& MagLog::dev()
 {
 	if (log_.dev_) {
 		string text = ( header_ )  ? "Magics-dev: " : "";
-		cout << text;		
+		std::cout << text;		
 		return cout;
 	}
 	return log_.devnull_;
@@ -203,7 +203,7 @@ ostream& MagLog::info()
 	if (log_.info_)
 	{
 		if ( log_.observers_.empty() ) {
-			cout  << "Magics-warning: ";
+			std::cout  << "Magics-warning: ";
 			return cout;
 		}
 		log_.infostream_ << "Magics-info: ";
@@ -233,7 +233,7 @@ ostream& MagLog::userInfo()
 {
 	if (log_.userInfo_)
 	{
-		cout << "Magics :";
+		std::cout << "Magics :";
 		return cout;
 	}
 	return log_.devnull_;
@@ -266,7 +266,7 @@ ostream& MagLog::fatal()
 {
 	if (log_.fatal_)
 	{
-		cout << "Magics-fatal: ";
+		std::cout << "Magics-fatal: ";
 		return cout;
 	}
 	return log_.devnull_;
diff --git a/src/common/MagLog.h b/src/common/MagLog.h
index 58d211f..84e3ee1 100644
--- a/src/common/MagLog.h
+++ b/src/common/MagLog.h
@@ -141,21 +141,7 @@ private:
 	friend ostream& operator<<(ostream& s,const MagLog& p)
 		{ p.print(s); return s; }
 };
-/*
-class HeaderMagLog
-{
-public:
-	HeaderMagLog(bool header = true): header_(header) {}
-	~HeaderMagLog() {}	
-
-	friend  ostream& operator <<(ostream& out, const HeaderMagLog& log) 
-	{
-		MagLog::header(log.header_);
-		return out;
-	}
-	bool header_;
-};
-*/
+
 #define LOGDEV(a) MagLog::dev() << __FUNCTION__ << "--->" << #a << " = " << a << "\n";
 #define VALGRIND  MagLog::dev() << "valgrind----->" << __FUNCTION__ << "\n";
 }
diff --git a/src/common/MagTranslator.h b/src/common/MagTranslator.h
index d465010..931e507 100644
--- a/src/common/MagTranslator.h
+++ b/src/common/MagTranslator.h
@@ -92,7 +92,7 @@ public:
 	}
 };
 
-#if MAGICS_CAIRO
+#ifdef MAGICS_CAIRO
 template<>
 class MagTranslator<cairo_t*, cairo_t*> {
 public:
@@ -123,7 +123,7 @@ public:
 };
 #endif
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 template<>
 class MagTranslator<QWidget*, QWidget*> {
 public:
@@ -204,7 +204,7 @@ public:
 template<>
 class MagTranslator<string, doublearray> {
 public:
-	doublearray operator()(string value)
+	doublearray operator()(const string& value)
 	{
 		doublearray array;
 		vector<string> list;
@@ -225,8 +225,8 @@ public:
 template<>
 class MagTranslator<string, Matrix> {
 public:
-//	Matrix operator()(string value)
-	Matrix operator()(string )
+
+	Matrix operator()(const string& )
 	{
 		Matrix array;
 		return array;
@@ -242,7 +242,7 @@ public:
 template<>
 class MagTranslator<string, int> {
 public:
-	int operator()(string value)
+	int operator()(const string& value)
 	{
 		return atoi(value.c_str());
 	}
@@ -272,7 +272,7 @@ public:
 template<>
 class MagTranslator<string, intarray> {
 public:
-	intarray operator()(string value)
+	intarray operator()(const string& value)
 	{
 		intarray array;
 		vector<string> list;
@@ -359,7 +359,7 @@ public:
 	{
 		stringarray result;
 		
-		Tokenizer tokenizer("/");
+		Tokenizer tokenizer("/");//enum	LineStyle { SOLID , DASH , DOT , CHAIN_DASH , CHAIN_DOT };
 		tokenizer(value, result);
 		return result;
 	}
@@ -405,7 +405,7 @@ public:
 template<>
 class MagTranslator<string,bool> { 
 public:
-	bool operator()(string s)
+	bool operator()(const string& s)
 	{
 		 string val = lowerCase(s);
 		if(val == "no" || val == "off" || val == "false") return false;
@@ -425,10 +425,10 @@ public:
 template<>
 class MagTranslator<string,magics::Hemisphere> { 
 public:
-	magics::Hemisphere operator()(string s)
+	magics::Hemisphere operator()(const string& s)
 	{
  		string val = lowerCase(s);
-		//enum	LineStyle { SOLID , DASH , DOT , CHAIN_DASH , CHAIN_DOT };
+
 		if (val  == "north") return NORTH;
 		if (val  == "south") return SOUTH;
 		
@@ -445,10 +445,10 @@ public:
 template<>
 class MagTranslator<string,magics::ArrowPosition> { 
 public:
-	magics::ArrowPosition operator()(string s)
+	magics::ArrowPosition operator()(const string& s)
 	{
 		string val = lowerCase(s);
-		//enum	LineStyle { SOLID , DASH , DOT , CHAIN_DASH , CHAIN_DOT };
+
 		if (val  == "tail") return M_TAIL;
 		if (val  == "centre") return M_CENTRE;
 		
@@ -465,7 +465,7 @@ public:
 template<>
 class MagTranslator<string,magics::LineStyle> { 
 public:
-	magics::LineStyle operator()(string s)
+	magics::LineStyle operator()(const string& s)
 	{
 		string val = lowerCase(s);
 		if (val  == "solid") return M_SOLID;
@@ -483,11 +483,31 @@ public:
 	}
 };
 
+template<>
+class MagTranslator<string,magics::Position> {
+public:
+	magics::Position operator()(const string& s)
+	{
+		string val = lowerCase(s);
+		if (val  == "automatic") return M_AUTOMATIC;
+		if (val  == "left") return M_LEFT;
+		if (val  == "right") return M_RIGHT;
+		if (val  == "bottom") return M_BOTTOM;
+		if (val  == "top") return M_TOP;
+		return M_AUTOMATIC;
+	}
+	magics::Position magics(const string& param)
+	{
+		string from;
+		ParameterManager::get(param, from);
+		return (*this)(from);
+	}
+};
 
 template<>
 class MagTranslator<string,magics::Justification> { 
 public:
-	magics::Justification operator()(string s)
+	magics::Justification operator()(const string& s)
 	{
 		string val = lowerCase(s);
 		// enum	Justification { MLEFT , MCENTRE, MRIGHT }; };
@@ -507,7 +527,7 @@ public:
 template<>
 class MagTranslator<string,magics::ListPolicy> { 
 public:
-	magics::ListPolicy operator()(string s)
+	magics::ListPolicy operator()(const string& s)
 	{
  		string val = lowerCase(s);
 		// enum	ListPolicy { M_LASTONE , M_CYCLE }; };
@@ -526,7 +546,7 @@ public:
 template<>
 class MagTranslator<string,magics::AxisAutomaticSetting> { 
 public:
-	magics::AxisAutomaticSetting operator()(string s)
+	magics::AxisAutomaticSetting operator()(const string& s)
 	{
  		string val = lowerCase(s);
 		// enum	ListPolicy {  m_off, m_both, m_min_only, m_max_only }; };
diff --git a/src/common/MagicsCalls.cc b/src/common/MagicsCalls.cc
index 672ba3a..59205fb 100644
--- a/src/common/MagicsCalls.cc
+++ b/src/common/MagicsCalls.cc
@@ -107,7 +107,7 @@ public :
 	bool operator()(const string&)
 	{
 		MagLog::info() << "Compatibility issue: the parameter [" << parameter_ << "] is discontinued.\n"
-		            << "              Please use the grib_api interface  instead." <<endl;
+		            << "              Please use the grib_api interface  instead." << std::endl;
 		return true;
 	}
 
@@ -123,7 +123,7 @@ public :
 	~IgnoreConverter() {}
 	bool operator()(const string&)
 	{
-		MagLog::info() << "Deprecated: Parameter " << parameter_ << " is not needed anymore --> setting is ignored" <<endl;
+		MagLog::info() << "Deprecated: Parameter " << parameter_ << " is not needed anymore --> setting is ignored" << std::endl;
 		return true;
 	}
 
@@ -139,7 +139,7 @@ public :
 	~ComingSoonConverter() {}
 	bool operator()(const string&)
 	{
-		MagLog::info() << "Coming soon: Parameter " << parameter_ << " will be implemented soon" <<endl;
+		MagLog::info() << "Coming soon: Parameter " << parameter_ << " will be implemented soon" << std::endl;
 		return true;
 	}
 
@@ -158,7 +158,7 @@ public :
 	~GribSubareaExtraction() {}
 	bool operator()(const string& )
 	{
-		MagLog::info() << "Compatibility issue: Parameter grib_subarea_extraction not required anymore.\n"<<endl;
+		MagLog::info() << "Compatibility issue: Parameter grib_subarea_extraction not required anymore.\n"<< std::endl;
 		return true;
 	}
 };
@@ -311,7 +311,7 @@ public :
 	bool operator()(const string& leg)
 	{
 		MagLog::info() << "Compatibility issue: wind_arrow_legend is deprecated.\n"
-		            << "               Please use legend instead."<<endl;
+		            << "               Please use legend instead."<< std::endl;
 		ParameterManager::set("legend", leg);
 		return true;
 	}
@@ -352,7 +352,7 @@ public :
 	bool operator()(const string& file)
 	{
 		MagLog::info() << "Compatibility issue: ps_file_name is deprecated.\n"
-		            << "               Please use output_name instead."<<endl;
+		            << "               Please use output_name instead."<< std::endl;
 		ParameterManager::set("output_legacy_name", file);
 		ParameterManager::set("output_file_minimal_width", 0);  
 		return true;
@@ -368,7 +368,7 @@ public :
 	bool operator()(const string& )
 	{
 		MagLog::info() << "Compatibility issue: ps_device was removed.\n"
-		            << "               Please use other PostScript driver parameter instead."<<endl;
+		            << "               Please use other PostScript driver parameter instead."<< std::endl;
 		return true;
 	}
 };
@@ -381,7 +381,7 @@ public :
 	~OutputPsDevice() {}
 	bool operator()(const string& )
 	{
-		MagLog::info() << "Compatibility issue: output_ps_device is deprecated."<<endl;
+		MagLog::info() << "Compatibility issue: output_ps_device is deprecated."<< std::endl;
 		return true;
 	}
 };
@@ -394,7 +394,7 @@ public :
 	~PsHelp() {}
 	bool operator()(const string& )
 	{
-		MagLog::info() << "Compatibility issue: Parameter ps_help was removed.\n"<<endl;
+		MagLog::info() << "Compatibility issue: Parameter ps_help was removed.\n"<< std::endl;
 		return false;
 	}
 };
@@ -407,7 +407,7 @@ public :
 	~PsMetric() {}
 	bool operator()(const string& )
 	{
-		MagLog::info() << "Compatibility issue: Parameter ps_metric was removed.\n"<<endl;
+		MagLog::info() << "Compatibility issue: Parameter ps_metric was removed.\n"<< std::endl;
 		return false;
 	}
 };
@@ -442,28 +442,28 @@ public:
 	bool operator()(const doublearray& values)
 	{
 		MagLog::info() << "Compatibility issue: Parameter " << from_ << " is deprecated.\n"
-		            << "               Please use " << to_ << " instead."<<endl;
+		            << "               Please use " << to_ << " instead."<< std::endl;
 		ParameterManager::set(to_, values);  
 		return true;
 	}
 	bool operator()(const stringarray& values)
 	{
 		MagLog::info() << "Compatibility issue: Parameter " << from_ << " is deprecated.\n"
-		            << "               Please use " << to_ << " instead."<<endl;
+		            << "               Please use " << to_ << " instead."<< std::endl;
 		ParameterManager::set(to_, values);  
 		return true;
 	}
 	bool operator()(const string& value)
 	{
 		MagLog::info() << "Compatibility issue: Parameter " << from_ << " is deprecated.\n"
-		            << "               Please use " << to_ << " instead."<<endl;
+		            << "               Please use " << to_ << " instead."<< std::endl;
 		ParameterManager::set(to_, value);
 		return true;
 	}
 	bool operator()(double value)
 	{
 		MagLog::info() << "Compatibility issue: Parameter " << from_ << " is deprecated.\n"
-		            << "               Please use " << to_ << " instead."<<endl;
+		            << "               Please use " << to_ << " instead."<< std::endl;
 		ParameterManager::set(to_, value);
 		return true;
 	}
@@ -519,10 +519,16 @@ static GraphValuesConverter graph_curve_x_date_offset("graph_curve_x_date_offset
 static GraphValuesConverter graph_curve_y_base_date("graph_curve_y_base_date", "y_base_date");
 static GraphValuesConverter graph_curve_y_date_offset("graph_curve_y_date_offset", "y_date_offset");
 
+static GraphValuesConverter graph_curve_x2_base_date("graph_curve_x2_base_date", "x2_base_date");
+static GraphValuesConverter graph_curve_x2_date_offset("graph_curve_x2_date_offset", "x2_date_offset");
+static GraphValuesConverter graph_curve_y2_base_date("graph_curve_y2_base_date", "y2_base_date");
+static GraphValuesConverter graph_curve_y2_date_offset("graph_curve_y2_date_offset", "y2_date_offset");
+
 static GraphValuesConverter graph_curve2_x_values("graph_curve2_x_values", "x2_values");
 static GraphValuesConverter graph_curve2_y_values("graph_curve2_y_values", "y2_values");
 static GraphValuesConverter graph_curve2_date_x_values("graph_curve2_date_x_values", "x2_date_values");
 static GraphValuesConverter graph_curve2_date_y_values("graph_curve2_date_y_values", "y2_date_values");
+
 static  ValuesConverter symbol_input_text_list("symbol_input_text_list", "symbol_texts");
 static  ValuesConverter contour_hilo_text_blanking("contour_hilo_text_blanking", "contour_hilo_blanking");
 static GraphValuesConverter graph_bar_x_values("graph_bar_x_values", "x_values");
@@ -552,7 +558,7 @@ public :
 	bool operator()(const string& file)
 	{
 		MagLog::info() << "Compatibility issue: Parameter device_file_name is deprecated.\n"
-		            << "               Please use output_name instead."<<endl;
+		            << "               Please use output_name instead."<< std::endl;
 		ParameterManager::set("output_legacy_name", file);
 		ParameterManager::set("output_file_minimal_width", 0);  
 		return true;
@@ -570,7 +576,7 @@ public :
 	bool operator()(const int width)
 	{
 		MagLog::info() << "Compatibility issue: Parameter device_width is deprecated.\n"
-		               << "             Please use output_width instead."<<endl;
+		               << "             Please use output_width instead."<< std::endl;
 		ParameterManager::set("output_width", width);
 		return true;
 	}
@@ -587,7 +593,7 @@ public :
 	bool operator()(const int quality)
 	{
 		MagLog::info() << "Compatibility issue: Parameter device_quality_level is deprecated.\n"
-		               << "             Please use output_jpg_quality instead."<<endl;
+		               << "             Please use output_jpg_quality instead."<< std::endl;
 		ParameterManager::set("output_jpg_quality", quality);
 		return true;
 	}
@@ -606,7 +612,7 @@ public :
 	bool operator()(const string& quality)
 	{
 		MagLog::info() << "Compatibility issue: Parameter " << base_ << "quality is deprecated.\n"
-		            << "               Please use " << base_ << "font and " << base_ << "font_style instead."<<endl;
+		            << "               Please use " << base_ << "font and " << base_ << "font_style instead."<< std::endl;
 
 		if(magCompare(quality,"low") )
 		{
@@ -625,7 +631,7 @@ public :
 		}
 		else
 		{
-			MagLog::warning()<<"The setting "<<quality<<" for the parameter " << base_ << "_quality is not valid! Default font is used."<<endl;
+			MagLog::warning()<<"The setting "<<quality<<" for the parameter " << base_ << "_quality is not valid! Default font is used."<< std::endl;
 			ParameterManager::set(base_ +"font", "sansserif");
 			ParameterManager::set(base_ + "font_style", "normal");
 		}
@@ -645,7 +651,7 @@ public :
 	bool operator()(double height)
 	{
 		MagLog::warning() << "Compatibility issue: Parameter " << from_ << " is deprecated.\n"
-		               << "               Please use " << to_ << " instead. " << to_ << " has been set to "<<height<<endl;
+		               << "               Please use " << to_ << " instead. " << to_ << " has been set to "<<height<< std::endl;
 		ParameterManager::set(to_, height);
 		return true;
 	}	
@@ -662,7 +668,7 @@ public :
 	{
 		if (from_ != to_ ) {
 			MagLog::info() << "Compatibility issue: Parameter " << from_ << " is deprecated.\n"
-		               << "               Please use " << to_ << " instead. " << to_ << " has been set to "<<height<<endl;
+		               << "               Please use " << to_ << " instead. " << to_ << " has been set to "<<height<< std::endl;
 		}
 		else {
 			MagLog::info() << from_ << " is now expecting a string : consider to change your setting for psetc " << endl;
@@ -692,7 +698,7 @@ public :
 	bool operator()(const string& file)
 	{
 		MagLog::info() << "Compatibility issue: Parameter gd_file_name is deprecated.\n"
-		            << "              Please use output_name instead."<<endl;
+		            << "              Please use output_name instead."<< std::endl;
 		ParameterManager::set("output_legacy_name", file);
 		ParameterManager::set("output_file_minimal_width", 0); 
 		return true;
@@ -710,7 +716,7 @@ public :
 		{
 			fix="cartesian";
 			MagLog::info() << "Compatibility issue: The value [none] for Parameter subpage_map_projection is deprecated.\n"
-			               << "               Please use [cartesian] instead."<<endl;
+			               << "               Please use [cartesian] instead."<< std::endl;
 		}
 		ParameterManager::set("subpage_map_projection",fix);
 		return true;
@@ -833,7 +839,7 @@ static IgnoreConverter graph_position_mode("graph_position_mode");
 static IgnoreConverter axis_date_units("axis_date_units");
 static IgnoreConverter legend_entry_maximum_width("legend_entry_maximum_width");
 
-static ComingSoonConverter graph_curve_method("graph_curve_method");
+
 
 static IgnoreConverter graph_curve_interpolation("graph_curve_interpolation");
 
@@ -898,6 +904,11 @@ void ptaylor_()
 	magics_->ptaylor();
 
 }
+void ptephi_()
+{
+	magics_->ptephi();
+
+}
 void pgrib_()
 {
 	magics_->pgrib();
@@ -1163,6 +1174,10 @@ void pepscloud_()
 {
 	magics_->epscloud();
 }
+void pepsplumes_()
+{
+	magics_->epsplumes();
+}
 
 void pepsgraph_() {
 	magics_->epsgraph();
@@ -1226,6 +1241,7 @@ void mag_wind()  {pwind_();}
 void mag_symb()  {psymb_();}
 void mag_boxplot()  {pboxplot_();}
 void mag_taylor()  {ptaylor_();}
+void mag_tephi()  {ptephi_();}
 void mag_wrepjson()  { pwrepjson_(); }
 void mag_epscloud()  { pepscloud_(); }
 
@@ -1234,6 +1250,7 @@ void mag_epswave()       { pepswave_(); }
 void mag_epswind()       { pepswind_(); }
 void mag_epsbar()        { pepsbar_(); }
 void mag_epsshading()    { pepsshading_(); }
+void mag_epsplumes()    { pepsplumes_(); }
 
 void mag_new(const char* page)
 {
diff --git a/src/common/MagicsThreads.cc b/src/common/MagicsThreads.cc
new file mode 100644
index 0000000..8ef722e
--- /dev/null
+++ b/src/common/MagicsThreads.cc
@@ -0,0 +1,151 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file MagicsThreads.cc
+    \brief Implementation of the Template class MagicsThreads.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Fri 7-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "MagicsThreads.h"
+#include "MagLog.h"
+#include "MagException.h"
+
+using namespace magics;
+
+
+static void* do_it(void* data)
+{
+   MagLog::dev() << "do_it: ok???" << "\n";
+   MagicsThreads* magics = (MagicsThreads*) (data);
+   (*magics).loop();
+  
+   return 0;
+}
+
+static void* run_it(void* data)
+{
+   MagLog::dev() << "do_it: ok???" << "\n";
+   MagicsTask* task = (MagicsTask*) (data);
+   (*task).run();
+  
+   return 0;
+}
+MagicsThreads::MagicsThreads() : ok_(true)
+{
+    try {
+        // create a Mutex to protect the stack!
+         pthread_mutex_init(&mutex_, 0);
+         pthread_cond_init(&condition_, 0);
+    
+        // create a condition to inform the loop thread that there is something to do!    
+       //  create a thread ... 
+       //  to start the loop method!
+       
+        pthread_attr_t attr;
+        pthread_attr_init(&attr);
+        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+       
+        pthread_t      thread;
+        MagLog::dev() << "Thread ok???" << "\n";
+        
+        pthread_create(&thread,&attr,do_it,this);
+        MagLog::dev() << "Thread ok!!!" << "\n";
+        
+	}
+	catch (MagException& e) 
+	{
+        MagLog::error() << e.what() << "\n";
+		
+	}
+
+   
+   
+}  
+
+
+MagicsThreads::~MagicsThreads() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void MagicsThreads::print(ostream& out)  const
+{
+	out << "MagicsThreads[";
+	out << "]";
+}
+
+void MagicsThreads::queue(MagicsTask* task) 
+{
+    // Add a task to the stack ... 
+    // Signal that a task has been added 
+    
+    {
+        AutoLock lock(mutex_);
+        push(task);
+        MagLog::dev() << "send signal...." << "\n";
+        pthread_cond_signal(&condition_);
+    }
+    // Signal...  
+}
+
+void MagicsThreads::signal()
+{
+    AutoLock lock(mutex_);
+    ok_ = true;
+    MagLog::dev() << "send signal...." << "\n";
+    pthread_cond_signal(&condition_);
+}
+
+void MagicsThreads::loop() 
+{
+    while (true)  {           
+            MagLog::debug() << "loop  OK... Wait..." << "\n";
+            AutoLock look(mutex_);
+            pthread_cond_wait(&condition_, &mutex_);
+            MagLog::debug() << "loop  OK... Wake up..." << "\n";
+            ok_ = false;
+            if (!empty()) { 
+              
+                MagLog::debug() << " OK... Do IT!..." << "\n";
+                
+                // start a new thread an execute the task...
+                pthread_attr_t attr;
+                pthread_attr_init(&attr);
+                pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+               
+                pthread_t      thread;
+                MagLog::dev() << "Thread ok???" << "\n";
+                 MagicsTask* task = top();
+                 pop();
+                pthread_create(&thread,&attr,run_it, task);
+                MagLog::dev() << "Thread ok!!!" << "\n";
+            }
+  
+    }
+        
+}
diff --git a/src/common/MagicsThreads.h b/src/common/MagicsThreads.h
new file mode 100644
index 0000000..b1cee81
--- /dev/null
+++ b/src/common/MagicsThreads.h
@@ -0,0 +1,93 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file MagicsThreads.h
+    \brief Definition of the Template class MagicsThreads.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Fri 7-May-2004
+    
+    Changes:
+    
+*/
+
+#ifndef MagicsThreads_H
+#define MagicsThreads_H
+
+#include "magics.h"
+#include <pthread.h>
+#include <stack>
+using std::stack;
+
+namespace magics {
+
+class MagicsThreads;
+class MagicsTask 
+{
+public :
+	MagicsTask(MagicsThreads& manager) : manager_(manager){}
+	virtual ~MagicsTask() {}
+	virtual void run() = 0;   
+protected :
+	MagicsThreads& manager_; 
+};
+
+class AutoLock
+{
+public:
+	AutoLock(pthread_mutex_t& mutex) :mutex_(mutex) 
+		{  pthread_mutex_lock(&mutex_); }
+  
+	~AutoLock() 
+		{  pthread_mutex_unlock(&mutex_); }
+private:
+	pthread_mutex_t& mutex_;
+};
+
+class MagicsThreads : public stack<MagicsTask*> {
+
+public:
+	MagicsThreads();
+	virtual ~MagicsThreads();
+    
+	void queue(MagicsTask*);
+	void signal();
+	void loop();
+
+protected:
+	//! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+	pthread_mutex_t mutex_;
+	pthread_cond_t condition_;
+	bool ok_;
+
+private:
+	//! Copy constructor - No copy allowed
+	MagicsThreads(const MagicsThreads&);
+	//! Overloaded << operator to copy - No copy allowed
+	MagicsThreads& operator=(const MagicsThreads&);
+
+// -- Friends
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const MagicsThreads& p)
+		{ p.print(s); return s; }
+};
+
+} // namespace magics
+#endif
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
deleted file mode 100644
index 374a142..0000000
--- a/src/common/Makefile.am
+++ /dev/null
@@ -1,119 +0,0 @@
-
-PROJECTION_ATTRIBUTES = GeoRectangularProjectionAttributes.cc PolarStereographicProjectionAttributes.cc TaylorProjectionAttributes.cc
-PROJECTION_SRC = GeoRectangularProjection.cc  PolarStereographicProjection.cc TaylorProjection.cc
-PROJECTION_INC = GeoRectangularProjection.h  GeoRectangularProjectionAttributes.h PolarStereographicProjection.h SatelliteProjection.h TaylorProjection.h
-
-if MAGICS_PROJ4
-PROJECTION_ATTRIBUTES += Proj4ProjectionAttributes.cc
-PROJECTION_SRC += Proj4Projection.cc 
-PROJECTION_INC += Proj4Projection.h
-endif
-
-
-noinst_LTLIBRARIES = libcommon.la
-include_H = \
-	OutputFactory.h MagLog.h \
-	BaseParameter.h Colour.h MagException.h \
-	Factory.cc Factory.h \
-	ParameterManager.h Frame.h Layout.h \
-	PaperPoint.h GeoPoint.h  Tokenizer.h Node.h MagTranslator.h \
-	ImageProperties.h LogoPlotting.h \
-	ImportObject.h ImportObject.cc ColourTable.h PageID.h \
-	Transformation.h Dimension.h \
-	XmlNode.h XmlTree.h XmlReader.h BackgroundColour.h \
-	ColourTableDefinition.h ColourTableDefinitionCompute.h ColourTableDefinitionComputeInterface.h\
-	ColourTableDefinitionList.h ColourTableDefinitionListInterface.h  \
-	TableDefinition.h TableDefinitionList.h TableDefinitionListInterface.h \
-	TableDefinitionCompute.h TableDefinitionComputeInterface.h \
-	HeightTableDefinition.h LevelTableDefinition.h IntervalMap.h PaperDimension.h \
-	Matrix.h MatrixHandler.h Data.h Decoder.h \
-	BasePointsHandler.h RasterData.h  Visualiser.h CustomisedPoint.h PointsHandler.h \
-	MetaData.h \
-	Polyline.h \
-	Text.h \
-	Symbol.h \
-	BinaryObject.h \
-	Arrow.h \
-	Flag.h Flag.cc \
-	Image.h  \
-	ArrowProperties.h \
-	MagicsParameter.cc MagicsParameter.h Clipper.h LogoPlottingBase.h \
-	TableDefinitionCompute.cc  \
-	FrameBase.cc FrameBase.h \
-	TableDefinitionList.cc \
-	Coordinate.h OutputHandler.h \
-	MagFont.h FortranRootSceneNodeAttributes.h OutputHandlerAttributes.h \
-	AnimationRules.h SymbolItem.h \
-	UserPoint.h Label.h \
-	Timer.h \
-	FortranSceneNodeAttributes.h PageIDAttributes.h LogoPlottingAttributes.h UserLogoPlottingAttributes.h FortranViewNodeAttributes.h \
-	${PROJECTION_INC} CustomisedPoint.h Static.h DriverStatic.h ProgressObject.h PolyCoast.h \
-	ProgressTask.h FullPaperPoint.h \
-	BasePointsHandler.h PointsHandler.h Decoder.h Data.h \
-	Visualiser.h MatrixHandler.h \
-	Seconds.h \
-	Matrix.h Matrix.cc \
-	Path.h\
-	MagicsSingleton.h \
-	PlotManager.h \
-	Image.h  \
-	XmlReader.h XmlTree.h XmlNode.h \
-	MagicsFormat.h \
-	CartesianTransformation.h \
-	Dimension.cc \
-	XCoordinate.h YCoordinate.h marsmachine.h linux.h aix.h \
-	Thread.h MutexCond.h Mutex.h AutoLock.h ThreadControler.h Task.h MagExceptions.h ThreadSingleton.h ThreadSingleton.cc \
-	DataStats.h SciMethods.h
-
-if MAGICS_ALLHEADERS
-include_HEADERS = magics_api.h $(include_H)
-noinst_HEADERS	= $(noinst_H)
-else
-include_HEADERS = magics_api.h
-noinst_HEADERS	= $(noinst_H) $(include_H)
-endif
-
-
-ATTRIBUTES = \
-	MetaDataAttributes.cc OutputHandlerAttributes.cc \
-	FortranSceneNodeAttributes.cc FortranViewNodeAttributes.cc \
-	FortranRootSceneNodeAttributes.cc CartesianTransformationAttributes.cc \
-	LogoPlottingAttributes.cc UserLogoPlottingAttributes.cc \
-	XDateCoordinateAttributes.cc YDateCoordinateAttributes.cc \
-	XLogarithmicCoordinateAttributes.cc YLogarithmicCoordinateAttributes.cc \
-	XRegularCoordinateAttributes.cc YRegularCoordinateAttributes.cc \
-	XHyperCoordinateAttributes.cc YHyperCoordinateAttributes.cc \
-	PageIDAttributes.cc BinaryObjectAttributes.cc
-
-nodist_libcommon_la_SOURCES = ${ATTRIBUTES} ${PROJECTION_ATTRIBUTES}
-
-libcommon_la_SOURCES = \
-	${PROJECTION_SRC} \
-	Data.cc Matrix.cc MagicsCalls.cc Static.cc DriverStatic.cc MagLog.cc Colour.cc Transformation.cc MagException.cc \
-	BaseParameter.cc ParameterManager.cc   \
-	Tokenizer.cc Timer.cc Seconds.cc Label.cc \
-	ArrowProperties.cc \
-	XmlReader.cc XmlTree.cc XmlNode.cc Dimension.cc \
-	MetaData.cc \
-	MagicsFormat.cc \
-	OutputHandler.cc  OutputFactory.cc \
-	MagFont.cc \
-	ColourTable.cc ColourTableDefinitionList.cc \
-	ColourTableDefinitionCompute.cc CartesianTransformation.cc \
-	BinaryObject.cc \
-	Coordinate.cc \
-	LogoPlotting.cc \
-	PageID.cc AnimationRules.cc Layout.cc SymbolItem.cc Symbol.cc Polyline.cc \
-	Text.cc Flag.cc   \
-	Mutex.cc MutexCond.cc Thread.cc MagExceptions.cc AutoLocker.cc \
-	ThreadControler.cc Task.cc \
-	DataStats.cc SciMethods.cc BasePointsHandler.cc PointsHandler.cc
-
-    
-libcommon_la_LDFLAGS	= -no-undefined -no-install
-			
-AM_CPPFLAGS		=  ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src -I$(top_srcdir)/src/web -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/common -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/include
-
-if MAGICS_QT
-AM_CPPFLAGS += $(QT_CPPFLAGS)
-endif
diff --git a/src/common/Makefile.in b/src/common/Makefile.in
deleted file mode 100644
index 64a19bb..0000000
--- a/src/common/Makefile.in
+++ /dev/null
@@ -1,934 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_PROJ4_TRUE@am__append_1 = Proj4ProjectionAttributes.cc
- at MAGICS_PROJ4_TRUE@am__append_2 = Proj4Projection.cc 
- at MAGICS_PROJ4_TRUE@am__append_3 = Proj4Projection.h
- at MAGICS_QT_TRUE@am__append_4 = $(QT_CPPFLAGS)
-subdir = src/common
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libcommon_la_LIBADD =
-am__libcommon_la_SOURCES_DIST = GeoRectangularProjection.cc \
-	PolarStereographicProjection.cc TaylorProjection.cc \
-	Proj4Projection.cc Data.cc Matrix.cc MagicsCalls.cc Static.cc \
-	DriverStatic.cc MagLog.cc Colour.cc Transformation.cc \
-	MagException.cc BaseParameter.cc ParameterManager.cc \
-	Tokenizer.cc Timer.cc Seconds.cc Label.cc ArrowProperties.cc \
-	XmlReader.cc XmlTree.cc XmlNode.cc Dimension.cc MetaData.cc \
-	MagicsFormat.cc OutputHandler.cc OutputFactory.cc MagFont.cc \
-	ColourTable.cc ColourTableDefinitionList.cc \
-	ColourTableDefinitionCompute.cc CartesianTransformation.cc \
-	BinaryObject.cc Coordinate.cc LogoPlotting.cc PageID.cc \
-	AnimationRules.cc Layout.cc SymbolItem.cc Symbol.cc \
-	Polyline.cc Text.cc Flag.cc Mutex.cc MutexCond.cc Thread.cc \
-	MagExceptions.cc AutoLocker.cc ThreadControler.cc Task.cc \
-	DataStats.cc SciMethods.cc BasePointsHandler.cc \
-	PointsHandler.cc
- at MAGICS_PROJ4_TRUE@am__objects_1 = Proj4Projection.lo
-am__objects_2 = GeoRectangularProjection.lo \
-	PolarStereographicProjection.lo TaylorProjection.lo \
-	$(am__objects_1)
-am_libcommon_la_OBJECTS = $(am__objects_2) Data.lo Matrix.lo \
-	MagicsCalls.lo Static.lo DriverStatic.lo MagLog.lo Colour.lo \
-	Transformation.lo MagException.lo BaseParameter.lo \
-	ParameterManager.lo Tokenizer.lo Timer.lo Seconds.lo Label.lo \
-	ArrowProperties.lo XmlReader.lo XmlTree.lo XmlNode.lo \
-	Dimension.lo MetaData.lo MagicsFormat.lo OutputHandler.lo \
-	OutputFactory.lo MagFont.lo ColourTable.lo \
-	ColourTableDefinitionList.lo ColourTableDefinitionCompute.lo \
-	CartesianTransformation.lo BinaryObject.lo Coordinate.lo \
-	LogoPlotting.lo PageID.lo AnimationRules.lo Layout.lo \
-	SymbolItem.lo Symbol.lo Polyline.lo Text.lo Flag.lo Mutex.lo \
-	MutexCond.lo Thread.lo MagExceptions.lo AutoLocker.lo \
-	ThreadControler.lo Task.lo DataStats.lo SciMethods.lo \
-	BasePointsHandler.lo PointsHandler.lo
-am__objects_3 = MetaDataAttributes.lo OutputHandlerAttributes.lo \
-	FortranSceneNodeAttributes.lo FortranViewNodeAttributes.lo \
-	FortranRootSceneNodeAttributes.lo \
-	CartesianTransformationAttributes.lo LogoPlottingAttributes.lo \
-	UserLogoPlottingAttributes.lo XDateCoordinateAttributes.lo \
-	YDateCoordinateAttributes.lo \
-	XLogarithmicCoordinateAttributes.lo \
-	YLogarithmicCoordinateAttributes.lo \
-	XRegularCoordinateAttributes.lo \
-	YRegularCoordinateAttributes.lo XHyperCoordinateAttributes.lo \
-	YHyperCoordinateAttributes.lo PageIDAttributes.lo \
-	BinaryObjectAttributes.lo
- at MAGICS_PROJ4_TRUE@am__objects_4 = Proj4ProjectionAttributes.lo
-am__objects_5 = GeoRectangularProjectionAttributes.lo \
-	PolarStereographicProjectionAttributes.lo \
-	TaylorProjectionAttributes.lo $(am__objects_4)
-nodist_libcommon_la_OBJECTS = $(am__objects_3) $(am__objects_5)
-libcommon_la_OBJECTS = $(am_libcommon_la_OBJECTS) \
-	$(nodist_libcommon_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libcommon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(libcommon_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libcommon_la_SOURCES) $(nodist_libcommon_la_SOURCES)
-DIST_SOURCES = $(am__libcommon_la_SOURCES_DIST)
-am__include_HEADERS_DIST = magics_api.h OutputFactory.h MagLog.h \
-	BaseParameter.h Colour.h MagException.h Factory.cc Factory.h \
-	ParameterManager.h Frame.h Layout.h PaperPoint.h GeoPoint.h \
-	Tokenizer.h Node.h MagTranslator.h ImageProperties.h \
-	LogoPlotting.h ImportObject.h ImportObject.cc ColourTable.h \
-	PageID.h Transformation.h Dimension.h XmlNode.h XmlTree.h \
-	XmlReader.h BackgroundColour.h ColourTableDefinition.h \
-	ColourTableDefinitionCompute.h \
-	ColourTableDefinitionComputeInterface.h \
-	ColourTableDefinitionList.h \
-	ColourTableDefinitionListInterface.h TableDefinition.h \
-	TableDefinitionList.h TableDefinitionListInterface.h \
-	TableDefinitionCompute.h TableDefinitionComputeInterface.h \
-	HeightTableDefinition.h LevelTableDefinition.h IntervalMap.h \
-	PaperDimension.h Matrix.h MatrixHandler.h Data.h Decoder.h \
-	BasePointsHandler.h RasterData.h Visualiser.h \
-	CustomisedPoint.h PointsHandler.h MetaData.h Polyline.h Text.h \
-	Symbol.h BinaryObject.h Arrow.h Flag.h Flag.cc Image.h \
-	ArrowProperties.h MagicsParameter.cc MagicsParameter.h \
-	Clipper.h LogoPlottingBase.h TableDefinitionCompute.cc \
-	FrameBase.cc FrameBase.h TableDefinitionList.cc Coordinate.h \
-	OutputHandler.h MagFont.h FortranRootSceneNodeAttributes.h \
-	OutputHandlerAttributes.h AnimationRules.h SymbolItem.h \
-	UserPoint.h Label.h Timer.h FortranSceneNodeAttributes.h \
-	PageIDAttributes.h LogoPlottingAttributes.h \
-	UserLogoPlottingAttributes.h FortranViewNodeAttributes.h \
-	GeoRectangularProjection.h \
-	GeoRectangularProjectionAttributes.h \
-	PolarStereographicProjection.h SatelliteProjection.h \
-	TaylorProjection.h Proj4Projection.h Static.h DriverStatic.h \
-	ProgressObject.h PolyCoast.h ProgressTask.h FullPaperPoint.h \
-	Seconds.h Matrix.cc Path.h MagicsSingleton.h PlotManager.h \
-	MagicsFormat.h CartesianTransformation.h Dimension.cc \
-	XCoordinate.h YCoordinate.h marsmachine.h linux.h aix.h \
-	Thread.h MutexCond.h Mutex.h AutoLock.h ThreadControler.h \
-	Task.h MagExceptions.h ThreadSingleton.h ThreadSingleton.cc \
-	DataStats.h SciMethods.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = OutputFactory.h MagLog.h BaseParameter.h \
-	Colour.h MagException.h Factory.cc Factory.h \
-	ParameterManager.h Frame.h Layout.h PaperPoint.h GeoPoint.h \
-	Tokenizer.h Node.h MagTranslator.h ImageProperties.h \
-	LogoPlotting.h ImportObject.h ImportObject.cc ColourTable.h \
-	PageID.h Transformation.h Dimension.h XmlNode.h XmlTree.h \
-	XmlReader.h BackgroundColour.h ColourTableDefinition.h \
-	ColourTableDefinitionCompute.h \
-	ColourTableDefinitionComputeInterface.h \
-	ColourTableDefinitionList.h \
-	ColourTableDefinitionListInterface.h TableDefinition.h \
-	TableDefinitionList.h TableDefinitionListInterface.h \
-	TableDefinitionCompute.h TableDefinitionComputeInterface.h \
-	HeightTableDefinition.h LevelTableDefinition.h IntervalMap.h \
-	PaperDimension.h Matrix.h MatrixHandler.h Data.h Decoder.h \
-	BasePointsHandler.h RasterData.h Visualiser.h \
-	CustomisedPoint.h PointsHandler.h MetaData.h Polyline.h Text.h \
-	Symbol.h BinaryObject.h Arrow.h Flag.h Flag.cc Image.h \
-	ArrowProperties.h MagicsParameter.cc MagicsParameter.h \
-	Clipper.h LogoPlottingBase.h TableDefinitionCompute.cc \
-	FrameBase.cc FrameBase.h TableDefinitionList.cc Coordinate.h \
-	OutputHandler.h MagFont.h FortranRootSceneNodeAttributes.h \
-	OutputHandlerAttributes.h AnimationRules.h SymbolItem.h \
-	UserPoint.h Label.h Timer.h FortranSceneNodeAttributes.h \
-	PageIDAttributes.h LogoPlottingAttributes.h \
-	UserLogoPlottingAttributes.h FortranViewNodeAttributes.h \
-	GeoRectangularProjection.h \
-	GeoRectangularProjectionAttributes.h \
-	PolarStereographicProjection.h SatelliteProjection.h \
-	TaylorProjection.h Proj4Projection.h Static.h DriverStatic.h \
-	ProgressObject.h PolyCoast.h ProgressTask.h FullPaperPoint.h \
-	Seconds.h Matrix.cc Path.h MagicsSingleton.h PlotManager.h \
-	MagicsFormat.h CartesianTransformation.h Dimension.cc \
-	XCoordinate.h YCoordinate.h marsmachine.h linux.h aix.h \
-	Thread.h MutexCond.h Mutex.h AutoLock.h ThreadControler.h \
-	Task.h MagExceptions.h ThreadSingleton.h ThreadSingleton.cc \
-	DataStats.h SciMethods.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-PROJECTION_ATTRIBUTES = GeoRectangularProjectionAttributes.cc \
-	PolarStereographicProjectionAttributes.cc \
-	TaylorProjectionAttributes.cc $(am__append_1)
-PROJECTION_SRC = GeoRectangularProjection.cc \
-	PolarStereographicProjection.cc TaylorProjection.cc \
-	$(am__append_2)
-PROJECTION_INC = GeoRectangularProjection.h \
-	GeoRectangularProjectionAttributes.h \
-	PolarStereographicProjection.h SatelliteProjection.h \
-	TaylorProjection.h $(am__append_3)
-noinst_LTLIBRARIES = libcommon.la
-include_H = \
-	OutputFactory.h MagLog.h \
-	BaseParameter.h Colour.h MagException.h \
-	Factory.cc Factory.h \
-	ParameterManager.h Frame.h Layout.h \
-	PaperPoint.h GeoPoint.h  Tokenizer.h Node.h MagTranslator.h \
-	ImageProperties.h LogoPlotting.h \
-	ImportObject.h ImportObject.cc ColourTable.h PageID.h \
-	Transformation.h Dimension.h \
-	XmlNode.h XmlTree.h XmlReader.h BackgroundColour.h \
-	ColourTableDefinition.h ColourTableDefinitionCompute.h ColourTableDefinitionComputeInterface.h\
-	ColourTableDefinitionList.h ColourTableDefinitionListInterface.h  \
-	TableDefinition.h TableDefinitionList.h TableDefinitionListInterface.h \
-	TableDefinitionCompute.h TableDefinitionComputeInterface.h \
-	HeightTableDefinition.h LevelTableDefinition.h IntervalMap.h PaperDimension.h \
-	Matrix.h MatrixHandler.h Data.h Decoder.h \
-	BasePointsHandler.h RasterData.h  Visualiser.h CustomisedPoint.h PointsHandler.h \
-	MetaData.h \
-	Polyline.h \
-	Text.h \
-	Symbol.h \
-	BinaryObject.h \
-	Arrow.h \
-	Flag.h Flag.cc \
-	Image.h  \
-	ArrowProperties.h \
-	MagicsParameter.cc MagicsParameter.h Clipper.h LogoPlottingBase.h \
-	TableDefinitionCompute.cc  \
-	FrameBase.cc FrameBase.h \
-	TableDefinitionList.cc \
-	Coordinate.h OutputHandler.h \
-	MagFont.h FortranRootSceneNodeAttributes.h OutputHandlerAttributes.h \
-	AnimationRules.h SymbolItem.h \
-	UserPoint.h Label.h \
-	Timer.h \
-	FortranSceneNodeAttributes.h PageIDAttributes.h LogoPlottingAttributes.h UserLogoPlottingAttributes.h FortranViewNodeAttributes.h \
-	${PROJECTION_INC} CustomisedPoint.h Static.h DriverStatic.h ProgressObject.h PolyCoast.h \
-	ProgressTask.h FullPaperPoint.h \
-	BasePointsHandler.h PointsHandler.h Decoder.h Data.h \
-	Visualiser.h MatrixHandler.h \
-	Seconds.h \
-	Matrix.h Matrix.cc \
-	Path.h\
-	MagicsSingleton.h \
-	PlotManager.h \
-	Image.h  \
-	XmlReader.h XmlTree.h XmlNode.h \
-	MagicsFormat.h \
-	CartesianTransformation.h \
-	Dimension.cc \
-	XCoordinate.h YCoordinate.h marsmachine.h linux.h aix.h \
-	Thread.h MutexCond.h Mutex.h AutoLock.h ThreadControler.h Task.h MagExceptions.h ThreadSingleton.h ThreadSingleton.cc \
-	DataStats.h SciMethods.h
-
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = magics_api.h
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = magics_api.h $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(noinst_H) $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = $(noinst_H)
-ATTRIBUTES = \
-	MetaDataAttributes.cc OutputHandlerAttributes.cc \
-	FortranSceneNodeAttributes.cc FortranViewNodeAttributes.cc \
-	FortranRootSceneNodeAttributes.cc CartesianTransformationAttributes.cc \
-	LogoPlottingAttributes.cc UserLogoPlottingAttributes.cc \
-	XDateCoordinateAttributes.cc YDateCoordinateAttributes.cc \
-	XLogarithmicCoordinateAttributes.cc YLogarithmicCoordinateAttributes.cc \
-	XRegularCoordinateAttributes.cc YRegularCoordinateAttributes.cc \
-	XHyperCoordinateAttributes.cc YHyperCoordinateAttributes.cc \
-	PageIDAttributes.cc BinaryObjectAttributes.cc
-
-nodist_libcommon_la_SOURCES = ${ATTRIBUTES} ${PROJECTION_ATTRIBUTES}
-libcommon_la_SOURCES = \
-	${PROJECTION_SRC} \
-	Data.cc Matrix.cc MagicsCalls.cc Static.cc DriverStatic.cc MagLog.cc Colour.cc Transformation.cc MagException.cc \
-	BaseParameter.cc ParameterManager.cc   \
-	Tokenizer.cc Timer.cc Seconds.cc Label.cc \
-	ArrowProperties.cc \
-	XmlReader.cc XmlTree.cc XmlNode.cc Dimension.cc \
-	MetaData.cc \
-	MagicsFormat.cc \
-	OutputHandler.cc  OutputFactory.cc \
-	MagFont.cc \
-	ColourTable.cc ColourTableDefinitionList.cc \
-	ColourTableDefinitionCompute.cc CartesianTransformation.cc \
-	BinaryObject.cc \
-	Coordinate.cc \
-	LogoPlotting.cc \
-	PageID.cc AnimationRules.cc Layout.cc SymbolItem.cc Symbol.cc Polyline.cc \
-	Text.cc Flag.cc   \
-	Mutex.cc MutexCond.cc Thread.cc MagExceptions.cc AutoLocker.cc \
-	ThreadControler.cc Task.cc \
-	DataStats.cc SciMethods.cc BasePointsHandler.cc PointsHandler.cc
-
-libcommon_la_LDFLAGS = -no-undefined -no-install
-AM_CPPFLAGS = ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/web -I$(top_srcdir)/src/terralib/kernel \
-	-I$(top_srcdir)/src/common -I$(top_srcdir)/src/basic \
-	-I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers \
-	-I$(top_srcdir)/src/decoders -I$(top_srcdir)/include \
-	$(am__append_4)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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/common/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/common/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libcommon.la: $(libcommon_la_OBJECTS) $(libcommon_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libcommon_la_LINK)  $(libcommon_la_OBJECTS) $(libcommon_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AnimationRules.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ArrowProperties.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AutoLocker.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BaseParameter.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BasePointsHandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinaryObject.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinaryObjectAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CartesianTransformation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CartesianTransformationAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Colour.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ColourTable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ColourTableDefinitionCompute.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ColourTableDefinitionList.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Coordinate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Data.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DataStats.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Dimension.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DriverStatic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Flag.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FortranRootSceneNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FortranSceneNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FortranViewNodeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GeoRectangularProjection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GeoRectangularProjectionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Label.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Layout.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LogoPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LogoPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagException.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagExceptions.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagFont.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagLog.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagicsCalls.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagicsFormat.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Matrix.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetaData.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetaDataAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Mutex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MutexCond.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OutputFactory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OutputHandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OutputHandlerAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PageID.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PageIDAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ParameterManager.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PointsHandler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolarStereographicProjection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolarStereographicProjectionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Polyline.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4Projection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4ProjectionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SciMethods.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Seconds.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Static.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Symbol.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Task.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TaylorProjection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TaylorProjectionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Text.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Thread.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ThreadControler.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Timer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Tokenizer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Transformation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/UserLogoPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XDateCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XHyperCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XLogarithmicCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XRegularCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlNode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlReader.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XmlTree.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YDateCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YHyperCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YLogarithmicCoordinateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YRegularCoordinateAttributes.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/common/Matrix.cc b/src/common/Matrix.cc
index ce2aa4c..1e0cb73 100644
--- a/src/common/Matrix.cc
+++ b/src/common/Matrix.cc
@@ -32,7 +32,8 @@
 #include "Matrix.h"
 #include "Timer.h"
 #include "SegmentJoiner.h"
-
+#include "MatrixHandler.h"
+#include "MatrixHandler.h"
 using namespace magics;
 
 
@@ -40,7 +41,7 @@ using namespace magics;
 
 void ProjectedMatrix::build()
 {
-	vector<pair<int, int>  > coords(4);
+	vector< std::pair<int, int>  > coords(4);
 	for (int r = 0; r < rows_; r++)
 		for (int c = 0; c < columns_; c++)
 			push_back(missing_);
@@ -64,7 +65,7 @@ void ProjectedMatrix::build()
 			vector<Point> points;
 			bool stop = true;
 			
-			for (vector<pair<int, int>  >::iterator p = coords.begin(); p != coords.end(); ++p) {
+			for (vector< std::pair<int, int>  >::iterator p = coords.begin(); p != coords.end(); ++p) {
 				int r = row+ p->first;
 				int c = column+ p->second;
 				double rr = rowsArray_[index(r, c)];
@@ -82,7 +83,7 @@ void ProjectedMatrix::build()
 				// Go to next cell...
 
 				continue;
-			for (vector<pair<int, int>  >::iterator p = coords.begin(); p != coords.end(); ++p) {
+			for (vector< std::pair<int, int>  >::iterator p = coords.begin(); p != coords.end(); ++p) {
 				
 				int r = row+ p->first;
 				int c = column+ p->second;
@@ -370,7 +371,7 @@ GeoBoxMatrixHandler::GeoBoxMatrixHandler(const AbstractMatrix& matrix, const Tra
 	bool global =  ( matrix_.regular_column(columns-1) - matrix_.regular_column(0) ) > ( 360. - 2 *matrix_.XResolution() );
 	if (!global) {
 
-		lon = matrix_.regular_column(0) - step;
+		lon = matrix_.column(0, 0) - step;
 		if ( minlon <= lon && lon <= maxlon)
 				lons[lon] = -1;
 
@@ -379,7 +380,7 @@ GeoBoxMatrixHandler::GeoBoxMatrixHandler(const AbstractMatrix& matrix, const Tra
 		ml = lon + 360;
 		while (  ml >= minlon && ml <= maxlon ) {  lons[ml] = -1; ml += 360; }
 
-		lon = matrix_.regular_column(columns-1) + step;
+		lon = matrix_.column(0, columns-1) + step;
 		if ( minlon <= lon && lon <= maxlon)
 				lons[lon] = -1;
 
@@ -434,3 +435,10 @@ GeoBoxMatrixHandler::GeoBoxMatrixHandler(const AbstractMatrix& matrix, const Tra
 
 
 }
+MatrixHandler* RotatedMatrix::getReady(const Transformation&) const
+{
+	return new MatrixHandler(*this);
+}
+MatrixHandler* Matrix::getReady(const Transformation& transformation)  const{
+	return transformation.prepareData(*this);
+}
diff --git a/src/common/Matrix.h b/src/common/Matrix.h
index 17c33ed..22b0fbb 100644
--- a/src/common/Matrix.h
+++ b/src/common/Matrix.h
@@ -37,6 +37,8 @@
 namespace magics {
 
 class XmlNode;
+class MatrixHandler;
+class Transformation;
 
 class AbstractMatrix 
 {
@@ -49,8 +51,8 @@ public :
     virtual double  regular_column(int) const = 0;
     virtual double  row(int, int) const = 0;
     virtual double  column(int, int) const = 0;
-     virtual double  real_row(double, double) const = 0;
-    virtual double  real_column(double, double) const = 0;
+
+
     virtual int    lowerRow(double) const = 0;
     virtual int    lowerColumn(double) const = 0;    
     virtual double  interpolate(double  i, double  j) const = 0; 
@@ -63,7 +65,7 @@ public :
     virtual double   height() const = 0;
     virtual bool akimaEnable() const { return false; }
 
-  
+    virtual MatrixHandler* getReady(const Transformation&) const { assert(false); }
 
    
    
@@ -128,7 +130,7 @@ public :
 struct Plus 
 {
     Plus(double offset, double missing) : offset_(offset), missing_(missing) {}
-    double operator()(double x) const { return ( x == missing_ ) ? missing_ : x + offset_; }
+    double operator()(double x) const { return ( same(x, missing_)  ) ? missing_ : x + offset_; }
     double offset_;
     double missing_;
 };
@@ -136,7 +138,7 @@ struct Plus
 struct Multiply 
 {
     Multiply(double factor, double missing) : factor_(factor), missing_(missing) {}
-    double operator()(double x) const { return ( x == missing_ ) ? missing_ : x * factor_; }
+    double operator()(double x) const { return ( same(x, missing_) ) ? missing_ : x * factor_; }
     double factor_;
     double missing_;
 };
@@ -178,6 +180,8 @@ public:
 	Matrix* clone() { return new Matrix(); }
 	void set(const XmlNode&) { }
 	
+	MatrixHandler* getReady(const Transformation&) const;
+
     Matrix(int rows, int columns, double val):     
         rows_(rows), 
         columns_(columns), missing_(DBL_MIN), akima_(false), min_(DBL_MAX), max_(DBL_MIN)
@@ -214,10 +218,9 @@ public:
      
     double regular_row(int i) const { return rowsAxis_[i]; } 
     double row(int i, int) const { return regular_row(i); }
-    double real_row(double r, double) const { return r; }
-    double real_column(double, double c) const { return c; }
     
 
+
     void release()
     {
     	rows_ = 0;
@@ -483,8 +486,8 @@ public:
 		vector<double>&  columnsArray() const { return columnsArray_; }
 		
 		int index(int r, int c) { return (r* origColumns_) + c; }
-		  
-		  
+
+
 protected:
 	      void build();
 	      
@@ -517,6 +520,9 @@ public:
 		double operator()(int r, int c) const { return values_[r* columns_ + c]; }
 		double row(int r, int c) const { return rowsArray_[r* columns_ + c]; }
 		double column(int r, int c) const { return columnsArray_[r* columns_ + c]; }
+		double  XResolution() const  { return column(0,1) - column(0,0); }
+		double  YResolution() const  { return row(1,0) - row(0,0); }
+		MatrixHandler* getReady(const Transformation&) const;
 protected:
 
 		mutable vector<double> rowsArray_;
diff --git a/src/common/MatrixHandler.h b/src/common/MatrixHandler.h
index 0bf24fe..fd56644 100644
--- a/src/common/MatrixHandler.h
+++ b/src/common/MatrixHandler.h
@@ -104,17 +104,17 @@ public :
                 double y1, y2;
                 int r1, r2, c1, c2;
                 vector<double> distances;
-                map<double, pair<pair<double, double>,  pair<int, int> > > helper;
-                vector<pair<pair<double, double>,  pair<int, int> > > coordinates;
+                map<double, pair< std::pair<double, double>,  pair<int, int> > > helper;
+                vector< std::pair< std::pair<double, double>,  pair<int, int> > > coordinates;
                 if (ri != -1 ) {
                 	boundColumn(column, x1, c1, x2, c2);
-                	coordinates.push_back(make_pair(make_pair(row, x1), make_pair(ri, c1)));
-                	coordinates.push_back(make_pair(make_pair(row, x2), make_pair(ri, c2)));
+                	coordinates.push_back(make_pair(make_pair(row, x1), std::make_pair(ri, c1)));
+                	coordinates.push_back(make_pair(make_pair(row, x2), std::make_pair(ri, c2)));
                 }
                 else if (ci != -1 ) {
                 	boundRow(row, y1, r1, y2, r2);
-                	coordinates.push_back(make_pair(make_pair(y1, column), make_pair(r1, ci)));
-                	coordinates.push_back(make_pair(make_pair(y2, column), make_pair(r2, ci)));
+                	coordinates.push_back(make_pair(make_pair(y1, column), std::make_pair(r1, ci)));
+                	coordinates.push_back(make_pair(make_pair(y2, column), std::make_pair(r2, ci)));
 
                 }
                 else {
@@ -124,13 +124,13 @@ public :
                 // 4 points ...
                 // x1, y1 - x2, y1 -  x1, y2 - x2, y2
                 // find the nearest...
-                	coordinates.push_back(make_pair(make_pair(y1, x1), make_pair(r1, c1)));
-                	coordinates.push_back(make_pair(make_pair(y1, x2), make_pair(r1, c2)));
-                	coordinates.push_back(make_pair(make_pair(y2, x1), make_pair(r2, c1)));
-                	coordinates.push_back(make_pair(make_pair(y2, x2), make_pair(r2, c2)));
+                	coordinates.push_back(make_pair(make_pair(y1, x1), std::make_pair(r1, c1)));
+                	coordinates.push_back(make_pair(make_pair(y1, x2), std::make_pair(r1, c2)));
+                	coordinates.push_back(make_pair(make_pair(y2, x1), std::make_pair(r2, c1)));
+                	coordinates.push_back(make_pair(make_pair(y2, x2), std::make_pair(r2, c2)));
                 }
 
-                for (vector< pair<pair<double, double>, pair<int, int> > >::iterator coord = coordinates.begin(); coord != coordinates.end(); ++coord) {
+                for (vector< pair< std::pair<double, double>, pair<int, int> > >::iterator coord = coordinates.begin(); coord != coordinates.end(); ++coord) {
                 	double distance = (row- coord->first.first)*(row-coord->first.first) + (column - coord->first.second)*(column - coord->first.second);
                 	//cout << distance << " [ " << coord->first.first << ", " << coord->first.second << "]" << endl;
                 	distances.push_back(distance);
@@ -142,7 +142,7 @@ public :
 
 				double min = *std::min_element(distances.begin(), distances.end());
 
-                map<double, pair<pair<double, double>,  pair<int, int> > >::iterator near = helper.find(min);
+                map<double, pair< std::pair<double, double>,  pair<int, int> > >::iterator near = helper.find(min);
 
 				if ( near == helper.end() ) 
 					return  matrix_.missing();
@@ -308,11 +308,7 @@ public :
     virtual double  column(int i, int j) const { 
         return matrix_.column(i, j); }
     
-    virtual double  real_row(double i, double j) const { 
-        return matrix_.real_row(i, j); 
-    }
-    virtual double  real_column(double i, double j) const { 
-        return matrix_.real_column(i, j); }
+
     virtual double  regular_row(int i) const { 
         return matrix_.regular_row(i); 
     }
@@ -335,7 +331,10 @@ public :
     
     
     
- 
+    MatrixHandler* getReady(const Transformation& transformation) {
+    	return matrix_.getReady(transformation);
+
+    }
     
 protected:    
     const AbstractMatrix& matrix_;
@@ -502,6 +501,7 @@ public:
 	transformation_(transformation),
 	original_(0) 
    { 
+
         double minx = std::min(transformation.getMinX(), transformation.getMaxX());
         double maxx = std::max(transformation.getMinX(), transformation.getMaxX());
         double miny = std::min(transformation.getMinY(), transformation.getMaxY());
@@ -575,19 +575,23 @@ public:
            index2 = upperColumn(r);
            column2 = regular_column(index2);
        } 
-       int rowIndex(double r) const {
-         	map<double, int>::const_iterator i = rowsMap_.lower_bound(r);
-         	if ( same(i->first, r) )
-         			return i->second;
+        int rowIndex(double r) const {
+            map<double, int>::const_iterator i = rowsMap_.lower_bound(r);
+            if (i != rowsMap_.end())
+            {
+                if ( same(i->first, r) )
+                    return i->second;
+            }
          	return -1;
-
-
          }
 
-         int columnIndex(double c) const {
-         	map<double, int>::const_iterator i = columnsMap_.lower_bound(c);
-         	if ( same(i->first, c) )
-         	    	return i->second;
+        int columnIndex(double c) const {
+            map<double, int>::const_iterator i = columnsMap_.lower_bound(c);
+            if (i != columnsMap_.end())
+            {
+                if ( same(i->first, c) )
+                    return i->second;
+            }
          	return -1;
          }
     
@@ -624,19 +628,23 @@ public:
     int rows() const { return rowsMap_.size(); }
     
     int rowIndex(double r) const {
-    	map<double, int>::const_iterator i = rowsMap_.lower_bound(r);
-    	if ( same(i->first, r) )
-    			return i->second;
+        map<double, int>::const_iterator i = rowsMap_.lower_bound(r);
+        if (i != rowsMap_.end())
+        {
+            if ( same(i->first, r) )
+                return i->second;
+        }
     	return -1;
-
-
     }
     
     int columnIndex(double c) const {
-    	map<double, int>::const_iterator i = columnsMap_.lower_bound(c);
-    	if ( same(i->first, c) )
-    	    	return i->second;
-    	return -1;
+        map<double, int>::const_iterator i = columnsMap_.lower_bound(c);
+        if (i != columnsMap_.end())
+        {
+            if ( same(i->first, c) )
+                return i->second;
+        }
+        return -1;
     }
     
     inline double column(int, int column) const {   	
@@ -654,11 +662,14 @@ public:
 	int lowerRow(double r) const
 	{   
 		map<double, int>::const_iterator i = rowsMap_.lower_bound(r);
-		if ( same(i->first, r) )
-		   return i->second;
-		if  ( i != rowsMap_.begin() ) {
-			i--;
-			return i->second;
+		if (i != rowsMap_.end())
+		{
+			if ( same(i->first, r) )
+			   return i->second;
+			if  ( i != rowsMap_.begin() ) {
+				i--;
+				return i->second;
+			}
 		}
 		return -1;
 	}  
@@ -666,11 +677,14 @@ public:
 	int lowerColumn(double c) const
 	{    	
 		map<double, int>::const_iterator i = columnsMap_.lower_bound(c);
-		if ( same(i->first, c) )
-			return i->second;
-		if  ( i != columnsMap_.begin() ) {
-			i--;
-			return i->second;
+		if (i != columnsMap_.end())
+		{
+			if ( same(i->first, c) )
+				return i->second;
+			if  ( i != columnsMap_.begin() ) {
+				i--;
+				return i->second;
+			}
 		}
 		return -1;
 	}
@@ -863,8 +877,6 @@ public:
 	double row(int row, int column) const {return matrix_.row(rowIndex(row), columnIndex(column));}
 	double regular_row(int row) const {return matrix_.regular_row(rowIndex(row));}
 	double regular_column(int column) const {return matrix_.regular_column(columnIndex(column));}
-	double real_row(int row, int column) const {return matrix_.real_row(rowIndex(row), columnIndex(column));}
-	double real_column(int row, int column) const {return matrix_.real_column(rowIndex(row), columnIndex(column));}
 
 protected :
 	int columnIndex(int column) const
diff --git a/src/common/MetaData.cc b/src/common/MetaData.cc
index 0e7d104..870a888 100644
--- a/src/common/MetaData.cc
+++ b/src/common/MetaData.cc
@@ -41,6 +41,7 @@ MetaDataVisitor::MetaDataVisitor()
 	meta_.push_back(this);
 }
 
+string MetaDataVisitor::start_;
 
 MetaDataVisitor::~MetaDataVisitor() 
 {
@@ -56,6 +57,21 @@ void MetaDataVisitor::print(ostream& out)  const
 	out << "]";
 }
 
+string now()
+{
+	char tmp[256];
+	timeval t;
+	gettimeofday(&t,0);
+	sprintf(tmp, "%f", (t.tv_sec + t.tv_usec / 1000000.0));
+	return string(tmp);
+
+}
+void MetaDataVisitor::start()
+{
+	start_ = now();
+
+
+}
 
 void MetaDataVisitor::close()
 {
@@ -88,7 +104,7 @@ void MetaDataVisitor::collectMetaData()
 
 
 
-		out << "{\n\"magics timers\" : {" << endl;
+		out << "{\n\"timers\" : {" << endl;
 
 		string s = "";
 		                    
@@ -101,6 +117,8 @@ void MetaDataVisitor::collectMetaData()
 
 		struct rusage p;
 		getrusage(RUSAGE_SELF, &p);
+		out << 	"\n\t},\n\t\"start\": " << start_;
+		out << 	",\n\t\"stop\": " << now();
 		out << 	",\n\t\"general\": {" << endl;
 		out << "\t\t\"user\" : " <<  p.ru_utime.tv_sec << "," << endl;
 		out << "\t\t\"system\" : " <<  p.ru_stime.tv_sec << "," << endl;
diff --git a/src/common/MetaData.h b/src/common/MetaData.h
index fd05689..14e1784 100644
--- a/src/common/MetaData.h
+++ b/src/common/MetaData.h
@@ -83,12 +83,15 @@ public:
     virtual void close(); 
     
     static void collect();
+
+    static void start();
     
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
 	 map<string, string> web_;
 	 static vector<MetaDataVisitor*> meta_;
+	 static string start_;
 private:
     //! Copy constructor - No copy allowed
 	MetaDataVisitor(const MetaDataVisitor&);
@@ -139,5 +142,6 @@ public:
 	}
 };
 
+
 } // namespace magics
 #endif
diff --git a/src/common/Node.cc b/src/common/Node.cc
new file mode 100644
index 0000000..05a4892
--- /dev/null
+++ b/src/common/Node.cc
@@ -0,0 +1,247 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Node.cc
+    \brief Implementation of the Template class Node.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Wed 11-Feb-2004
+    
+    Changes:
+    
+*/
+
+#include "Node.h"
+#include "Legend.h"
+#include "Title.h"
+#include "Layout.h"
+#include "PaperDimension.h"
+#include "MagTranslator.h"
+#include "MagicsManager.h"
+
+
+using namespace magics;
+
+
+
+class magics::FrameNode : public BaseSceneObject
+{
+public:
+	FrameNode(const RootNode& root) : 
+		width_(root.getWidth()),
+		height_(root.getHeight()),
+		x_(0),
+		y_(0)
+    { 
+		layout_ = new Layout();
+		layout_->set(this);
+		layout_->setLevel(1);
+		layout_->box();
+        //layout_->needsNewPage();
+		addChild(new LayoutTask(layout_));
+	}
+	~FrameNode() { }
+	virtual void set(const map<string, string>&) {}
+	void setFrame(FrameBase* frame) {  (*layout_)["superroot"]->setFrame(frame); }
+	void attachFrameTask() { addChild(new FrameTask(*layout_, "superroot")); } 
+	double width() const  { return width_; }
+    double height() const { return height_; }   
+    void needsNewPage() { layout_->needsNewPage(); } 
+    
+    double rootWidth() const  { return width_; }
+    double rootHeight() const { return height_; }
+    
+    double x() const      { return x_; }    
+    double y() const      { return y_; }
+    
+    virtual double percentWidth() const  { return 100; }
+    virtual double percentX() const      { return 0; }
+    virtual double percentHeight() const { return 100; }
+    virtual double percentY() const      { return 0; }
+    Layout& getLayout()  { return *layout_; }
+    
+ 
+    
+   
+protected :
+	double width_;
+	double height_;
+	double x_;
+	double y_;
+	Layout* layout_;
+	
+	
+};
+
+RootNode::RootNode() : frameNode_(0), width_(0), height_(0), frame_(0), metaData_(0), needsNewPage_(false) 
+{	
+}
+
+RootNode::~RootNode()
+{ 
+	
+}
+    
+
+
+void RootNode::set(const map<string, string>& params)
+{
+	SuperPageAttributes attributes;
+	attributes.set(params);
+	set(attributes);
+}
+
+void RootNode::set(const XmlNode& params)
+{
+    static bool needsNewPage = false;
+	XmlPageAttributes attributes;
+	attributes.set(params);
+	set(attributes);
+    if (needsNewPage)  frameNode_->needsNewPage();
+    else needsNewPage = true;
+}
+
+void RootNode::set(const SuperPageAttributes& params)
+{
+	width_ = params.getWidth();
+	height_ = params.getHeight();
+	
+	frame_ = params.getFrame().clone();
+	Colour* colour = new Colour(params.getColour());
+	frame_->setColour(colour);
+	frame_->setStyle( params.getStyle()); 
+	frame_->setThickness( params.getThickness());
+	delete colour;
+	
+}
+
+void RootNode::set(const XmlPageAttributes& params)
+{
+    PaperDimension* dimension = MagTranslator<string, PaperDimension>()(params.getFormat());
+    dimension->setOrientation(params.getOrientation());
+	
+	width_ = dimension->getWidth();
+	height_ = dimension->getHeight();
+	ParameterManager::set("SUPER_PAGE_X_LENGTH", width_);
+	ParameterManager::set("SUPER_PAGE_Y_LENGTH", height_);
+	
+	
+	
+	//MagLog::dev()<< "dispatch[" << width_ << ", " << height_ << "]\n";
+	MagicsManager::dispatchDimension(width_, height_);
+	
+
+	if ( !frameNode_ ) {
+		frameNode_ = new FrameNode(*this);
+    	(*frameNode_).setParent(this);
+    	children_.push_back(frameNode_);
+	}
+	frame_ = params.getFrame().clone();
+	metaData_ = params.getMeta().clone();
+
+	frameNode_->setFrame(frame_);
+    frameNode_->attachFrameTask();
+   
+    
+    MagLog::debug() << " setting of the Root..." << *this << "\n";
+	
+	delete dimension;
+		
+}
+
+
+BaseSceneObject* RootNode::newXmlNode() 
+{
+	XmlPageAttributes attributes;
+	set(attributes);
+	
+    return frameNode_;
+}
+ 
+
+BaseSceneObject* RootNode::newFortranNode() 
+{
+	SuperPageAttributes attributes;
+	set(attributes);
+	frameNode_ = new FrameNode(*this);
+	(*frameNode_).setParent(this);
+	children_.push_back(frameNode_);
+	frameNode_->setFrame(frame_);
+    frameNode_->attachFrameTask();
+    return frameNode_;
+}
+
+BaseSceneObject* RootNode::newMetviewNode(const SuperPageAttributes& attributes) 
+{
+	
+	set(attributes);
+	ParameterManager::set("SUPER_PAGE_X_LENGTH", width_);
+	ParameterManager::set("SUPER_PAGE_Y_LENGTH", height_);
+	
+	frameNode_ = new FrameNode(*this);
+	(*frameNode_).setParent(this);
+	children_.push_back(frameNode_);
+	frameNode_->setFrame(frame_);
+    frameNode_->attachFrameTask();
+    return frameNode_;
+}
+  
+
+void RootNode::addChild(BaseSceneObject* child) 
+{
+    if ( !frameNode_)  newXmlNode();
+    frameNode_->addChild(child);
+}
+
+void RootNode::print(ostream& out)  const
+{
+	out << "Root[";
+	BaseSceneObject::print(out);
+	out << "]";
+}
+
+Layout& RootNode::getLayout() 
+{ 
+	assert(frameNode_);
+	return frameNode_->getLayout();
+}
+	
+
+void RootNode::clear()
+{ 
+	children_.clear(); 
+	frameNode_ = 0;
+	needsNewPage_ = false;
+}
+
+void RootNode::prepareGraphics() 
+{
+	BaseSceneObject::prepareGraphics();
+	
+	if (!metaData_) return;
+	
+	
+
+	
+	visit(*metaData_);
+	
+	
+	metaData_->close();
+	
+}
diff --git a/src/common/OutputHandler.cc b/src/common/OutputHandler.cc
index 42d1319..ff2edd8 100644
--- a/src/common/OutputHandler.cc
+++ b/src/common/OutputHandler.cc
@@ -30,6 +30,8 @@
 
 using namespace magics;
 
+double OutputHandler::lineSpacing_ = 1.2;
+
 void OutputHandler::set(DriverManager& magics) 
 {
 	if ( formats_.empty() ) formats_.push_back(format_);
@@ -37,16 +39,32 @@ void OutputHandler::set(DriverManager& magics)
 	for ( vector<string>::const_iterator format = formats_.begin(); format != formats_.end(); ++format)
 	{
 		OutputFactory* factory = MagTranslator<string, OutputFactory>()(*format);
+        ASSERT(factory);
+
 		XmlNode node;
 		factory->set(magics, node); 
 		factories_.push_back(factory);
 	}
+
+	// Patch for driver png : make the line spacing smaller in case of png !
+	if (  formats_.size() == 1 && (formats_.front() == "png" || formats_.front() == "pdf") )
+			lineSpacing_ = 1.;
+
+
 }
 
 void OutputHandler::set(const XmlNode& node, DriverManager& magics) 
 {
 	try {
 		OutputFactory* factory = MagTranslator<string, OutputFactory>()(node.name());
+		if (node.name() == "png" && factories_.empty() )
+			lineSpacing_ = 0.8;
+		else if (node.name() == "pdf" && factories_.empty() )
+			lineSpacing_ = 0.8;
+		else
+			lineSpacing_ = 1.2;
+
+        ASSERT(factory);
 	
 		factory->set(magics, node); 
 		factories_.push_back(factory);
diff --git a/src/common/OutputHandler.h b/src/common/OutputHandler.h
index 713b81d..1cfec3b 100644
--- a/src/common/OutputHandler.h
+++ b/src/common/OutputHandler.h
@@ -72,12 +72,17 @@ public:
 	
 	void clear() { factories_.clear(); }
 	
+	static double patchLineSpacing()  { return lineSpacing_; }
+
 	
    
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream& out) const { out << "OutputHandler[]\n"; } 
 	 VectorOfPointers<vector<OutputFactory* > > factories_;
+	 static double lineSpacing_;
+
+
 
 private:
 	//! Copy constructor - No copy allowed	VectorOfPointers<OutputFactory* > factories_;
diff --git a/src/common/OutputHandlerAttributes.h b/src/common/OutputHandlerAttributes.h
deleted file mode 100644
index 4de5955..0000000
--- a/src/common/OutputHandlerAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file OutputHandlerAttributes.h
-    \brief Definition of OutputHandler Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef OutputHandlerAttributes_H
-#define OutputHandlerAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class OutputHandlerAttributes 
-{
-public:
-//  --  constructor
-    OutputHandlerAttributes();
-    
-//  --  destructor
-    virtual ~OutputHandlerAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const OutputHandlerAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string format_;
-	stringarray formats_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const OutputHandlerAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/PageIDAttributes.h b/src/common/PageIDAttributes.h
deleted file mode 100644
index b929fef..0000000
--- a/src/common/PageIDAttributes.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file PageIDAttributes.h
-    \brief Definition of PageID Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef PageIDAttributes_H
-#define PageIDAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "LogoPlotting.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class PageIDAttributes 
-{
-public:
-//  --  constructor
-    PageIDAttributes();
-    
-//  --  destructor
-    virtual ~PageIDAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const PageIDAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double height_;
-	auto_ptr<Colour> colour_;
-	bool magics_;
-	string user_text_;
-	bool system_;
-	bool date_;
-	bool errors_;
-	bool text_;
-	auto_ptr<NoLogoPlotting> logo_;
-	string font_;
-	string font_style_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const PageIDAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/PageIDBase.h b/src/common/PageIDBase.h
new file mode 100644
index 0000000..5111c58
--- /dev/null
+++ b/src/common/PageIDBase.h
@@ -0,0 +1,102 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file PageIDBase.h
+    \brief Definition of the Template class PageIDBase.
+    
+    Magics Team - ECMWF 2006
+    
+    Started: Thu 9-Feb-2006
+    
+    Changes:
+    
+*/
+
+#ifndef PageIDBase_H
+#define PageIDBase_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+
+
+namespace magics {
+
+class Task;
+
+
+class PageIDBase {
+
+public:
+	PageIDBase() {}
+	virtual ~PageIDBase() {}
+    
+    virtual void set(const XmlNode&) {
+        MagLog::dev() << "PageIDBase::set(const XmlNode&)---> to be checked!...\n";
+    }
+    virtual void set(const map<string, string>&) {
+        MagLog::dev() << "PageIDBase::set(const map<string, string&)---> to be checked!...\n";
+    }
+    virtual PageIDBase* clone() const {
+        MagLog::dev() << "PageIDBase::set(const map<string, string&)---> to be checked!...\n";
+        return new PageIDBase();
+    }
+    virtual void toxml(ostream&, int = 0) const {
+    	 MagLog::dev() << "PageIDBase::virtual void toxml(ostream&, int = 0) const ---> to be checked!...\n";
+    }  
+    
+    virtual void operator()(const ErrorReporter&, Task&) const {
+    	MagLog::dev() << "PageIDBase::operator()(const ErrorReporter&, vector<BaseGraphicsObject*>&)---> to be checked!...\n";
+    }
+    
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream& out) const { out << "PageIDBase\n"; } 
+
+private:
+    //! Copy constructor - No copy allowed
+	PageIDBase(const PageIDBase&);
+    //! Overloaded << operator to copy - No copy allowed
+	PageIDBase& operator=(const PageIDBase&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const PageIDBase& p)
+		{ p.print(s); return s; }
+
+};
+
+template <>
+class MagTranslator<string, PageIDBase> { 
+public:
+	PageIDBase* operator()(const string& val )
+	{
+		return SimpleObjectMaker<PageIDBase>::create(val);
+	}     
+
+	PageIDBase* magics(const string& param)
+	{
+		string val;
+		ParameterManager::get(param, val);
+		return (*this)(val);
+	}
+};
+
+} // namespace magics
+#endif
diff --git a/src/common/PlotManager.cc b/src/common/PlotManager.cc
new file mode 100644
index 0000000..d29e53e
--- /dev/null
+++ b/src/common/PlotManager.cc
@@ -0,0 +1,121 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file PlotManager.cc
+    \brief Implementation of the Template class PlotManager.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Tue 17-Aug-2004
+    
+    Changes:
+    
+*/
+
+#include "PlotManager.h"
+#include "Page.h"
+
+
+using namespace magics;
+
+PlotManager::PlotManager() 
+{
+}
+
+
+PlotManager::~PlotManager() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void PlotManager::print(ostream& out)  const
+{
+	out << "PlotManager[";
+	out << "]";
+}
+
+void PlotManager::superpage(MagicsManager& magics)
+{
+   while (!empty() ) pop(); 
+   magics.execute();
+   magics.clear();
+}
+
+void PlotManager::page(MagicsManager&)
+{
+   pop();
+   page_ = true;
+}
+
+
+void PlotManager::check(MagicsManager& magics)
+{
+    if (empty()) {
+       addRoot(magics);
+    }
+    if (page_) addpage(magics);
+   
+}
+void PlotManager::addpage(MagicsManager& magics)
+{
+    if (empty()) addRoot(magics);
+    PageNode* node = new PageNode();
+    
+    top()->addChild(node);
+    node->setFromFortran();
+    push(node);   
+    page_ = false;
+}
+
+void PlotManager::addRoot(MagicsManager& magics)
+{
+   while (!empty()) {
+       pop();
+   }
+   
+   magics.execute();
+   magics.clear();
+       
+   
+   
+   BaseSceneObject* node = magics.root()->newFortranNode();
+
+   push(node);     
+   page_ = true;
+}
+
+void PlotManager::subpage(MagicsManager&)
+{
+	pop();
+	page_ = true;
+}
+void PlotManager::addNode(MagicsManager& manager, BaseSceneObject* object)
+{ 
+	if ( empty()) addRoot(manager);
+ 	top()->addChild(object);
+ 	push(object); 
+}
+void PlotManager::add(BaseSceneObject* object)
+{ 
+ 	top()->addChild(object);
+}
+
+
+static SimpleObjectMaker<PlotManager> plot_manager("positional");
diff --git a/src/common/PolarStereographicProjection.cc b/src/common/PolarStereographicProjection.cc
index 84218c8..bf8cc8c 100644
--- a/src/common/PolarStereographicProjection.cc
+++ b/src/common/PolarStereographicProjection.cc
@@ -45,6 +45,22 @@ using namespace magics;
 */
 PolarStereographicProjection::PolarStereographicProjection()  : projection_(0)
 {
+	projection_ = new TePolarStereographic(TeDatum(), vertical_longitude_*TeCDR, 0., 0., "Meters", TeNORTH_HEM);
+	// Setup constnat variables for tiling
+	originX_ = 0;
+	originY_ = 0;
+	tile_ = 256;
+
+	TeCoord2D ur = TeCoord2D(45*TeCDR, 20*TeCDR);
+	TeCoord2D ll = TeCoord2D(-135*TeCDR, 20*TeCDR);
+
+	TeCoord2D llxy = projection_->LL2PC(ll);
+	TeCoord2D urxy = projection_->LL2PC(ur);
+	unit_ = (urxy.x() - llxy.x());
+	unitEpsilon_ = unit_ * 0.000001;
+	delete projection_;
+	projection_ = 0;
+
 }
 
 /*!
@@ -119,11 +135,11 @@ PaperPoint PolarStereographicProjection::operator()(const PaperPoint& point)  co
 	return Transformation::operator()(point);
 }
 
-void PolarStereographicProjection::revert(const vector<pair<double, double> > & in, vector<pair<double, double> > & out) const
+void PolarStereographicProjection::revert(const vector< std::pair<double, double> > & in, vector< std::pair<double, double> > & out) const
 {
 	assert(projection_);
 	out.reserve(in.size());
-	for ( vector<pair<double, double> >::const_iterator pt = in.begin();  pt != in.end(); ++pt) {
+	for ( vector< std::pair<double, double> >::const_iterator pt = in.begin();  pt != in.end(); ++pt) {
 		TeCoord2D texy = TeCoord2D(pt->first, pt->second);
 		TeCoord2D geo = projection_->PC2LL(texy);
 		out.push_back(make_pair(geo.x()*TeCRD, geo.y()*TeCRD));
@@ -177,7 +193,7 @@ void PolarStereographicProjection::init(double width, double height)
 		// Create a grid 100/100 to calculate the corners ...
      
 		llx = ::min(urxy.x(), llxy.x());
-		urx = ::max(urxy.x(), llxy.x());
+		urx = std::max(urxy.x(), llxy.x());
 
 		if ( (urx - llx) < 10) {
 				urx = llx+10.;
@@ -185,7 +201,7 @@ void PolarStereographicProjection::init(double width, double height)
 		}
 
 		lly = ::min(urxy.y(), llxy.y());
-		ury = ::max(urxy.y(), llxy.y());
+		ury = std::max(urxy.y(), llxy.y());
 		if ( ( ury - lly ) < 10) {
 			ury = lly+10.;
 
@@ -227,18 +243,18 @@ void PolarStereographicProjection::init(double width, double height)
 	}
 	else {
 		llx = ::min(xmin_, xmax_);
-		urx = ::max(xmin_, xmax_);
+		urx = std::max(xmin_, xmax_);
 		lly = ::min(ymin_, ymax_);
-		ury = ::max(ymin_, ymax_);
+		ury = std::max(ymin_, ymax_);
 		TeCoord2D llxy(llx, lly);
 		TeCoord2D ll = projection_->PC2LL(llxy); 
 		TeCoord2D urxy(urx, ury);
 		TeCoord2D  ur = projection_->PC2LL(urxy); 
 		         
 		xmin_ =  ::min(ll.x()*TeCRD, ur.x()*TeCRD);
-		xmax_ = ::max(ll.x()*TeCRD, ur.x()*TeCRD); 
+		xmax_ = std::max(ll.x()*TeCRD, ur.x()*TeCRD); 
 		ymin_ =  ::min(ll.y()*TeCRD, ur.y()*TeCRD);
-		ymax_ =  ::max(ll.y()*TeCRD, ur.y()*TeCRD);
+		ymax_ =  std::max(ll.y()*TeCRD, ur.y()*TeCRD);
 		double stepx= (urx - llx)/100.;
 		double stepy= (ury - lly)/100.;
 		for (double x = llx; x <= urx; x += stepx )
@@ -282,12 +298,30 @@ void PolarStereographicProjection::init(double width, double height)
 
 		MagLog::dev() << " Projection definition-->[" << ymin_ << ", " << xmin_ << ", " << xmax_ << ", " << ymax_ << "]" << endl;
 	}
+
+
+
+	// Tiling information
+	askedxmin_ =  std::min(xpcmin_, xpcmax_);
+	askedxmax_ =  std::max(xpcmin_, xpcmax_);
+	askedymin_ =  std::min(ypcmin_, ypcmax_);
+	askedymax_ =  std::max(ypcmin_, ypcmax_);
+
+
 }
 
 void PolarStereographicProjection::fill(double& width, double& height)  
 {  
 	init(width, height);
 	Transformation::fill(width, height);
+	init(width, height);
+}
+
+void PolarStereographicProjection::tile(double& width, double& height)
+{
+	init(width, height);
+	Transformation::tile(width, height);
+	init(width, height);
 }
 
 void PolarStereographicProjection::aspectRatio(double& width, double& height)  
@@ -298,8 +332,8 @@ void PolarStereographicProjection::aspectRatio(double& width, double& height)
 
 void PolarStereographicProjection::smallestBoundingBox(double& xmin, double& ymin, double& xmax, double& ymax)  const
 {
-		vector<pair<double, double> > geo;
-		vector<pair<double, double> > xy;
+		vector< std::pair<double, double> > geo;
+		vector< std::pair<double, double> > xy;
 
 		double xpcmax =  xpcmax_;
 		double xpcmin =  xpcmin_;
@@ -323,7 +357,7 @@ void PolarStereographicProjection::smallestBoundingBox(double& xmin, double& ymi
 		ymin=DBL_MAX;
 		ymax=DBL_MIN;
 
-		for (vector<pair<double, double> >::iterator point = geo.begin(); point != geo.end(); ++point) {
+		for (vector< std::pair<double, double> >::iterator point = geo.begin(); point != geo.end(); ++point) {
 			if ( xmin > point->first) xmin = point->first;
 			if ( xmax < point->first) xmax = point->first;
 			if ( ymin > point->second) ymin = point->second;
@@ -365,29 +399,8 @@ double PolarStereographicProjection::getMaxY()  const
 	return ymax_;
 }
 
-void PolarStereographicProjection::setMinX(double x)  
-{
-	MagLog::dev() << "PolarStereographicProjection::setMinX(...) needs implementing." << endl;
-	Transformation::setMinX(x);
-}
-
-void PolarStereographicProjection::setMinY(double y)  
-{
-	MagLog::dev() << "PolarStereographicProjection::setMinY(...) needs implementing." << endl;
-	Transformation::setMinY(y);
-}
 
-void PolarStereographicProjection::setMaxX(double x)  
-{
-	MagLog::dev() << "PolarStereographicProjection::setMaxX(...) needs implementing." << endl;
-	Transformation::setMaxX(x);
-}
 
-void PolarStereographicProjection::setMaxY(double y)  
-{
-	MagLog::dev() << "PolarStereographicProjection::setMaxY(...) needs implementing." << endl;
-	Transformation::setMaxY(y);
-}
 
 double PolarStereographicProjection::getMinPCX()  const
 {
@@ -420,7 +433,7 @@ void PolarStereographicProjection::gridLongitudes(const GridPlotting& grid)  con
 		Polyline poly;
 
 		double min = ::min(latitudes.front(), latitudes.back());
-		double max = ::max(latitudes.front(), latitudes.back());
+		double max = std::max(latitudes.front(), latitudes.back());
 		
 
 		for (double lat = min; lat <= max; lat += 1) {
@@ -664,7 +677,12 @@ void  PolarStereographicProjection::visit(MetaDataVisitor& visitor,
 	java << "\"pcxmin\" : " << getMinPCX() <<  ",";		
 	java << "\"pcymin\" : " << getMinPCY() <<  ",";		
 	java << "\"pcwidth\" : " << w <<  ",";	
-	java << "\"pcheight\" : " << h <<  "";	
+	java << "\"pcheight\" : " << h <<  ",";
+	java << "\"inwidth\" : \"" << askedWidth_ <<  "\",";
+	java << "\"inheight\" : \"" << askedHeight_ <<  "\",";
+	java << "\"xorig\" : \"" << xTile_ <<  "\",";
+	java << "\"yorig\" : \"" << yTile_ <<  "\",";
+	java << "\"zoom_level\" : \"" << zoomLevel_ <<  "\"";
 	java << "}";	
 	visitor.add("projection", java.str());
 }
@@ -685,8 +703,6 @@ void PolarStereographicProjection::corners()
 	ymin_ = min_latitude_;
 	ymax_ = max_latitude_;
 		
-	if ( magCompare(system_, "projection") ) 
-		return; 
 	
 	
 }
@@ -729,7 +745,8 @@ void PolarStereographicProjection::centre(double width, double height)
 */
 void PolarStereographicProjection::thin(MatrixHandler& matrix, double x, double y, vector<UserPoint>& out) const
 {
-
+	Transformation::thin(matrix, x, y, out);
+	return;
 	int yfactor = (int) ceil((float) x);
     
 
@@ -801,41 +818,28 @@ void PolarStereographicProjection::operator()(const UserPoint& geo, vector<Paper
 			out.push_back(pp);
 }
 
-void PolarStereographicProjection::reprojectComponents(const UserPoint& point, pair<double, double>& components) const
+void PolarStereographicProjection::reprojectComponents(double& x, double& y, pair<double, double>& components) const
 {
 
 	double speed = sqrt((components.first * components.first) + (components.second * components.second));
 	double angle = atan2(components.second,components.first);
 
+	double ppx=x+0.5;
+	double ppy=y;
+	fast_reproject(ppx, ppy);
+	fast_reproject(x, y);
 
+	components.first = ppx - x;
+	components.second = ppy - y;
 
+	double rotation = atan2((ppy - y), (ppx - x));
 
-    UserPoint pt(point.x()+0.5, point.y());
-
-    PaperPoint pp = (*this) (pt);
-	PaperPoint from = (*this)(point);
-
-
-	components.first = pp.x() - from.x();
-	components.second = pp.y() - from.y();
-
-	double rotation = atan2((pp.y() - from.y()), (pp.x() - from.x()));
-
-
-
-
-	//components.second *= f;
 	// we the angle and the spped we compute u/v...
 	components.first = speed * cos(angle+rotation);
 	components.second = speed * sin(angle+rotation);
 
 
 
-
-	speed = sqrt((components.first * components.first) + (components.second * components.second));
-	angle = DEG(atan2(components.second,components.first));
-
-
 }
 
 void PolarStereographicProjection::reprojectSpeedDirection(const PaperPoint& point, pair<double, double>& wind) const
@@ -843,11 +847,11 @@ void PolarStereographicProjection::reprojectSpeedDirection(const PaperPoint& poi
 	double a = 90 - (wind.second); 
 	const double x = 3.14/180.;
 	a *= x;
-	UserPoint geo;
+	double xx =0, yy=0;
 	const double speed =wind.first; 
 	wind.first = speed-1 * cos(a);
 	wind.second = speed-1 * sin(a);
-	reprojectComponents(geo, wind);
+	reprojectComponents(xx, yy, wind);
 }
 
 void PolarStereographicProjection::coastSetting(map<string, string>& setting, double abswidth, double absheight) const
diff --git a/src/common/PolarStereographicProjection.h b/src/common/PolarStereographicProjection.h
index 80961ad..cf32bc1 100644
--- a/src/common/PolarStereographicProjection.h
+++ b/src/common/PolarStereographicProjection.h
@@ -71,8 +71,10 @@ public:
 		transformation->copy(*this);
 		return transformation;
 	}
-	virtual void fill(double&, double&) ;
-	 void setNewPCBox(double, double, double, double);
+	void fill(double&, double&) ;
+	void tile(double&, double&) ;
+
+	void setNewPCBox(double, double, double, double);
 
 	 double patchDistance(double) const;
 	 void fast_reproject(double& x, double& y) const;
@@ -92,7 +94,7 @@ public:
 	\\brief 
 	*/
 	virtual PaperPoint operator()(const PaperPoint&) const;
-	void revert(const vector<pair<double, double> > &, vector<pair<double, double> > &) const;
+	void revert(const vector< std::pair<double, double> > &, vector< std::pair<double, double> > &) const;
 	/*!
 	\\brief 
 	*/
@@ -130,22 +132,7 @@ public:
 	\\brief return the ymax in user coordinates!
 	*/
 	virtual double getMaxY() const;
-	/*!
-	\\brief set the xmin in user coordinates!
-	*/
-	virtual void setMinX(double) ;
-	/*!
-	\\brief return the ymin in user coordinates!
-	*/
-	virtual void setMinY(double) ;
-	/*!
-	\\brief return the xmax in user coordinates!
-	*/
-	virtual void setMaxX(double) ;
-	/*!
-	\\brief return the ymax in user coordinates!
-	*/
-	virtual void setMaxY(double) ;
+
 	/*!
 	\\brief return the xmin in projection coordinates!
 	*/
@@ -212,7 +199,7 @@ protected:
 	double ypcmin_;
 	double xpcmax_;
 	double ypcmax_;
-	void reprojectComponents(const UserPoint&, pair<double, double>&) const;
+	void reprojectComponents(double& x, double& y, pair<double, double>&) const;
 	void reprojectSpeedDirection(const PaperPoint& point, pair<double, double>&) const;
 
 	void coastSetting(map<string, string>&, double width, double height) const;
diff --git a/src/common/Polyline.h b/src/common/Polyline.h
index c3b366c..a0c4ffc 100644
--- a/src/common/Polyline.h
+++ b/src/common/Polyline.h
@@ -32,6 +32,7 @@
 #include "BaseDriver.h"
 #include "VectorOfPointers.h"
 #include "Label.h"
+#include "Arrow.h"
 #include <boost/geometry/geometry.hpp>
 #include <boost/geometry/geometries/polygon.hpp>
 #include <boost/geometry/geometries/linestring.hpp>
@@ -92,7 +93,7 @@ struct DotShadingProperties : public ShadingProperties
     ShadingProperties* clone()
     {
         DotShadingProperties* shading = new DotShadingProperties();
-        shading->angle_ = angle_;
+
         shading->size_ = size_;
         shading->density_ = density_;
         return shading;
@@ -137,12 +138,12 @@ struct HatchShadingProperties : public ShadingProperties
 class PolylineProperties : public BasicGraphicsObject 
 {
 public :
-	PolylineProperties() :  thickness_(1), dash_length_(10), style_(M_SOLID), fill_(false), shading_(0), stroke_(true), antialiasing_(true) {}
-	virtual ~PolylineProperties() { if (shading_) delete shading_; }
+	PolylineProperties() :  thickness_(1), dash_length_(10), style_(M_SOLID), fill_(false), shading_(0), arrow_(0), stroke_(true), antialiasing_(true) {}
+	virtual ~PolylineProperties() { if (shading_) delete shading_;  if (arrow_) delete arrow_; }
 	
 	virtual void copy(const PolylineProperties& other)
 	{			
-		label_       = other.label_ ;
+		label_.copy(other.label_) ;
 		colour_ = other.colour_;
 		thickness_ 	 = other.thickness_;
 		dash_length_ = other.dash_length_;	
@@ -153,6 +154,7 @@ public :
 		stroke_ = other.stroke_;
 		if ( shading_ ) delete shading_;
 		shading_     = other.shading_ ? other.shading_->clone() : 0;
+		arrow_     = other.arrow_ ? other.arrow_->clone() : 0;
 	}
 	//! Method to set the thickness of a drawn line.
 	void setThickness(int t){thickness_ = t;}
@@ -195,7 +197,13 @@ public :
 		if ( shading_) delete shading_; 
 		shading_ = shading; 
 	}
-	
+	void setArrow(ArrowProperties* arrow)
+	{
+		if ( arrow_) delete arrow_;
+		arrow_ = arrow;
+	}
+
+	ArrowProperties* arrowProperties() const { return arrow_; }
 	ShadingProperties* getShading() const { return shading_; }
 
 protected:
@@ -206,6 +214,7 @@ protected:
 	Colour			fill_colour_;
 	ShadingProperties*	shading_; 
 	Label                   label_;
+	ArrowProperties*        arrow_;
 	Colour                  colour_;
 	bool                    stroke_;
 	bool                    antialiasing_;
diff --git a/src/common/ProgressObject.cc b/src/common/ProgressObject.cc
new file mode 100644
index 0000000..dd08613
--- /dev/null
+++ b/src/common/ProgressObject.cc
@@ -0,0 +1,45 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+// File ProgressObject.cc
+// Magics Team - ECMWF 2004
+
+
+#include "ProgressObject.h"
+#include "BaseDriver.h"
+
+using namespace magics;
+
+void ProgressObject::redisplay(const BaseDriver& driver) const
+{
+	//driver.redisplay(*this);
+}
+
+void ProgressObject::print(ostream&)  const
+{
+	//out << "ProgressObject[" << progress_ << "]";
+}
+void ClearObject::redisplay(const BaseDriver& driver) const
+{
+	driver.redisplay(*this);
+}
+
+void ClearObject::print(ostream&)  const
+{
+
+}
diff --git a/src/common/ProgressObject.h b/src/common/ProgressObject.h
index 00e340e..8d47b08 100644
--- a/src/common/ProgressObject.h
+++ b/src/common/ProgressObject.h
@@ -59,6 +59,17 @@ private:
 		{ p.print(s); return s; }
 
 };
+class ClearObject: public BasicGraphicsObject {
 
+public:
+	ClearObject() {}
+	virtual ~ClearObject() {}
+
+	void redisplay(const BaseDriver& driver) const;
+
+protected:
+	virtual void print(ostream&) const;
+
+};
 } // namespace magics
 #endif
diff --git a/src/common/ProgressTask.cc b/src/common/ProgressTask.cc
new file mode 100644
index 0000000..74b4a5a
--- /dev/null
+++ b/src/common/ProgressTask.cc
@@ -0,0 +1,43 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+// File ProgressTask.cc
+// Magics Team - ECMWF 2004
+
+
+#include "ProgressTask.h"
+#include "ProgressObject.h"
+
+using namespace magics;
+
+ProgressTask::ProgressTask() 
+{
+    push_back(new ProgressObject("dealing with Node ...."));
+}
+
+
+ProgressTask::~ProgressTask() 
+{
+}
+
+	
+void ProgressTask::print(ostream& out)  const
+{
+	out << "ProgressTask";
+}
+
diff --git a/src/common/Proj4Projection.cc b/src/common/Proj4Projection.cc
index 1f42433..96ec557 100644
--- a/src/common/Proj4Projection.cc
+++ b/src/common/Proj4Projection.cc
@@ -895,12 +895,12 @@ void Proj4Projection::labels(const LabelPlotting& label, TopAxisVisitor& visitor
 	}
 }
 
-void Proj4Projection::revert(const vector<pair<double, double> > & in, vector<pair<double, double> > & out) const
+void Proj4Projection::revert(const vector< std::pair<double, double> > & in, vector< std::pair<double, double> > & out) const
 {
 
-
+	const_cast<Proj4Projection*>(this)->init();
 	out.reserve(in.size());
-	for ( vector<pair<double, double> >::const_iterator pt = in.begin();  pt != in.end(); ++pt) {
+	for ( vector< std::pair<double, double> >::const_iterator pt = in.begin();  pt != in.end(); ++pt) {
 		  double x = pt->first;
 		  double y = pt->second;
 		  PaperPoint p(x, y);
diff --git a/src/common/Proj4Projection.h b/src/common/Proj4Projection.h
index 24c3d50..028a431 100644
--- a/src/common/Proj4Projection.h
+++ b/src/common/Proj4Projection.h
@@ -103,7 +103,7 @@ public:
 	void  collect(MetaDataCollector&) const;
 	virtual void revert(const PaperPoint&, UserPoint&) const;
 	
-	void revert(const vector<pair<double, double> > & in, vector<pair<double, double> > & out) const;
+	void revert(const vector< std::pair<double, double> > & in, vector< std::pair<double, double> > & out) const;
 	
 	/*!
 	\\brief Does the projection needs the coastalines to be shifted!
@@ -268,6 +268,31 @@ class Proj4Geos : public Proj4Projection
 public:
 	Proj4Geos() : Proj4Projection("geos") {}
 };
+class Proj4Meteosat0 : public Proj4Projection
+{
+public:
+	Proj4Meteosat0() : Proj4Projection("meteosat_0") {}
+};
+class Proj4Meteosat57 : public Proj4Projection
+{
+public:
+	Proj4Meteosat57() : Proj4Projection("meteosat_575") {}
+};
+class Proj4Meteosat145 : public Proj4Projection
+{
+public:
+	Proj4Meteosat145() : Proj4Projection("meteosat_145") {}
+};
+class Proj4Geose : public Proj4Projection
+{
+public:
+	Proj4Geose() : Proj4Projection("goes-east") {}
+};
+class Proj4Geosw : public Proj4Projection
+{
+public:
+	Proj4Geosw() : Proj4Projection("goes-w") {}
+};
 class Proj4Goode : public Proj4Projection
 {
 public:
@@ -284,12 +309,32 @@ class Proj4Mollweide : public Proj4Projection
 public:
 	Proj4Mollweide() : Proj4Projection("mollweide") {}
 };
+class Proj4Robinson : public Proj4Projection
+{
+public:
+	Proj4Robinson() : Proj4Projection("robinson") {}
+};
 class Proj4Bonne : public Proj4Projection
 {
 public:
 	Proj4Bonne() : Proj4Projection("bonne") {}
 };
+class Proj4Google : public Proj4Projection
+{
+public:
+	Proj4Google() : Proj4Projection("google") {}
+};
+class Proj4Efas : public Proj4Projection
+{
+public:
+	Proj4Efas() : Proj4Projection("efas") {}
+};
 
+class Proj4LambertNorthAtlantic : public Proj4Projection
+{
+public:
+	Proj4LambertNorthAtlantic() : Proj4Projection("lambert_north_atlantic") {}
+};
 class Proj4EPSG32661 : public Proj4Projection
 {
 public:
diff --git a/src/common/RasterData.cc b/src/common/RasterData.cc
new file mode 100644
index 0000000..952419d
--- /dev/null
+++ b/src/common/RasterData.cc
@@ -0,0 +1,59 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file RasterData.cc
+    \brief Implementation of the Template class RasterData.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Tue 12-Apr-2005
+    
+    Changes:
+    
+*/
+
+#include "RasterData.h"
+
+using namespace magics;
+
+template <class P>
+RasterData<P>::RasterData() : projection_(0)
+{
+}
+
+template <class P>
+RasterData<P>::~RasterData() 
+{
+	if (projection_) delete projection_;	
+}
+
+/*!
+ Class information are given to the output-stream.
+*/	
+template <class P>	
+void RasterData<P>::print(ostream& out)  const
+{
+	out << "RasterData<P>[";
+	out << "xRes=" << x_;
+	out << ", yRes=" << y_;
+	out << ", columns=" << columns_;
+	out << ", rows=" << rows_;
+	out << ", lower_left=(" << lowerLeft_.y() << ", " << lowerLeft_.x() << ")";
+	out << ", upper_right=(" << upperRight_.y() << ", " << upperRight_.x() << ")";
+	out << ", " << size() << " points]";
+}
diff --git a/src/common/SatelliteProjection.cc b/src/common/SatelliteProjection.cc
new file mode 100644
index 0000000..d80f9b0
--- /dev/null
+++ b/src/common/SatelliteProjection.cc
@@ -0,0 +1,366 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file SatelliteProjection.cc
+    \brief Implementation of the Template class SatelliteProjection.
+    
+    Magics Team - ECMWF 2006
+    
+    Started: Fri 21-Apr-2006
+    
+    Changes:
+    
+*/
+
+
+
+#include "SatelliteProjection.h"
+#include "Polyline.h"
+#include "Text.h"
+#include "GridPlotting.h"
+
+using namespace magics;
+
+class OutMagException
+{
+public:
+	OutMagException() {}
+	~OutMagException() {}
+};
+
+SatelliteProjection::SatelliteProjection() :
+//	TeSatelliteProjection(TeDatum(), 1, 1, 0.00012565,  0.00012565, 1250, 1250, 0, 0, 42164988.876, 0, 0)
+//	TeSatelliteProjection(TeDatum("Spherical",6.371000e+06,0.,0.,0.,0.), 1, 1, 0.00017285102306, 0.00017294945759, 919, 921, 0, 0, 42164988.876, 0, 0) //works for met8.grb
+	TeSatelliteProjection(TeDatum("Spherical",6.371000e+06,0.,0.,0.,0.), 1, 1, 0.0174527890614, 0.0174527890636, 928, 926, 0, 0, 42164988.876, 0, 0) //works for met9.grb
+{
+	
+     minlon_ = -63;
+     maxlon_ = 63;
+     minlat_ = -80;
+     maxlat_ = 80;
+}
+
+void SatelliteProjection::operator()(Layout& layout) const
+{    
+    TeCoord2D ll = TeCoord2D(minlon_*TeCDR, 0*TeCDR);
+    TeCoord2D llxy = const_cast<SatelliteProjection*>(this)->LL2PC(ll);
+    llx_ = llxy.x();
+    ll = TeCoord2D(0*TeCDR, minlat_*TeCDR);
+    llxy = const_cast<SatelliteProjection*>(this)->LL2PC(ll);
+    lly_ = llxy.y();
+    ll = TeCoord2D(maxlon_*TeCDR, 0*TeCDR);
+    llxy = const_cast<SatelliteProjection*>(this)->LL2PC(ll);
+    urx_ = llxy.x();
+    ll = TeCoord2D(0*TeCDR, maxlat_*TeCDR);
+    llxy = const_cast<SatelliteProjection*>(this)->LL2PC(ll);
+    ury_ = llxy.y();
+    
+    ll = TeCoord2D(0*TeCDR, 0*TeCDR);
+    llxy = TeCoord2D(0*TeCDR, maxlat_*TeCDR);
+
+//TEST
+#if 1
+TeCoord2D f11 = TeCoord2D(-80*TeCDR, 0*TeCDR);
+TeCoord2D f12 = const_cast<SatelliteProjection*>(this)->LL2PC(f11);
+TeCoord2D f13 = const_cast<SatelliteProjection*>(this)->PC2LL(f12);
+
+TeCoord2D f21 = TeCoord2D(80*TeCDR, 0*TeCDR);
+TeCoord2D f22 = const_cast<SatelliteProjection*>(this)->LL2PC(f21);
+TeCoord2D f23 = const_cast<SatelliteProjection*>(this)->PC2LL(f22);
+
+TeCoord2D f31 = TeCoord2D(0*TeCDR, -85*TeCDR);
+TeCoord2D f32 = const_cast<SatelliteProjection*>(this)->LL2PC(f31);
+TeCoord2D f33 = const_cast<SatelliteProjection*>(this)->PC2LL(f32);
+
+TeCoord2D f41 = TeCoord2D(0*TeCDR, 85*TeCDR);
+TeCoord2D f42 = const_cast<SatelliteProjection*>(this)->LL2PC(f41);
+TeCoord2D f43 = const_cast<SatelliteProjection*>(this)->PC2LL(f42);
+
+f11 = TeCoord2D(-90*TeCDR, 0*TeCDR);
+f12 = const_cast<SatelliteProjection*>(this)->LL2PC(f11);
+f13 = const_cast<SatelliteProjection*>(this)->PC2LL(f12);
+
+f21 = TeCoord2D(90*TeCDR, 0*TeCDR);
+f22 = const_cast<SatelliteProjection*>(this)->LL2PC(f21);
+f23 = const_cast<SatelliteProjection*>(this)->PC2LL(f22);
+
+f31 = TeCoord2D(0*TeCDR, -90*TeCDR);
+f32 = const_cast<SatelliteProjection*>(this)->LL2PC(f31);
+f33 = const_cast<SatelliteProjection*>(this)->PC2LL(f32);
+
+f41 = TeCoord2D(0*TeCDR, 90*TeCDR);
+f42 = const_cast<SatelliteProjection*>(this)->LL2PC(f41);
+f43 = const_cast<SatelliteProjection*>(this)->PC2LL(f42);
+#endif
+
+    double width = abs(urx_ - llx_);
+    double shiftx = width*0.05; 
+    double height = abs(ury_ - lly_);
+    double shifty = height*0.05;
+    
+   
+    width  += 2*shiftx;
+    height += 2*shifty;
+     llx_ -= shiftx;
+    urx_ += shiftx;
+    lly_ -= shifty;
+    ury_ += shifty;
+    
+   
+    
+    setAspectRatio(layout, width, height, llx_, urx_, lly_, ury_);
+    // The left bozx and right are 4 % ..
+    double boxWidth_ = width/100*4;
+    
+   
+    
+    if (layout["drawing_area"]) layout["drawing_area"]->setCoordinates(llx_, urx_, lly_, ury_);
+    if (layout["top_comment_box"]) layout["top_comment_box"]->setCoordinates(llx_, urx_, ury_- 100, ury_ + 100);
+    if (layout["bottom_comment_box"]) layout["bottom_comment_box"]->setCoordinates(llx_, urx_, lly_- 100, lly_ + 100);
+    if (layout["left_comment_box"]) layout["left_comment_box"]->setCoordinates(llx_-boxWidth_, llx_+boxWidth_, lly_, ury_);
+    if (layout["right_comment_box"]) layout["right_comment_box"]->setCoordinates(urx_-boxWidth_, urx_+boxWidth_, lly_, ury_);
+//    if (layout["title"]) layout["title"]->setCoordinates(0, 100, 0, 100);
+//    if (layout["legend"]) layout["legend"]->setCoordinates(0, 100, 0, 100);
+
+
+}
+
+SatelliteProjection::~SatelliteProjection() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void SatelliteProjection::print(ostream& out)  const
+{
+	out << "SatelliteProjection[";
+	out << "]";
+}
+
+void SatelliteProjection::operator()(const Polyline& from, BaseGraphicsObject::Container& out) const
+{
+	Polyline* to = new Polyline();
+	to->copy(from);
+    
+    for (Polyline::const_iterator point = from.begin(); point != from.end(); ++point) {
+        PaperPoint pp = (*this)(*point);
+        if (pp.x() != TeMAXFLOAT && pp.y() != TeMAXFLOAT )   
+          to->push_back(pp);
+        else { 
+        	if ( !to->empty()) {
+        		out.push_back(to);
+        		to = new Polyline();
+				to->copy(from);
+        	}
+        }
+        
+    }
+    if ( !to->empty()) 
+    	out.push_back(to);
+}
+
+void SatelliteProjection::operator()(const Text<UserPoint>& from, Text& to) const
+{
+    for (Text<UserPoint>::const_iterator point = from.begin(); point != from.end(); ++point) {
+      PaperPoint pp = (*this)(*point);
+        if (pp.x() != TeMAXFLOAT && pp.y() != TeMAXFLOAT)   
+          to.push_back((*this)(pp));
+    }
+}
+
+void SatelliteProjection::operator()(const vector<UserPoint>& from, vector<PaperPoint>& to) const
+{
+    for (vector<UserPoint>::const_iterator point = from.begin(); point != from.end(); ++point) {
+          PaperPoint pp = (*this)(*point);
+          if (pp.x() != TeMAXFLOAT && pp.y() != TeMAXFLOAT)   
+             to.push_back((*this)(pp));
+    }
+}
+
+void SatelliteProjection::operator()(const vector<PaperPoint>&, vector<PaperPoint>&) const
+{
+}
+    
+
+
+Polyline* SatelliteProjection::reproject(const Polyline& from) const
+{
+	Polyline* to = new Polyline();
+	
+	//(*this)(from, *to);
+	return to;
+}
+    
+bool SatelliteProjection::in(double lon, double lat) const
+{
+	if ( lon < minlon_ ) return false;
+	if ( lat < minlat_ ) return false;
+	if ( lon > maxlon_ ) return true;
+	if ( lat > maxlat_ ) return true;
+	return true;
+}
+
+
+PaperPoint SatelliteProjection::operator()(const UserPoint& from) const
+{
+   TeCoord2D geo = TeCoord2D(RAD(from.x_), RAD(from.y_));
+   TeCoord2D xy = const_cast<SatelliteProjection*>(this)->LL2PC(geo);
+   //MagLog::dev()<< "SatelliteProjection::operator() " << from.x_ << " " << from.y_ << " " << xy.x() << " " << xy.y() << endl;
+   return PaperPoint(xy.x(), xy.y());
+}
+
+PaperPoint SatelliteProjection::operator()(const PaperPoint& point) const
+{
+    return point;
+}
+
+UserPoint SatelliteProjection::revert(const PaperPoint& from) const
+{
+    TeCoord2D xy = TeCoord2D(from.x(), from.y());
+    TeCoord2D geo = const_cast<SatelliteProjection*>(this)->PC2LL(xy);
+
+    return UserPoint(geo.x()*TeCRD, geo.y()*TeCRD);
+}
+
+    
+void SatelliteProjection::gridLongitudes(const GridPlotting& grid, Task& task) const
+{
+#if 1
+	const vector<double>& longitudes = grid.longitudes();
+    for (vector<double>::const_iterator lon = longitudes.begin(); lon != longitudes.end(); ++lon) {
+		Polyline* poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(*lon,lat));
+		}  
+  
+	}
+
+
+	Polyline* poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(-73,lat));
+		}
+
+	poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(73,lat));
+		}
+#endif
+#if 0
+	poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(-50,lat));
+		}   
+	poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(50,lat));
+		}
+
+	poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(-30,lat));
+		}   
+	poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(30,lat));
+		}
+
+	poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(-10,lat));
+		}   
+
+		poly = new Polyline(grid.layer(), "drawing_area");
+		grid.add(poly, task);
+		poly->setColour(Colour("green"));
+		
+		for (double lat = -80; lat <= 80; lat += 1) { 
+			poly->push_back(UserPoint(10,lat));
+		}
+#endif
+}
+
+void SatelliteProjection::gridLatitudes(const GridPlotting& grid, Task& task) const
+{
+#if 1	
+	 const vector<double>& latitudes = grid.latitudes();
+	
+	
+     for (vector<double>::const_iterator lat = latitudes.begin(); lat != latitudes.end(); ++lat) {
+      
+	    Polyline* poly = new Polyline(grid.layer(), "drawing_area");        
+            for (double lon = minlon_; lon <= maxlon_; lon += 1) { 
+                poly->push_back(UserPoint(lon,*lat));
+            }	
+        grid.add(poly, task);        
+	}
+#endif
+
+#if 0
+//Test
+Polyline* poly = new Polyline(grid.layer(), "drawing_area");        
+		poly->setColour(Colour("yellow"));
+for (double lon = -40; lon <= 40; lon += 1) { 
+                poly->push_back(UserPoint(lon,0));
+  }	
+grid.add(poly, task);
+#endif
+}
+
+    
+void SatelliteProjection::topLabels(const LabelPlotting&, Task&) const
+{
+}
+
+void SatelliteProjection::bottomLabels(const LabelPlotting&, Task&) const
+{
+}
+
+void SatelliteProjection::leftLabels(const LabelPlotting&, Task&) const
+{
+}
+
+void SatelliteProjection::rightLabels(const LabelPlotting&, Task&) const
+{
+}
+
diff --git a/src/common/SciMethods.cc b/src/common/SciMethods.cc
index 59e31fb..b2fdd25 100644
--- a/src/common/SciMethods.cc
+++ b/src/common/SciMethods.cc
@@ -240,7 +240,7 @@ double saturationVapourPressure(double t)
 	double c1 = 23.832241-5.02808*log10(t);
    	double c2 = 3.49149-1302.8844/t;
 	double c3 = 11.344-0.0303998*t;
-  	return (exp10(c1-1.3816E-7*exp10(c3)+8.1328E-3*exp10(c2)-2949.076/t));
+    return (::pow(10.,c1-1.3816E-7*::pow(10.,c3)+8.1328E-3*::pow(10.,c2)-2949.076/t));
 } 
   
 /*! 
@@ -265,8 +265,10 @@ double temperatureFromMixingRatio(double r, double p)
   	double pmb=p*0.01;
   	double c = log10(r*pmb/(622.+r));
 	
-	return exp10(0.0498646455*c + 2.4082965)-280.23475+
-	          38.9114*pow(2.,exp10(0.0915*c)-1.2035);
+    double tmr=::pow(10.,0.0498646455*c + 2.4082965)-280.23475+
+              38.9114*pow(2.,::pow(10.,0.0915*c)-1.2035);
+
+	return tmr+273.16;
 }
 
 /*! 
@@ -315,4 +317,4 @@ double pressureLCL(double td, double t, double p)
 } 
 
 
-} //end namespace
\ No newline at end of file
+} //end namespace
diff --git a/src/common/SciMethods.h b/src/common/SciMethods.h
index 6fede11..3d21131 100644
--- a/src/common/SciMethods.h
+++ b/src/common/SciMethods.h
@@ -61,4 +61,4 @@ double temperatureLCL(double td,double t);
 double pressureLCL(double td, double t, double p);
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/common/Seconds.cc b/src/common/Seconds.cc
index 22ff832..8c884ef 100644
--- a/src/common/Seconds.cc
+++ b/src/common/Seconds.cc
@@ -36,7 +36,7 @@ Seconds::Seconds(const timeval& time):
 
 static struct  {
     int length_;
-    char *name_;
+    const char *name_;
 } periods[] = {
     {7 * 24 * 60 * 60, "week",},    
     {24 * 60 * 60, "day",}, 
diff --git a/src/common/Symbol.cc b/src/common/Symbol.cc
index a83548e..1e53843 100644
--- a/src/common/Symbol.cc
+++ b/src/common/Symbol.cc
@@ -145,7 +145,10 @@ Symbol* SymbolProperties::symbol(const string& type) const
 		TextSymbol* text = new TextSymbol();		
 		text->position(position_);
 		symbol = text;
-		text->font(font_);
+		MagFont font = font_;
+		font.colour(colour_);
+		text->font(font);
+
 		text->text(text_);
 		text->blanking(blanking_);
 		symbol->setColour(Colour("none"));
diff --git a/src/common/Tephigram.cc b/src/common/Tephigram.cc
new file mode 100644
index 0000000..a41f8ac
--- /dev/null
+++ b/src/common/Tephigram.cc
@@ -0,0 +1,634 @@
+/******************************** LICENSE ********************************
+
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+ 
+ Licensed under the Apache License, Version 2.0 (the "License"); 
+ you may not use this file except in compliance with the License. 
+ You may obtain a copy of the License at 
+ 
+ 	http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Tephigram.cc
+    \brief Implementation of Tephigram.
+    \author Meteorological Visualisation Section, ECMWF
+
+    Started: Thu Jun 12 16:01:47 2008
+
+*/
+
+#include <Tephigram.h>
+#include <Polyline.h>
+#include "SciMethods.h"
+#include "MagJSon.h"
+using namespace magics;
+
+/*!
+  \brief Constructor
+  
+  \todo what does still need implmenting? can debug message be removed?
+*/
+Tephigram::Tephigram()
+{
+
+}
+
+/*!
+  \brief Destructor
+*/
+Tephigram::~Tephigram() 
+{
+}
+
+void Tephigram::print(ostream& out) const
+{
+    out << "Tephigram[";
+    out << "]"; 
+} 
+
+#define sinus  -0.7071
+#define cosinus  0.7071
+static double maxpcx;
+void Tephigram::init()  
+{
+	if ( x_min_ == 0 && x_max_ == 100 ) {
+		x_min_ = -20;
+		x_max_ =40;
+	}
+
+	if ( y_min_ == 0 && y_max_ == 100 ) {
+			y_min_ = 1060.;
+			y_max_ = 200;
+		}
+
+	double tmin = x_min_;
+	double thmin= magics::theta(tmin+273.15, y_min_*100.)-273.15;
+
+	double thmax = magics::theta(tmin+273.15, y_max_*100.)-273.15;
+	double tmax = temperatureFromTheta(thmax+273.15,  y_max_*100. ) -273.15;
+
+
+	minPCX_ = ((tmin * cosinus) - (thmin * sinus) );
+	minPCY_ = (tmin * sinus) + (thmin * cosinus);
+	maxPCX_ = ((tmax * cosinus) - (thmax * sinus));
+	maxPCY_ = (tmax * sinus) + (thmax * cosinus);
+
+	// now we add 25% to the right for the info panel!
+	maxpcx = maxPCX_;
+
+	MagLog::dev() << "useful in tephi " << maxpcx << endl;
+	maxPCX_ += (maxPCX_ - minPCX_)*0.25;
+	MagLog::dev() << "set in tephi in grid " << maxpcx << endl;
+
+
+
+}
+/*!
+	\\brief Initialise the projection
+	*/
+void TephiInfo::init()
+{
+	Tephigram::init();
+
+	reference_ = maxPCX_;
+	minPCX_ = -1.5;
+	maxPCX_ = 1.5;
+	MagLog::dev() << "minPCY-->" << minPCY_ <<  " " << y_min_ << endl;
+	MagLog::dev() << "maxPCY-->" << maxPCY_ << " " << y_max_ << endl;
+	UserPoint min(0, y_min_);
+	UserPoint max(0, y_max_);
+	(*this)(min);
+	(*this)(max);
+
+
+
+}
+const double KAPPA=0.285611;
+PaperPoint Tephigram::operator()(const UserPoint& xy)  const
+{
+	if (  xy.x() >= 1000 ) {// x = x
+	// y = p
+		double coefficient = pow(100000./(xy.y()*100),KAPPA);
+		double y = (maxpcx+(273.15*(cosinus-sinus)))*((sinus + (coefficient*cosinus)))/(cosinus -(coefficient*sinus)) - 2713.15*(sinus+cosinus);
+		MagLog::dev() << xy.y() << "-->" << y << "??? " << minPCY_ << "<<" <<  maxPCY_<< endl;
+		double x =  (maxPCX_ - maxpcx)*(xy.x()-1000.) + maxpcx;
+		MagLog::dev() << x << endl;
+		return PaperPoint(x, y, xy.value());
+	}
+	// UserPoint X = temperature in deg Y = Pressure in hPa
+	// First we calculate theta and we rotate!
+	double tempe = xy.x();
+	double theta = magics::theta(tempe+273.15, (xy.y())*100.)-273.15;
+	double x = ((tempe * cosinus) - (theta * sinus) );
+	double y = (tempe * sinus) + (theta * cosinus);
+
+	return PaperPoint(x, y, xy.value());
+}
+
+
+
+PaperPoint Tephigram::operator()(const PaperPoint& pt)  const
+{
+
+	// UserPoint X = temperature in deg Y = Pressure in hPa
+	// First we calculate theta and we rotate!
+	double tempe = pt.x() *cosinus + pt.y()*sinus;
+	double theta = - (pt.x() * sinus) + pt.y()*cosinus;
+
+	double p = magics::pressureFromTheta(theta+273.15, tempe+273.15)/100;
+
+	return PaperPoint(tempe, p);
+}
+
+
+
+void Tephigram::revert(const PaperPoint& pt, UserPoint& point)  const
+{
+	// UserPoint X = temperature in deg Y = Pressure in hPa
+		// First we calculate theta and we rotate!
+		double tempe = pt.x() *cosinus + pt.y()*sinus;
+		double theta = - (pt.x() * sinus) + pt.y()*cosinus;
+
+		double p = magics::pressureFromTheta(theta+273.15, tempe+273.15)/100;
+
+		point.x_ = tempe;
+		point.y_ = p;
+	
+}
+
+bool Tephigram::needShiftedCoastlines()  const
+{
+	return false;
+}
+
+void Tephigram::aspectRatio(double& width, double& height)  
+{
+
+
+	Transformation::aspectRatio(width, height);
+}
+
+void Tephigram::boundingBox(double& xmin, double& ymin, double& xmax, double& ymax)  const
+{
+
+	vector< std::pair<double, double> > geo;
+	vector< std::pair<double, double> > xy;
+
+	double xpcmax =  maxpcx;
+	double xpcmin =  minPCX_;
+	double ypcmax =  maxPCY_;
+	double ypcmin =  minPCY_;
+	xmin = DBL_MAX;
+	xmax = DBL_MIN;
+	ymin = DBL_MAX;
+	ymax = DBL_MIN;
+
+	const double xs = (xpcmax- xpcmin)/99.;
+	const double ys = (ypcmax- ypcmin)/99.;
+	// Walk along the boundary...
+	double x,y;
+	for (int i = 0; i < 100; i++) {
+		x = xpcmin +(i*xs);
+		for (int i = 0; i < 100; i++) {
+			y = ypcmin +(i*ys);
+			double tempe =x *cosinus + y*sinus;
+			double theta = - (x * sinus) + y*cosinus;
+			double p = magics::pressureFromTheta(theta+273.15, tempe+273.15)/100;
+
+			if ( xmin > tempe) xmin = tempe;
+			if ( xmax < tempe) xmax = tempe;
+			if ( ymin > p) ymin = p;
+			if ( ymax < p) ymax = p;
+		}
+	}
+
+
+
+}
+
+double Tephigram::getMinX()  const
+{
+	
+	return -1.5;
+}
+
+double Tephigram::getMinY()  const
+{
+	
+	return y_min_;
+}
+
+double Tephigram::getMaxX()  const
+{
+	return 1.5;;
+}
+
+double Tephigram::getMaxY()  const
+{
+
+	return y_max_;
+}
+
+void Tephigram::setMinX(double x)  
+{
+	x_min_ = x;
+}
+
+void Tephigram::setMinY(double y)  
+{
+	y_min_ = y;
+}
+
+void Tephigram::setMaxX(double x)  
+{
+	x_max_ = x;
+}
+
+void Tephigram::setMaxY(double y)  
+{
+	y_max_ = y;
+}
+
+double Tephigram::getMinPCX()  const
+{
+
+	return minPCX_;
+}
+
+double Tephigram::getMinPCY()  const
+{
+
+	return minPCY_;
+}
+
+double Tephigram::getMaxPCX()  const
+{
+
+	return maxPCX_;
+}
+
+double Tephigram::getMaxPCY()  const
+{
+	return maxPCY_;
+}
+double Tephigram::getMaxTestPCX () const{
+	return maxpcx;
+}
+Polyline& Tephigram::getPCBoundingBox() const
+{
+	if ( PCEnveloppe_->empty() ) {
+		PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
+		PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMaxPCY()));
+		PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMaxPCY()));
+		PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMinPCY()));
+		PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
+	}
+
+	return *PCEnveloppe_;
+
+}
+
+Polyline& Tephigram::getUserBoundingBox() const
+{
+	if ( userEnveloppe_->empty() ) {
+		userEnveloppe_->push_back(PaperPoint(x_min_, y_min_));
+		userEnveloppe_->push_back(PaperPoint(x_min_, y_max_));
+		userEnveloppe_->push_back(PaperPoint(x_max_, y_max_));
+		userEnveloppe_->push_back(PaperPoint(x_max_, y_min_));
+		userEnveloppe_->push_back(PaperPoint(x_min_, y_min_));
+	}
+
+	return *userEnveloppe_;
+}
+
+void Tephigram::setDefinition(const string& json)
+{
+
+
+
+	if (json.empty())
+			return;
+
+
+
+		MagJSon helper;
+		helper.interpret(json);
+
+		XmlNode node = **helper.tree_.firstElement();
+
+		node.name("tephigram");
+
+
+		set(node);
+}
+void toxml2(string& out, const map<string, string>& def)
+{
+	ostringstream os;
+	string sep = "";
+	for (map<string, string>::const_iterator entry = def.begin(); entry != def.end(); ++entry ) {
+		os << sep << "\"" << entry->first << "\" : \"" << entry->second << "\"";
+		sep = ",\n";
+	}
+
+	out = os.str();
+}
+void Tephigram::getNewDefinition(const UserPoint& ll, const UserPoint& ur, string& out) const
+{
+	map<string, string> def;
+	def["subpage_map_projection"] = "tephigram";
+
+	def["x_min"]= tostring(ll.x_);
+			def["x_max"]= tostring(ur.x_);
+		def["y_min"]= tostring(ll.y_);
+		def["y_max"]= tostring(ur.y_);
+
+
+	::toxml2(out, def);
+
+	out = "{" + out + "}";
+
+	MagJSon helper;
+
+	helper.interpret(out);
+
+
+
+}
+
+
+/*!
+  \brief Constructor
+
+  \todo what does still need implmenting? can debug message be removed?
+*/
+TephiInfo::TephiInfo()
+{
+
+}
+
+/*!
+  \brief Destructor
+*/
+TephiInfo::~TephiInfo()
+{
+}
+
+void TephiInfo::print(ostream& out) const
+{
+    out << "TephiInfo[";
+    out << "]";
+}
+
+
+
+
+
+
+PaperPoint TephiInfo::operator()(const UserPoint& xy)  const
+{
+	// x = x
+	// y = p
+	double coefficient = pow(100000./(xy.y()*100),KAPPA);
+	double y = (reference_+(273.15*(cosinus-sinus)))*((sinus + (coefficient*cosinus)))/(cosinus -(coefficient*sinus)) - 2713.15*(sinus+cosinus);
+    MagLog::dev() << xy.y() << "-->" << y << "??? " << minPCY_ << "<<" <<  maxPCY_<< endl;
+	return PaperPoint(xy.x(), y);
+}
+
+
+
+PaperPoint TephiInfo::operator()(const PaperPoint& pt)  const
+{
+
+	// UserPoint X = temperature in deg Y = Pressure in hPa
+	// First we calculate theta and we rotate!
+	double tempe = pt.x() *cosinus + pt.y()*sinus;
+	double theta = - (pt.x() * sinus) + pt.y()*cosinus;
+
+	double p = magics::pressureFromTheta(theta+273.15, tempe+273.15)/100;
+
+	return PaperPoint(tempe, p);
+}
+
+void Tephigram::revert(const vector< std::pair<double, double> > & in, vector< std::pair<double, double> > & out) const
+{
+    out.reserve(in.size());
+    for (vector< std::pair<double, double> >::const_iterator p = in.begin(); p != in.end(); ++p) {
+		double tempe = p->first *cosinus + p->second*sinus;
+		double theta = - (p->first * sinus) + p->second*cosinus;
+
+		double pt = magics::pressureFromTheta(theta+273.15, tempe+273.15)/100;
+		MagLog::dev() << " tempe = " << tempe << "  Pressure = " << pt << endl;
+        out.push_back(make_pair(tempe, pt));
+	}
+						 
+}
+
+void TephiInfo::revert(const PaperPoint& pt, UserPoint& point)  const
+{
+	// UserPoint X = temperature in deg Y = Pressure in hPa
+		// First we calculate theta and we rotate!
+		double tempe = pt.x() *cosinus + pt.y()*sinus;
+		double theta = - (pt.x() * sinus) + pt.y()*cosinus;
+
+		double p = magics::pressureFromTheta(theta+273.15, tempe+273.15)/100;
+
+		point.x_ = tempe;
+		point.y_ = p;
+
+}
+
+bool TephiInfo::needShiftedCoastlines()  const
+{
+	return false;
+}
+
+void TephiInfo::aspectRatio(double& width, double& height)
+{
+init();
+	//Transformation::aspectRatio(width, height);
+}
+
+void TephiInfo::boundingBox(double& xmin, double& ymin, double& xmax, double& ymax)  const
+{
+
+
+
+
+
+}
+
+
+double TephiInfo::getMinPCX()  const
+{
+
+	return -1.5;
+}
+
+double TephiInfo::getMinPCY()  const
+{
+
+	return minPCY_;
+}
+
+double TephiInfo::getMaxPCX()  const
+{
+
+	return 1.5;
+}
+
+double TephiInfo::getMaxPCY()  const
+{
+	return maxPCY_;
+}
+
+Polyline& TephiInfo::getPCBoundingBox() const
+{
+	if ( PCEnveloppe_->empty() ) {
+		PCEnveloppe_->push_back(-1.5, getMinPCY());
+		PCEnveloppe_->push_back(-1.5, getMaxPCY());
+		PCEnveloppe_->push_back(1.5, getMaxPCY());
+		PCEnveloppe_->push_back(1.5, getMinPCY());
+		PCEnveloppe_->push_back(-1.5, getMinPCY());
+	}
+
+	return *PCEnveloppe_;
+
+}
+
+Polyline& TephiInfo::getUserBoundingBox() const
+{
+	if ( userEnveloppe_->empty() ) {
+		userEnveloppe_->push_back(PaperPoint(x_min_, y_min_));
+		userEnveloppe_->push_back(PaperPoint(x_min_, y_max_));
+		userEnveloppe_->push_back(PaperPoint(x_max_, y_max_));
+		userEnveloppe_->push_back(PaperPoint(x_max_, y_min_));
+		userEnveloppe_->push_back(PaperPoint(x_min_, y_min_));
+	}
+
+	return *userEnveloppe_;
+}
+
+void TephiInfo::setDefinition(const string& json)
+{
+
+
+
+	if (json.empty())
+			return;
+
+
+
+		MagJSon helper;
+		helper.interpret(json);
+
+		XmlNode node = **helper.tree_.firstElement();
+
+		node.name("TephiInfo");
+
+
+		set(node);
+}
+
+void TephiInfo::getNewDefinition(const UserPoint& ll, const UserPoint& ur, string& out) const
+{
+	map<string, string> def;
+	def["subpage_map_projection"] = "TephiInfo";
+
+	def["x_min"]= tostring(ll.x_);
+			def["x_max"]= tostring(ur.x_);
+		def["y_min"]= tostring(ll.y_);
+		def["y_max"]= tostring(ur.y_);
+
+
+	::toxml2(out, def);
+
+	out = "{" + out + "}";
+
+	MagJSon helper;
+
+	helper.interpret(out);
+
+
+
+}
+void Tephigram::operator()(const Polyline& from,  BasicGraphicsObjectContainer& out) const
+{
+	if (from.empty())
+			return;
+		PaperPoint ll(getMinPCX(), getMinPCY());
+		PaperPoint ur(maxpcx, getMaxPCY());
+		boost::geometry::model::box<PaperPoint> box(ll, ur);
+		boost::geometry::correct(box);
+		if ( from.closed() ) {
+			deque<PaperPoint> line;
+
+			for (unsigned i = 0; i < from.size(); i++) {
+				line.push_back(from.get(i));
+
+			}
+
+			boost::geometry::correct(line);
+			vector<deque<PaperPoint> > result;
+			boost::geometry::intersection(box, line, result);
+
+			// Now we feed the graphic container!
+
+			for (vector<deque<PaperPoint> >::iterator l = result.begin(); l != result.end(); l++)
+			{
+				Polyline* poly = from.getNew();
+
+				for (deque<PaperPoint>::iterator point = l->begin(); point != l->end(); ++point)
+					poly->push_back(*point);
+
+				if ( !poly->empty() )
+					out.push_back(poly);
+			}
+		}
+		else {
+			vector<PaperPoint> line;
+
+			for (unsigned i = 0; i < from.size(); i++) {
+				line.push_back(from.get(i));
+			}
+			boost::geometry::correct(line);
+			vector<vector<PaperPoint> > result;
+			boost::geometry::intersection(box, line, result);
+
+			// Now we feed the graphic container!
+
+			for (vector<vector<PaperPoint> >::iterator l = result.begin(); l != result.end(); l++)
+			{
+				Polyline* poly = from.getNew();
+
+				for (vector<PaperPoint>::iterator point = l->begin(); point != l->end(); ++point)
+					poly->push_back(*point);
+
+				if ( !poly->empty() )
+					out.push_back(poly);
+			}
+		}
+
+}
+
+bool Tephigram::in(const PaperPoint& point) const
+ {
+	static Polyline enveloppe;
+         if ( enveloppe.empty()) {
+        	 enveloppe.push_back(PaperPoint(getMinPCX(), getMinPCY()));
+        	 enveloppe.push_back(PaperPoint(getMinPCX(), getMaxPCY()));
+        	 enveloppe.push_back(PaperPoint(getMaxPCX(), getMaxPCY()));
+        	 enveloppe.push_back(PaperPoint(getMaxPCX(), getMinPCY()));
+        	 enveloppe.push_back(PaperPoint(getMinPCX(), getMinPCY()));
+         }
+
+         return boost::geometry::covered_by(point, enveloppe.polygon_);
+ }
diff --git a/src/common/Tephigram.h b/src/common/Tephigram.h
new file mode 100644
index 0000000..94be57b
--- /dev/null
+++ b/src/common/Tephigram.h
@@ -0,0 +1,295 @@
+/******************************** LICENSE ********************************
+
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+ 
+ Licensed under the Apache License, Version 2.0 (the "License"); 
+ you may not use this file except in compliance with the License. 
+ You may obtain a copy of the License at 
+ 
+ 	http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+
+
+ ******************************** LICENSE ********************************/
+
+/*!
+    \file Tephigram.h
+    \brief Definition of Tephigram.
+    \author Meteorological Visualisation Section, ECMWF
+
+    Started: Thu Jun 12 16:01:47 2008
+*/
+
+#ifndef _Tephigram
+#define _Tephigram
+
+#include <Transformation.h>
+#include <XmlNode.h>
+#include <Coordinate.h>
+#include <TephigramAttributes.h>
+
+namespace magics
+{
+
+/*! \class Tephigram
+    \brief Implements a new projection
+    \ingroup projection
+
+    This projection ...
+*/
+
+class Tephigram: public Transformation, public TephigramAttributes
+{
+
+public:
+	Tephigram();
+	~Tephigram();
+
+	/*!
+	  \brief sets  from an XML node
+	*/
+	void set(const XmlNode& node)
+	{
+		Transformation::set(node);
+		TephigramAttributes::set(node);
+
+	}
+	/*!
+	  \brief sets  from a map
+	*/
+	void set(const map<string, string>& map)
+	{
+		Transformation::set(map);
+		TephigramAttributes::set(map);
+	}
+    
+	virtual Transformation* clone() const {
+		Tephigram* transformation = new Tephigram();
+		return transformation;
+	}
+	
+	/*!
+	\\brief Initialise the projection
+	*/
+	virtual void init() ;
+	/*!
+	\\brief 
+	*/
+	virtual PaperPoint operator()(const UserPoint&) const;
+	/*!
+	\\brief 
+	*/
+
+	virtual PaperPoint operator()(const PaperPoint&) const;
+	/*!
+	\\brief 
+	*/
+	virtual void revert(const PaperPoint&, UserPoint&) const;
+
+	void revert(const vector< std::pair<double, double> >& , vector< std::pair<double, double> >&) const;
+
+
+
+	/*!
+	\\brief Does the projection needs the coastalines to be shifted!
+	*/
+	virtual bool needShiftedCoastlines() const;
+	/*!
+	\\brief set the aspect ratio!
+	*/
+	virtual void aspectRatio(double&, double&) ;
+	/*!
+	\\brief set the bounding box!
+	*/
+	virtual void boundingBox(double&, double&, double&, double&) const;
+
+	/*!
+	\\brief return the xmin in user coordinates!
+	*/
+	virtual double getMinX() const;
+	/*!
+	\\brief return the ymin in user coordinates!
+	*/
+	virtual double getMinY() const;
+	/*!
+	\\brief return the xmax in user coordinates!
+	*/
+	virtual double getMaxX() const;
+	/*!
+	\\brief return the ymax in user coordinates!
+	*/
+	virtual double getMaxY() const;
+	/*!
+	\\brief set the xmin in user coordinates!
+	*/
+	virtual void setMinX(double) ;
+	/*!
+	\\brief return the ymin in user coordinates!
+	*/
+	virtual void setMinY(double) ;
+	/*!
+	\\brief return the xmax in user coordinates!
+	*/
+	virtual void setMaxX(double) ;
+	/*!
+	\\brief return the ymax in user coordinates!
+	*/
+	virtual void setMaxY(double) ;
+	/*!
+	\\brief return the xmin in projection coordinates!
+	*/
+	virtual double getMinPCX() const;
+	/*!
+	\\brief return the ymin in projection coordinates!
+	*/
+	virtual double getMinPCY() const;
+	/*!
+	\\brief return the xmax in projection coordinates!
+	*/
+	virtual double getMaxPCX() const;
+	virtual double getMaxTestPCX() const;
+	/*!
+	\\brief return the ymax in projection coordinates!
+	*/
+	virtual double getMaxPCY() const;
+
+	virtual Polyline& getPCBoundingBox() const;
+	virtual Polyline& getUserBoundingBox() const;
+
+	virtual void setDefinition(const string&);
+	void getNewDefinition(const UserPoint&, const UserPoint&, string&) const;
+	bool in(const PaperPoint& point) const;
+	void operator()(const Polyline& poly,  BasicGraphicsObjectContainer& out) const;
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+	 double minPCX_;
+	 double maxPCX_;
+	 double minPCY_;
+	 double maxPCY_;
+private:
+    //! Copy constructor - No copy allowed
+	Tephigram(const Tephigram&);
+    //! Overloaded << operator to copy - No copy allowed
+	Tephigram& operator=(const Tephigram&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const Tephigram& p)
+		{ p.print(s); return s; }
+
+};
+
+class TephiInfo: public Tephigram
+{
+public:
+	TephiInfo();
+	~TephiInfo();
+
+	/*!
+	  \brief sets  from an XML node
+	*/
+	void set(const XmlNode& node)
+	{
+
+		Tephigram::set(node);
+
+	}
+	/*!
+	  \brief sets  from a map
+	*/
+	void set(const map<string, string>& map)
+	{
+
+		Tephigram::set(map);
+	}
+
+	virtual Transformation* clone() const {
+		Tephigram* transformation = new Tephigram();
+		return transformation;
+	}
+
+	/*!
+		\\brief Initialise the projection
+		*/
+		virtual void init() ;
+	/*!
+	\\brief
+	*/
+	virtual PaperPoint operator()(const UserPoint&) const;
+	/*!
+	\\brief
+	*/
+
+	virtual PaperPoint operator()(const PaperPoint&) const;
+	/*!
+	\\brief
+	*/
+	virtual void revert(const PaperPoint&, UserPoint&) const;
+
+
+	/*!
+	\\brief Does the projection needs the coastalines to be shifted!
+	*/
+	virtual bool needShiftedCoastlines() const;
+	/*!
+	\\brief set the aspect ratio!
+	*/
+	virtual void aspectRatio(double&, double&) ;
+	/*!
+	\\brief set the bounding box!
+	*/
+	virtual void boundingBox(double&, double&, double&, double&) const;
+
+
+	/*!
+	\\brief return the xmin in projection coordinates!
+	*/
+	virtual double getMinPCX() const;
+	/*!
+	\\brief return the ymin in projection coordinates!
+	*/
+	virtual double getMinPCY() const;
+	/*!
+	\\brief return the xmax in projection coordinates!
+	*/
+	virtual double getMaxPCX() const;
+	/*!
+	\\brief return the ymax in projection coordinates!
+	*/
+	virtual double getMaxPCY() const;
+
+	virtual Polyline& getPCBoundingBox() const;
+	virtual Polyline& getUserBoundingBox() const;
+
+	virtual void setDefinition(const string&);
+	void getNewDefinition(const UserPoint&, const UserPoint&, string&) const;
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const;
+	 double reference_;
+
+private:
+    //! Copy constructor - No copy allowed
+	TephiInfo(const TephiInfo&);
+    //! Overloaded << operator to copy - No copy allowed
+	TephiInfo& operator=(const TephiInfo&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const TephiInfo& p)
+		{ p.print(s); return s; }
+
+};
+    
+
+} // namespace magics
+#endif
diff --git a/src/common/Thread.h b/src/common/Thread.h
index c3978c7..93749cd 100644
--- a/src/common/Thread.h
+++ b/src/common/Thread.h
@@ -26,11 +26,14 @@
 #include "Mutex.h"
 #endif
 
+
+#include "ThreadControler.h"
+
 // This should be a Task
 
 class Thread {
 public:
-	friend class ThreadControler;
+	friend class magics::ThreadControler;
 
 // -- Contructors
 	
diff --git a/src/common/ThreadControler.cc b/src/common/ThreadControler.cc
index be7a2cc..3c6ca0b 100644
--- a/src/common/ThreadControler.cc
+++ b/src/common/ThreadControler.cc
@@ -48,6 +48,8 @@
 #endif
 
 
+using namespace magics;
+
 
 ThreadControler::ThreadControler(Thread* proc,bool detached):
 	detached_(detached),
@@ -161,6 +163,15 @@ void ThreadControler::start()
 
 	proc_->data_ = 0;
 
+    size_t size = 2*1024*1024;
+
+    if (!getEnvVariable("MAGPLUS_STACK_SIZE").empty() ) {
+        size = tonumber(getEnvVariable("MAGPLUS_STACK_SIZE"));
+        MagLog::warning() << "MAGPLUS_STACK_SIZE jas been set to "<< size << endl;
+    }
+
+	pthread_attr_setstacksize(&attr,size);
+
 #if 0
 	const size_t size = 2*1024*1024;
 	void *stack = MemoryPool::largeAllocate(size);
diff --git a/src/common/ThreadControler.h b/src/common/ThreadControler.h
index 44a90c2..61a6583 100644
--- a/src/common/ThreadControler.h
+++ b/src/common/ThreadControler.h
@@ -32,10 +32,13 @@
 #include "MutexCond.h"
 #endif
 
+
 // Don't subclass from ThreadControler put from Thread
 
 class Thread;
 
+namespace magics {
+
 class ThreadControler : public Task {
 public:
 
@@ -89,5 +92,6 @@ private:
 
 };
 
+} // namespace magics
 
 #endif
diff --git a/src/common/Timer.cc b/src/common/Timer.cc
index 531bed2..102b934 100644
--- a/src/common/Timer.cc
+++ b/src/common/Timer.cc
@@ -58,17 +58,31 @@ Timer::Timer(const string& name, const string& detail):
 	cpu_(clock())
 {
 	gettimeofday(&start_,0);
+
 }
 static Mutex lockprofiles_;
 Timer::~Timer()
 {
+	timeval now;
+	gettimeofday(&now,0);
+
+	 char start[256], stop[256];
+
+
+     sprintf(start, "%f", (start_.tv_sec + start_.tv_usec / 1000000.0));
+     sprintf(stop, "%f", (now.tv_sec + now.tv_usec / 1000000.0));
+
+
+
+
 	const double  s   = elapsed();
 	clock_t cpu =  clock();
 	const Seconds	sec1(s);
 	const Seconds	sec2(double(cpu-cpu_)/CLOCKS_PER_SEC);
-	MagLog::profile() << name_ << ": " 
+	MagLog::profile() << name_ << ": "
 		<< sec1 << " elapsed, " 
 		<< sec2 << " cpu" << "\n";
+
 	ostringstream e;
 			e << elapsed();
 			
@@ -79,7 +93,7 @@ Timer::~Timer()
 	{
 		AutoLock<Mutex> lock(lockprofiles_);
 	
-		profiles_.push_back(ProfileInfo(name_, details_, e.str(), c.str()));
+		profiles_.push_back(ProfileInfo(name_, details_, start, stop, e.str(), c.str()));
 	}
 }
 
@@ -91,14 +105,17 @@ double Timer::elapsed()
 	return (double)diff.tv_sec + ((double)diff.tv_usec / 1000000.);
 }
 
-ProfileInfo::ProfileInfo(const string& name, const string& details, const string& elapsed, const string& cpu) :
-	name_(name), details_(details), elapsed_(elapsed), cpu_(cpu)  {
+ProfileInfo::ProfileInfo(const string& name, const string& details,
+		const string& start, const string& stop, const string& elapsed, const string& cpu) :
+	name_(name), details_(details), start_(start), stop_(stop), elapsed_(elapsed), cpu_(cpu)  {
 		
 	}
 
 ostream& operator<<(ostream& s,const ProfileInfo& p)
 			{ s << "\t\"" << p.name_ << "\" : {" << endl;
 			   s << "\t\t\"details\" : \"" << p.details_ << "\"," << endl;
+			   s << "\t\t\"start\" : " << p.start_ << "," << endl;
+			   s << "\t\t\"stop\" : " << p.stop_ << "," << endl;
 			   s << "\t\t\"elapsed\" : " << p.elapsed_ << "," << endl;
 			   s << "\t\t\"cpu\" : " << p.cpu_ << endl;
 			   s << "\t}";
diff --git a/src/common/Timer.h b/src/common/Timer.h
index ee80c6c..5dc8699 100644
--- a/src/common/Timer.h
+++ b/src/common/Timer.h
@@ -40,11 +40,15 @@
 class ProfileInfo 
 {
 public:
-	ProfileInfo(const string& name, const string& details, const string& elapsed, const string& cpu);
+	ProfileInfo(const string& name, const string& details,
+			const string& start, const string& stop,
+			const string& elapsed, const string& cpu);
 	string name_;
 	string details_;
 	string elapsed_;
 	string cpu_;
+	string start_;
+	string stop_;
 	
 	// -- Friends
 	    //! Overloaded << operator to call print().
@@ -86,6 +90,7 @@ private:
 	string         name_;
 	string 		  details_;
 	struct timeval start_;
+
 	clock_t        cpu_;
 	static vector<ProfileInfo> profiles_;
 	
diff --git a/src/common/Transformation.cc b/src/common/Transformation.cc
index 38ce2d0..9626f53 100644
--- a/src/common/Transformation.cc
+++ b/src/common/Transformation.cc
@@ -1,3 +1,4 @@
+
 /******************************** LICENSE ********************************
 
   Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF) 
@@ -19,6 +20,7 @@
 #include <iomanip>
 #include "MatrixHandler.h"
 #include "PointsHandler.h"
+#include "Timer.h"
 #include "MetaData.h"
 #define BOOST_GEOMETRY_OVERLAY_NO_THROW
 #include "Polyline.h"
@@ -34,7 +36,7 @@ Transformation::Transformation() :
 	dataMaxX_(-std::numeric_limits<double>::max()),
 	dataMinY_(std::numeric_limits<double>::max()),
 	dataMaxY_(-std::numeric_limits<double>::min()),
-	topAxis_(true)
+	topAxis_(true), xTile_(0), yTile_(0)
 {
 	userEnveloppe_ = new Polyline();
 	PCEnveloppe_ = new Polyline();
@@ -57,44 +59,213 @@ void Transformation::forceNewArea(double xpcmin, double ypmin, double xpcmax, do
 }
 void Transformation::fill(double& width, double& height)
 {
+
 	init();
-	// with and height will only 
-	double w = getAbsoluteMaxPCX() - getAbsoluteMinPCX();
-	double h = getAbsoluteMaxPCY() - getAbsoluteMinPCY();
-	
-	double minx =  getAbsoluteMinPCX();
-	double maxx =  getAbsoluteMaxPCX();
-	
-	double miny =  getAbsoluteMinPCY();
-	double maxy =  getAbsoluteMaxPCY();
-	
-	
+		// with and height will only
+		double w = getAbsoluteMaxPCX() - getAbsoluteMinPCX();
+		double h = getAbsoluteMaxPCY() - getAbsoluteMinPCY();
+
+		double minx =  getAbsoluteMinPCX();
+		double maxx =  getAbsoluteMaxPCX();
+
+		double miny =  getAbsoluteMinPCY();
+		double maxy =  getAbsoluteMaxPCY();
+
 		
-	
-	
-		  	double nw = (width/height) *h;		
-		  	if ( nw > w) {
-		  	// we need to extend in the x direction
-		  		double more = (nw-w)/2;
-		  		maxx = maxx + more;
-		  		minx = minx - more;			
-		  	}
-			else { 
-				double nh = (height/width)*w;				
-				double more = (nh-h)/2;							
-				maxy = maxy + more;
-				miny = miny - more;				
-			}
+
 		
 		
-	
-		setNewPCBox(minx, miny, maxx, maxy); 
+			  	double nw = (width/height) *h;
+			  	if ( nw > w) {
+			  	// we need to extend in the x direction
+			  		double more = (nw-w)/2;
+			  		maxx = maxx + more;
+			  		minx = minx - more;
+			  	}
+				else {
+					double nh = (height/width)*w;
+					double more = (nh-h)/2;
+					maxy = maxy + more;
+					miny = miny - more;
+				}
+
+			  	askedWidth_ = width*40;
+			  		askedHeight_ = height*40;
 		
-	
+			setNewPCBox(minx, miny, maxx, maxy);
+}
+
+#define PRINT(w, a) MagLog::dev() << w << "---> " << #a << ": " << (a) << std::endl
+
+
+void Transformation::tile(double& width, double& height)
+{
+	init();
+	// here we assume we are in the wrepMode, this should be checked!
+
+
+	// with and height will only
+	double awidth = getAbsoluteMaxPCX() - getAbsoluteMinPCX();
+	double aheight = getAbsoluteMaxPCY() - getAbsoluteMinPCY();
+
+	double minx =  getAbsoluteMinPCX();
+	double maxx =  getAbsoluteMaxPCX();
+	double miny =  getAbsoluteMinPCY();
+	double maxy =  getAbsoluteMaxPCY();
+
+	awidth = maxx -minx;
+	aheight = maxy -miny;
+
+
+
+
+			int tiles;
+			double nw = (width/height) * aheight;
+
+
+
+
+
+
+
+
+
+
+
+	double pxheight = height*40.;
+	double pxwidth = width*40.;
+
+	// Try to see if we have already a number of tile.
+	if (same((pxheight/tile_ - int(pxheight)/tile_), 0)) {
+		pxheight = int(pxheight);
+
+	}
+	if (same((pxwidth/tile_ - int(pxwidth)/tile_), 0)) {
+		pxwidth = int(pxwidth);
+
+	}
+
+	askedWidth_ = pxwidth;
+	askedHeight_ = pxheight;
+
+	double pcwidth = maxx-minx;
+	double pcheight = maxy-miny;
+	PRINT("pcwidth", pcwidth);
+	PRINT("pcheight", pcheight);
+	vector<double> levels;
+	double u = unit_;
+	for ( float i = 6; i > 0; i--) {
+
+		levels.push_back((u)/tile_);
+
+
+		u = u/2.;
+	}
+	std::sort(levels.begin(), levels.end());
+
+
+	for ( vector<double>::iterator l = levels.begin(); l != levels.end(); ++l)
+		MagLog::debug()  << *l << ", ";
+
+	double ratio = ( nw > awidth) ? pcheight/pxheight : pcwidth/pxwidth;
+					  	// we need to extend in the x direction
+
+
+
+
+
+
+	vector<double>::iterator l = levels.begin();
+	while ( l != levels.end() ) {
+
+		if ( ratio - *l   <  unitEpsilon_  ) {
+			break;
+		}
+		++l;
+	}
+
+
+
+
+	double level = ( l == levels.end() ) ? levels.back() : *l;
+
+
+	int ytiles = ceil((pcheight/level)/tile_);
+	int xtiles = ceil((pcwidth/level)/tile_);
+
+	zoomLevel_ = ytiles;
+
+
+	pxwidth  = tile_*xtiles;
+	pxheight = tile_*ytiles;
+
+
+	// compute new pxminx, pxminy, pxmaxx, pxmaxy
+
+	int pxminx, pxminy, pxmaxx, pxmaxy;
+
+	pxminx = (minx-originX_)/level;
+	pxminy = (miny-originY_)/level;;
+	pxmaxx = (maxx-originX_)/level;
+	pxmaxy = (maxy-originY_)/level;
+
+	xTile_ = pxminx;
+	yTile_ = pxmaxy;
+
+
+
+	// compute  new minx
+
+	pxminx = floor((float)pxminx/tile_)*tile_;
+	pxminy = floor((float)pxminy/tile_)*tile_;
+
+	pxmaxx =  ceil((float)pxmaxx/tile_)*tile_;
+	pxmaxy =  ceil((float)pxmaxy/tile_)*tile_;
+
+
+
+
+	// now we can compute the new minx,,,
+	minx = (pxminx * level) + originX_;
+	miny =  (pxminy * level) + originY_;
+	maxx = (pxmaxx * level) + originX_;
+	maxy = (pxmaxy * level) + originY_;
+	// now we jsut have to count the number of tiles to find the width and the hieght
+
+	width = (pxmaxx-pxminx);
+	height = (pxmaxy-pxminy);
+
+	if ( askedWidth_ > width ) {
+		maxx += level*tile_;
+		width += tile_;
+
+	}
+	if ( askedHeight_ > height ) {
+
+			miny -= level*tile_;
+			height +=tile_;
+
+	}
+	width /=40.;
+	height /=40.;
+
+
+
+
+	xTile_ = xTile_ - pxminx;
+	yTile_ = pxmaxy - yTile_;
+
+
+
+
+	setNewPCBox(minx, miny, maxx, maxy);
+	init();
 }
 
 void Transformation::aspectRatio(double& width, double& height)
 {
+	askedWidth_ = width*40;
+	askedHeight_ = height*40;
 	init();
 	double w = getAbsoluteMaxPCX() - getAbsoluteMinPCX();
 	double h = getAbsoluteMaxPCY() - getAbsoluteMinPCY();
@@ -109,6 +280,8 @@ void Transformation::aspectRatio(double& width, double& height)
 	}
 	else 
 		width = (w/h) * height;
+
+
 }
 
 
@@ -131,20 +304,17 @@ void Transformation::thin(MatrixHandler& matrix, double x, double y, vector<User
 	}	
 	
 	ThinningMatrixHandler thin_matrix(matrix, xfactor , yfactor);
-	
-
+	//MatrixHandler* box_matrix = prepareData(thin_matrix);
+	MatrixHandler* box_matrix = &thin_matrix;
 
-	int columns =thin_matrix.columns();
-	int rows = thin_matrix.rows();
-
-	
-		for ( int lat = 0; lat < rows; lat++)		
-			for ( int lon = 0; lon < columns; lon++) 
-				out.push_back(UserPoint(thin_matrix.column(lat, lon), thin_matrix.row(lat, lon), thin_matrix(lat, lon)));
-	columns = matrix.columns();
-	rows = matrix.rows();
+		int columns =box_matrix->columns();
+		int rows = box_matrix->rows();
 
 
+			for ( int lat = 0; lat < rows; lat++)
+				for ( int lon = 0; lon < columns; lon++)
+				//if ( in(box_matrix->column(lat, lon), box_matrix.row(lat, lon)) )
+					out.push_back(UserPoint(box_matrix->column(lat, lon), box_matrix->row(lat, lon), (*box_matrix)(lat, lon)));
 
 }
 
@@ -176,37 +346,49 @@ bool ViewFilter::in(const PaperPoint& xy){
 
 void Transformation::init()
 {
-	if ( PCEnveloppe_->empty()) {
-			PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
-			PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMaxPCY()));
-			PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMaxPCY()));
-			PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMinPCY()));
-			PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
-		}
+	PCEnveloppe_->clear();
+
+	PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMaxPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMaxPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMinPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
+	askedxmin_ =  std::min(getMinPCX(), getMaxPCX());
+	askedxmax_ =  std::max(getMinPCX(), getMaxPCX());
+	askedymin_ =  std::min(getMinPCY(), getMaxPCY());
+	askedymax_ =  std::max(getMinPCY(), getMaxPCY());
 }
 
+void Transformation::cleaninit()
+{
+	PCEnveloppe_->clear();
+
+	PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMaxPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMaxPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMinPCY()));
+	PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
+	askedxmin_ =  std::min(getMinPCX(), getMaxPCX());
+	askedxmax_ =  std::max(getMinPCX(), getMaxPCX());
+	askedymin_ =  std::min(getMinPCY(), getMaxPCY());
+	askedymax_ =  std::max(getMinPCY(), getMaxPCY());
 
-void Transformation::setDataMinX(double minx, const string& ref) const
+
+}
+
+void Transformation::setDataMinMaxX(double minx, double maxx, const string& ref) const
 { 
 	// WE will have to take into acount the date!
 	dataMinX_ = std::min(minx, dataMinX_); 
+	dataMaxX_ = std::max(maxx, dataMaxX_);
 	dataReferenceX_ = ref;
 }
 
-void Transformation::setDataMaxX(double maxx, const string& ref) const 
-{ 
-	dataMaxX_ = std::max(maxx, dataMaxX_); 
-	dataReferenceX_ = ref;
-}
 
-void Transformation::setDataMinY(double miny, const string& ref) const
-{ 
-	dataMinY_ = std::min(miny, dataMinY_);
-	dataReferenceY_ = ref; 
-}
 
-void Transformation::setDataMaxY(double maxy, const string& ref) const 
+void Transformation::setDataMinMaxY(double miny, double maxy, const string& ref) const
 { 
+	dataMinY_ = std::min(miny, dataMinY_);
 	dataMaxY_ = std::max(maxy, dataMaxY_); 
 	dataReferenceY_ = ref; 
 }
@@ -231,10 +413,18 @@ void Transformation::visit(MetaDataVisitor& visitor,
 
 	java << "\"pcxmin\" : \"" << getMinPCX() <<  "\",";		
 	java << "\"pcymin\" : \"" << getMinPCY() <<  "\",";		
-	java << "\"pcwidth\" : \"" << w <<  "\",";	
-	java << "\"pcheight\" : \"" << h <<  "\"";	
+	java << "\"pcxmin\" : \"" << getMinPCX() <<  "\",";
+	java << "\"pcymin\" : \"" << getMinPCY() <<  "\",";
 
+	java << "\"pcwidth\" : \"" << w <<  "\",";	
+	java << "\"pcheight\" : \"" << h <<  "\",";
+	java << "\"inwidth\" : \"" << askedWidth_ <<  "\",";
+	java << "\"inheight\" : \"" << askedHeight_ <<  "\",";
+	java << "\"xorig\" : \"" << xTile_ <<  "\",";
+	java << "\"yorig\" : \"" << yTile_ <<  "\",";
+	java << "\"zoom_level\" : \"" << zoomLevel_ <<  "\"";
 	java << "}";	
+
 	visitor.add("projection", java.str());
 	ostringstream wf;
 	wf << (w/width)<< endl;
@@ -268,19 +458,24 @@ void Transformation::operator()(const Polyline& from, BasicGraphicsObjectContain
 
 		boost::geometry::correct(line);
 		vector<deque<PaperPoint> > result;
-		boost::geometry::intersection(box, line, result);
+		try {
+			boost::geometry::intersection(box, line, result);
 
-		// Now we feed the graphic container!
+			// Now we feed the graphic container!
 
-		for (vector<deque<PaperPoint> >::iterator l = result.begin(); l != result.end(); l++)
-		{
-			Polyline* poly = from.getNew();
+			for (vector<deque<PaperPoint> >::iterator l = result.begin(); l != result.end(); l++)
+			{
+				Polyline* poly = from.getNew();
 
-			for (deque<PaperPoint>::iterator point = l->begin(); point != l->end(); ++point)
-				poly->push_back(*point);
+				for (deque<PaperPoint>::iterator point = l->begin(); point != l->end(); ++point)
+					poly->push_back(*point);
 
-			if ( !poly->empty() )
-				out.push_back(poly);
+				if ( !poly->empty() )
+					out.push_back(poly);
+			}
+		}
+		catch (...) {
+			MagLog::warning() << "error clipping->line ignored" << endl;
 		}
 	}
 	else {
@@ -291,6 +486,7 @@ void Transformation::operator()(const Polyline& from, BasicGraphicsObjectContain
 		}
 		boost::geometry::correct(line);
 		vector<vector<PaperPoint> > result;
+		try {
 		boost::geometry::intersection(box, line, result);
 
 		// Now we feed the graphic container!
@@ -305,6 +501,13 @@ void Transformation::operator()(const Polyline& from, BasicGraphicsObjectContain
 			if ( !poly->empty() )
 				out.push_back(poly);
 		}
+		}
+
+				catch (...) {
+					MagLog::warning() << "error clipping->line ignored" << endl;
+				}
+
+
 	}
 }
 
@@ -318,6 +521,7 @@ void Transformation::boundingBox(double& minx, double& miny, double&maxx, double
 	maxx= getMaxX();
 	maxy= getMaxY();
 
+
 	PCEnveloppe_->push_back(PaperPoint(minx, miny));
 	PCEnveloppe_->push_back(PaperPoint(minx, maxy));
 	PCEnveloppe_->push_back(PaperPoint(maxx, maxy));
@@ -330,6 +534,9 @@ void Transformation::boundingBox(double& minx, double& miny, double&maxx, double
 	userEnveloppe_->push_back(PaperPoint(minx, maxy));
 	userEnveloppe_->push_back(PaperPoint(minx, miny));
 
+
+
+
 }
 
 
@@ -359,15 +566,14 @@ bool Transformation::in(const PaperPoint& point) const
 
 bool Transformation::in(double x, double y) const
 {
-	if ( PCEnveloppe_->empty()) {
-				PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
-				PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMaxPCY()));
-				PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMaxPCY()));
-				PCEnveloppe_->push_back(PaperPoint(getMaxPCX(), getMinPCY()));
-				PCEnveloppe_->push_back(PaperPoint(getMinPCX(), getMinPCY()));
-			}
-	PaperPoint point = (*this)(UserPoint(x,y));
-	return boost::geometry::covered_by(point, PCEnveloppe_->polygon_);
+
+	fast_reproject(x, y);
+	if ( x < askedxmin_ ) return false;
+	if ( x > askedxmax_ ) return false;
+	if ( y < askedymin_ ) return false;
+	if ( y > askedymax_ ) return false;
+	return true;
+
 }
 
 void Transformation::thin(PointsHandler& points, vector<PaperPoint>& thin,  vector<PaperPoint>& all) const
@@ -443,9 +649,9 @@ void Transformation::operator()(const UserPoint& geo, Polyline& out) const
 }
 
 
-void Transformation::reprojectComponents(const UserPoint&, pair<double, double>&) const
+void Transformation::reprojectComponents(double& x, double& y, pair<double, double>&) const
 {
-	
+	fast_reproject(x, y);
 }
 
 void Transformation::reprojectSpeedDirection(const PaperPoint& point, pair<double, double>&) const
@@ -453,10 +659,10 @@ void Transformation::reprojectSpeedDirection(const PaperPoint& point, pair<doubl
 	
 }
 
-void Transformation::revert(const vector<pair<double, double> > & in, vector<pair<double, double> > & out) const
+void Transformation::revert(const vector< std::pair<double, double> > & in, vector< std::pair<double, double> > & out) const
 {
 	out.reserve(in.size());
-	for (vector<pair<double, double> >::const_iterator p = in.begin(); p != in.end(); ++p)
+	for (vector< std::pair<double, double> >::const_iterator p = in.begin(); p != in.end(); ++p)
 		out.push_back(make_pair(this->rx(p->first), this->ry(p->second)));
 
 }
@@ -481,3 +687,145 @@ MatrixHandler* Transformation::prepareData(const AbstractMatrix& matrix) const {
 	return new BoxMatrixHandler(matrix, *this);
 }
 
+typedef vector<UserPoint>::iterator PointIter;
+class SortTool
+{
+public:
+	SortTool(const Transformation& projection, double x, double y) : projection_(projection), x_(x), y_(y) {}
+	double distance(const PointIter& pt)
+	{
+		double x = pt->x_;
+		double y = pt->y_;
+		projection_.fast_reproject(x, y);
+		return (x-x_) * (x-x_) +  (y - y_) * (y -y_);
+	}
+	bool operator()(const PointIter& first, const PointIter& second) {
+			return distance(first) < distance(second);
+		}
+	double x_;
+	double y_;
+	const Transformation& projection_;
+};
+
+void useRef(double ref, double inc, double& min, double& max)
+{
+
+
+}
+
+/* refx, rey,stepx stepy Should in projection coordinates! */
+
+void Transformation::thin(double xstep, double ystep, double gap,  vector<UserPoint>& in) const
+{
+	Timer timer("thiining", "");
+
+
+
+
+	double uxmin, uxmax, uymin, uymax;
+	int dimx, dimy;
+	// Find the box..
+	uxmin = uxmax = in.front().x_;
+	uymin = uymax = in.front().y_;
+
+
+
+	for ( PointIter pt = in.begin(); pt != in.end(); ++pt ) {
+		double x = pt->x_;
+		double y = pt->y_;
+		if ( x < uxmin ) uxmin = x;
+		if ( y < uymin ) uymin = y;
+		if ( x > uxmax ) uxmax = x;
+		if ( y > uymax ) uymax = y;
+	}
+
+
+
+
+	dimx = ((uxmax - uxmin)  / xstep ) +1;
+	dimy = ((uymax - uymin ) / ystep ) +1;
+	vector<bool> mask(dimx*dimy, false);
+	for ( int j = 0; j < dimy; j++)	{
+		double lasty = uymin +(ystep*j);
+		double lastx = uxmin;
+		fast_reproject(lastx, lasty);
+		for ( int i = 0; i < dimx; i++) {
+			double y = uymin +(ystep*j);
+			double x = uxmin +(xstep*i);
+			fast_reproject(x, y);
+			if ( ( (x-lastx)*(x-lastx) + (y-lasty)*(y-lasty)) < gap )
+				mask[j*dimx+i] = true;
+			else {
+				lastx = x;
+				lasty = y;
+			}
+		}
+	}
+
+
+	vector<PointIter> helper(dimx*dimy, in.end());
+
+	for ( PointIter pt = in.begin(); pt != in.end(); ++pt ) {
+		double x = pt->x_;
+		double y = pt->y_;
+
+
+
+		int xx = ceil(x-uxmin)/xstep;
+		int yy = ceil(y-uymin)/ystep;
+
+
+
+		vector<pair<int, int> > check;
+
+		check.push_back(make_pair(yy, xx));
+		//if ( xx + 1 < dimx )
+			//check.push_back(make_pair(yy, xx+1));
+		//if ( yy + 1 < dimy )
+			//check.push_back(make_pair(yy+1, xx));
+		//if ( xx + 1 < dimx && yy + 1 < dimy )
+			//check.push_back(make_pair(yy+1, xx+1));
+
+
+
+		for ( vector<pair<int, int> >::iterator ind = check.begin(); ind != check.end(); ++ind) {
+			int i = ind->first*dimx + ind->second;
+			if ( mask[i] )
+				continue;
+			if ( i < 0 || i >= dimx*dimy)
+				continue;
+
+			double x0 = ind->second * xstep + uxmin;
+			double y0 = ind->first * ystep + uymin;
+			if ( !this->in(x0, y0) )
+				continue;
+
+
+			PointIter last = helper[i];
+
+			if ( last == in.end()) {
+				helper[i ]= pt;
+			}
+			else {
+
+				double dist = sqrt(((x-x0) * (x-x0)) +  ((y - y0) * (y - y0)));
+
+				double lastx = last->x_;
+				double lasty = last->y_;
+
+				double min = sqrt(((lastx-x0) * (lastx-x0)) +  ((lasty - y0) * (lasty -y0)));
+				if (dist < min){
+					helper[i ] = pt;
+				}
+			}
+		}
+
+
+	}
+
+	for ( int j = 0; j < dimx*dimy; j++) {
+		if ( helper[j] != in.end() )
+			helper[j]->flagMissing();
+	}
+
+}
diff --git a/src/common/Transformation.h b/src/common/Transformation.h
index 153dcfe..c4121af 100644
--- a/src/common/Transformation.h
+++ b/src/common/Transformation.h
@@ -65,6 +65,7 @@ Currently Magics++ supports following projections:
 #include "TeProjection.h"
 #include "BasicGraphicsObject.h"
 #include "SceneVisitor.h"
+#include "CustomisedPoint.h"
 
 
 
@@ -81,6 +82,7 @@ class MatrixHandler;
 class PointsHandler;
 class XmlNode;
 
+
 class Polyline;
 
 class ViewFilter
@@ -109,7 +111,7 @@ public:
 	Transformation();
 	virtual ~Transformation();
 	virtual void init();
-
+	void cleaninit();
 	enum CoordinateType {GeoType,XyType};
 	CoordinateType coordinateType() const {return coordinateType_;}	
 	virtual void toxml(ostream&) const {}
@@ -129,7 +131,7 @@ public:
 	bool needTopAxis() const   { return topAxis_; }
 	void needTopAxis(bool top) { topAxis_ = top; }
 
-	void operator()(const Polyline& poly,  BasicGraphicsObjectContainer& out) const;	
+	virtual void operator()(const Polyline& poly,  BasicGraphicsObjectContainer& out) const;
 
 	string writeLongitude(const UserPoint&) const;
 	string writeLatitude(const UserPoint&) const;
@@ -152,8 +154,8 @@ public:
 	virtual bool in(const Polyline&) const;
 	*/
     // is the point in projected area?
-	bool in(const UserPoint&) const;
-	bool in(const PaperPoint&) const;
+	virtual bool in(const UserPoint&) const;
+	virtual bool in(const PaperPoint&) const;
 
 
 	// is the point in PC in the projected area?
@@ -183,7 +185,8 @@ public:
 	
 	virtual void aspectRatio(double&, double&);
 	virtual void fill(double&, double&); // fill the space , can adapt the coordiantes to return the biggest area..
-	virtual void forceNewArea(double, double, double, double, double&, double&); 
+	virtual void tile(double&, double&); // fill the space , can adapt the coordiantes to return the biggest area..
+    virtual void forceNewArea(double, double, double, double, double&, double&);
 	
 	
 // Basic reprojection method! 
@@ -201,7 +204,7 @@ public:
 	virtual void operator()(const UserPoint& geo, Polyline& out) const;
 	virtual void operator()(const UserPoint& xy, vector<PaperPoint>& out) const;
 
-	virtual void revert(const vector<pair<double, double> > &, vector<pair<double, double> > &) const;
+	virtual void revert(const vector< std::pair<double, double> > &, vector< std::pair<double, double> > &) const;
 	
 	virtual void revert(const PaperPoint& xy, UserPoint& point) const 
 		{ point = UserPoint(xy.x(), xy.y()); }		
@@ -218,20 +221,20 @@ public:
 	}
 	
 
-	virtual void setDataMinX(double minx) const { dataMinX_ = std::min(minx, dataMinX_); }
-	virtual void setDataMaxX(double maxx) const { dataMaxX_ = std::max(maxx, dataMaxX_); }
-	virtual void setDataMinY(double miny) const { dataMinY_ = std::min(miny, dataMinY_); }
-	virtual void setDataMaxY(double maxy) const { dataMaxY_ = std::max(maxy, dataMaxY_); }
+	virtual void setDataMinMaxX(double minx, double maxx) const
+		{ dataMinX_ = std::min(minx, dataMinX_);  dataMaxX_ = std::max(maxx, dataMaxX_);}
+	virtual void setDataMinMaxY(double miny, double maxy) const
+		{ dataMinY_ = std::min(miny, dataMinY_);  dataMaxY_ = std::max(maxy, dataMaxY_);}
+
 	
 	virtual void setAutomaticX(bool) {}
 	virtual void setAutomaticY(bool) {}
 	virtual bool getAutomaticX() const { return false; } 
 	virtual bool getAutomaticY() const { return false; }
 	
-    virtual void setDataMinX(double minx, const string& ref) const; 
-	virtual void setDataMaxX(double maxx, const string& ref) const; 
-	virtual void setDataMinY(double miny, const string& ref) const; 
-	virtual void setDataMaxY(double maxy, const string& ref) const; 
+    virtual void setDataMinMaxX(double minx,double maxx, const string& ref) const;
+	virtual void setDataMinMaxY(double miny, double maxy, const string& ref) const;
+
 	
 	virtual vector<double> getDataVectorMinX() const  { return vector<double>(); }
 	virtual vector<double> getDataVectorMaxX() const  { return vector<double>(); }
@@ -262,10 +265,9 @@ public:
 	virtual double getMinY() const { return -1; }
 	virtual double getMaxY() const { return -1; }
 	
-	virtual void setMinX(double) {}
-	virtual void setMaxX(double) {}
-	virtual void setMinY(double) {}
-	virtual void setMaxY(double) {}
+	virtual void setMinMaxX(double, double) {}
+	virtual void setMinMaxY(double, double) {}
+
 
 	virtual double getMinPCX() const { return -1; }
 	virtual double getMaxPCX() const { return -1; }
@@ -289,6 +291,7 @@ public:
 	
 	virtual double height() const { return getMaxX() - getMinX(); }
 	
+	virtual void thin(double, double, double, vector<UserPoint>&) const;
 
 	virtual void getNewDefinition(const UserPoint&, const UserPoint&, string&) const
 		{ assert(false); }
@@ -297,7 +300,7 @@ public:
 
    virtual void thin(MatrixHandler&, double x, double y, vector<UserPoint>&) const;
    
-   virtual void reprojectComponents(const UserPoint& point, pair<double, double>&) const;
+   virtual void reprojectComponents(double&, double&, pair<double, double>&) const;
    virtual void reprojectSpeedDirection(const PaperPoint& point, pair<double, double>&) const;
  
    void thin(PointsHandler& points, vector<PaperPoint>& out, vector<PaperPoint>&) const;
@@ -314,7 +317,10 @@ public:
 
    virtual MatrixHandler* prepareData(const AbstractMatrix& matrix) const;
    virtual void wraparound(const UserPoint&, stack<UserPoint>&) const;
-
+   virtual void populate(double lon, double lat, double val, vector<UserPoint>& out) const {
+	   if (in(lon, lat) )
+		   out.push_back(UserPoint(lon, lat, val));
+   }
 protected:
 	virtual void print(ostream&) const;    
     
@@ -342,6 +348,21 @@ protected:
     mutable Polyline* userEnveloppe_;
     mutable Polyline* PCEnveloppe_;
 
+    // For tiling Mode keep the position in pixel of the asked topleft corner!
+    int xTile_;
+    int yTile_;
+    double askedxmin_;
+    double askedxmax_;
+    double askedymin_;
+    double askedymax_;
+    double askedWidth_;
+    double askedHeight_;
+    double originX_;
+    double originY_;
+    int tile_;
+    int zoomLevel_;
+    double unit_;
+    double unitEpsilon_;
 private:
 	// No copy allowed
 	Transformation(const Transformation&);
diff --git a/src/common/UserLogoPlottingAttributes.h b/src/common/UserLogoPlottingAttributes.h
deleted file mode 100644
index efe6c2f..0000000
--- a/src/common/UserLogoPlottingAttributes.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file UserLogoPlottingAttributes.h
-    \brief Definition of UserLogoPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef UserLogoPlottingAttributes_H
-#define UserLogoPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class UserLogoPlottingAttributes 
-{
-public:
-//  --  constructor
-    UserLogoPlottingAttributes();
-    
-//  --  destructor
-    virtual ~UserLogoPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const UserLogoPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string path_;
-	string format_;
-	string units_;
-	double y_;
-	double x_;
-	string bottom_;
-	string left_;
-	double width_;
-	double height_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const UserLogoPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/common/XmlReader.cc b/src/common/XmlReader.cc
index 3b9f019..8a87ab9 100644
--- a/src/common/XmlReader.cc
+++ b/src/common/XmlReader.cc
@@ -184,15 +184,14 @@ int XmlReader::decode(const string& xml, XmlTree* tree)
 	XML_SetElementHandler(parser, startElementHandler, endElementHandler);
 	XML_SetCharacterDataHandler(parser, dataHandler);
 		
-	int err = 0;
 	if (XML_Parse(parser, xml.c_str(), xml.size(), true) == XML_STATUS_ERROR)
 	{
 		ostringstream s;
 		s << "XmlMagException : " << XML_ErrorString(XML_GetErrorCode(parser))  << " at line  " <<  XML_GetCurrentLineNumber(parser)  << ends;
-		err = -1;
+		return -1;
 	}
 	XML_ParserFree(parser);
-	return err;
+	return 0;
 }
 
 
diff --git a/src/common/linux.h b/src/common/linux.h
index edfe659..b0e75c2 100644
--- a/src/common/linux.h
+++ b/src/common/linux.h
@@ -16,8 +16,6 @@
 
  ******************************** LICENSE ********************************/
 
-#define _(A) A
-
 #include <stdio.h>
 #include <pthread.h>
 #include <errno.h>
@@ -30,9 +28,9 @@
 #include <fstream>
 #include <iomanip>
 
-#include <bits/stream_iterator.h>
 
 #include <sstream>
+#include <functional>
 #define HAS_STRINGSTREAM
 /* #include <strstream.h> */
 
diff --git a/src/common/machine.h b/src/common/machine.h
new file mode 100644
index 0000000..e69de29
diff --git a/src/common/magics_api.h b/src/common/magics_api.h
index 7733ab6..12db6e0 100644
--- a/src/common/magics_api.h
+++ b/src/common/magics_api.h
@@ -53,11 +53,14 @@ void mag_symb();
 void mag_boxplot();
 void mag_line();
 void mag_taylor();
+void mag_tephi();
 void mag_input();
 void mag_table();
 
 void mag_wrepjson();
+void mag_epsxml();
 void mag_epscloud();
+void mag_epsplumes();
 void mag_epsgraph();
 void mag_epsbar();
 void mag_epsshading();
diff --git a/src/decoders/BinningObject.cc b/src/decoders/BinningObject.cc
index 72f7fe4..6ab20e7 100644
--- a/src/decoders/BinningObject.cc
+++ b/src/decoders/BinningObject.cc
@@ -52,12 +52,23 @@ void BinningObject::build(vector<double>& vals, IntervalMap<int>& binns)
 	vector<double>::iterator to  = vals.begin();
 	++to;
 	int index = 0;
+	double min, max;
+	min = *from;
 	while ( to != vals.end() ) {
-		binns.insert(make_pair(Interval(*from, *to), index));
+		max = (*from + *to)/2;
+
+		binns.insert(make_pair(Interval(min, max), index));
+		min = max;
 		index++;
 		++to;
 		++from;
 	}
+	max = vals.back();
+	binns.insert(make_pair(Interval(min, max), index));
+
+
+
+
 }
 
 /*
@@ -72,27 +83,32 @@ void  BinningObject::countx(vector<double>& vals, double min, double max)
 	double vmin = ( x_min_ == mindef) ? min : std::max(min, x_min_);
 	double vmax = ( x_max_ == maxdef) ? max : std::min(max, x_max_);
 
-	double step = (max-min)/x_count_;
+	double step = (max-min)/(x_count_);
 
-	int index = 0;
-	for (double val = vmin; val <= vmax; val+=step) {
+
+	for (double val = vmin; val < vmax; val+=step) {
 		vals.push_back(val);
-		index++;
+
 	}
 
+	vals.push_back(vmax+epsilon);
+
 }
 
 void  BinningObject::county(vector<double>& vals, double min, double max)
 {
 	double vmin = ( y_min_ == mindef) ? min : std::max(min, y_min_);
 	double vmax = ( y_max_ == maxdef) ? max : std::min(max, y_max_);
-	double step = (max-min)/y_count_;
+	double step = (max-min)/(y_count_);
 
-	int index = 0;
-	for (double val = vmin; val <= vmax; val+=step) {
+
+	for (double val = vmin; val < vmax; val+=step) {
 		vals.push_back(val);
-		index++;
+
 	}
+
+	vals.push_back(vmax+epsilon);
+
 }
 
 void  BinningObject::listx(vector<double>& vals, double min, double max)
@@ -124,24 +140,132 @@ void  BinningObject::intervalx(vector<double>& vals, double min, double max)
 	double vmin = ( x_min_ == mindef) ? min : std::max(min, x_min_);
 	double vmax = ( x_max_ == maxdef) ? max : std::min(max, x_max_);
 
-	for (double val = x_reference_; val <= vmax; val+= x_interval_)
+	for (double val = x_reference_; val < vmax; val+= x_interval_)
 		vals.push_back(val);
-	for (double val = x_reference_ - x_interval_; val >= vmin; val -= x_interval_)
+	for (double val = x_reference_ - x_interval_; val > vmin; val -= x_interval_)
 		vals.push_back(val);
 
 	std::sort(vals.begin(), vals.end());
 
+	vals.insert(vals.begin(), vals.front()- x_interval_);
+	vals.push_back(vals.back() + x_interval_);
+
+
 }
 void  BinningObject::intervaly(vector<double>& vals, double min, double max)
 {
 	double vmin = ( y_min_ == mindef) ? min : std::max(min, y_min_);
 	double vmax = ( y_max_ == maxdef) ? max : std::min(max, y_max_);
 
-	for (double val = y_reference_; val <= vmax; val+= y_interval_)
+	for (double val = y_reference_; val < vmax; val+= y_interval_)
 		vals.push_back(val);
-	for (double val = y_reference_ - y_interval_; val >= vmin; val -= y_interval_)
+
+	for (double val = y_reference_ - y_interval_; val > vmin  ; val -= y_interval_)
 		vals.push_back(val);
 
 	std::sort(vals.begin(), vals.end());
+	vals.insert(vals.begin(), vals.front()- y_interval_);
+	vals.push_back(vals.back() + y_interval_);
+
+
 }
 
+Matrix*   BinningObject::operator()(PointsList& points)
+{
+	Matrix* matrix = new Matrix();
+
+	double minx = points.minX();
+	double maxx = points.maxX();
+	double miny = points.minY();
+	double maxy = points.maxY();
+	double max = points.min();
+	double min = points.max();
+
+	IntervalMap<int> xbinns;
+	IntervalMap<int> ybinns;
+	x_ = lowerCase(x_);
+	y_ = lowerCase(y_);
+	map<string, binner>::iterator binner = binners_x_.find(x_);
+
+	if ( binner != binners_x_.end() ) {
+		(this->*binner->second)(matrix->columnsAxis(), minx, maxx);
+		if ( matrix->columnsAxis().empty() ) {
+			MagLog::warning() << " could not find any binns: return to count method" << endl;
+			countx(matrix->columnsAxis(), minx, maxx);
+		}
+	}
+	else {
+		MagLog::warning() << " could not find the method " << x_ << " for binning: return to count method" << endl;
+		countx(matrix->columnsAxis(), minx, maxx);
+	}
+	build(matrix->columnsAxis(), xbinns);
+	binner = binners_y_.find(y_);
+
+	if ( binner != binners_y_.end() ) {
+		(this->*binner->second)(matrix->rowsAxis(), miny, maxy);
+		if ( matrix->rowsAxis().empty() ) {
+			MagLog::warning() << " could not find any binns: return to count method" << endl;
+			county(matrix->columnsAxis(), minx, maxx);
+		}
+	}
+	else {
+		MagLog::warning() << " could not find the method " << y_ << " for binning: return to count method" << endl;
+		county(matrix->rowsAxis(), miny, maxy);
+	}
+	build(matrix->rowsAxis(), ybinns);
+
+
+	matrix->setMapsAxis();
+	//		double val = 0;
+	vector<double> total;
+
+	for ( int j = 0; j < matrix->columns(); j++)
+		for ( int i = 0; i <  matrix->rows(); i++) {
+			matrix->push_back(0);
+			total.push_back(0);
+		}
+
+	double columns = matrix->columns();
+	double rows = matrix->rows();
+	points.setToFirst();
+	while ( points.more() ) {
+		const UserPoint& point = points.current();
+		int x = xbinns.find(point.x_, -1);
+		int y = ybinns.find(point.y_, -1);
+
+		if ( x!= -1 && y !=-1) {
+			(*matrix)[ y * columns + x] = (*matrix)[ y * columns + x]+1;
+			total[ y * columns + x] = total[y * columns + x]+point.value();
+		}
+		points.advance();
+	}
+
+	if ( min != max ) {
+		for (unsigned int i = 0; i < matrix->size(); ++i) {
+
+			if ( (*matrix)[i] )
+				(*matrix)[i] = total[i]/(*matrix)[i];
+			else {
+				(*matrix)[i] = matrix->missing();
+
+			}
+		}
+	}
+
+	else {
+		for (unsigned int i = 0; i < matrix->size(); ++i) {
+			if ( (*matrix)[i] == 0 ) {
+				(*matrix)[i] = matrix->missing();
+
+			}
+		}
+	}
+#ifdef need_debug
+		for ( int r = 0; r < rows; ++r) {
+					for ( int c = 0; c < columns; ++c) {
+						log::dev() << "[" << matrix->row(r,c) << ",  " << matrix->column(r,c) << "] = " << (*matrix)(r, c) << endl;
+					}
+		}
+#endif
+	return matrix;
+}
diff --git a/src/decoders/BinningObject.h b/src/decoders/BinningObject.h
index 733cc3d..eca8618 100644
--- a/src/decoders/BinningObject.h
+++ b/src/decoders/BinningObject.h
@@ -31,83 +31,8 @@ public:
 
 	virtual BinningObject* clone() const { return new BinningObject(); }
 
-	Matrix* operator()(PointsList& points)
-	{
+	Matrix* operator()(PointsList& points);
 
-		Matrix* matrix = new Matrix();
-
-			double minx = points.minX();
-			double maxx = points.maxX();
-			double miny = points.minY();
-			double maxy = points.maxY();
-			double max = points.min();
-			double min = points.max();
-
-		IntervalMap<int> xbinns;
-		IntervalMap<int> ybinns;
-
-		map<string, binner>::iterator binner = binners_x_.find(x_);
-
-		if ( binner != binners_x_.end() ) {
-		   	 (this->*binner->second)(matrix->columnsAxis(), minx, maxx);
-		   	 if ( matrix->columnsAxis().empty() ) {
-		   		MagLog::warning() << " could not find any binns: return to count method" << endl;
-		   		countx(matrix->columnsAxis(), minx, maxx);
-		   	 }
-		}
-		else {
-			MagLog::warning() << " could not find the method " << x_ << " for binning: return to count method" << endl;
-			countx(matrix->columnsAxis(), minx, maxx);
-		}
-		build(matrix->columnsAxis(), xbinns);
-		binner = binners_y_.find(y_);
-
-		if ( binner != binners_y_.end() ) {
-			(this->*binner->second)(matrix->rowsAxis(), miny, maxy);
-			 if ( matrix->rowsAxis().empty() ) {
-				   		MagLog::warning() << " could not find any binns: return to count method" << endl;
-				   		county(matrix->columnsAxis(), minx, maxx);
-				   	 }
-		}
-		else {
-			MagLog::warning() << " could not find the method " << y_ << " for binning: return to count method" << endl;
-			county(matrix->rowsAxis(), miny, maxy);
-		}
-		build(matrix->rowsAxis(), ybinns);
-
-
-		matrix->setMapsAxis();
-//		double val = 0;
-		vector<double> total;
-
-		for ( int j = 0; j < matrix->columns(); j++)
-			for ( int i = 0; i <  matrix->rows(); i++) {
-				matrix->push_back(0);
-				total.push_back(0);
-			}
-
-		double columns = matrix->columns();
-		points.setToFirst();
-		while ( points.more() ) {
-			const UserPoint& point = points.current();
-			int x = xbinns.find(point.x_, -1);
-			int y = ybinns.find(point.y_, -1);
-			if ( x!= -1 && x!=-1) {
-				(*matrix)[ y * columns + x] = (*matrix)[ y * columns + x]+1;
-				total[ y * columns + x] = total[y * columns + x]+point.value();
-			}
-			points.advance();
-		}
-
-		if ( min != max ) {
-			for (unsigned int i = 0; i < matrix->size(); ++i) {
-
-				if ( (*matrix)[i] != 0 )
-					(*matrix)[i] = total[i]/(*matrix)[i];
-			}
-		}
-		return matrix;
-	}
 
 
 protected:
diff --git a/src/decoders/BinningObjectAttributes.h b/src/decoders/BinningObjectAttributes.h
deleted file mode 100644
index 32498d2..0000000
--- a/src/decoders/BinningObjectAttributes.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BinningObjectAttributes.h
-    \brief Definition of BinningObject Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:26 2013
-*/
-   
-
-#ifndef BinningObjectAttributes_H
-#define BinningObjectAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class BinningObjectAttributes 
-{
-public:
-//  --  constructor
-    BinningObjectAttributes();
-    
-//  --  destructor
-    virtual ~BinningObjectAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const BinningObjectAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string x_;
-	double x_min_;
-	double x_max_;
-	int x_count_;
-	floatarray x_list_;
-	double x_interval_;
-	double x_reference_;
-	string y_;
-	double y_min_;
-	double y_max_;
-	int y_count_;
-	floatarray y_list_;
-	double y_interval_;
-	double y_reference_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const BinningObjectAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/CMakeLists.txt b/src/decoders/CMakeLists.txt
new file mode 100644
index 0000000..cfbb785
--- /dev/null
+++ b/src/decoders/CMakeLists.txt
@@ -0,0 +1,146 @@
+set( _decoders_srcs
+BinningObject.cc
+BinningObject.h
+BoxPlotDecoder.cc
+BoxPlotDecoder.h
+Date.cc
+DateTime.cc
+DateTime.h
+EfiLegendEntry.h
+EpsXmlInput.cc
+EpsXmlInput.h
+GeoPointsDecoder.cc
+GeoPointsDecoder.h
+ImportAction.h
+InputData.cc
+InputData.h
+InputMatrix.cc
+InputMatrix.h
+InputMatrixInterpretor.cc
+InputMatrixInterpretor.h
+LandgramDecoder.cc
+LandgramDecoder.h
+LocalTable.cc
+LocalTable.h
+MapGenDecoder.cc
+MapGenDecoder.h
+MatrixTestDecoder.cc
+MatrixTestDecoder.h
+ObsStatDecoder.cc
+ObsStatDecoder.h
+ShapeDecoder.cc
+ShapeDecoder.h
+SimplePolylineInput.cc
+SimplePolylineInput.h
+SymbolInput.h
+TableDecoder.cc
+TableDecoder.h
+ThinningMethod.cc
+ThinningMethod.h
+Time.cc
+TitleField.cc
+TitleField.h
+TitleMetaField.cc
+TitleMetaField.h
+TitleStringField.cc
+TitleStringField.h
+TitleTemplate.cc
+TitleTemplate.h
+WindMode.cc
+WindMode.h
+XYList.cc
+XYList.h
+shapefil.h
+shpopen.c
+dbfopen.c
+)
+
+foreach( file ${_decoders_srcs} )
+  list( APPEND decoders_srcs decoders/${file} )
+endforeach()
+
+if (MAGICS_GRIB) 
+     list( APPEND decoders_srcs 
+decoders/GribAddressMode.h
+decoders/GribDecoder.cc
+decoders/GribDecoder.h
+decoders/GribInterpretor.h
+decoders/GribLoopStep.cc
+decoders/GribLoopStep.h
+decoders/GribRegularInterpretor.cc
+decoders/GribRegularInterpretor.h
+decoders/GribSatelliteInterpretor.cc
+decoders/GribSatelliteInterpretor.h
+)
+endif()
+
+
+if (MAGICS_NETCDF) 
+     list( APPEND decoders_srcs 
+#Netcdf--->
+decoders/NetcdfOrcaInterpretor.cc
+decoders/Netcdf.cc
+decoders/Netcdf.h
+decoders/NetcdfConvention.cc
+decoders/NetcdfConvention.h
+decoders/NetcdfDecoder.cc
+decoders/NetcdfDecoder.h
+decoders/NetcdfGeoMatrixInterpretor.cc
+decoders/NetcdfGeoMatrixInterpretor.h
+decoders/NetcdfGeopointsInterpretor.cc
+decoders/NetcdfGeopointsInterpretor.h
+decoders/NetcdfInterpretor.cc
+decoders/NetcdfInterpretor.h
+decoders/NetcdfMarsConvention.cc
+decoders/NetcdfMarsConvention.h
+decoders/NetcdfMatrixInterpretor.cc
+decoders/NetcdfMatrixInterpretor.h
+decoders/NetcdfOrcaInterpretor.h
+decoders/NetcdfVectorInterpretor.cc
+decoders/NetcdfVectorInterpretor.h
+#<----Netcdf
+)
+endif()
+
+if (MAGICS_BUFR)
+     list( APPEND decoders_srcs 
+# Bufr --->
+decoders/EpsBufr.cc
+decoders/EpsBufr.h
+decoders/ObsDecoder.cc
+decoders/ObsDecoder.h
+# <--- Bufr
+)
+
+endif()
+
+
+if (MAGICS_SPOT)
+     list( APPEND decoders_srcs 
+#Spot ---> 
+decoders/ClassicMtgDecoder.cc
+decoders/ClassicMtgDecoder.h
+decoders/EpsgramDecoder.cc
+decoders/EpsgramDecoder.h
+#<--- Spot  
+)
+endif()
+
+set( decoders_srcs ${decoders_srcs} PARENT_SCOPE )
+
+if ( ENABLE_METVIEW )
+	list (APPEND metview_include 
+			decoders/DateTime.h 
+			decoders/GribDecoder.h 
+			decoders/ThinningMethod.h 
+			decoders/BinningObject.h  
+			decoders/WindMode.h  
+			decoders/GribAddressMode.h  
+			decoders/GribLoopStep.h  
+			decoders/GribInterpretor.h
+			decoders/GribSatelliteInterpretor.h
+			
+			)
+	set( metview_include ${metview_include} PARENT_SCOPE )
+endif()
+
diff --git a/src/decoders/ClassicMtgDecoder.cc b/src/decoders/ClassicMtgDecoder.cc
index 1fc2adc..c4fb42d 100644
--- a/src/decoders/ClassicMtgDecoder.cc
+++ b/src/decoders/ClassicMtgDecoder.cc
@@ -371,12 +371,10 @@ void MetgramParameter::interpretResult(spot_query_result* result, vector<Customi
 
 void MetgramParameter::setTransformation(Transformation& transformation)
 {
-	transformation.setDataMinX(minx_*3600, base_);
-	transformation.setDataMaxX(maxx_*3600, base_);
+	transformation.setDataMinMaxX(minx_*3600, maxx_*3600, base_);
 
 	double maxy =  (maxy_ == miny_ )  ? maxy_ + 1 : maxy_;
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy);
+	transformation.setDataMinMaxY(miny_, maxy_);
 }
 
 spot_query_result* MtgTempe::prepare(const ClassicMtgDecoder& decoder, vector<CustomisedPoint*>& out)
diff --git a/src/decoders/DateGribLoopStepAttributes.h b/src/decoders/DateGribLoopStepAttributes.h
deleted file mode 100644
index 49d80c9..0000000
--- a/src/decoders/DateGribLoopStepAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file DateGribLoopStepAttributes.h
-    \brief Definition of DateGribLoopStep Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef DateGribLoopStepAttributes_H
-#define DateGribLoopStepAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "GribAddressMode.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class DateGribLoopStepAttributes 
-{
-public:
-//  --  constructor
-    DateGribLoopStepAttributes();
-    
-//  --  destructor
-    virtual ~DateGribLoopStepAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const DateGribLoopStepAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double span_;
-	auto_ptr<GribAddressMode> address_mode_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const DateGribLoopStepAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/EfiDataDecoder.h b/src/decoders/EfiDataDecoder.h
deleted file mode 100644
index 754d98d..0000000
--- a/src/decoders/EfiDataDecoder.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file EfiDataDecoder.h
-    \brief Definition of the Template class EfiDataDecoder.
-    
-    Magics Team - ECMWF 2006
-    
-    Started: Thu 18-May-2006
-    
-    Changes:
-    
-*/
-
-#ifndef EfiDataDecoder_H
-#define EfiDataDecoder_H
-
-#include "magics.h"
-
-#include "EfiDataDecoderAttributes.h"
-#include "BaseSceneObject.h"
-#include "Decoder.h"
-#include "Data.h"
-#include "PaperPoint.h"
-
-namespace magics {
-
-class XmgrBasic;
-
-class EfiDataDecoder: public EfiDataDecoderAttributes, 	
-            public Data<PaperPoint>, 
-            public PointsList<PaperPoint> {
-
-public:
-	EfiDataDecoder();
-	virtual ~EfiDataDecoder();
-	void set(const map<string, string>& map) 
-		{ EfiDataDecoderAttributes::set(map); }
-	void set(const XmlNode& node) 
-		{ EfiDataDecoderAttributes::set(node); }
-	
-	virtual void decode();
-	virtual PointsHandler<PaperPoint>& points();
-	void    visit(TitleBase& title);
-	void    visit(LegendBase& legend);
-
-
-protected:
-     //! Method to print string about this class on to a stream of type ostream (virtual).
-	 virtual void print(ostream&) const; 
-
-private:
-    //! Copy constructor - No copy allowed
-	EfiDataDecoder(const EfiDataDecoder&);
-    //! Overloaded << operator to copy - No copy allowed
-	EfiDataDecoder& operator=(const EfiDataDecoder&);
-	XmgrBasic*       data_;
-
-// -- Friends
-    //! Overloaded << operator to call print().
-	friend ostream& operator<<(ostream& s,const EfiDataDecoder& p)
-		{ p.print(s); return s; }
-
-};
-
-} // namespace magics
-#endif
diff --git a/src/decoders/EpsBufr.cc b/src/decoders/EpsBufr.cc
index e8b16ab..41606c2 100644
--- a/src/decoders/EpsBufr.cc
+++ b/src/decoders/EpsBufr.cc
@@ -43,10 +43,8 @@ using namespace magics;
 void EpsBufr::visit(Transformation& transformation)
 {
 	decode();
-	transformation.setDataMinX((minstep_ - shift_) * 3600, base_);
-	transformation.setDataMaxX((maxstep_ + 6) * 3600, base_);
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy_);
+	transformation.setDataMinMaxX((minstep_ - shift_) * 3600, (maxstep_ + 6) * 3600, base_);
+	transformation.setDataMinMaxY(miny_, maxy_);
 }
 		
 void EpsBufr::decode()
diff --git a/src/decoders/EpsXmlInput.cc b/src/decoders/EpsXmlInput.cc
index 59adf03..25d4a7c 100644
--- a/src/decoders/EpsXmlInput.cc
+++ b/src/decoders/EpsXmlInput.cc
@@ -52,14 +52,13 @@ void EpsXmlInput::visit(Transformation& transformation)
 {
 	decode();
 	
-	transformation.setDataMinX((minstep_ - dateOffset_) * 3600, base_);
-	
-	transformation.setDataMaxX((maxstep_+dateOffset_) * 3600, base_);
+	transformation.setDataMinMaxX((minstep_ - dateOffset_) * 3600, (maxstep_+dateOffset_) * 3600, base_);
+
 	
 	dateOffset_ = minstep_ - dateOffset_;
 	
-	transformation.setMinY(miny_);
-	transformation.setMaxY(maxy_);
+	transformation.setMinMaxY(miny_, maxy_);
+
 }
 		
 void EpsXmlInput::decode()
@@ -85,7 +84,7 @@ void EpsXmlInput::decode()
   	
 void EpsXmlInput::customisedPoints(const std::set<string>&, CustomisedPointsList& out)
 {
-	MagLog::dev() << "EpsXmlInput::customisedPoints-->need to be implemented" <<endl;
+	MagLog::dev() << "EpsXmlInput::customisedPoints-->need to be implemented" << std::endl;
 	MagLog::dev() << *this << endl;
 	decode();
 
diff --git a/src/decoders/EpsgramDecoder.cc b/src/decoders/EpsgramDecoder.cc
index 4edb92a..35d82bf 100644
--- a/src/decoders/EpsgramDecoder.cc
+++ b/src/decoders/EpsgramDecoder.cc
@@ -319,19 +319,20 @@ public:
 	}
 	void setTransformation(Transformation& transformation)
 	{
-	transformation.setDataMinX(minx_, base_);
-	transformation.setDataMaxX(maxx_ - 6*3600, base_);
+
 	if ( type_ == "eps15" ) {
-		transformation.setDataMaxX(maxx_+18*3600, base_);
-		transformation.setDataMinX(0, base_);
+		transformation.setDataMinMaxX(0, maxx_+18*3600, base_);
+
 	}
 	if ( type_ == "eps10" ) {
-		transformation.setDataMaxX(maxx_ + 6*3600, base_);
-		transformation.setDataMinX(0, base_);
+		transformation.setDataMinMaxX(0, maxx_ + 6*3600, base_);
+
+	}
+	else {
+		transformation.setDataMinMaxX(minx_, maxx_ - 6*3600, base_);
 	}
 	
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy_);
+	transformation.setDataMinMaxY(miny_, maxy_);
 }
 protected : 
 	map<string, string> titles_;
@@ -522,8 +523,7 @@ public:
 
 	void setTransformation(Transformation& transformation)
 	{
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
 	}
 
 	virtual void stepvalues(double, vector<double>&) {}  
@@ -580,10 +580,8 @@ public:
 	}
 	void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
-		transformation.setDataMinY(miny_);
-		transformation.setDataMaxY(maxy_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
+	    transformation.setDataMinMaxY(miny_, maxy_);
 	}
 	virtual void stepvalues(double, vector<double>&) {}  
 	virtual void xvalues(double x, vector<double>& xpos) 
@@ -642,8 +640,7 @@ public:
 		}
 	void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
 		
 	}
 	virtual void stepvalues(double, vector<double>&) {}  
@@ -667,8 +664,7 @@ public:
 		{ return tostring( 2*tonumber(val)); } 
 	void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
 		
 	}
 	virtual void stepvalues(double, vector<double>&) {}  
@@ -691,8 +687,7 @@ public:
 	
 	void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
 		
 	}
 	
@@ -715,8 +710,7 @@ public:
 	
 	void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
 		
 	}
 	
@@ -741,8 +735,7 @@ public:
 	} 
 	 void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_);
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_);
 		
 	}
 	virtual void stepvalues(double, vector<double>&) {}  
@@ -817,8 +810,7 @@ public:
 	 } 
 	 void setTransformation(Transformation& transformation)
     {
-	    transformation.setDataMinX(minx_); 
-	    transformation.setDataMaxX(maxx_);
+	    transformation.setDataMinMaxX(minx_, maxx_); 
 		
 	}
 	virtual void stepvalues(double, vector<double>&) {}  
@@ -891,42 +883,42 @@ public:
    
 };
 }
-SimpleObjectMaker<EfiMaxTemperature, EpsParameter> efi_2mt_max("efi-2mt-max");
-SimpleObjectMaker<EfiMinTemperature, EpsParameter> efi_2mt_min("efi-2mt-min");
-SimpleObjectMaker<EfiMeanTemperature, EpsParameter> efi_2mt_mean("efi-2mt-mean");
-SimpleObjectMaker<ClimMaxTemperature, EpsParameter> clim_2mt_max("clim-2mt-max");
-SimpleObjectMaker<ClimMinTemperature, EpsParameter> clim_2mt_min("clim-2mt-min");
-SimpleObjectMaker<ClimMeanTemperature, EpsParameter> clim_2mt_mean("clim-2mt-mean");
+static SimpleObjectMaker<EfiMaxTemperature, EpsParameter> efi_2mt_max("efi-2mt-max");
+static SimpleObjectMaker<EfiMinTemperature, EpsParameter> efi_2mt_min("efi-2mt-min");
+static SimpleObjectMaker<EfiMeanTemperature, EpsParameter> efi_2mt_mean("efi-2mt-mean");
+static SimpleObjectMaker<ClimMaxTemperature, EpsParameter> clim_2mt_max("clim-2mt-max");
+static SimpleObjectMaker<ClimMinTemperature, EpsParameter> clim_2mt_min("clim-2mt-min");
+static SimpleObjectMaker<ClimMeanTemperature, EpsParameter> clim_2mt_mean("clim-2mt-mean");
 
-SimpleObjectMaker<EfiWindGust, EpsParameter> efi_wind_gust("efi-wind-gust");
-SimpleObjectMaker<EfiWind, EpsParameter> efi_wind("efi-wind");
-SimpleObjectMaker<ClimWindGust, EpsParameter> clim_wind_gust("clim-wind-gust");
-SimpleObjectMaker<ClimWind, EpsParameter> clim_wind("clim-wind");
+static SimpleObjectMaker<EfiWindGust, EpsParameter> efi_wind_gust("efi-wind-gust");
+static SimpleObjectMaker<EfiWind, EpsParameter> efi_wind("efi-wind");
+static SimpleObjectMaker<ClimWindGust, EpsParameter> clim_wind_gust("clim-wind-gust");
+static SimpleObjectMaker<ClimWind, EpsParameter> clim_wind("clim-wind");
 
-SimpleObjectMaker<EfiPrecipitation, EpsParameter> efi_precip("efi-precip");
-SimpleObjectMaker<ClimPrecipitation, EpsParameter> clim_eps_precip("clim-precip");
+static SimpleObjectMaker<EfiPrecipitation, EpsParameter> efi_precip("efi-precip");
+static SimpleObjectMaker<ClimPrecipitation, EpsParameter> clim_eps_precip("clim-precip");
 
-SimpleObjectMaker<Eps2mTemperature, EpsParameter> mt("2mt");
-SimpleObjectMaker<ClimEpsMaxTemperature, EpsParameter> tempe_clim_max("clim-eps-2mt-max");
-SimpleObjectMaker<ClimEpsMinTemperature, EpsParameter> tempe_clim_min("clim-eps-2mt-min");
-SimpleObjectMaker<ClimEpsTemperature, EpsParameter> tempe_clim("clim-eps-2mt");
+static SimpleObjectMaker<Eps2mTemperature, EpsParameter> mt("2mt");
+static SimpleObjectMaker<ClimEpsMaxTemperature, EpsParameter> tempe_clim_max("clim-eps-2mt-max");
+static SimpleObjectMaker<ClimEpsMinTemperature, EpsParameter> tempe_clim_min("clim-eps-2mt-min");
+static SimpleObjectMaker<ClimEpsTemperature, EpsParameter> tempe_clim("clim-eps-2mt");
 
-SimpleObjectMaker<PlumeGeopotential, EpsParameter> z500("z500");
-SimpleObjectMaker<PlumeTemperature, EpsParameter> t850("t850");
-SimpleObjectMaker<PlumePrecip, EpsParameter> rr("rr");
+static SimpleObjectMaker<PlumeGeopotential, EpsParameter> z500("z500");
+static SimpleObjectMaker<PlumeTemperature, EpsParameter> t850("t850");
+static SimpleObjectMaker<PlumePrecip, EpsParameter> rr("rr");
 
 
-SimpleObjectMaker<EpsTemperature, EpsParameter> temperature("temperature");
-SimpleObjectMaker<ClTemperature, EpsParameter> cltemperature("clim-temperature");
-SimpleObjectMaker<EpsWindFF, EpsParameter> wind("10m-wind");
-SimpleObjectMaker<ClimEpsWindFF, EpsParameter> clim_wind_ff("clim-10m-wind");
-SimpleObjectMaker<EpsWindDD, EpsParameter> windDD("10m-wind-dd");
+static SimpleObjectMaker<EpsTemperature, EpsParameter> temperature("temperature");
+static SimpleObjectMaker<ClTemperature, EpsParameter> cltemperature("clim-temperature");
+static SimpleObjectMaker<EpsWindFF, EpsParameter> wind("10m-wind");
+static SimpleObjectMaker<ClimEpsWindFF, EpsParameter> clim_wind_ff("clim-10m-wind");
+static SimpleObjectMaker<EpsWindDD, EpsParameter> windDD("10m-wind-dd");
 
-SimpleObjectMaker<EpsCloudCover, EpsParameter> cloud("cloud-cover");
-SimpleObjectMaker<ClimEpsCloudCover, EpsParameter> clim_cloud("clim-eps-cloud-cover");
+static SimpleObjectMaker<EpsCloudCover, EpsParameter> cloud("cloud-cover");
+static SimpleObjectMaker<ClimEpsCloudCover, EpsParameter> clim_cloud("clim-eps-cloud-cover");
 
-SimpleObjectMaker<EpsPrecipitation, EpsParameter> precip("precip");
-SimpleObjectMaker<ClimEpsPrecipitation, EpsParameter> clim_precip("clim-eps-precip");
+static SimpleObjectMaker<EpsPrecipitation, EpsParameter> precip("precip");
+static SimpleObjectMaker<ClimEpsPrecipitation, EpsParameter> clim_precip("clim-eps-precip");
 
 
 spot_query_result* EpsParameter::prepare(const SpotDecoder& decoder, vector<CustomisedPoint*>& out)
@@ -1486,25 +1478,20 @@ MatrixHandler& EpsgramDecoder::matrix()
 		 steps.push_back((**point)["step"]);
 	}
 
-
-	double from = maground(*min_element(values.begin(), values.end())) - 1;
-	double to = maground(*max_element(values.begin(), values.end())) + 1 ;
-	MagLog::dev() << "min->" << *min_element(values.begin(), values.end()) << " = " << from << endl;
-	MagLog::dev() << "max->" << *max_element(values.begin(), values.end()) << " = " << to << endl;
+	const double step = parameter_->plumesInterval();
+	double from = maground(*min_element(values.begin(), values.end())) - step;
+	double to = maground(*max_element(values.begin(), values.end())) + step ;
 
 	IntervalMap<int> array;
-	const double step = parameter_->plumesInterval();
+	matrix_.set(array.size(), points_.size());
 	for ( double a = from; a <= to; a = a + step ) {
-			array.insert(make_pair(Interval(a, a+step), 0));
+		array.insert(make_pair(Interval(a-step, a+step), 0));
+		matrix_.rowsAxis().push_back(a);
+
 	}
 
 
 
-	matrix_.set(array.size(), points_.size());
-	for (IntervalMap<int>::iterator interval = array.begin(); interval!= array.end(); ++interval) {
-		const double row = (interval->first.max_ - interval->first.min_)/2 +interval->first.min_ ;
-		matrix_.rowsAxis().push_back(row);
-	}
 	for (vector<double>::iterator s = steps.begin(); s != steps.end(); ++s) {				
 		matrix_.columnsAxis().push_back(*s);
 	}
@@ -1940,34 +1927,29 @@ void SpotDecoder::visit(Transformation& transformation)
 
 void EpsParameter::setTransformation(Transformation& transformation)
 {
-	transformation.setDataMinX(minx_, base_);
-	transformation.setDataMaxX(maxx_ + 12*3600, base_);
 	
 	if ( type_ == "eps15" ) {
-		transformation.setDataMaxX(maxx_ + 18*3600, base_);
-		transformation.setDataMinX(0, base_);
+		transformation.setDataMinMaxX(0, maxx_ + 18*3600, base_);
 	}
-	if ( type_ == "epswave" ) {
-		transformation.setDataMaxX(maxx_ + 6*3600, base_);
-		transformation.setDataMinX(0, base_);
+	else if ( type_ == "epswave" ) {
+		transformation.setDataMinMaxX(0, maxx_ + 6*3600, base_);
 	}
-	if ( type_ == "epsrose" ) {
-		transformation.setDataMaxX(maxx_ + 18*3600, base_);
-		transformation.setDataMinX(0, base_);
+	else if ( type_ == "epsrose" ) {
+		transformation.setDataMinMaxX(0, maxx_ + 18*3600, base_);
 	}
-	if ( type_ == "eps10" ) {
-		transformation.setDataMaxX(maxx_ + 6*3600, base_);
-		transformation.setDataMinX(0, base_);
+	else if ( type_ == "eps10" ) {
+		transformation.setDataMinMaxX(0, maxx_ + 6*3600, base_);
 	}
+	else  {
+	    transformation.setDataMinMaxX(0, maxx_ + 12*3600, base_);
+    }
 	
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy_); 
+	transformation.setDataMinMaxY(miny_, maxy_);
 }
     
 
 void EfigramDecoder::visit(Transformation& transformation)
 {	
 	decode();
-	transformation.setDataMinX(minx_);
-	transformation.setDataMaxX(maxx_);
+	transformation.setDataMinMaxX(minx_, maxx_);
 }
diff --git a/src/decoders/GeoPointsDecoder.cc b/src/decoders/GeoPointsDecoder.cc
index b3768cf..c9d8838 100644
--- a/src/decoders/GeoPointsDecoder.cc
+++ b/src/decoders/GeoPointsDecoder.cc
@@ -120,6 +120,20 @@ void GeoPointsDecoder::lluv(const string& line, const Transformation& transforma
 	add(transformation, geo);
 
 }
+void GeoPointsDecoder::polar(const string& line, const Transformation& transformation)
+{
+	std::istringstream in(line);
+	double lat, lon, height, date, time, speed, direction;
+	in >> lat >> lon >> height >> date >> time >> speed >> direction;
+	CustomisedPoint geo(lon, lat, "polar");
+	double angle = (90 - (direction))*(PI/180.);
+
+
+	geo["x_component"] = speed * -cos(angle);
+	geo["y_component"] = speed * -sin(angle) ;
+	add(transformation, geo);
+
+}
 void GeoPointsDecoder::yxdtlv1(const string& line)
 {
 	std::istringstream in(line);
@@ -143,6 +157,7 @@ void GeoPointsDecoder::decode(const Transformation& transformation)
 		formats_["XYV"] = &GeoPointsDecoder::xyv2;
 		formats_["LLV"] = &GeoPointsDecoder::xyv2;
 		formats_["XY_VECTOR"] = &GeoPointsDecoder::lluv;
+		formats_["POLAR_VECTOR"] = &GeoPointsDecoder::polar;
 	}
 	
 	GeoPointsDecoder::Decode method = &GeoPointsDecoder::yxdtlv2;
diff --git a/src/decoders/GeoPointsDecoderAttributes.h b/src/decoders/GeoPointsDecoderAttributes.h
deleted file mode 100644
index 0522c59..0000000
--- a/src/decoders/GeoPointsDecoderAttributes.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file GeoPointsDecoderAttributes.h
-    \brief Definition of GeoPointsDecoder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef GeoPointsDecoderAttributes_H
-#define GeoPointsDecoderAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class GeoPointsDecoderAttributes 
-{
-public:
-//  --  constructor
-    GeoPointsDecoderAttributes();
-    
-//  --  destructor
-    virtual ~GeoPointsDecoderAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const GeoPointsDecoderAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string path_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const GeoPointsDecoderAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/Grib b/src/decoders/Grib
new file mode 100644
index 0000000..e69de29
diff --git a/src/decoders/GribAddressMode.h b/src/decoders/GribAddressMode.h
index 9b44bef..6eab49a 100644
--- a/src/decoders/GribAddressMode.h
+++ b/src/decoders/GribAddressMode.h
@@ -95,20 +95,25 @@ public :
 		return mode;
 	}
 
-	virtual grib_handle* operator()(grib_context* context, FILE* file, int position) const
+	virtual grib_handle* operator()(grib_context*, FILE* file, int position) const
 	{
 		grib_handle* handle = 0;
-
-
+		void* msg=NULL;
+		size_t size=0;
+		off_t offset=0;
+		int err;
+		grib_context* context = grib_context_get_default();
 		int error;
 		for (int i = 0; i < position-1; i++)
 		{
-			//MagLog::debug() << "call to grib_handle_new_from_file for position " << i << "\n";
-			handle = grib_handle_new_from_file(context, file, &error) ; 
-			grib_handle_delete(handle);
+			 //grib_read_any_from_file_alloc (context, file,  &msg , &size);
+			 //grib_context_free(context,msg);
+			 //MagLog::debug() << "call to grib_handle_new_from_file for position " << i << "\n";
+				handle = grib_handle_new_from_file(context, file, &error) ;
+				grib_handle_delete(handle);
 		}
-		handle = grib_handle_new_from_file(context, file, &error) ; 
-		//grib_handle_delete(handle);
+
+		handle = grib_handle_new_from_file(0, file, &error) ;
 
 		return handle;
 	}
@@ -133,7 +138,7 @@ public:
         grib_handle* handle = 0;
 
 		int error;
-		handle = grib_handle_new_from_file(context, file, &error) ;
+		handle = grib_handle_new_from_file(0, file, &error) ;
          return handle;
            
     }
diff --git a/src/decoders/GribDecoder.cc b/src/decoders/GribDecoder.cc
index acceee2..d03eb76 100644
--- a/src/decoders/GribDecoder.cc
+++ b/src/decoders/GribDecoder.cc
@@ -30,6 +30,7 @@
 #include "GribDecoder.h"
 #include "Factory.h"
 #include <limits>
+#include <unistd.h>
 #include "TitleTemplate.h"
 #include "LocalTable.h"
 #include "DateTime.h"
@@ -41,14 +42,41 @@
 #include "VisualAction.h"
 #include "AnimationRules.h"
 #include "Transformation.h"
-
-
+/*
+#include "grib_api_internal.h"
+
+
+string getLongNameCentre(int centre)
+{
+        grib_context* context = grib_context_get_default();
+        grib_codetable* t = context->codetable;
+        while(t)
+        {
+            grib_codetable* s = t->next;
+            for(int i = 0; i < t->size; i++)
+            {
+                char* the_title = t->entries[i].title;
+                char* the_recomposed_name = t->recomposed_name[0];
+                if (strcmp(the_recomposed_name, "grib1/0.table") ==0 )
+                {
+                    if (the_title && i==centre)
+                    {
+                        printf("title for centre %d is %s\n", i, t->entries[i].title);
+                        return t->entries[i].title;
+                    }
+                }
+            }
+            t = s;
+        }
+}
+*/
 using namespace magics;
-grib_context* GribDecoder::context_ = 0;
+
 int  GribDecoder::count_ = 0;
 
 GribDecoder::GribDecoder() :  matrix_(0),  xComponent_(0), yComponent_(0),
-		colourComponent_(0), handle_(0), interpretor_(0)
+		colourComponent_(0), handle_(0), interpretor_(0),
+		field_(0), component1_(0), component2_(0), colour_(0)
 {
 	count_++;
 	title_ = "grib_" + tostring(count_);
@@ -68,7 +96,11 @@ GribDecoder::~GribDecoder()
 	if ( matrix_) delete matrix_;
 	if ( xComponent_ ) delete xComponent_;
 	if ( yComponent_ ) delete yComponent_;
-	if ( handle_ ) grib_handle_delete (handle_);
+	if ( handle_ ) {
+
+		grib_handle_delete (handle_);
+
+	}
 	for (PointsList::iterator point = points_.begin(); point != points_.end(); ++point) {
 		delete *point;
 		*point = 0;
@@ -93,8 +125,11 @@ void GribDecoder::set(const GribLoop& loop, int index)
 
 long GribDecoder::getLong(const string& key, bool warnIfKeyAbsent) const
 {
-	assert (context_);
 	long val;
+	map<string, long>::const_iterator lk = lKeys_.find(key);
+	if ( lk != lKeys_.end() ) {
+		return lk->second;
+	}
 	int err = grib_get_long(handle_, key.c_str(), &val);
 	if ( err )
 	{
@@ -105,15 +140,24 @@ long GribDecoder::getLong(const string& key, bool warnIfKeyAbsent) const
 		}
 		return 0;
 	}
+	lKeys_.insert(make_pair(key, val));
 	return val;
 }
 
-string GribDecoder::getstring(const string& key, bool warnIfKeyAbsent) const
+string GribDecoder::getstring(const string& key, bool warnIfKeyAbsent, bool cache) const
 {
-	assert (context_); 
+
+	if ( cache ) {
+		map<string, string>::const_iterator sk = sKeys_.find(key);
+		if ( sk != sKeys_.end() ) {
+			return sk->second;
+		}
+	}
 	char val[1024];
 	size_t length = 1024;
+
 	int err = grib_get_string(handle_, key.c_str(), val, &length);
+
 	if ( err )
 	{
 		if (warnIfKeyAbsent)
@@ -122,15 +166,17 @@ string GribDecoder::getstring(const string& key, bool warnIfKeyAbsent) const
 				               << grib_get_error_message(err) <<"\n";
 			}
 			return "";
-		}
-		return string(val);
+	}
+	if ( cache )
+		sKeys_.insert(make_pair(key, val));
+	return string(val);
 }
 
 string GribDecoder::getString(const string& key, bool warnIfKeyAbsent) const
 {
 
 	if ( Data::dimension_ == 1 )
-		return getstring(key, warnIfKeyAbsent);
+		return getstring(key, warnIfKeyAbsent, false);
 
 	string value;
 	grib_handle* handle = handle_;
@@ -138,16 +184,16 @@ string GribDecoder::getString(const string& key, bool warnIfKeyAbsent) const
 
 	GribDecoder* grib = const_cast<GribDecoder*>(this);
 	grib->openFirstComponent();
-	string name1 = getstring(key, warnIfKeyAbsent);
+	string name1 = getstring(key, warnIfKeyAbsent, false);
 	grib->openSecondComponent();
-	string name2 = getstring(key, warnIfKeyAbsent);
-	grib->handle_ = handle;
+	string name2 = getstring(key, warnIfKeyAbsent, false);
+	grib->handle(handle);
 	value = (name1==name2) ? name1 : name1 + "/" + name2;
 
 	if ( Data::dimension_ == 3 ) {
 		grib->openThirdComponent();
-		string name3 = getstring(key, warnIfKeyAbsent);
-		grib->handle_ = handle;
+		string name3 = getstring(key, warnIfKeyAbsent, false);
+		grib->handle(handle);
 		if ( value != name3 )
 			value = value + "/" + name3;
 	}
@@ -157,7 +203,10 @@ string GribDecoder::getString(const string& key, bool warnIfKeyAbsent) const
 
 double GribDecoder::getDouble(const string& key, bool warnIfKeyAbsent) const
 {
-	assert (context_); 
+	map<string, double>::const_iterator dk = dKeys_.find(key);
+		if ( dk != dKeys_.end() ) {
+			return dk->second;
+		}
 	double val;
 	int err = grib_get_double(handle_, key.c_str(), &val);
 	if ( err )
@@ -169,13 +218,14 @@ double GribDecoder::getDouble(const string& key, bool warnIfKeyAbsent) const
 		}
 		return 0;
 	}
+	dKeys_.insert(make_pair(key, val));
 	return val;
 }
 
 
 void   GribDecoder::setDouble(const string& key, double val) const
 {
-	assert (context_);
+
 	int err = grib_set_double(handle_, key.c_str(), val);
 	if ( err )
 	{
@@ -201,12 +251,23 @@ void GribDecoder::read(Matrix **matrix)
 			interpretor_ = SimpleObjectMaker<GribInterpretor>::create(representation);
 		}
 		interpretor_->interpretAsMatrix(*this, matrix);
+		if ( *matrix == 0 ) {
+			 valid_ = false;
+			 ostringstream msg;
+			 msg << "Grib Decoder: Representation [" << representation << "] not yet fully implemented";
+			 MagLog::error() <<  msg.str() << std::endl;
+			 throw MagicsException(msg.str());
+		}
+
 		interpretor_->scaling(*this, matrix);
 	}
 	catch (NoFactoryException&)
 	{
-		MagLog::error() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
-		throw MagicsException("Grib Decoder: Representation [] not yet supported.");
+		ostringstream msg;
+		msg << "Grib Decoder: Representation [" << representation << "] not yet supported";
+		MagLog::error() << msg.str() << endl;
+		valid_ = false;
+		throw MagicsException(msg.str());
 	}
 }
 
@@ -230,7 +291,8 @@ void GribDecoder::read(Matrix **matrix, const Transformation&  transformation)
 	}
 	catch (NoFactoryException&)
 	{
-		MagLog::error() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+		MagLog::error() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
+		valid_ = false;
 		throw MagicsException("Grib Decoder: Representation [] not yet supported.");
 	}
 }
@@ -270,8 +332,27 @@ void GribDecoder::release()
 				*point = 0;
 		}
 	points_.clear();
+
 }
+void GribDecoder::visit(Transformation& transformation)
+{
+
+	if(transformation.coordinateType() == Transformation::GeoType )
+		return;
+	decode();
+	// Here are in a dump ode .. the coordinates are pixels.
+	if ( transformation.getAutomaticX() ) {
+		transformation.setMinMaxX(1, matrix_->columns());
+
+	}
+	if ( transformation.getAutomaticY() ) {
+		transformation.setMinMaxY(1, matrix_->rows());
+
+	}
+
+
 
+}
 void GribDecoder::decode2D() 
 {
 
@@ -290,7 +371,8 @@ void GribDecoder::decode2D()
 	}
 	catch (NoFactoryException&)
 	{
-		MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+		MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
+		valid_ = false;
 
 	}
 	readColourComponent();
@@ -309,89 +391,101 @@ void GribDecoder::decode2D()
 
 void GribDecoder::customisedPoints(const AutomaticThinningMethod& thinning, const Transformation& transformation, const std::set<string>& request, CustomisedPointsList& points)
 {
-	if ( !context_ ) return;
-	int factor = thinning.points();
-	
+
 	openFirstComponent();
 	long repres;    
 	grib_get_long(handle_,"dataRepresentationType",&repres);
 	const string representation = getString("typeOfGrid");
 	try {
 		if ( !interpretor_ ) {
-					interpretor_ = SimpleObjectMaker<GribInterpretor>::create(representation);
-				}
-		// Try to find the XResolution ...
+			interpretor_ = SimpleObjectMaker<GribInterpretor>::create(representation);
+		}
+
 		// Compute the thinning factor...
-		double yres = interpretor_->XResolution(*this);
-		double height = transformation.height();
-		factor = maground((height/factor) / yres);
-		if (factor < 1) factor = 1;
-		
-		thinning.units(yres*factor);
 
-		if ( factor == 1)
-		{
-			CustomisedPointsList xvalues, yvalues, cvalues;
-			string xc = "x_component";
-			string yc = "y_component";
-			string cc = "colour_component";
-			interpretor_->raw(*this, transformation, xc, xvalues);
-			readColourComponent();
-			if ( colourComponent_ )
-				interpretor_->raw(*this, transformation, cc, cvalues);
 
-			openSecondComponent();
-			interpretor_->raw(*this, transformation, yc, yvalues);
 
-			CustomisedPointsList::iterator x = xvalues.begin();
-			CustomisedPointsList::iterator y = yvalues.begin();
-			CustomisedPointsList::iterator c = cvalues.begin();
-			while ( x != xvalues.end() && y!= yvalues.end() )
-			{
-				CustomisedPoint* point = new CustomisedPoint((*x)->longitude(), (*x)->latitude(), "");
-				pair<double, double> val = (*wind_mode_)( (**x)[xc], (**y)[yc]);
-				point->insert(make_pair(xc, val.first));
-				point->insert(make_pair(yc, val.second));
-				if ( c != cvalues.end() ) {
-					point->insert(make_pair(cc, (**c)[cc]));
-					c++;
-				}
-				
-				points.push_back(point);
-				x++;
-				y++;
-			}
-		}
-		else {
-			if ( thinning.rawOnly() == false ) {
-				BasicThinningMethod basic;
-				basic.factor(factor);
-				thinning.units(yres*factor);
-				customisedPoints(basic, transformation, request, points);
-			}
-		}
+		double max = transformation.getMaxY();
+		double min = transformation.getMinY();
+
+
+		double res = interpretor_->XResolution(*this);
+
+
+		bool thinit =  ( (max-min)/thinning.y() > 2*res );
+
+		double xpoints = (thinit) ? thinning.x() : 0;
+		double ypoints = (thinit) ? thinning.y() : 0;
+
+
+		customisedPoints(transformation, points, res*xpoints, res*ypoints, 0);
+
+
+
 	}
 	catch (NoFactoryException&)
 	{
-		MagLog::error() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+		MagLog::error() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
 		throw MagicsException("Grib Decoder: Representation [] not yet supported.");
 	}
 }
 
 
-void newPoint(const Transformation& transformation, double lat, double lon, double uc, double vc, double cc, vector<CustomisedPoint*>& points)
+
+
+
+
+bool compare(const pair<double, double>& pt1, const pair<double, double>& pt2)
+{
+	if ( pt1.second != pt2.second)
+		return false;
+
+	return pt1.second < pt2.second;
+}
+
+
+
+
+
+void GribDecoder::newPoint(const Transformation& transformation, double lat, double lon, double uc, double vc, double cc, vector<CustomisedPoint*>& points, double grid)
 {
 
 
 
+	std::stack<UserPoint>   duplicates;
+  	UserPoint geo(lon, lat);
+
 
-	  std::stack<UserPoint>   duplicates;
-  	  UserPoint geo(lon, lat);
 
 
   	 transformation.wraparound(geo, duplicates);
 		 while (duplicates.empty() == false) {
 			UserPoint pt = duplicates.top();
+			// we try to see if no to near neighborg ...
+
+			map<double, std::set<double> >::iterator row =  positions_.find(pt.y());
+			if ( row == positions_.end() )
+				positions_.insert(make_pair(pt.y(), std::set<double>()));
+			row =  positions_.find(pt.y());
+			std::set<double>::iterator low =  row->second.lower_bound(pt.x());
+			bool add = true;
+			if ( low != row->second.end() ) {
+				double diff = fabs(*low-pt.x());
+				if ( diff <= grid )
+					add = false;
+				++low;
+				if ( low != row->second.end() ) {
+					double diff = fabs(*low -pt.x());
+					if ( diff <= grid )
+						add = false;
+				}
+			}
+			if ( !add ) {
+				duplicates.pop();
+				continue;
+			}
+
+			row->second.insert(pt.x());
 
 			CustomisedPoint *point = new CustomisedPoint(pt.x(), pt.y(), "");
 
@@ -402,83 +496,103 @@ void newPoint(const Transformation& transformation, double lat, double lon, doub
 				point->insert(make_pair("colour_component", cc));
 
 			}
+		    duplicates.pop();
 
-			duplicates.pop();
 		 }
 }
-
-void GribDecoder::customisedPoints(const BasicThinningMethod& thinning, const Transformation& transformation, const std::set<string>&, CustomisedPointsList& points)
+void GribDecoder::customisedPoints(const Transformation& transformation, CustomisedPointsList& out, double thinx, double thiny, double gap)
 {
-	if ( !context_ ) return;
 
-	decode2D();
-	MatrixHandler* inx = new MatrixHandler(*xComponent_);
-	MatrixHandler* iny = new MatrixHandler(*yComponent_);
-	MatrixHandler* inc = 0;
-	if ( colourComponent_ )
-		inc = new MatrixHandler(*colourComponent_);
-	vector<UserPoint> thinx;
-	vector<UserPoint> thiny;
-	vector<UserPoint> thinc;
-		
-	int factor = thinning.factor();
-	
-	double xres = inx->XResolution();
-	
 
-	thinning.units(xres*factor);
-	
-	transformation.thin(*inx, factor, factor, thinx);
-	transformation.thin(*iny, factor, factor, thiny);
-	if ( inc )
-		transformation.thin(*inc, factor, factor, thinc);
-
-	vector<UserPoint>::const_iterator x = thinx.begin();
-	vector<UserPoint>::const_iterator y = thiny.begin();
-	vector<UserPoint>::const_iterator c = thinc.begin();
-	if (thinx.empty()) return;
-	while (x->value() == inx->missing() ||   y->value() == iny->missing()) {
-		++x;
-		++y;
-		if ( c != thinc.end() ) ++c;
-		if (x == thinx.end() || y == thiny.end())
-			return;
-	}
-	double lat = x->y();
-	double lon = x->x();
-	double uc= x->value();
-	double vc = y->value();
-	double cc =  c != thinc.end() ? c->value() : -9999;
-	interpretor_->interpret2D(lat, lon, uc, vc);
-	newPoint(transformation, lat, lon, uc, vc, cc, points);
+	vector<UserPoint> xin, yin, cin;
 
-	
-	double lastx = lon;
 
-	x++;
-	y++;
-	while ( x != thinx.end() && y != thiny.end() )
-	{
-		double lat = x->y();
-		double lon = x->x();
-		if ( x->value() != inx->missing() &&  y->value() != iny->missing() )
-		{
+	string xc = "x_component";
+	string yc = "y_component";
+	string cc = "colour_component";
 
-			double uc= x->value();
-			double vc = y->value();
-			double cc =  c != thinc.end() ? c->value() : -9999;
-			interpretor_->interpret2D(lat, lon, uc, vc);
 
-			newPoint(transformation, lat, lon, uc, vc, cc, points);
+	interpretor_->raw(*this, transformation, xc, xin);
 
+	readColourComponent();
+	if ( colourComponent_ ) {
+		interpretor_->raw(*this, transformation, cc, cin);
+
+	}
+	openSecondComponent();
+	interpretor_->raw(*this, transformation, yc, yin);
+
+	vector<UserPoint>::iterator x = xin.begin();
+	vector<UserPoint>::iterator y = yin.begin();
+	vector<UserPoint>::iterator c = cin.begin();
+	bool thinit = thinx || thiny;
 
+	if (thinit)
+		transformation.thin(thinx, thiny, gap, xin);
+	out.reserve(yin.size());
+	while ( x != xin.end() && y!= yin.end() )
+	{
+		if ( x->missing() || !thinit ) {
+			assert(x->x_ == y->x_);
+			assert(x->y_ == y->y_);
+			CustomisedPoint* point = new CustomisedPoint(x->x_, x->y_, "");
+			std::pair<double, double> val = (*wind_mode_)(x->value_, y->value_);
+			point->insert(make_pair(xc, val.first));
+			point->insert(make_pair(yc, val.second));
+			if ( c != cin.end() ) {
+				point->insert(make_pair(cc, c->value_));
+			}
+			out.push_back(point);
 		}
-		lastx = lon;
 		x++;
 		y++;
-		if ( !thinc.empty() && c != thinc.end() ) ++c;
-	} 
+		if ( c != cin.end() ) {
+			c++;
+		}
+	}
+
+
+
+}
+
+void GribDecoder::customisedPoints(const BasicThinningMethod& thinning, const Transformation& transformation, const std::set<string>&, CustomisedPointsList& points)
+{
+
+	openFirstComponent();
+	long repres;
+	grib_get_long(handle_,"dataRepresentationType",&repres);
+	const string representation = getString("typeOfGrid");
+	try {
+		if ( !interpretor_ ) {
+			interpretor_ = SimpleObjectMaker<GribInterpretor>::create(representation);
+		}
 
+		// Compute the thinning factor...
+
+		double gap = 0;
+
+		if ( thinning.factor() > 1 ) {
+			double x1 = 0;
+			double y1 = 60;
+			double x2 = interpretor_->XResolution(*this);
+			double y2 = 60+interpretor_->XResolution(*this);
+
+            transformation.fast_reproject(x1, y1);
+            transformation.fast_reproject(x2, y2);
+
+            gap = ((x2-x1)*(x2-x1)) + ((y2-y1)*(y2-y1));
+
+		}
+		customisedPoints(transformation, points,
+				interpretor_->XResolution(*this)* thinning.factor(),
+				interpretor_->XResolution(*this)* thinning.factor(), gap);
+
+	}
+	catch (NoFactoryException&)
+	{
+		MagLog::error() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
+		throw MagicsException("Grib Decoder: Representation [] not yet supported.");
+	}
 }
 
 void GribDecoder::decode2D(const Transformation&) 
@@ -506,7 +620,7 @@ void GribDecoder::decode2D(const Transformation&)
 	}
 	catch (NoFactoryException&)
 	{
-		MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+		MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
 
 	}
 
@@ -516,67 +630,122 @@ void GribDecoder::decode2D(const Transformation&)
 
 void GribDecoder::openFirstComponent() 
 {
+
+
 	grib_field_position_ =  position_1_;
-	open();
-}
 
+	component1_ = open(component1_);
+
+}
+grib_handle* GribEntryDecoder::open(grib_handle* handle, bool) {
+		if ( !handle_ ) {
+			return handle_;
+		}
+		return handle;
+}
 
 void GribDecoder::openSecondComponent() 
 {
+
 	grib_field_position_ =  position_2_;
-	open();
+	component2_ = open(component2_);
+
 }
 void GribDecoder::openThirdComponent()
 {
 	grib_field_position_ =  colour_position_;
-	open(false);
+	colour_ = open(colour_, false);
+
 }
 void GribDecoder::readColourComponent()
 {
 	grib_field_position_ =  colour_position_;
 	try {
-		open(false);
+		colour_ = open(colour_, false);
 		read(&colourComponent_);
 	}
 
 	catch (...) {
 		colourComponent_ = 0;
+		valid_ = true;
 	}
 
 
 
 }
 
-void  GribDecoder::open(bool sendmsg)
+grib_handle*  GribDecoder::open(grib_handle* grib, bool sendmsg)
 {
+	if ( grib ) {
+		handle(grib);
+		return grib;
+	}
+
+
 	FILE* file = fopen(file_name_.c_str(),"r");
 	handle_ = 0;
 	if (!file)
 	{
-		MagLog::error() << "file can not be opened [" << file_name_ << "]" <<endl;
-		//throw GribFileMagException(file_name_, grib_field_position_);
-		//throw exception();
-		return;
+		MagLog::error() << "file can not be opened [" << file_name_ << "]" << std::endl;
+		MagLog::broadcast();
+		valid_ = false;
+		return 0;
 	}
-	if (!context_) 
-		context_ =  grib_context_get_default();
 
-	handle_ = (*address_mode_)(context_, file, grib_field_position_);
+	handle_ = (*address_mode_)(0, file, grib_field_position_);
 
 	if (handle_<=0 )
 	{
-		if (sendmsg)
-			MagLog::error() << "can not access position [" << grib_field_position_<<" in " << file_name_ << "]" <<endl;
-	//	throw GribFileMagException(file_name_, grib_field_position_);
+		if (sendmsg) {
+			MagLog::error() << "can not access position [" << grib_field_position_<<" in " << file_name_ << "]" << std::endl;
+			MagLog::broadcast();
+			valid_ = false;
+			return 0;
+		}
 	}
+	fclose(file);
+
+	return handle_;
 }
 
 
-bool GribDecoder::id(const string& id) const 
+bool GribDecoder::id(const string& id, const string& where) const
 {
+	if ( id_.empty() && id.empty() ){
+
+		return ( verify(where) );
+	}
 	return magCompare(id_, id);
 }
-
+bool GribDecoder::verify(const string& val) const
+{
+	// we except a string with the following format "key1=val,key2=val2,...,keyn=valn"
+			Tokenizer tokenizer(",= ");
+			vector<string> tokens;
+			map<string, string> where;
+			tokenizer(val, tokens);
+			vector<string>::iterator token = tokens.begin();
+
+			string key, value;
+			while (true) {
+				if (token == tokens.end() )
+					break;
+				key = *token;
+				++token;
+				if (token == tokens.end() )
+					break;
+				value = *token;
+				where.insert(make_pair(key, value));
+
+				++token;
+			}
+	for (  map<string, string>::const_iterator w = where.begin(); w != where.end(); ++w) {
+		string val = getString(w->first);
+		if ( magCompare(val, w->second) == false )
+			return false;
+	}
+	return true;
+}
 
 void GribDecoder::decodePoints()
 {
@@ -587,7 +756,7 @@ void GribDecoder::decodePoints()
 	if ( Data::dimension_ == 1 ) {
 		double scaling;
 		double offset;
-		open();
+		field_ = open(field_);
 		const string representation = getString("typeOfGrid");
 		double missing = getDouble("missingValue");
 		try {
@@ -598,7 +767,7 @@ void GribDecoder::decodePoints()
 		}
 		catch (NoFactoryException&)
 		{
-			MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+			MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
 			scaling =1 ; offset =0;
 		}
 
@@ -650,12 +819,7 @@ void GribDecoder::decodePoints()
 }
 
 
-grib_context* GribDecoder::gribContext() 
-{
-	if (!context_)
-		context_ = grib_context_get_default();
-	return context_;
-}
+
 
 
 GribLoop::~GribLoop()
@@ -702,13 +866,13 @@ bool  GribLoop::hasMore()
 	if (file_ == 0 ) {
 		file_ = fopen(path_.c_str(),"r");
 		if (!file_) {
-			MagLog::error() << "file can not be opened [" << path_ <<  "]" <<endl;
+			MagLog::error() << "file can not be opened [" << path_ <<  "]" << std::endl;
 			throw GribFileMagException(path_, 0);
 		}	
 	}
 	
-    grib_context* context = GribDecoder::gribContext();
     
+
     // Now we have to find the right Entry!!! 
     
 
@@ -720,7 +884,7 @@ bool  GribLoop::hasMore()
     	if (  dim_.empty() ) {
     		 // case 1 dimension= 1 and loop on all the fields! 
     		int error;
-    		grib_handle* handle = grib_handle_new_from_file(context, file_, &error) ; 
+    		grib_handle* handle = grib_handle_new_from_file(0, file_, &error) ;
     		if (handle <=0)
     			return false;
     		currentgrib_ = new GribEntryDecoder(handle);
@@ -734,7 +898,7 @@ bool  GribLoop::hasMore()
     			return false;
     		 // Case 3 Dimension = 1 but we only used  a subset of fields
 
-    		grib_handle* handle =  (*address_mode_)(context, file_, *currentPos_);
+    		grib_handle* handle =  (*address_mode_)(0, file_, *currentPos_);
     		currentPos_++;
     		if (handle <=0)  
     			return false;
@@ -751,9 +915,9 @@ bool  GribLoop::hasMore()
     	{
     		// case 2 Dimension = 2 and loop on all the field!
     		int error;
-    		grib_handle* handle1 = grib_handle_new_from_file(context, file_, &error) ;
+    		grib_handle* handle1 = grib_handle_new_from_file(0, file_, &error) ;
     		if (handle1 <=0)  return false;
-    		grib_handle* handle2 = grib_handle_new_from_file(context, file_, &error) ;
+    		grib_handle* handle2 = grib_handle_new_from_file(0, file_, &error) ;
     		if (handle2 <=0)  return false;
     		currentgrib_ = new GribEntryDecoder(handle1, handle2);
     		currentgrib_->set(*this, counter_++);
@@ -771,8 +935,8 @@ bool  GribLoop::hasMore()
     		currentPos_++;
 
 
-    		grib_handle* handle1 =  (*address_mode_)(context, file_, *dim1);
-    		grib_handle* handle2 =  (*address_mode_)(context, file_, *dim2);
+    		grib_handle* handle1 =  (*address_mode_)(0, file_, *dim1);
+    		grib_handle* handle2 =  (*address_mode_)(0, file_, *dim2);
     		if ( handle1 <=0 )
     			return false;
     		if ( handle2 <=0 )
@@ -791,11 +955,11 @@ bool  GribLoop::hasMore()
 			{
 				// case 2 Dimension = 2 and loop on all the field!
 	    			int error;
-	       			grib_handle* handle1 = grib_handle_new_from_file(context, file_, &error) ;
+	       			grib_handle* handle1 = grib_handle_new_from_file(0, file_, &error) ;
 	       			if (handle1 <=0)  return false;
-	       			grib_handle* handle2 = grib_handle_new_from_file(context, file_, &error) ;
+	       			grib_handle* handle2 = grib_handle_new_from_file(0, file_, &error) ;
 	        		if (handle2 <=0)  return false;
-	        		grib_handle* handle3 = grib_handle_new_from_file(context, file_, &error) ;
+	        		grib_handle* handle3 = grib_handle_new_from_file(0, file_, &error) ;
 	        		if (handle3 <=0)  return false;
 	        		currentgrib_ = new GribEntryDecoder(handle1, handle2, handle3);
 	        		currentgrib_->set(*this, counter_++);
@@ -816,9 +980,9 @@ bool  GribLoop::hasMore()
 											return false;
 										currentPos_++;
 
-	        		grib_handle* handle1 =  (*address_mode_)(context, file_, *dim1);
-	        		grib_handle* handle2 =  (*address_mode_)(context, file_, *dim2);
-	        		grib_handle* handle3 =  (*address_mode_)(context, file_, *dim3);
+	        		grib_handle* handle1 =  (*address_mode_)(0, file_, *dim1);
+	        		grib_handle* handle2 =  (*address_mode_)(0, file_, *dim2);
+	        		grib_handle* handle3 =  (*address_mode_)(0, file_, *dim3);
 
 	        		if ( handle1 <=0 )
 	        			return false;
@@ -853,7 +1017,13 @@ bool  GribLoop::hasMore()
 
 void GribLoop::print(ostream&) const {}
 
-
+void GribDecoder::handle(grib_handle* handle)
+{
+	handle_ = handle;
+	lKeys_.clear();
+	sKeys_.clear();
+	dKeys_.clear();
+}
 
 class GribTag: public XmlNodeVisitor
 {
@@ -936,12 +1106,18 @@ public:
 		
 	}
 
+
+
 	void visit(const XmlNode& node)
 	{
 		if ( magCompare(node.name(), "grib_info") )
 		{
 			string grib = node.getAttribute("id");
-					if ( !grib_.id(grib)) return;
+			string where = node.getAttribute("where");
+			if ( !grib_.id(grib, where)) {
+
+					return;
+			}
 			string def = node.getAttribute("key");
 			if (def.empty()) {
 				 def = node.getAttribute("definition");
@@ -1001,7 +1177,8 @@ public:
 		if ( magCompare(node.name(), "magics_title") )
 		{
 			string grib = node.getAttribute("id");
-			if ( !grib_.id(grib)) return;
+			string where = node.getAttribute("where");
+			if ( !grib_.id(grib, where)) return;
 
 			vector<string> lines;
 			TitleTemplate::title(lines, grib_);
@@ -1049,7 +1226,7 @@ void GribDecoder::visit(AnimationRules& )
 
 void GribDecoder::visit(ValuesCollector& points)
 {
-	open();	
+	field_ = open(field_);
 	const Transformation& transformation = points.transformation();
 		
 	points.setCollected(true);
@@ -1079,7 +1256,7 @@ void GribDecoder::visit(ValuesCollector& points)
 	}      
 	catch (NoFactoryException&)
 	{
-		MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+		MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
 		scaling =1 ; offset =0;
 	}
  	
@@ -1100,7 +1277,7 @@ void GribDecoder::visit(ValuesCollector& points)
 		points.setUnits(oriUnits);
 		points.setScaledUnits(derivedUnits);
 	  
-		open();
+		field_ = open(field_);
 		grib_nearest_find_multiple(handle_, 0, inlats, inlons, nb, outlats, outlons, values, distances, indexes);
 		for (int i =0; i < nb; i++) 
 		{
@@ -1202,7 +1379,7 @@ void GribDecoder::visit(MetaDataCollector& step)
 	// Here we gather information for the label!
 	const Transformation& transformation = step.transformation();
 	
-	open(); // just to be sure the file is opened!
+	field_ = open(field_); // just to be sure the file is opened!
 
 	initInfo();
 
@@ -1287,7 +1464,7 @@ void GribDecoder::visit(MetaDataCollector& step)
 					}	
 					catch (NoFactoryException&)
 					{
-						MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<<endl;;
+						MagLog::warning() << "Grib Decoder: Representation [" << representation << "] not yet supported.\n"<< std::endl;;
 						information_[key->first]="N/A";
 					}
 					
@@ -1339,13 +1516,47 @@ void GribDecoder::visit(MetaDataCollector& step)
 	catch (...) {}
 
 }
+MatrixHandler& GribDecoder::direction() {
 
+	decode2D();
+	// Now X et X components are ready ..
+	// We compute the direction in matrix_	and send it back.
+
+	matrix_ = xComponent_;
+
+	vector<double>::const_iterator x = xComponent_->begin();
+	vector<double>::const_iterator y = yComponent_->begin();
+	vector<double> directions;
+	//	MagLog::dev()<< "missing1-->" << in1->missing() << endl;
+	//	MagLog::dev()<< "missing2-->" << in2->missing() << endl;
+		while ( x != xComponent_->end() &&  x != yComponent_->end() ) {
+			if ( *x == xComponent_->missing() || *y == yComponent_->missing() )
+	    	   directions.push_back(xComponent_->missing());
+			else
+				directions.push_back(atan2((*y), (*x)) );
+			++x;
+			++y;
+		}
+		matrix_->clear();
+		xComponent_ = 0;
+
+
+
+		for (vector<double>::iterator d = directions.begin(); d != directions.end(); ++d) {
+				matrix_->push_back(*d);
+		}
+
+		matrixHandlers_.push_back(new MatrixHandler(*matrix_));
+		return *(matrixHandlers_.back());
+
+}
 void GribDecoder::decode(const Transformation& transformation) 
 {
 	if (matrix_) return;
-	
-	open();
-	read(&matrix_, transformation);
+
+	field_ = open(field_);
+
+		read(&matrix_, transformation);
 	if (!matrix_) return;
 	
 	// here we build information for the layers!
@@ -1371,13 +1582,18 @@ void GribDecoder::decode(const Transformation& transformation)
 
 void GribDecoder::decode() 
 {
-	if (matrix_) return;
-	
-	open();
-	
-	read(&matrix_);
-	if (!matrix_) return;
 	
+	if ( dimension_ == 1) {
+		if (matrix_) return;
+		field_ = open(field_);
+		read(&matrix_);
+		if (!matrix_) return;
+	}
+	else {
+		decode2D();
+	}
+
+
 	// here we build information for the layers!
 	TagHandler helper; 
 	vector<string> need;
@@ -1404,7 +1620,7 @@ void GribDecoder::decode()
 void GribDecoder::visit(TextVisitor& title) 
 {
 	try {
-		open();	
+		field_ = open(field_);
 	}
 	catch ( ... )
 	{
@@ -1425,7 +1641,7 @@ void GribDecoder::visit(TextVisitor& title)
 
 void GribDecoder::decodeRaster(const Transformation& transformation) 
 {
-	open();
+	field_ = open(field_);
 	
 	string representation = getString("typeOfGrid");
 	
@@ -1449,7 +1665,18 @@ void GribDecoder::initInfo()
 	if(information_.find("_datatype") == information_.end())
 	{
 	  	setInfo("_datatype","GRIB");
-		setInfo("path", file_name_);
+		
+		char buf[1024];
+    		int count = readlink(file_name_.c_str(), buf, sizeof(buf));
+    		if (count > 0)
+		{
+		    	buf[count] = '\0';
+   			setInfo("path", string(buf));
+		}	
+		else
+		{  
+			setInfo("path", file_name_);
+		}
 		setInfo("MV_Format","GRIB");
 	}
 }
@@ -1558,27 +1785,7 @@ public:
 	void operator()(TitleField&, vector<string>& /*title*/, const GribDecoder& grib)
 	{
 
-		/*string type = grib.getString("codeType"); 
-		string platform = grib.getString("platform"); 
-      		string instrument = grib.getString("instrument");
-		string selection = grib.getString("dataSelection");
-		string diag = grib.getString("observationDiagnostic");
-		string channel = grib.getString("scaledValueOfFirstFixedSurface");
-		string min = grib.getString("min");
-		string max = grib.getString("max");
-		string mean = grib.getString("average");
-		string units= grib.getString("units");
-		string exp= grib.getString("experimentVersionNumber");
-		string date= grib.getString("mars.date");
-		string time= grib.getString("mars.time");
- 
-       		out << "Statistics for " << type << " from " << platform << "/" << instrument << "<br/>" << 
-       			diag << " [" << units << "] (" << selection << ")" <<  "<br/>" << 
-       			"Date = " << date << "  Time = " << time << "<br/>" <<
-       			"Exp = " << exp << " Channel = " << channel << "<br/>" <<
-       			"Min: "  << min << "    Max: " << max << " Mean: " << "mean";         
-	
-	*/
+
 	}
 };
 
@@ -1738,6 +1945,8 @@ public:
     		map_["Surface"] = &GribLevelHandler::surface;
     		map_["Unknown"] = &GribLevelHandler::surface;
     		map_["isobaricInhPa"] = &GribLevelHandler::isobaricInhPa;
+    		map_["heightAboveGround"] = &GribLevelHandler::heightAboveGround;
+    		map_["heightAboveGround"] = &GribLevelHandler::heightAboveGround;
     		map_["hybrid"] = &GribLevelHandler::hybrid;
     	}
     }
@@ -1750,6 +1959,7 @@ public:
     	ostringstream out;
 
         string level = grib.getString("typeOfLevel");
+
         
         map<string,  GribLevelHandler::Builder>::iterator help = map_.find(level);
         if ( help != map_.end() ) out << (this->*help->second)(level, grib) << " ";
@@ -1779,6 +1989,20 @@ protected:
 		out  << level  <<  " " << "hPa";
 		return out.str();
 	}	
+	string pv(const string& , const GribDecoder& grib) const
+		{
+			ostringstream out;
+			long level = grib.getLong("level");
+			out  << level  <<  " mPVU";
+			return out.str();
+		}
+	string heightAboveGround(const string& , const GribDecoder& grib) const
+	{
+		ostringstream out;
+		long level = grib.getLong("level");
+		out  << level  <<  " m";
+		return out.str();
+	}
 	string hybrid(const string& , const GribDecoder& grib) const
 	{
 		ostringstream out;
@@ -1818,13 +2042,9 @@ public:
 	{
 		string format = field.attribute("format", "%s");
 		string style = field.attribute("style", "short");
-		long centre = grib.getLong("centre");	
-		GeneralDef def = CentreTable::definition(centre);
-		char x[256];
-		string value = (style == "short") ?  def.shortTitle() : def.longTitle();
-		sprintf(x, format.c_str(), value.c_str());
+		string centre = grib.getString("centre");
 
-		title.back() += string(x);
+		title.back() += centre;
 	}
 };
 
@@ -2022,7 +2242,7 @@ static SimpleObjectMaker<GribRegularGaussianInterpretor, GribInterpretor> regula
 static SimpleObjectMaker<GribReducedGaussianInterpretor, GribInterpretor> reduced_gg("reduced_gg");
 static SimpleObjectMaker<GribRotatedInterpretor, GribInterpretor> rotated_ll("rotated_ll");
 static SimpleObjectMaker<GribLambertAzimutalInterpretor, GribInterpretor> lambert_azimuthal_equal_area("lambert_azimuthal_equal_area");
-static SimpleObjectMaker<GribLambertAzimutalInterpretor, GribInterpretor> lambert("lambert");
+static SimpleObjectMaker<GribLambertInterpretor, GribInterpretor> lambert("lambert");
 
 
 #include "GribSatelliteInterpretor.h"
diff --git a/src/decoders/GribDecoder.h b/src/decoders/GribDecoder.h
index 0a66609..eff2d5a 100644
--- a/src/decoders/GribDecoder.h
+++ b/src/decoders/GribDecoder.h
@@ -96,7 +96,9 @@ public:
 	void decodeRaster(const Transformation&);
 	void decodePoints();
 	void release();
-	
+	void newPoint(const Transformation&, double, double, double, double, double, vector<CustomisedPoint*>&, double);
+	bool verify(const string& where) const;
+	MatrixHandler& direction();
 	// Data Interface : info for the layer managment! 
 	 string layerId()  { decode(); return layerId_; }
 	 string name() { decode(); return name_; }
@@ -107,6 +109,7 @@ public:
 		return title_;
 	}
 
+
 	bool getExpver() const { return expver_; }
 	void version();
 	
@@ -116,6 +119,7 @@ public:
 		void visit(MetaDataCollector&);
 		void visit(MagnifierCollector&);
 		void visit(ValuesCollector&);
+		void visit(Transformation&);
 		
 		 const DateDescription& timeStamp();
 		 const LevelDescription& level() ;
@@ -143,16 +147,15 @@ public:
 
 	MatrixHandler& matrix()
 	{
-		if ( !context_) 
-			throw MagicsException("No data to display ");
+
 		decode();
 		matrixHandlers_.push_back(new MatrixHandler(*matrix_));
 		return *(matrixHandlers_.back()); 
 	}
 	MatrixHandler& matrix(const Transformation& transformation)
 		{
-		if ( !context_) 
-			throw MagicsException("No data to display ");
+
+
 			decode(transformation);
 			matrixHandlers_.push_back(new MatrixHandler(*matrix_));
 			return *(matrixHandlers_.back()); 
@@ -172,9 +175,10 @@ public:
 
 	void customisedPoints(const AutomaticThinningMethod&, const Transformation&, const std::set<string>&, CustomisedPointsList&);
 	void customisedPoints(const BasicThinningMethod&, const Transformation&, const std::set<string>&, CustomisedPointsList& );
+	void customisedPoints(const Transformation& t,  CustomisedPointsList& out, double xpts, double ypts, double gap);
 
 
-	virtual void open(bool sendMsg = true);
+	virtual grib_handle* open(grib_handle*, bool sendMsg = true);
 	virtual void openFirstComponent();
 	virtual void openSecondComponent();
 	virtual void openThirdComponent();
@@ -186,19 +190,14 @@ public:
 	double    getDouble(const string&, bool warnIfKeyAbsent = true) const;
     void      setDouble(const string&, double) const;
 
-    string    getstring(const string&, bool warnIfKeyAbsent = true) const;
+    string    getstring(const string&, bool warnIfKeyAbsent = true, bool cache= true) const;
 
 	void      read(Matrix **matrix);
 	void      read(Matrix **matrix, const Transformation&);
-	bool      id(const string&) const;
+	bool      id(const string&, const string&) const;
+
 
 
-	static grib_context* gribContext();
-	static void releaseContext() {  
-		if (context_)  
-			grib_context_delete(context_); 
-		context_ = 0;
-	}
 	grib_handle*  handle() const { return handle_; }
         void initInfo();
 
@@ -206,6 +205,8 @@ protected:
 	//! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
      
+	void handle(grib_handle*);
+
 	mutable Matrix*     matrix_;
 	mutable Matrix*     xComponent_;
 	mutable Matrix*     yComponent_;     
@@ -213,15 +214,22 @@ protected:
 	mutable RasterData raster_;
 	mutable PointsList points_;
 
+	mutable map<string, string> sKeys_;
+	mutable map<string, long> lKeys_;
+	mutable map<string, double> dKeys_;
+
 	int internalIndex_;
 	GribInterpretor* interpretor_;
+	map<double, std::set<double> > positions_;
 
 
-
-	
  
-	static 	grib_context* context_;
+
 	grib_handle*  handle_;
+	grib_handle*  field_;
+	grib_handle*  component1_;
+	grib_handle*  component2_;
+	grib_handle*  colour_;
 	
 	string title_;
 	static int count_;
@@ -267,8 +275,8 @@ public:
 	}
 	~GribEntryDecoder() {}
 
-	void open(bool sendMsg = true) { assert(handle_); }
-	
+	grib_handle* open(grib_handle*, bool sendMsg = true);
+
 	void openFirstComponent() { 
 		assert(handle1_);
 		handle_ = handle1_;
diff --git a/src/decoders/GribDecoderAttributes.h b/src/decoders/GribDecoderAttributes.h
deleted file mode 100644
index 4f75ef2..0000000
--- a/src/decoders/GribDecoderAttributes.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file GribDecoderAttributes.h
-    \brief Definition of GribDecoder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef GribDecoderAttributes_H
-#define GribDecoderAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "WindMode.h"
-#include "GribAddressMode.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class GribDecoderAttributes 
-{
-public:
-//  --  constructor
-    GribDecoderAttributes();
-    
-//  --  destructor
-    virtual ~GribDecoderAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const GribDecoderAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string file_name_;
-	string id_;
-	bool scaling_;
-	bool derived_scaling_;
-	double scaling_factor_;
-	double scaling_offset_;
-	bool expver_;
-	bool units_;
-	auto_ptr<GribAddressMode> address_mode_;
-	auto_ptr<WindMode> wind_mode_;
-	int grib_field_position_;
-	int position_1_;
-	int position_2_;
-	int colour_position_;
-	double missing_value_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const GribDecoderAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/GribInterpretor.h b/src/decoders/GribInterpretor.h
index f67dad1..52c8ce1 100644
--- a/src/decoders/GribInterpretor.h
+++ b/src/decoders/GribInterpretor.h
@@ -52,8 +52,8 @@ public:
 	GribInterpretor() {}
 	virtual ~GribInterpretor() {}
 	virtual double XResolution(const GribDecoder&) const { return 0; }
-	virtual void raw(const GribDecoder&, const Transformation&, const string&, CustomisedPointsList&) const;
-	virtual void interpretAsMatrix(const GribDecoder&, Matrix**) const {}
+	virtual void raw(const GribDecoder&, const Transformation&, const string&, vector<UserPoint>&) const;
+	virtual void interpretAsMatrix(const GribDecoder&, Matrix** matrix) const { *matrix = 0; }
 	virtual void interpretAsMatrix(const GribDecoder& grib, Matrix** matrix, const Transformation&) const
 		{ interpretAsMatrix(grib, matrix); }
 
diff --git a/src/decoders/GribLoopAttributes.h b/src/decoders/GribLoopAttributes.h
deleted file mode 100644
index 00413d5..0000000
--- a/src/decoders/GribLoopAttributes.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file GribLoopAttributes.h
-    \brief Definition of GribLoop Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef GribLoopAttributes_H
-#define GribLoopAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "WindMode.h"
-#include "GribAddressMode.h"
-#include "GribLoopStep.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class GribLoopAttributes 
-{
-public:
-//  --  constructor
-    GribLoopAttributes();
-    
-//  --  destructor
-    virtual ~GribLoopAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const GribLoopAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<GribAddressMode> address_mode_;
-	intarray dimension_;
-	intarray dim_1_;
-	intarray dim_2_;
-	intarray dim_colour_;
-	intarray dim_;
-	string path_;
-	auto_ptr<GribLoopStep> step_;
-	bool scaling_;
-	bool derived_scaling_;
-	double scaling_factor_;
-	double scaling_offset_;
-	auto_ptr<WindMode> wind_mode_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const GribLoopAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/GribLoopStep.h b/src/decoders/GribLoopStep.h
index c3525fe..2df2d23 100644
--- a/src/decoders/GribLoopStep.h
+++ b/src/decoders/GribLoopStep.h
@@ -57,7 +57,7 @@ public:
     }
 
 protected :
-	virtual void print(ostream&) const; 
+	virtual void print(ostream&) const;
 
 private:
 	//! Copy constructor - No copy allowed
diff --git a/src/decoders/GribRegularInterpretor.cc b/src/decoders/GribRegularInterpretor.cc
index f646b18..096c6b6 100644
--- a/src/decoders/GribRegularInterpretor.cc
+++ b/src/decoders/GribRegularInterpretor.cc
@@ -148,37 +148,36 @@ void GribInterpretor::scaling(const GribDecoder& grib, Matrix** matrix) const
 }
 
 
-void GribInterpretor::raw(const GribDecoder& grib, const Transformation& transformation, const string& key, CustomisedPointsList& points) const
+void GribInterpretor::raw(const GribDecoder& grib, const Transformation& transformation, const string& key, vector<UserPoint>& points) const
 {
+	Timer timer("grib", "raw");
 	double factor, offset;
 	scaling(grib, factor, offset);
 	int err;
+	size_t nb;
+	grib_get_size(grib.id(), "values", &nb);
+
+	points.reserve(nb);
 
-    grib_iterator* iter = grib_iterator_new(grib.handle(), 0,&err);                                     
+
+	grib_iterator* iter = grib_iterator_new(grib.handle(), 0,&err);
     double missing = grib.getDouble("missingValue");
 
 
     double lat, lon, value;
+
         /* Loop on all the lat/lon/values. */
     while(grib_iterator_next(iter,&lat,&lon,&value)) {   
-  
+
       
       if (value != missing ) {
-    	  std::stack<UserPoint>   duplicates;
-    	  UserPoint geo(lon, lat);
-    	  value = (value*factor)+offset;
-    	  
-    	 transformation.wraparound(geo, duplicates);
-		 while (duplicates.empty() == false) {
-			UserPoint pt = duplicates.top();
-			CustomisedPoint *point = new CustomisedPoint(pt.x(), pt.y(), "");
-			point->insert(make_pair(key, value));
-			points.push_back(point);
-			duplicates.pop();
-		 }
-    	
+
+    		  value = (value*factor)+offset;
+
+    		  transformation.populate(lon, lat, value, points);
       }
-       
+
+
     }
 
         /* At the end the iterator is deleted to free memory. */
@@ -316,16 +315,30 @@ void GribRegularGaussianInterpretor::latitudes(const GribDecoder& grib, vector<d
 	grib_get_gaussian_latitudes(res, array);
 	double first = grib.getDouble("latitudeOfFirstGridPointInDegrees");
 	double last = grib.getDouble("latitudeOfLastGridPointInDegrees");;
+	// get the scanning mode !
+	double north = first;
+	double south = last;
+	long scanning = grib.getLong("jScansPositively");;
+	if (scanning == 1 ) {
+		north = last;
+		south = first;
+	}
 
-	double north = std::max(first, last);
-	double south = std::min(first, last);
 	for ( int i = 0; i < 2*res; i++ )
 	{
-		if ( array[i] <= north && array[i] >= south)
+		if ( same(array[i],north, 10e-2) ) {
+			latitudes.push_back(array[i]);
+			continue;
+		}
+		if ( same(array[i],south, 10e-2) ) {
+			latitudes.push_back(array[i]);
+			continue;
+		}
+		if ( array[i] < north && array[i] > south)
 			latitudes.push_back(array[i]);
 	}
-	// get the scanning mode !
-	long scanning = grib.getLong("jScansPositively");;
+
+
 	if (scanning == 1 )
 		std::reverse(latitudes.begin(), latitudes.end());
 }
@@ -418,117 +431,11 @@ void GribReducedGaussianInterpretor::print(ostream& out)  const
 	out << "]";
 }
 
-#ifdef later
-class GribMatrix : public Matrix
-{
-public:
-	    GribMatrix(const GribDecoder& grib) : grib_(grib) {
-	    	
-	    }
-	    
-	    void prepare(double north = 90., double south = -90., double west = -180, double east = 180) 
-	    {
-	        Timer timer("gribapi", "subarea extraction");
-	    	int error;
-	    	box_ = grib_box_new(grib_.id(),&error);
-	    	// deal with the error! 
-	    	grib_points* points = grib_box_get_points(box_,north,west,south,east,&error);
-
-	    	double value[points->n];
-	    	grib_points_get_values(grib_.id(),points,value);
-	    	
-	    	map<double, vector<double> > positions;
-	    	map<double, vector<double> > values;
-	    	
-	    	for (unsigned int i=0;i<points->n;i++) {
-	    		map<double, vector<double> >::iterator pos = positions.find(points->latitudes[i]);
-	    		map<double, vector<double> >::iterator val = values.find(points->latitudes[i]);
-	    		if ( pos == positions.end() ) {
-	    			positions.insert(make_pair(points->latitudes[i], vector<double>()) );
-	    			values.insert(make_pair(points->latitudes[i], vector<double>()) );
-	    			pos = positions.find(points->latitudes[i]);
-	    			val = values.find(points->latitudes[i]);
-	    		}
-	    		pos->second.push_back(points->longitudes[i]);
-	    		val->second.push_back(value[i]);	    		   
-	    	}
-	    	unsigned int max = 0;
-	    	double lat = 0;
-	    
-	    	
-	    	for (map<double, vector<double> >::iterator pos = positions.begin(); pos != positions.end(); ++pos) {
-	    		if ( pos->second.size() > max ) {
-	    			max = pos->second.size();
-	    			lat = pos->first;
-	    		}
-	    		this->rowsAxis().push_back(pos->first);
-	    	}
-	    		vector<double>& longitudes = positions[lat];
-	    		
-
-	    		int nblon = longitudes.size();
-	    		double width = longitudes.back() -  longitudes.front();
-	    		double step = (width)/(nblon-1); 
-
-	    		for (map<double, vector<double> >::iterator pos = positions.begin(); pos != positions.end(); ++pos) {
-	    			
-	    			map<double, vector<double> >::iterator val = values.find(pos->first);
-	    			vector<double>& p =val->second;
-	    			double lon = longitudes.front();
-	    			unsigned int p1 = 0;
-	    			unsigned int p2 = 1;
-	    			double lon1 = lon;
-	    			double lon2 = lon1 + (width/(p.size()-1));
-
-	    			for ( unsigned int x = 0; x < longitudes.size(); x++ ) {
-	    				if ( lon >= lon2 ) {
-	    					p1++;
-	    					p2++;
-	    					lon1 = lon2;
-	    					lon2 += (width)/(p.size()-1);
-	    				}
-	    				double d1 = (lon2 - lon)/(lon2-lon1);
-	    				double d2 = 1-d1;
-	    				double val;
-	    				
-	    				assert ( p1 < p.size() );
-	    				if (p2 == p.size()) {
-	    					this->push_back(p[p1]);
-	    				}
-	    				else {
-	    					if (p[p1] == missing_ ||  p[p2] == missing_)
-	    						val = missing_;
-	    					else
-	    						val = (p[p1] * d1) + (p[p2] * d2);
-	    					this->push_back(val);
-	    				}
-	    				lon += step;
-	    			}
-	    		}
-	    		
-	    		for ( vector<double>::iterator lon = longitudes.begin(); lon != longitudes.end(); ++lon) 
-	    				this->columnsAxis().push_back(*lon);
-	    		
-	    		setMapsAxis();
-	    }
-		  
-protected:
-	const GribDecoder& grib_;
-	grib_box*                   box_;
-};
-#endif
-
 
 void GribReducedGaussianInterpretor::interpretAsMatrix(const GribDecoder& grib, Matrix** matrix, const Transformation& transformation) const
 { 
 	interpretAsMatrix(grib, matrix);
-	//GribMatrix* helper = new GribMatrix(grib);
-	//*matrix = helper;
-	//double minlon, minlat, maxlon, maxlat;
-    	      
-	 //transformation.boundingBox(minlon, minlat, maxlon, maxlat);
-	 
-	// helper->prepare(maxlat, minlon, minlat, maxlon);
+
 }
 
 double GribReducedLatLonInterpretor::XResolution(const GribDecoder& grib) const
@@ -567,13 +474,13 @@ void GribReducedGaussianInterpretor::interpretAsMatrix(const GribDecoder& grib,
 	MagLog::dev() << "numberOfFieldValues[" << nb << "]" << "\n";
 	double missing = std::numeric_limits<double>::max();
 	grib.setDouble("missingValue", missing);
-	(*matrix)->missing(missing);
 
+	(*matrix)->missing(missing);
 	(*matrix)->akimaEnabled();
 
 	double north = grib.getDouble("latitudeOfFirstGridPointInDegrees");
 	double west  = grib.getDouble("longitudeOfFirstGridPointInDegrees");
-	double south = grib.getDouble("latitudeOfLastGridPointInDegrees");; 
+	double south = grib.getDouble("latitudeOfLastGridPointInDegrees");;
 	double east  = grib.getDouble("longitudeOfLastGridPointInDegrees");;
 	double plp   = grib.getDouble("PLPresent");
 	long res     = grib.getLong("numberOfParallelsBetweenAPoleAndTheEquator");
@@ -634,7 +541,7 @@ void GribReducedGaussianInterpretor::interpretAsMatrix(const GribDecoder& grib,
 			double d1 = (lon2 - lon)/(lon2-lon1);
 			double d2 = 1-d1;
 			double val;
-			
+
 			assert ( p1 < p.size() );
 			if (p2 == p.size()) {
 				(*matrix)->push_back(p[p1]);
@@ -836,7 +743,7 @@ pair<double, double> GribRotatedInterpretor::unrotate( double lat_y, double lon_
 	if( ZSXMXC < 0.0)                                                                             
 		ZXMXC = -ZXMXC;                                                          
 	double PXREG = ZXMXC + southPoleLon_;                        
-	return make_pair( PYREG, PXREG );                                     
+	return std::make_pair( PYREG, PXREG );                                     
 }               
 
 pair<double, double> GribRotatedInterpretor::rotate( double lat_y, double lon_x) const
@@ -866,7 +773,7 @@ pair<double, double> GribRotatedInterpretor::rotate( double lat_y, double lon_x)
   if( ZSXROT < 0.0)
     PXROT = -PXROT;
 
-  return make_pair( PYROT, PXROT );
+  return std::make_pair( PYROT, PXROT );
 }
 
 
@@ -875,7 +782,8 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 	  long im = grib.getLong("numberOfPointsAlongXAxis");
 	  long jm = grib.getLong("numberOfPointsAlongYAxis");
 	  
-	  *matrix = new Matrix(im, jm);
+	  RotatedMatrix *rotated = new RotatedMatrix(jm, im);
+	  *matrix = rotated;
 	  
 	
 	  
@@ -885,9 +793,11 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 	  
 
 	  MagLog::dev() << "numberOfFieldValues[" << nb << "]" << "\n";
+
 	  double missing = -std::numeric_limits<double>::max();
+
 	  missing = grib.getDouble("missingValue");    
-	  
+	  rotated->missing(missing);
 
 	  double north = grib.getDouble("latitudeOfFirstGridPointInDegrees");
 	  double west = grib.getDouble("longitudeOfFirstGridPointInDegrees");
@@ -909,54 +819,45 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 					
 			MagLog::debug() << "Version" << 	grib_get_api_version()<< endl;
     
-            vector<double> latm;
-            vector<double> lonm;
-            vector<double> data;
-            latm.reserve(nb);
-            lonm.reserve(nb);
-            data.reserve(nb);
+            vector<double>& data = rotated->values();
+            vector<double>& latm = rotated->rowsArray();
+            vector<double>& lonm = rotated->columnsArray();
+
             
 			size_t aux = size_t(nb);
 	        
             grib_get_double_array(grib.id(),"latitudes",&(latm.front()),&aux); 
-     
-            double minlat = *min_element(latm.begin(), latm.end());
-	         double maxlat =*max_element(latm.begin(), latm.end());;
-            grib_get_double_array(grib.id(),"longitudes",&(lonm.front()),&aux); 
-     
-            double minlon = *min_element(lonm.begin(), lonm.end());
-	         double maxlon =*max_element(lonm.begin(), lonm.end());;
-            
-             // This test needs to be improved ...
-            
-             if (minlon > 50.) minlon -=360;
-             if (maxlon > 50.) maxlon -=360;
-             
-			
-            grib_get_double_array(grib.id(),"values", &(data.front()),&aux); 
-            double min = *min_element(data.begin(), data.end());
-	         double max =*max_element(data.begin(), data.end());;
-    
+            grib_get_double_array(grib.id(),"values",&(data.front()),&aux);
+            grib_get_double_array(grib.id(),"longitudes",&(lonm.front()),&aux);
      for ( int i = 0; i < nb; i++) {
-     if (lonm[i] > 50.) lonm[i] = lonm[i] -360;
-       
         
-        if ( minlat > latm[i] ) minlat=latm[i];
-        if ( maxlat < latm[i] ) maxlat=latm[i];         
-        if ( minlon > lonm[i] ) minlon=lonm[i];
-        if ( maxlon < lonm[i] ) maxlon=lonm[i];
+        if ( lonm[i] > 180. )
+        	 lonm[i] -= 360.;
+
     }
-	  
-     
+/*
+     vector<double> left;
+     vector<double> right;
+    for (int l = 0; l < jm; l++ ) {
+    	left.push_back(lonm[l*im]);
+    	right.push_back(lonm[(im-1)+(l*im)]);
+
+
+    }
+   minlon = *min_element(left.begin(), left.end());
+   maxlon = *max_element(right.begin(), right.end());
       
-        MagLog::debug() << "lat [" << minlat << ", " << maxlat << "]" <<endl;
-		MagLog::debug()	<< "lon [" << minlon << ", " << maxlon << "]" <<endl;
+        MagLog::debug() << "lat [" << minlat << ", " << maxlat << "]" << std::endl;
+		MagLog::debug()	<< "lon [" << minlon << ", " << maxlon << "]" << std::endl;
 				
  
 	  
 
 
 					vector<double>& lon = (*matrix)->columnsAxis();
+					for (vector<double>::iterator l = lon.begin(); l != lon.end(); ++l )
+						if ( *l > 180) *l  -=360;
+
 					vector<double>& lat = (*matrix)->rowsAxis();
 
 					// for the lon we take the fisrt line :
@@ -981,7 +882,7 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 
 						int column = 0;
 						for (vector<double>::iterator x = lon.begin(); x != lon.end(); ++x) {
-							h->second.insert(make_pair(*x, make_pair(row, column)));
+							h->second.insert(make_pair(*x, std::make_pair(row, column)));
 
 							(*matrix)->push_back(missing);
 							column++;
@@ -1022,7 +923,12 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 							maxlon = std::max(lon11, lon12);
 							lon21 = lonm[c + (im* (r+1))];
 							minlon = std::min(minlon, lon21);
-							maxlon = std::max(maxlon, lon21);
+							maxlon = std::max(maxl  inline double column(int, int column) const {
+       	return regular_longitudes_[column];
+   }
+    inline double row(int row, int) const {
+    	return regular_latitudes_[row];
+    }on, lon21);
 							lon22 = lonm[(c+1) + (im* (r+1))];
 							if ( lon22 < lon21 )
 									lon22 +=360.;
@@ -1053,39 +959,26 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 
 									double lat = it->first;
 									double lon = lit->first;
-									pair<int, int> index = lit->second;
+									std::pair<int, int> index = lit->second;
 
 									// we interpolate at the point using the 4 points found!
 									double val = missing;
-									if ( val11 != missing && val12 != missing && val21 != missing && val22 != missing) {
-										double val1 =  	((lon12 - lon )/(lon12-lon11))*val11 + ((lon - lon11)/(lon12-lon11))*val12;
+									map<double, double> values;
+									vector<double> distances;
 
-										double val2 =  	((lon22 - lon )/(lon22-lon21))*val21 + ((lon - lon21)/(lon22-lon21))*val22;
-										if ( isnan(val1) ) {
-											if ( isnan(val2) ) {
-												val = missing;
-											}
-											else
-												val = ((lat - lat11)/(lat22-lat11))*val2;
-										}
-										else {
-											if ( isnan(val2) ) {
-												val =  	((lat22 - lat )/(lat22-lat11))*val1;
-											}
-											else {
-												val =  	((lat22 - lat )/(lat22-lat11))*val1 + ((lat - lat11)/(lat22-lat11))*val2;
-											}
-										}
+									distances.push_back((lon12 - lon)*(lon12 - lon) + (lat12 -lat) *(lat12 -lat));
+									values[distances.back()] = val12;
+									distances.push_back((lon11 - lon)*(lon11 - lon) + (lat11 -lat) *(lat11 -lat));
+									values[distances.back()] = val11;
+									distances.push_back((lon21 - lon)*(lon21 - lon) + (lat21 -lat) *(lat21 -lat));
+									values[distances.back()] = val21;
+									distances.push_back((lon22 - lon)*(lon22 - lon) + (lat22 -lat) *(lat22 -lat));
+									values[distances.back()] = val22;
+									if ( (**matrix)[index.second +( index.first*im)] == missing )
+										(**matrix)[index.second +( index.first*im)] = values[*std::min_element(distances.begin(), distances.end())];
+
+									//we compute the distance ... we take the vlaue of the nearest non_missing point!
 
-										if (isnan(val) || isinf(val) || isinf(-val) ) {
-											val = missing;
-										}
-									}
-									if (isnan(val) ) val = missing;
-									if ( (**matrix)[index.second +( index.first*im)] == missing ) {
-										(**matrix)[index.second +( index.first*im)] = val;
-                                        
-                                    }
 
 								}
 
@@ -1106,13 +999,14 @@ void GribLambertAzimutalInterpretor::interpretAsMatrix(const GribDecoder& grib,
 	        
 			MagLog::dev() << **matrix << "\n";
 			
+
+	    */
 		}
-	    
 		catch (MagicsException& e)
 		{
 			MagLog::error() << e << "\n";
 		}
-        
+
 }
 
 
@@ -1166,7 +1060,7 @@ void GribRotatedInterpretor::interpretAsMatrix(const GribDecoder& grib, Matrix**
 			{
 				if ( i == 0 )
 					(*matrix)->columnsAxis().push_back(x);
-				pair<double, double> point = unrotate(y, x);
+				std::pair<double, double> point = unrotate(y, x);
 				columns.push_back(point.second);
 				rows.push_back(point.first);
 				x  = west + (j+1)*lon;
@@ -1283,7 +1177,7 @@ void GribRotatedInterpretor::interpretAsMatrix(const GribDecoder& grib, Matrix**
 		
 		for ( int i = 0; i < nblon; i++ )
 		{
-			pair<double, double> point = unrotate(lat,lon);
+			std::pair<double, double> point = unrotate(lat,lon);
 			
 			
 			
@@ -1352,8 +1246,8 @@ void GribRotatedInterpretor::interpret2D(double& lat, double& lon, double& uc, d
 	double speed = sqrt((uc * uc) + (vc * vc));
 	double angle = atan2(vc,uc);
 
-	pair<double, double> pt = rotate(lat, lon);
-	pair<double, double> pv = unrotate(pt.first, pt.second + 1);
+	std::pair<double, double> pt = rotate(lat, lon);
+	std::pair<double, double> pv = unrotate(pt.first, pt.second + 1);
 
 	double rangle = atan2(pv.first - lat ,pv.second - lon) + angle;
 	//components.second *= f;
@@ -1364,7 +1258,7 @@ void GribRotatedInterpretor::interpret2D(double& lat, double& lon, double& uc, d
 
 }
 
-void GribRotatedInterpretor::raw(const GribDecoder& grib, const Transformation& transformation, const string& key, CustomisedPointsList& points) const
+void GribRotatedInterpretor::raw(const GribDecoder& grib, const Transformation& transformation, const string& key, vector<UserPoint>& points) const
 {
 	double factor, offset;
 	scaling(grib, factor, offset);
@@ -1387,15 +1281,8 @@ void GribRotatedInterpretor::raw(const GribDecoder& grib, const Transformation&
     	  std::stack<UserPoint>   duplicates;
     	  UserPoint geo(lon, lat);
     	  value = (value*factor)+offset;
+    	  transformation.populate(lon, lat, value, points);
 
-    	 transformation.wraparound(geo, duplicates);
-		 while (duplicates.empty() == false) {
-			UserPoint pt = duplicates.top();
-			CustomisedPoint *point = new CustomisedPoint(pt.x(), pt.y(), "");
-			point->insert(make_pair(key, value));
-			points.push_back(point);
-			duplicates.pop();
-		 }
 
       }
 
@@ -1406,3 +1293,253 @@ void GribRotatedInterpretor::raw(const GribDecoder& grib, const Transformation&
 
 
 }
+
+void GribLambertInterpretor::interpretAsMatrix(const GribDecoder& grib, Matrix** matrix) const
+{
+	  long im = grib.getLong("numberOfPointsAlongXAxis");
+	  long jm = grib.getLong("numberOfPointsAlongYAxis");
+
+	  *matrix = new Matrix(im, jm);
+
+
+
+	  size_t nb;
+	  grib_get_size(grib.id(), "values", &nb);
+
+
+
+	  MagLog::dev() << "numberOfFieldValues[" << nb << "]" << "\n";
+	  double missing = -std::numeric_limits<double>::max();
+	  missing = grib.getDouble("missingValue");
+
+
+	  double north = grib.getDouble("latitudeOfFirstGridPointInDegrees");
+	  double west = grib.getDouble("longitudeOfFirstGridPointInDegrees");
+
+	  MagLog::dev() << "NewAPI---> area[" << west << ", " << north << "]" << "\n";
+
+
+
+
+
+
+
+      		try
+		{
+			Timer time("Grib", "lambert");
+
+
+
+
+			MagLog::debug() << "Version" << 	grib_get_api_version()<< endl;
+
+            vector<double> latm;
+            vector<double> lonm;
+            vector<double> data;
+            latm.reserve(nb);
+            lonm.reserve(nb);
+            data.reserve(nb);
+
+			size_t aux = size_t(nb);
+
+            grib_get_double_array(grib.id(),"latitudes",&(latm.front()),&aux);
+
+            double minlat = *min_element(latm.begin(), latm.end());
+	         double maxlat =*max_element(latm.begin(), latm.end());;
+            grib_get_double_array(grib.id(),"longitudes",&(lonm.front()),&aux);
+
+            double minlon = *min_element(lonm.begin(), lonm.end());
+	         double maxlon =*max_element(lonm.begin(), lonm.end());;
+
+             // This test needs to be improved ...
+
+             if (minlon > 50.) minlon -=360;
+             if (maxlon > 50.) maxlon -=360;
+
+
+            grib_get_double_array(grib.id(),"values", &(data.front()),&aux);
+            double min = *min_element(data.begin(), data.end());
+	         double max =*max_element(data.begin(), data.end());;
+
+     for ( int i = 0; i < nb; i++) {
+     if (lonm[i] > 50.) lonm[i] = lonm[i] -360;
+
+
+        if ( minlat > latm[i] ) minlat=latm[i];
+        if ( maxlat < latm[i] ) maxlat=latm[i];
+        if ( minlon > lonm[i] ) minlon=lonm[i];
+        if ( maxlon < lonm[i] ) maxlon=lonm[i];
+    }
+
+
+
+        MagLog::debug() << "lat [" << minlat << ", " << maxlat << "]" << std::endl;
+		MagLog::debug()	<< "lon [" << minlon << ", " << maxlon << "]" << std::endl;
+
+
+
+
+
+					vector<double>& lon = (*matrix)->columnsAxis();
+					vector<double>& lat = (*matrix)->rowsAxis();
+
+					// for the lon we take the fisrt line :
+					double inci = (maxlon - minlon)/((im) -1);
+					double incj = (maxlat - minlat)/((jm) -1);
+					for (int i = 0; i < im; i++)
+						lon.push_back(minlon + (i*inci));
+					// for the lon we take the fisrt column :
+					for (int i = 0; i < jm; i++)
+						lat.push_back(minlat + (i*incj));
+
+					typedef map<double, map<double, pair<int, int> > > Helper;
+
+					//typedef map<double, double> Helper;
+					Helper helper;
+					int row = 0;
+					for (vector<double>::iterator y = lat.begin(); y != lat.end(); ++y) {
+
+						helper.insert(make_pair(*y, map<double, pair<int, int>  >()));
+
+						Helper::iterator h = helper.find(*y);
+
+						int column = 0;
+						for (vector<double>::iterator x = lon.begin(); x != lon.end(); ++x) {
+							h->second.insert(make_pair(*x, std::make_pair(row, column)));
+
+							(*matrix)->push_back(missing);
+							column++;
+
+						}
+						row++;
+					}
+
+
+
+					int r = 0;
+					int c = 0;
+
+					double lat11, lat12, lat21, lat22;
+					double lon11, lon12, lon21, lon22;
+					double val11, val12, val21, val22;
+
+					for (int r = 0; r < jm -1; r++) {
+						for (int c = 0;  c < im -1; c++) {
+
+							lat11 = latm[c + (im*r)];
+
+							lat12 = latm[(c+1) + (im*r)];
+							minlat = std::min(lat11, lat12);
+							maxlat = std::max(lat11, lat12);
+							lat21 = latm[c + (im* (r+1))];
+							minlat = std::min(minlat, lat21);
+							maxlat = std::max(maxlat, lat21);
+							lat22 = latm[(c+1) + (im* (r+1))];
+							minlat = std::min(minlat, lat22);
+							maxlat = std::max(maxlat, lat22);
+
+							lon11 = lonm[c + (im*r)];
+							lon12 = lonm[(c+1) + (im*r)];
+							if ( lon12 < lon11 )
+								lon12 +=360.;
+							minlon = std::min(lon11, lon12);
+							maxlon = std::max(lon11, lon12);
+							lon21 = lonm[c + (im* (r+1))];
+							minlon = std::min(minlon, lon21);
+							maxlon = std::max(maxlon, lon21);
+							lon22 = lonm[(c+1) + (im* (r+1))];
+							if ( lon22 < lon21 )
+									lon22 +=360.;
+							minlon = std::min(minlon, lon22);
+							maxlon = std::max(maxlon, lon22);
+
+							val11 = data[c + (im*r)];
+							val12 = data[(c+1) + (im*r)];
+							val21 = data[c + (im* (r+1))];
+							val22 = data[(c+1) + (im* (r+1))];
+
+
+
+							// find the points from the helper!
+							Helper::iterator low,up;
+							low = helper.lower_bound(minlat);
+							up = helper.lower_bound(maxlat);
+							if ( low == helper.end() || up == helper.end() )
+								break;
+							for (Helper::iterator it = low; it != up; ++it) {
+								if (it == helper.end()) break;
+								map<double, pair<int, int> >&  lons = it->second;
+								map<double, pair<int, int> >::iterator llow = lons.lower_bound(minlon);
+								map<double, pair<int, int> >::iterator lup = lons.lower_bound(maxlon);
+								if ( llow == lons.end() || lup == lons.end() )
+									break;;
+								for (map<double, pair<int, int> >::iterator lit = llow; lit != lup; ++lit) {
+
+									double lat = it->first;
+									double lon = lit->first;
+									std::pair<int, int> index = lit->second;
+
+									// we interpolate at the point using the 4 points found!
+									double val = missing;
+									if ( val11 != missing && val12 != missing && val21 != missing && val22 != missing) {
+										double val1 =  	((lon12 - lon )/(lon12-lon11))*val11 + ((lon - lon11)/(lon12-lon11))*val12;
+
+										double val2 =  	((lon22 - lon )/(lon22-lon21))*val21 + ((lon - lon21)/(lon22-lon21))*val22;
+										if ( isnan(val1) ) {
+											if ( isnan(val2) ) {
+												val = missing;
+											}
+											else
+												val = ((lat - lat11)/(lat22-lat11))*val2;
+										}
+										else {
+											if ( isnan(val2) ) {
+												val =  	((lat22 - lat )/(lat22-lat11))*val1;
+											}
+											else {
+												val =  	((lat22 - lat )/(lat22-lat11))*val1 + ((lat - lat11)/(lat22-lat11))*val2;
+											}
+										}
+
+										if (isnan(val) || isinf(val) || isinf(-val) ) {
+											val = missing;
+										}
+									}
+									if (isnan(val) ) val = missing;
+									if ( (**matrix)[index.second +( index.first*im)] == missing ) {
+										(**matrix)[index.second +( index.first*im)] = val;
+
+                                    }
+
+								}
+
+
+							}
+
+
+					}
+
+
+					 (*matrix)->setMapsAxis();
+                     (*matrix)->missing(missing);
+					}
+
+
+
+
+
+			MagLog::dev() << **matrix << "\n";
+
+		}
+
+		catch (MagicsException& e)
+		{
+			MagLog::error() << e << "\n";
+		}
+
+}
+void GribLambertInterpretor::print(ostream& out)  const
+{
+	out << "GribLambertInterpretor[";
+	out << "]";
+}
diff --git a/src/decoders/GribRegularInterpretor.h b/src/decoders/GribRegularInterpretor.h
index c4d58f9..1b3030b 100644
--- a/src/decoders/GribRegularInterpretor.h
+++ b/src/decoders/GribRegularInterpretor.h
@@ -127,9 +127,10 @@ public:
 	GribRotatedInterpretor(): original_(false) {}
 	virtual ~GribRotatedInterpretor() {}
 	
-	pair<double, double> unrotate(double lat, double lon) const;
-	pair<double, double> rotate(double lat, double lon) const;
-	void raw(const GribDecoder&, const Transformation&, const string&, CustomisedPointsList&) const;
+	std::pair<double, double> unrotate(double lat, double lon) const;
+	std::pair<double, double> rotate(double lat, double lon) const;
+
+	void raw(const GribDecoder&, const Transformation&, const string&, vector<UserPoint>&) const;
 	void keepOriginal(bool original) { original_ = original; }
 	void interpretAsMatrix(const GribDecoder&, Matrix**) const; 
 	void interpret2D(double&, double&, double&, double&) const;
@@ -163,6 +164,23 @@ protected:
    
 };
 
+class GribLambertInterpretor: public GribLambertAzimutalInterpretor {
+
+public:
+	GribLambertInterpretor() {}
+	virtual ~GribLambertInterpretor() {}
+
+
+	void interpretAsMatrix(const GribDecoder&, Matrix**) const;
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const;
+
+
+
+};
+
 
 
 
diff --git a/src/decoders/ImportActionAttributes.h b/src/decoders/ImportActionAttributes.h
deleted file mode 100644
index d099b81..0000000
--- a/src/decoders/ImportActionAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ImportActionAttributes.h
-    \brief Definition of ImportAction Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef ImportActionAttributes_H
-#define ImportActionAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ImportActionAttributes 
-{
-public:
-//  --  constructor
-    ImportActionAttributes();
-    
-//  --  destructor
-    virtual ~ImportActionAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ImportActionAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string path_;
-	string valid_time_;
-	string service_;
-	string url_;
-	string short_name_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ImportActionAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/InputData.cc b/src/decoders/InputData.cc
index f0ef16d..3836149 100644
--- a/src/decoders/InputData.cc
+++ b/src/decoders/InputData.cc
@@ -45,11 +45,12 @@ void InputData::print(ostream& out)  const
 }
 
 
-void  InputData::dateSetting(vector<string>& dates, vector<double>& values, DateTime& base)
+void  InputData::dateSetting(vector<string>& dates, vector<double>& values, DateTime& base, bool update)
 {
 	if ( dates.empty() )
 		return;
-	base = DateTime(dates.front());
+	if ( update )
+		base = DateTime(dates.front());
 	for (vector<string>:: iterator date = dates.begin(); date != dates.end(); ++ date ) {
 		DateTime d(*date);
 		values.push_back(d-base);
@@ -57,6 +58,7 @@ void  InputData::dateSetting(vector<string>& dates, vector<double>& values, Date
 }
 
 
+
 void  InputData::numberSetting(vector<double>& from, vector<double>& values)
 {
 	std::copy(from.begin(), from.end(), back_inserter(values));
@@ -68,8 +70,8 @@ void  InputData::prepare()
     if ( !x_values_.empty() ) return;
 
     if ( magCompare(x_type_, "date" ) ) {
-    	dateSetting(date_x_, x_values_, baseDateX_);
-    	dateSetting(date_x2_, x2_values_, baseDateX_);
+    	dateSetting(date_x_, x_values_, baseDateX_, true);
+    	dateSetting(date_x2_, x2_values_, baseDateX_, false);
     }
     else {
     	numberSetting(x_,  x_values_);
@@ -77,8 +79,8 @@ void  InputData::prepare()
     	numberSetting(longitudes_,  x_values_);
     }
     if ( magCompare(y_type_, "date" ) ) {
-      	dateSetting(date_y_, y_values_, baseDateY_);
-      	dateSetting(date_y2_, y2_values_, baseDateY_);
+      	dateSetting(date_y_, y_values_, baseDateY_, true);
+      	dateSetting(date_y2_, y2_values_, baseDateY_, false);
      }
      else {
       	numberSetting(y_,  y_values_);
@@ -103,16 +105,7 @@ void  InputData::prepare()
     	++y;
 
     }
-    while ( x2 != x2_values_.rend() && y2 != y2_values_.rend() ) {
-        	double val = 0;
-        	if ( v != values_.end() ) {
-        		val = *v;
-        		++v;
-        	}
-        	push_back(new UserPoint(*x2, *y2, val));
-        	++x2;
-        	++y2;
-        }
+
 }
  
 void InputData::customisedPoints(const Transformation& transformation, const std::set<string>& needs, CustomisedPointsList& out, bool)
@@ -168,7 +161,7 @@ void InputData::customisedPoints(const Transformation& transformation, const std
 		double angle = 0;
 		if ( xc != x_component_.end() && yc != y_component_.end() ) {
 			speed = sqrt( (*xc * *xc)  +  (*yc * *yc) );
-			angle = ( atan2(*xc, *yc)*(180/M_PI) );
+			angle = ( 270. - atan2(*yc, *xc)*(180/M_PI) );
 			if ( angle == 0 ) angle =0.1;
 			(*point)["x_component"] = *(xc++);
 			(*point)["y_component"] = *(yc++);
@@ -200,15 +193,29 @@ void InputData::customisedPoints(const Transformation& transformation, const std
 		return;
 	vector<double>::reverse_iterator xr2 = x2_values_.rbegin();
 	vector<double>::reverse_iterator yr2 = y2_values_.rbegin();
+	double shiftx = 0;
+	double shifty = 0;
+	if ( magCompare(x_type_, "date" ) ) {
+		DateTime ref(transformation.getReferenceX());
+		shiftx = ref - baseDateX_;
+
+	}
+	if ( magCompare(y_type_, "date" ) ) {
+		DateTime ref(transformation.getReferenceX());
+		shifty = ref - baseDateY_;
+
+	}
 	while (  xr2 != x2_values_.rend() && yr2 != y2_values_.rend()  ) {
+		double x = *xr2;
+
 		CustomisedPoint* point = new CustomisedPoint();
 		if ( same(*xr2, x_missing_) )
 			point->missing(true);
-		(*point)["x"] = *(xr2++);
+		(*point)["x"] = *(xr2++) - shiftx;
 
 		if ( same(*yr2, y_missing_) )
 			point->missing(true);
-		(*point)["y"] = *(yr2++);
+		(*point)["y"] = *(yr2++) -shifty;
 		out.push_back(point);
 	}
 }
@@ -295,12 +302,12 @@ void InputData::visit(Transformation& transformation)
 			}
 			if ( magCompare(x_type_, "date" ) ) {
 
-				transformation.setDataMinX(min, baseDateX_);
-				transformation.setDataMaxX(max, baseDateX_);
+				transformation.setDataMinMaxX(min, max, baseDateX_);
+
 			}
 			else {
-				transformation.setMinX(min);
-				transformation.setMaxX(max);
+				transformation.setMinMaxX(min, max);
+
 			}
 		}
 		if ( transformation.getAutomaticY() ) {
@@ -317,12 +324,12 @@ void InputData::visit(Transformation& transformation)
 				if ( max < *y ) max = *y;
 			}
 			if ( magCompare(y_type_, "date" ) ) {
-				transformation.setDataMinY(min, baseDateY_);
-				transformation.setDataMaxY(max, baseDateY_);
+				transformation.setDataMinMaxY(min, max, baseDateY_);
+
 			}
 			else {
-				transformation.setMinY(min);
-				transformation.setMaxY(max);
+				transformation.setMinMaxY(min, max);
+
 			}
 		}
 
diff --git a/src/decoders/InputData.h b/src/decoders/InputData.h
index 51daecc..58137d9 100644
--- a/src/decoders/InputData.h
+++ b/src/decoders/InputData.h
@@ -70,7 +70,7 @@ public:
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
-	 void  dateSetting(vector<string>&, vector<double>& , DateTime&);
+	 void  dateSetting(vector<string>&, vector<double>& , DateTime&, bool);
 	 void  numberSetting(vector<double>& , vector<double>&);
 	
      vector<double> x_values_;
diff --git a/src/decoders/InputMatrix.cc b/src/decoders/InputMatrix.cc
index 197d3ce..7461502 100644
--- a/src/decoders/InputMatrix.cc
+++ b/src/decoders/InputMatrix.cc
@@ -30,6 +30,7 @@
 #include "InputMatrix.h"
 #include "Transformation.h"
 #include "Timer.h"
+#include <limits>
 
 using namespace magics;
 
@@ -71,6 +72,7 @@ MatrixHandler& InputMatrix::matrix()
 
 void InputMatrix::filter(Matrix& data)
 {
+	data.missing(std::numeric_limits<double>::max());
 	for ( unsigned int i = 0; i < data.size(); i++ )
 		if ( data[i] <= suppress_below_ || data[i] >= suppress_above_ ) 
 			data[i] = data.missing();
@@ -133,7 +135,7 @@ pair<double, double> InputMatrix::sd2uv(double s, double d)
 	double a = 90 - (d);
 	double pi = 3.14/180.;
 	a *= pi;
-    return make_pair(s * -1 * cos(a), s*-1* sin(a));
+    return std::make_pair(s * -1 * cos(a), s*-1* sin(a));
 }
 
 
@@ -165,7 +167,7 @@ void InputMatrix::prepareComponents()
 					v.push_back(direction_->missing());
 			}
 			else {
-				pair<double, double> uv = sd2uv(*speed, *angle);
+				std::pair<double, double> uv = sd2uv(*speed, *angle);
 				u.push_back(uv.first);
 				v.push_back(uv.second);
 			}
diff --git a/src/decoders/InputMatrix.h b/src/decoders/InputMatrix.h
index dbdf122..73b67e0 100644
--- a/src/decoders/InputMatrix.h
+++ b/src/decoders/InputMatrix.h
@@ -53,7 +53,7 @@ public:
 	virtual MatrixHandler& xComponent();
 	virtual MatrixHandler& yComponent();
 	void prepareComponents();
-	pair<double, double> sd2uv(double s, double d);
+	std::pair<double, double> sd2uv(double s, double d);
 	virtual PointsHandler& points(const Transformation&);
 	
 	void customisedPoints(const BasicThinningMethod&, const Transformation&, const std::set<string>&, CustomisedPointsList& );
diff --git a/src/decoders/InputMatrixInterpretor.cc b/src/decoders/InputMatrixInterpretor.cc
index 33a41df..69eab5e 100644
--- a/src/decoders/InputMatrixInterpretor.cc
+++ b/src/decoders/InputMatrixInterpretor.cc
@@ -102,11 +102,11 @@ Matrix* InputMatrixRegularInterpretor::geoInterpret(Matrix* in, const InputMatri
 	
 	for (int i = 0; i < nblat; i++) {		
 		in->rowsAxis().push_back(lat);
+	    MagLog::dev()<< in->rowsAxis().back() << endl;
 		lat += latitude_step_;
 	}
 	in->setMapsAxis();
 	in->missing(std::numeric_limits<double>::max());
-	MagLog::dev()<< in << endl;
     return in;
 	}
 
diff --git a/src/decoders/LandgramDecoder.cc b/src/decoders/LandgramDecoder.cc
index 163b806..ed03970 100644
--- a/src/decoders/LandgramDecoder.cc
+++ b/src/decoders/LandgramDecoder.cc
@@ -124,12 +124,12 @@ void LandgramDecoder::decode()
 		for ( vector<double>::const_iterator height =heights_.begin(); height != heights_.end(); ++height) {
 			matrix_.rowsAxis().push_back(*height);
 		}	
-		MagLog::dev()<< " step-->" <<endl;
+		MagLog::dev()<< " step-->" << std::endl;
 		for ( vector<double>::const_iterator step = steps_.begin(); step != steps_.end(); ++step) {
 			matrix_.columnsAxis().push_back(*step);
 			MagLog::dev()<< *step << " ";
 		}
-		MagLog::dev()<< endl << "<--- step" <<endl;
+		MagLog::dev()<< endl << "<--- step" << std::endl;
 		matrix_.setMapsAxis();
 //		int i = 0;
 		for (unsigned int height = 0; height < heights_.size(); height++)
diff --git a/src/decoders/Makefile.am b/src/decoders/Makefile.am
deleted file mode 100644
index bcc1628..0000000
--- a/src/decoders/Makefile.am
+++ /dev/null
@@ -1,113 +0,0 @@
-noinst_LTLIBRARIES	= libdecoders.la
-
-if MAGICS_NETCDF
-NETCDF_noi_H 		= Netcdf.h NetcdfDecoder.h NetcdfInterpretor.h \
-		NetcdfMatrixInterpretor.h \
-		NetcdfGeoMatrixInterpretor.h NetcdfGeopointsInterpretor.h \
-		NetcdfVectorInterpretor.h NetcdfOrcaInterpretor.h\
-		NetcdfConvention.h NetcdfMarsConvention.h \
-		NetcdfDecoderAttributes.h  NetcdfInterpretorAttributes.h NetcdfGeopointsInterpretorAttributes.h NetcdfMatrixInterpretorAttributes.h \
-		NetcdfGeoPolarMatrixInterpretorAttributes.h NetcdfGeoMatrixInterpretorAttributes.h NetcdfGeoVectorInterpretorAttributes.h NetcdfVectorInterpretorAttributes.h
-
-NETCDF_la_S 		= Netcdf.cc NetcdfDecoder.cc NetcdfInterpretor.cc \
-		NetcdfMatrixInterpretor.cc NetcdfVectorInterpretor.cc \
-		NetcdfGeoMatrixInterpretor.cc NetcdfGeopointsInterpretor.cc \
-		NetcdfOrcaInterpretor.cc \
-		NetcdfConvention.cc NetcdfMarsConvention.cc
-ATTRIBUTES_NETCDF	= 	NetcdfDecoderAttributes.cc NetcdfInterpretorAttributes.cc \
-		NetcdfGeopointsInterpretorAttributes.cc NetcdfXYpointsInterpretorAttributes.cc \
-		NetcdfGeoMatrixInterpretorAttributes.cc NetcdfOrcaInterpretorAttributes.cc NetcdfMatrixInterpretorAttributes.cc\
-		NetcdfGeoPolarMatrixInterpretorAttributes.cc \
- 		NetcdfVectorInterpretorAttributes.cc NetcdfGeoVectorInterpretorAttributes.cc 
-endif
-
-if MAGICS_GRIB
-GRIB_noi_H =		GribDecoder.h GribDecoderAttributes.h GribLoopAttributes.h DateGribLoopStepAttributes.h GeoPointsDecoderAttributes.h \
-			GribInterpretor.h GribRegularInterpretor.h GribSatelliteInterpretor.h GribAddressMode.h
-GRIB_la_S =		GribDecoder.cc GribRegularInterpretor.cc GribSatelliteInterpretor.cc GribLoopStep.cc
-ATTRIBUTES_GRIB	= 	GribDecoderAttributes.cc DateGribLoopStepAttributes.cc GribLoopAttributes.cc	
-endif
-
-
-if MAGICS_BUFR
-BUFR_noi_H =		ObsDecoder.h EpsBufr.h
-BUFR_la_S =		ObsDecoder.cc EpsBufr.cc
-ATTRIBUTES_BUFR	= 	ObsDecoderAttributes.cc EpsBufrAttributes.cc
-endif
-
-if MAGICS_SPOT
-SPOT_noi_H =		EpsgramDecoder.h  ClassicMtgDecoder.h 
-SPOT_la_S =		EpsgramDecoder.cc ClassicMtgDecoder.cc  
-ATTRIBUTES_SPOT	= 	EpsgramDecoderAttributes.cc EfigramDecoderAttributes.cc ClassicMtgDecoderAttributes.cc 
-endif
-
-
-ATTRIBUTES =	${ATTRIBUTES_GRIB} ${ATTRIBUTES_BUFR} ${ATTRIBUTES_SPOT} ${ATTRIBUTES_NETCDF} ShapeDecoderAttributes.cc MapGenDecoderAttributes.cc  \
-		TitleTemplateAttributes.cc \
-		EpsXmlInputAttributes.cc \
-		InputDataAttributes.cc TableDecoderAttributes.cc InputMatrixAttributes.cc SymbolInputAttributes.cc \
-		InputMatrixRegularInterpretorAttributes.cc InputMatrixIrregularInterpretorAttributes.cc XYListAttributes.cc \
-		SimplePolylineInputAttributes.cc \
-		BoxPlotDecoderAttributes.cc  \
-		GeoPointsDecoderAttributes.cc ImportActionAttributes.cc LandgramDecoderAttributes.cc \
-		ObsStatDecoderAttributes.cc BinningObjectAttributes.cc 
-
-include_H =	DateTime.h ObsStatDecoder.h ObsStatDecoderAttributes.h $(GRIB_noi_H) $(SPOT_noi_H) $(NETPBM_noi_H) $(BUFR_noi_H) $(NETCDF_noi_H) \
-		EpsXmlInput.h MatrixTestDecoder.h \
-		XYList.h XYList.cc \
-		TitleTemplate.h \
-		TitleField.h TitleStringField.h TitleMetaField.h \
-		LocalTable.h \
-		ImportAction.h \
-		SymbolInput.h  \
-		InputMatrix.h InputMatrix.cc \
-		InputData.h InputData.cc \
-		TableDecoder.h TableDecoder.cc \
-		InputMatrixInterpretor.h \
-		BoxPlotDecoder.h \
-		EfiDataDecoder.h EfiLegendEntry.h \
-		LandgramDecoder.h \
-		WindMode.h \
-		MapGenDecoder.cc MapGenDecoder.h ShapeDecoder.h shapefil.h \
-		SimplePolylineInput.h GribLoopStep.h \
-		GeoPointsDecoder.h ObsDecoderAttributes.h ImportActionAttributes.h ThinningMethod.h BinningObject.h BinningObjectAttributes.h
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= $(noinst_H)
-else
-include_HEADERS = 
-noinst_HEADERS	= $(noinst_H) $(include_H)
-endif
-
-nodist_libdecoders_la_SOURCES = ${ATTRIBUTES}
-
-libdecoders_la_SOURCES	=  $(GRIB_la_S) $(SPOT_la_S) $(BUFR_la_S) $(NETCDF_la_S) \
-		DateTime.cc  \
-		LocalTable.cc Date.cc Time.cc \
-		EpsXmlInput.cc \
-		TitleTemplate.cc  \
-		TitleField.cc TitleStringField.cc TitleMetaField.cc  \
-		ShapeDecoder.cc \
-		WindMode.cc \
-		MatrixTestDecoder.cc \
-		InputMatrixInterpretor.cc  \
-		SimplePolylineInput.cc \
-		BoxPlotDecoder.cc \
-		ThinningMethod.cc \
-		GeoPointsDecoder.cc LandgramDecoder.cc \
-		ObsStatDecoder.cc \
-		shpopen.c dbfopen.c \
-		BinningObject.cc  XYList.cc MapGenDecoder.cc  InputMatrix.cc \
-		InputData.cc TableDecoder.cc
-
-
-libdecoders_la_LDFLAGS	= -no-undefined
-AM_CXXFLAGS		= $(MAGICS_VISIBILITY) -DINTEGER_IS_INT -Dfortfloat=float -Dfortint=int -Dboolean=bool # for MVObs !!!
-AM_CPPFLAGS		=  $(GRIBAPI_CXXFLAGS) $(SPOT_INCLUDE)  -I$(top_srcdir)/src/libTable -I$(top_srcdir)/src/MvObs -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/include
-#AM_CPPFLAGS		=  $(GRIBAPI_CXXFLAGS) -I/usr/local/lib/metaps/lib/spot_database/new/include -I$(top_srcdir)/src/MvObs -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src -I$(top_srcdir)/src/common -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/include
-
-if MAGICS_QT
-AM_CPPFLAGS += -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-endif
-
diff --git a/src/decoders/Makefile.in b/src/decoders/Makefile.in
deleted file mode 100644
index c39d115..0000000
--- a/src/decoders/Makefile.in
+++ /dev/null
@@ -1,963 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-#AM_CPPFLAGS		=  $(GRIBAPI_CXXFLAGS) -I/usr/local/lib/metaps/lib/spot_database/new/include -I$(top_srcdir)/src/MvObs -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src -I$(top_srcdir)/src/common -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/include
- at MAGICS_QT_TRUE@am__append_1 = -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-subdir = src/decoders
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libdecoders_la_LIBADD =
-am__libdecoders_la_SOURCES_DIST = GribDecoder.cc \
-	GribRegularInterpretor.cc GribSatelliteInterpretor.cc \
-	GribLoopStep.cc EpsgramDecoder.cc ClassicMtgDecoder.cc \
-	ObsDecoder.cc EpsBufr.cc Netcdf.cc NetcdfDecoder.cc \
-	NetcdfInterpretor.cc NetcdfMatrixInterpretor.cc \
-	NetcdfVectorInterpretor.cc NetcdfGeoMatrixInterpretor.cc \
-	NetcdfGeopointsInterpretor.cc NetcdfOrcaInterpretor.cc \
-	NetcdfConvention.cc NetcdfMarsConvention.cc DateTime.cc \
-	LocalTable.cc Date.cc Time.cc EpsXmlInput.cc TitleTemplate.cc \
-	TitleField.cc TitleStringField.cc TitleMetaField.cc \
-	ShapeDecoder.cc WindMode.cc MatrixTestDecoder.cc \
-	InputMatrixInterpretor.cc SimplePolylineInput.cc \
-	BoxPlotDecoder.cc ThinningMethod.cc GeoPointsDecoder.cc \
-	LandgramDecoder.cc ObsStatDecoder.cc shpopen.c dbfopen.c \
-	BinningObject.cc XYList.cc MapGenDecoder.cc InputMatrix.cc \
-	InputData.cc TableDecoder.cc
- at MAGICS_GRIB_TRUE@am__objects_1 = GribDecoder.lo \
- at MAGICS_GRIB_TRUE@	GribRegularInterpretor.lo \
- at MAGICS_GRIB_TRUE@	GribSatelliteInterpretor.lo GribLoopStep.lo
- at MAGICS_SPOT_TRUE@am__objects_2 = EpsgramDecoder.lo \
- at MAGICS_SPOT_TRUE@	ClassicMtgDecoder.lo
- at MAGICS_BUFR_TRUE@am__objects_3 = ObsDecoder.lo EpsBufr.lo
- at MAGICS_NETCDF_TRUE@am__objects_4 = Netcdf.lo NetcdfDecoder.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfInterpretor.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfMatrixInterpretor.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfVectorInterpretor.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoMatrixInterpretor.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfGeopointsInterpretor.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfOrcaInterpretor.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfConvention.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfMarsConvention.lo
-am_libdecoders_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3) $(am__objects_4) DateTime.lo LocalTable.lo \
-	Date.lo Time.lo EpsXmlInput.lo TitleTemplate.lo TitleField.lo \
-	TitleStringField.lo TitleMetaField.lo ShapeDecoder.lo \
-	WindMode.lo MatrixTestDecoder.lo InputMatrixInterpretor.lo \
-	SimplePolylineInput.lo BoxPlotDecoder.lo ThinningMethod.lo \
-	GeoPointsDecoder.lo LandgramDecoder.lo ObsStatDecoder.lo \
-	shpopen.lo dbfopen.lo BinningObject.lo XYList.lo \
-	MapGenDecoder.lo InputMatrix.lo InputData.lo TableDecoder.lo
- at MAGICS_GRIB_TRUE@am__objects_5 = GribDecoderAttributes.lo \
- at MAGICS_GRIB_TRUE@	DateGribLoopStepAttributes.lo \
- at MAGICS_GRIB_TRUE@	GribLoopAttributes.lo
- at MAGICS_BUFR_TRUE@am__objects_6 = ObsDecoderAttributes.lo \
- at MAGICS_BUFR_TRUE@	EpsBufrAttributes.lo
- at MAGICS_SPOT_TRUE@am__objects_7 = EpsgramDecoderAttributes.lo \
- at MAGICS_SPOT_TRUE@	EfigramDecoderAttributes.lo \
- at MAGICS_SPOT_TRUE@	ClassicMtgDecoderAttributes.lo
- at MAGICS_NETCDF_TRUE@am__objects_8 = NetcdfDecoderAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfGeopointsInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfXYpointsInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoMatrixInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfOrcaInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfMatrixInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoPolarMatrixInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfVectorInterpretorAttributes.lo \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoVectorInterpretorAttributes.lo
-am__objects_9 = $(am__objects_5) $(am__objects_6) $(am__objects_7) \
-	$(am__objects_8) ShapeDecoderAttributes.lo \
-	MapGenDecoderAttributes.lo TitleTemplateAttributes.lo \
-	EpsXmlInputAttributes.lo InputDataAttributes.lo \
-	TableDecoderAttributes.lo InputMatrixAttributes.lo \
-	SymbolInputAttributes.lo \
-	InputMatrixRegularInterpretorAttributes.lo \
-	InputMatrixIrregularInterpretorAttributes.lo \
-	XYListAttributes.lo SimplePolylineInputAttributes.lo \
-	BoxPlotDecoderAttributes.lo GeoPointsDecoderAttributes.lo \
-	ImportActionAttributes.lo LandgramDecoderAttributes.lo \
-	ObsStatDecoderAttributes.lo BinningObjectAttributes.lo
-nodist_libdecoders_la_OBJECTS = $(am__objects_9)
-libdecoders_la_OBJECTS = $(am_libdecoders_la_OBJECTS) \
-	$(nodist_libdecoders_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libdecoders_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(AM_CXXFLAGS) $(CXXFLAGS) $(libdecoders_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
-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_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-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_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libdecoders_la_SOURCES) $(nodist_libdecoders_la_SOURCES)
-DIST_SOURCES = $(am__libdecoders_la_SOURCES_DIST)
-am__include_HEADERS_DIST = DateTime.h ObsStatDecoder.h \
-	ObsStatDecoderAttributes.h GribDecoder.h \
-	GribDecoderAttributes.h GribLoopAttributes.h \
-	DateGribLoopStepAttributes.h GeoPointsDecoderAttributes.h \
-	GribInterpretor.h GribRegularInterpretor.h \
-	GribSatelliteInterpretor.h GribAddressMode.h EpsgramDecoder.h \
-	ClassicMtgDecoder.h ObsDecoder.h EpsBufr.h Netcdf.h \
-	NetcdfDecoder.h NetcdfInterpretor.h NetcdfMatrixInterpretor.h \
-	NetcdfGeoMatrixInterpretor.h NetcdfGeopointsInterpretor.h \
-	NetcdfVectorInterpretor.h NetcdfOrcaInterpretor.h \
-	NetcdfConvention.h NetcdfMarsConvention.h \
-	NetcdfDecoderAttributes.h NetcdfInterpretorAttributes.h \
-	NetcdfGeopointsInterpretorAttributes.h \
-	NetcdfMatrixInterpretorAttributes.h \
-	NetcdfGeoPolarMatrixInterpretorAttributes.h \
-	NetcdfGeoMatrixInterpretorAttributes.h \
-	NetcdfGeoVectorInterpretorAttributes.h \
-	NetcdfVectorInterpretorAttributes.h EpsXmlInput.h \
-	MatrixTestDecoder.h XYList.h XYList.cc TitleTemplate.h \
-	TitleField.h TitleStringField.h TitleMetaField.h LocalTable.h \
-	ImportAction.h SymbolInput.h InputMatrix.h InputMatrix.cc \
-	InputData.h InputData.cc TableDecoder.h TableDecoder.cc \
-	InputMatrixInterpretor.h BoxPlotDecoder.h EfiDataDecoder.h \
-	EfiLegendEntry.h LandgramDecoder.h WindMode.h MapGenDecoder.cc \
-	MapGenDecoder.h ShapeDecoder.h shapefil.h \
-	SimplePolylineInput.h GribLoopStep.h GeoPointsDecoder.h \
-	ObsDecoderAttributes.h ImportActionAttributes.h \
-	ThinningMethod.h BinningObject.h BinningObjectAttributes.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = DateTime.h ObsStatDecoder.h \
-	ObsStatDecoderAttributes.h GribDecoder.h \
-	GribDecoderAttributes.h GribLoopAttributes.h \
-	DateGribLoopStepAttributes.h GeoPointsDecoderAttributes.h \
-	GribInterpretor.h GribRegularInterpretor.h \
-	GribSatelliteInterpretor.h GribAddressMode.h EpsgramDecoder.h \
-	ClassicMtgDecoder.h ObsDecoder.h EpsBufr.h Netcdf.h \
-	NetcdfDecoder.h NetcdfInterpretor.h NetcdfMatrixInterpretor.h \
-	NetcdfGeoMatrixInterpretor.h NetcdfGeopointsInterpretor.h \
-	NetcdfVectorInterpretor.h NetcdfOrcaInterpretor.h \
-	NetcdfConvention.h NetcdfMarsConvention.h \
-	NetcdfDecoderAttributes.h NetcdfInterpretorAttributes.h \
-	NetcdfGeopointsInterpretorAttributes.h \
-	NetcdfMatrixInterpretorAttributes.h \
-	NetcdfGeoPolarMatrixInterpretorAttributes.h \
-	NetcdfGeoMatrixInterpretorAttributes.h \
-	NetcdfGeoVectorInterpretorAttributes.h \
-	NetcdfVectorInterpretorAttributes.h EpsXmlInput.h \
-	MatrixTestDecoder.h XYList.h XYList.cc TitleTemplate.h \
-	TitleField.h TitleStringField.h TitleMetaField.h LocalTable.h \
-	ImportAction.h SymbolInput.h InputMatrix.h InputMatrix.cc \
-	InputData.h InputData.cc TableDecoder.h TableDecoder.cc \
-	InputMatrixInterpretor.h BoxPlotDecoder.h EfiDataDecoder.h \
-	EfiLegendEntry.h LandgramDecoder.h WindMode.h MapGenDecoder.cc \
-	MapGenDecoder.h ShapeDecoder.h shapefil.h \
-	SimplePolylineInput.h GribLoopStep.h GeoPointsDecoder.h \
-	ObsDecoderAttributes.h ImportActionAttributes.h \
-	ThinningMethod.h BinningObject.h BinningObjectAttributes.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libdecoders.la
- at MAGICS_NETCDF_TRUE@NETCDF_noi_H = Netcdf.h NetcdfDecoder.h NetcdfInterpretor.h \
- at MAGICS_NETCDF_TRUE@		NetcdfMatrixInterpretor.h \
- at MAGICS_NETCDF_TRUE@		NetcdfGeoMatrixInterpretor.h NetcdfGeopointsInterpretor.h \
- at MAGICS_NETCDF_TRUE@		NetcdfVectorInterpretor.h NetcdfOrcaInterpretor.h\
- at MAGICS_NETCDF_TRUE@		NetcdfConvention.h NetcdfMarsConvention.h \
- at MAGICS_NETCDF_TRUE@		NetcdfDecoderAttributes.h  NetcdfInterpretorAttributes.h NetcdfGeopointsInterpretorAttributes.h NetcdfMatrixInterpretorAttributes.h \
- at MAGICS_NETCDF_TRUE@		NetcdfGeoPolarMatrixInterpretorAttributes.h NetcdfGeoMatrixInterpretorAttributes.h NetcdfGeoVectorInterpretorAttributes.h NetcdfVectorInterpretorAttributes.h
-
- at MAGICS_NETCDF_TRUE@NETCDF_la_S = Netcdf.cc NetcdfDecoder.cc NetcdfInterpretor.cc \
- at MAGICS_NETCDF_TRUE@		NetcdfMatrixInterpretor.cc NetcdfVectorInterpretor.cc \
- at MAGICS_NETCDF_TRUE@		NetcdfGeoMatrixInterpretor.cc NetcdfGeopointsInterpretor.cc \
- at MAGICS_NETCDF_TRUE@		NetcdfOrcaInterpretor.cc \
- at MAGICS_NETCDF_TRUE@		NetcdfConvention.cc NetcdfMarsConvention.cc
-
- at MAGICS_NETCDF_TRUE@ATTRIBUTES_NETCDF = NetcdfDecoderAttributes.cc NetcdfInterpretorAttributes.cc \
- at MAGICS_NETCDF_TRUE@		NetcdfGeopointsInterpretorAttributes.cc NetcdfXYpointsInterpretorAttributes.cc \
- at MAGICS_NETCDF_TRUE@		NetcdfGeoMatrixInterpretorAttributes.cc NetcdfOrcaInterpretorAttributes.cc NetcdfMatrixInterpretorAttributes.cc\
- at MAGICS_NETCDF_TRUE@		NetcdfGeoPolarMatrixInterpretorAttributes.cc \
- at MAGICS_NETCDF_TRUE@ 		NetcdfVectorInterpretorAttributes.cc NetcdfGeoVectorInterpretorAttributes.cc 
-
- at MAGICS_GRIB_TRUE@GRIB_noi_H = GribDecoder.h GribDecoderAttributes.h GribLoopAttributes.h DateGribLoopStepAttributes.h GeoPointsDecoderAttributes.h \
- at MAGICS_GRIB_TRUE@			GribInterpretor.h GribRegularInterpretor.h GribSatelliteInterpretor.h GribAddressMode.h
-
- at MAGICS_GRIB_TRUE@GRIB_la_S = GribDecoder.cc GribRegularInterpretor.cc GribSatelliteInterpretor.cc GribLoopStep.cc
- at MAGICS_GRIB_TRUE@ATTRIBUTES_GRIB = GribDecoderAttributes.cc DateGribLoopStepAttributes.cc GribLoopAttributes.cc	
- at MAGICS_BUFR_TRUE@BUFR_noi_H = ObsDecoder.h EpsBufr.h
- at MAGICS_BUFR_TRUE@BUFR_la_S = ObsDecoder.cc EpsBufr.cc
- at MAGICS_BUFR_TRUE@ATTRIBUTES_BUFR = ObsDecoderAttributes.cc EpsBufrAttributes.cc
- at MAGICS_SPOT_TRUE@SPOT_noi_H = EpsgramDecoder.h  ClassicMtgDecoder.h 
- at MAGICS_SPOT_TRUE@SPOT_la_S = EpsgramDecoder.cc ClassicMtgDecoder.cc  
- at MAGICS_SPOT_TRUE@ATTRIBUTES_SPOT = EpsgramDecoderAttributes.cc EfigramDecoderAttributes.cc ClassicMtgDecoderAttributes.cc 
-ATTRIBUTES = ${ATTRIBUTES_GRIB} ${ATTRIBUTES_BUFR} ${ATTRIBUTES_SPOT} ${ATTRIBUTES_NETCDF} ShapeDecoderAttributes.cc MapGenDecoderAttributes.cc  \
-		TitleTemplateAttributes.cc \
-		EpsXmlInputAttributes.cc \
-		InputDataAttributes.cc TableDecoderAttributes.cc InputMatrixAttributes.cc SymbolInputAttributes.cc \
-		InputMatrixRegularInterpretorAttributes.cc InputMatrixIrregularInterpretorAttributes.cc XYListAttributes.cc \
-		SimplePolylineInputAttributes.cc \
-		BoxPlotDecoderAttributes.cc  \
-		GeoPointsDecoderAttributes.cc ImportActionAttributes.cc LandgramDecoderAttributes.cc \
-		ObsStatDecoderAttributes.cc BinningObjectAttributes.cc 
-
-include_H = DateTime.h ObsStatDecoder.h ObsStatDecoderAttributes.h $(GRIB_noi_H) $(SPOT_noi_H) $(NETPBM_noi_H) $(BUFR_noi_H) $(NETCDF_noi_H) \
-		EpsXmlInput.h MatrixTestDecoder.h \
-		XYList.h XYList.cc \
-		TitleTemplate.h \
-		TitleField.h TitleStringField.h TitleMetaField.h \
-		LocalTable.h \
-		ImportAction.h \
-		SymbolInput.h  \
-		InputMatrix.h InputMatrix.cc \
-		InputData.h InputData.cc \
-		TableDecoder.h TableDecoder.cc \
-		InputMatrixInterpretor.h \
-		BoxPlotDecoder.h \
-		EfiDataDecoder.h EfiLegendEntry.h \
-		LandgramDecoder.h \
-		WindMode.h \
-		MapGenDecoder.cc MapGenDecoder.h ShapeDecoder.h shapefil.h \
-		SimplePolylineInput.h GribLoopStep.h \
-		GeoPointsDecoder.h ObsDecoderAttributes.h ImportActionAttributes.h ThinningMethod.h BinningObject.h BinningObjectAttributes.h
-
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(noinst_H) $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = $(noinst_H)
-nodist_libdecoders_la_SOURCES = ${ATTRIBUTES}
-libdecoders_la_SOURCES = $(GRIB_la_S) $(SPOT_la_S) $(BUFR_la_S) $(NETCDF_la_S) \
-		DateTime.cc  \
-		LocalTable.cc Date.cc Time.cc \
-		EpsXmlInput.cc \
-		TitleTemplate.cc  \
-		TitleField.cc TitleStringField.cc TitleMetaField.cc  \
-		ShapeDecoder.cc \
-		WindMode.cc \
-		MatrixTestDecoder.cc \
-		InputMatrixInterpretor.cc  \
-		SimplePolylineInput.cc \
-		BoxPlotDecoder.cc \
-		ThinningMethod.cc \
-		GeoPointsDecoder.cc LandgramDecoder.cc \
-		ObsStatDecoder.cc \
-		shpopen.c dbfopen.c \
-		BinningObject.cc  XYList.cc MapGenDecoder.cc  InputMatrix.cc \
-		InputData.cc TableDecoder.cc
-
-libdecoders_la_LDFLAGS = -no-undefined
-AM_CXXFLAGS = $(MAGICS_VISIBILITY) -DINTEGER_IS_INT -Dfortfloat=float -Dfortint=int -Dboolean=bool # for MVObs !!!
-AM_CPPFLAGS = $(GRIBAPI_CXXFLAGS) $(SPOT_INCLUDE) \
-	-I$(top_srcdir)/src/libTable -I$(top_srcdir)/src/MvObs \
-	-I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common \
-	-I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/drivers \
-	-I$(top_srcdir)/include $(am__append_1)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cc .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/decoders/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/decoders/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libdecoders.la: $(libdecoders_la_OBJECTS) $(libdecoders_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libdecoders_la_LINK)  $(libdecoders_la_OBJECTS) $(libdecoders_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinningObject.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinningObjectAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ClassicMtgDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ClassicMtgDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Date.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DateGribLoopStepAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DateTime.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EfigramDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsBufr.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsBufrAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsXmlInput.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsXmlInputAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsgramDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsgramDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GeoPointsDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GeoPointsDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribLoopAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribLoopStep.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribRegularInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribSatelliteInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImportActionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputData.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputDataAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputMatrix.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputMatrixAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputMatrixInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputMatrixIrregularInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputMatrixRegularInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LandgramDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LandgramDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LocalTable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MapGenDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MapGenDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MatrixTestDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Netcdf.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfConvention.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoMatrixInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoMatrixInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoPolarMatrixInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoVectorInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeopointsInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeopointsInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfMarsConvention.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfMatrixInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfMatrixInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfOrcaInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfOrcaInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfVectorInterpretor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfVectorInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfXYpointsInterpretorAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsStatDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsStatDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ShapeDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ShapeDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimplePolylineInput.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimplePolylineInputAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolInputAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TableDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TableDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ThinningMethod.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Time.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TitleField.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TitleMetaField.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TitleStringField.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TitleTemplate.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TitleTemplateAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XYList.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XYListAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dbfopen.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/shpopen.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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/decoders/Netcdf.cc b/src/decoders/Netcdf.cc
index a912881..5a5ec51 100644
--- a/src/decoders/Netcdf.cc
+++ b/src/decoders/Netcdf.cc
@@ -73,28 +73,29 @@ void TypedAccessor<F,T>::get (vector<F>& from, vector<long>& start, vector<long>
 	var.id_->get(from, &edges[0]);
 } 
 
-Netcdf::Netcdf(const string& path) : file_(path.c_str())
+Netcdf::Netcdf(const string& path, const string& method) : file_(path.c_str())
 {
-	if (file_.is_valid() == false) throw NoSuchNetcdfFile(path);
+	if (file_.is_valid() == false) {
+		throw NoSuchNetcdfFile(path);
+	}
 	for ( int v = 0; v < file_.num_vars(); v++)
 	{ 
 		NcVar* var = file_.get_var(v); 
-		//MagLog::debug() << "Netcdf [" << path << "] " << ": add Variable --->" << var->name() << "\n"; 
-		variables_.insert(std::make_pair(var->name(), NetVariable(var->name(), var, file_)));
-		// Check that the variable is not a dimension! if not, add it to the dataset.
-	    //MagLog::debug() << "Netcdf [" << path << "] " << ": add Variable --->" << var->name() << "\n"; 
+		variables_.insert(std::make_pair(var->name(), NetVariable(var->name(), var, file_, method)));
+
 
-		if (isVariable(var)) dataset_.insert(std::make_pair(var->name(), NetVariable(var->name(), var, file_)));
+		if (isVariable(var)) dataset_.insert(std::make_pair(var->name(), NetVariable(var->name(), var, file_, method)));
 	}
 	MagLog::debug() << "Initialisation of  Netcdf [" << path << "] OK! " << "\n";  
 	for ( int v = 0; v < file_.num_atts(); v++)
 		{
 			NcAtt* attr = file_.get_att(v);
-			//MagLog::debug() << "Netcdf [" << path << "] " << ": add Variable --->" << var->name() << "\n";
 			attributes_.insert(std::make_pair(attr->name(), NetAttribute(attr->name(), attr)));
-
-
-
+		}
+	for ( int d = 0; d < file_.num_dims(); d++)
+		{
+			NcDim* var = file_.get_dim(d);
+			dimensions_.insert(std::make_pair(var->name(), NetDimension(var)));
 		}
 }
 
@@ -127,14 +128,17 @@ struct Index
 		if ( tools_ == 0) tools_ = new  map<NcType, Index*>();
 		tools_->insert(std::make_pair(type, this));
 	}
-	virtual int operator()(const string&,  NcValues*, long)
+	virtual int operator()(const string& val,  NcValues* values, long nb )
 	{
-		throw MagicsException("Index not implemented.."); 
+		assert(false);
 	}
 	static int get(const NcType& type, const string& val,  NcValues* values, long nb)
 	{
 		map<NcType, Index*>::const_iterator tool = tools_->find(type);
-		if ( tool == tools_->end() ) throw new MagicsException("No Index available");
+		if ( tool == tools_->end() ) {
+			assert(false);
+			throw new MagicsException("No Index available");
+		}
         
 		return (*(*tool).second)(val, values, nb);
 	}
@@ -198,14 +202,19 @@ struct IntIndex: public Index
 
 struct StringIndex: public Index
 {
-	StringIndex() : Index(ncInt) {}
+	StringIndex() : Index(ncChar) {}
     
 	virtual int operator()(const string& val,  NcValues* values, long nb )
 	{
+
 		for (int i = 0; i < nb; i++)
 		{
 			string read(values->as_string(i));
-			if ( read == val) return i;
+
+			if ( read == val) {
+
+				return i/64;
+			}
 		}
 		throw MagicsException("No such value : " + val);
 	}
@@ -216,23 +225,41 @@ map<NcType, Index*>*  Index::tools_ = 0;
 static FloatIndex float_index;
 static IntIndex int_index;
 static DoubleIndex double_index;
+static StringIndex string_index;
 
 int  NetDimension::index(const string& val)
 {
-	return Index::get(variable_->type(), val, variable_->values(), variable_->num_vals());
+	int index = atoi(val.c_str());
+	// if (index < )
+	return index;
 }
 
+int  NetDimension::value(const string& val)
+{
+	if ( variable_ ) {
+		int index = Index::get(variable_->type(), val, variable_->values(), variable_->num_vals());
+
+		return index;
+	}
+	// we assume the user is using a simple ..
+	int index = atoi(val.c_str());
+	MagLog::warning() << " Could not find variable return index instead " << index << endl;
+	//if (index < )
+	return index;
+}
 
 void NetDimension::first(const string& val)
 {
-	if ( variable_ ) first_ = index(val);
+
+	first_ = (method_ == "value") ? value(val) : index(val);
+
 }
 
 
 void NetDimension::last(const string& val)
 {
-	if (!variable_ ) return;
-	int last = index(val);     
+
+	int last =  (method_ == "value") ? value(val) : index(val);
 	if ( last < first_ )
 	{
 		MagLog::warning() << "last position (" + val + ") < first position: exchange " << "\n";
@@ -244,7 +271,7 @@ void NetDimension::last(const string& val)
 }
 
 
-NetVariable::NetVariable(const string& name, NcVar* id, const NcFile& file): name_(name), id_(id) 
+NetVariable::NetVariable(const string& name, NcVar* id, const NcFile& file, const string& method): name_(name), id_(id)
 	{
 		for (int d = 0; d < id_->num_dims(); d++)
 		{
@@ -257,6 +284,7 @@ NetVariable::NetVariable(const string& name, NcVar* id, const NcFile& file): nam
 		         
 		    }
 			dimensions_[dim->name()]= NetDimension(dim, var, d); 
+			dimensions_[dim->name()].method_ = method;
 		}
 		for (int a = 0; a < id_->num_atts(); a++)
 		{
@@ -281,7 +309,7 @@ namespace magics {
 static TypedAccessor<short, float>  short_float_accessor(ncShort);
 static TypedAccessor<int, float>  int_float_accessor(ncInt);
 static TypedAccessor<float, float>  float_float_accessor(ncFloat);
-static TypedAccessor<double, float> double_float_accessor(ncDouble);
+static TypedAccessor<double, float> double_float_accessor(ncFloat);
 
 static TypedAccessor<ncbyte, double>  byte_double_accessor(ncByte);
 static TypedAccessor<short, double>  short_double_accessor(ncShort);
diff --git a/src/decoders/Netcdf.h b/src/decoders/Netcdf.h
index 6a4cda3..095ce41 100644
--- a/src/decoders/Netcdf.h
+++ b/src/decoders/Netcdf.h
@@ -68,10 +68,15 @@ struct NetDimension
     long   first_;
     long   dim_;
     long   index_;
+    string method_;
+
     NcDim* id_;
     NcVar* variable_;
- 
+
     NetDimension() {}
+    NetDimension(NcDim* id): name_(id->name()), size_(id->size()),
+            first_(0), dim_(size_), index_(0),
+            id_(id), variable_(0) {}
     NetDimension(NcDim* id, NcVar* variable, long index) : 
         name_(id->name()), size_(id->size()), 
         first_(0), dim_(size_), index_(index), 
@@ -80,7 +85,9 @@ struct NetDimension
         
     void first(const string&);
     void last(const string&);
+
     int  index(const string&);
+    int  value(const string&);
     
     void print(ostream& s) const
     {
@@ -135,7 +142,7 @@ public:
     static map<NcType, Accessor<T>*>* accessors_;
     static void release() {
  		if ( accessors_ ) 
- 			for ( typename map<NcType, Accessor<T>*>::iterator a = accessors_.begin(); a != accessors_.end(); ++a) {
+ 			for ( typename map<NcType, Accessor<T>*>::iterator a = accessors_->begin(); a != accessors_->end(); ++a) {
  				Accessor<T>* accessor = a->second;
  				 a->second = 0;
  				 delete accessor;
@@ -166,12 +173,12 @@ struct NetVariable
 	map<string, NetDimension> dimensions_;
 	map<string, NetAttribute> attributes_;
     
-	NetVariable(const string& name, NcVar* id, const NcFile& file);
+	NetVariable(const string& name, NcVar* id, const NcFile& file, const string& method);
 
 	void getStartingPoint(vector<long>& dims)
 	{
 		dims.resize(dimensions_.size());
-		for (map<string, NetDimension>::const_iterator dim = dimensions_.begin(); dim != dimensions_.end(); ++dim) 
+		for (map<string, NetDimension>::iterator dim = dimensions_.begin(); dim != dimensions_.end(); ++dim)
 		{
 			dims[(*dim).second.index_] = (*dim).second.first_;
 		}
@@ -180,7 +187,7 @@ struct NetVariable
 	void getDimensions(vector<long>& dims)
 	{
 		dims.resize(dimensions_.size());
-		for (map<string, NetDimension>::const_iterator dim = dimensions_.begin(); dim != dimensions_.end(); ++dim) 
+		for (map<string, NetDimension>::iterator dim = dimensions_.begin(); dim != dimensions_.end(); ++dim)
 		{
 			dims[(*dim).second.index_] = (*dim).second.dim_;
 		}
@@ -236,7 +243,7 @@ struct NetVariable
     double getDefaultMissing();
 
     template <class T>
-    void get(vector<T>& vals, map<string, string> first, map<string, string> last)  
+    void get(vector<T>& vals, map<string, string> first, map<string, string> last)
     {
         for (map<string, string>::const_iterator f = first.begin(); f != first.end(); ++f) {
             setFirstPoint((*f).first, (*f).second);
@@ -270,7 +277,7 @@ struct NetVariable
 class Netcdf { 
 public:
 
-    Netcdf(const string&);
+    Netcdf(const string&, const string&);
 
     virtual ~Netcdf();
 	
@@ -306,8 +313,13 @@ public:
     
     int getDimension(const string& name)
     {
-        NcDim* dim = file_.get_dim(name.c_str());
-        return dim->size();
+    	  map<string, NetDimension>::iterator dim = dimensions_.find(name);
+    	  if ( dim == dimensions_.end() ) {
+    		  MagLog::error() << name << " : do not find such dimension\n" << endl;
+
+    		  throw NoSuchNetcdfDimension(name);
+    	  }
+    	  return dim->second.size_;
     }
 
     template <class T>
@@ -345,6 +357,7 @@ public:
 protected:
 	virtual void print(ostream&) const; 
 	map<string, NetVariable> variables_;
+	map<string, NetDimension> dimensions_;
 	map<string, NetVariable> dataset_;
 	map<string, NetAttribute> attributes_;
      
diff --git a/src/decoders/NetcdfDecoder.cc b/src/decoders/NetcdfDecoder.cc
index 3d282ad..69f67a6 100644
--- a/src/decoders/NetcdfDecoder.cc
+++ b/src/decoders/NetcdfDecoder.cc
@@ -129,7 +129,7 @@ void NetcdfDecoder::visit(TextVisitor& text)
 PointsHandler&  NetcdfDecoder::points(const Transformation& transformation, bool all)
 {
 	  PointsList points;
-	  (*interpretor_).interpretAsPoints(points, transformation);
+	  valid_ = (*interpretor_).interpretAsPoints(points, transformation);
 
 	  for ( PointsList::iterator point = points.begin(); point != points.end(); ++point ) {
 		  	  stack<UserPoint> pts;
diff --git a/src/decoders/NetcdfDecoder.h b/src/decoders/NetcdfDecoder.h
index 7b1bd15..1c44aaf 100644
--- a/src/decoders/NetcdfDecoder.h
+++ b/src/decoders/NetcdfDecoder.h
@@ -81,7 +81,7 @@ public:
     
     MatrixHandler& matrix() {
         MagLog::dev() << "NetcdfDecoder::matrix! " << "\n";
-        (*interpretor_).interpretAsMatrix(&data_); 
+        valid_ = (*interpretor_).interpretAsMatrix(&data_);
         this->matrixHandlers_.push_back(new MatrixHandler(*data_));
         return *(this->matrixHandlers_.back());
     } 
diff --git a/src/decoders/NetcdfDecoderAttributes.h b/src/decoders/NetcdfDecoderAttributes.h
deleted file mode 100644
index d5ba6e0..0000000
--- a/src/decoders/NetcdfDecoderAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfDecoderAttributes.h
-    \brief Definition of NetcdfDecoder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfDecoderAttributes_H
-#define NetcdfDecoderAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "NetcdfInterpretor.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfDecoderAttributes 
-{
-public:
-//  --  constructor
-    NetcdfDecoderAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfDecoderAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfDecoderAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<NetcdfInterpretor> interpretor_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfDecoderAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfGeoMatrixInterpretor.cc b/src/decoders/NetcdfGeoMatrixInterpretor.cc
index fc52545..b8b127a 100644
--- a/src/decoders/NetcdfGeoMatrixInterpretor.cc
+++ b/src/decoders/NetcdfGeoMatrixInterpretor.cc
@@ -44,16 +44,16 @@ NetcdfGeoMatrixInterpretor::~NetcdfGeoMatrixInterpretor()
 
 
 
-void NetcdfGeoMatrixInterpretor::interpretAsMatrix(Matrix** data)
+bool NetcdfGeoMatrixInterpretor::interpretAsMatrix(Matrix** data)
 {
-	if ( *data ) return;
+	if ( *data ) return false;
 	
 	matrix_ = new Matrix();
 	matrix_->akimaEnabled();
 	*data = matrix_;
 
    
-	Netcdf netcdf(path_);
+	Netcdf netcdf(path_, dimension_method_);
 
 	double missing_value = netcdf.getDefaultMissing(field_);
 
@@ -112,7 +112,9 @@ void NetcdfGeoMatrixInterpretor::interpretAsMatrix(Matrix** data)
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		return false;
 	}
+	return true;
 }
 
 /*
@@ -126,9 +128,9 @@ void NetcdfGeoMatrixInterpretor::print(ostream& out)  const
 	out << "]";
 }
 
-void NetcdfGeoMatrixInterpretor::interpretAsPoints(PointsList& list)
+bool NetcdfGeoMatrixInterpretor::interpretAsPoints(PointsList& list)
 {
-	Netcdf netcdf(path_);
+	Netcdf netcdf(path_, dimension_method_);
 	
 	// get the data ...
 	try
@@ -148,7 +150,7 @@ void NetcdfGeoMatrixInterpretor::interpretAsPoints(PointsList& list)
 		for (unsigned int  lat  =0 ; lat < latitudes.size(); lat+=latitude_sample_) {
 			for ( unsigned int lon = 0; lon < longitudes.size(); lon+=longitude_sample_) {
 				val = (lat* longitudes.size() + lon);
-				if (val >= values.size() ) return;
+				if ( val >= values.size() ) return true;
 				if ( values[val] < suppress_below_ ) continue;
 				if ( values[val] > suppress_above_ ) continue;
 				if ( same(values[val], missing_value ) ) continue;
@@ -160,7 +162,10 @@ void NetcdfGeoMatrixInterpretor::interpretAsPoints(PointsList& list)
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		return false;
 	}
+
+	return true;
 }
 
 void NetcdfGeoMatrixInterpretor::statsData(map<string,vector<double> >& stats)
@@ -186,7 +191,7 @@ void NetcdfGeoMatrixInterpretor::visit(MetaDataCollector& mdc)
 	mdc["value"]=field_;	
 	mdc["statsType"]="scalar";
 	
-	Netcdf nc(path_);
+	Netcdf nc(path_, dimension_method_);
 	
 	string attrKey;
 	string attrVal;		
diff --git a/src/decoders/NetcdfGeoMatrixInterpretor.h b/src/decoders/NetcdfGeoMatrixInterpretor.h
index 8fe90d6..b4fe1e7 100644
--- a/src/decoders/NetcdfGeoMatrixInterpretor.h
+++ b/src/decoders/NetcdfGeoMatrixInterpretor.h
@@ -68,8 +68,8 @@ public:
     	NetcdfInterpretorAttributes::copy(other); 
     	NetcdfGeoMatrixInterpretorAttributes::copy(other); 
     }
-    virtual void interpretAsMatrix(Matrix**);
-    void interpretAsPoints(PointsList&);
+    bool interpretAsMatrix(Matrix**);
+    bool interpretAsPoints(PointsList&);
 
     virtual void statsData(map<string,vector<double> >&);
     virtual void visit(MetaDataCollector&);
diff --git a/src/decoders/NetcdfGeoMatrixInterpretorAttributes.h b/src/decoders/NetcdfGeoMatrixInterpretorAttributes.h
deleted file mode 100644
index 69beab9..0000000
--- a/src/decoders/NetcdfGeoMatrixInterpretorAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfGeoMatrixInterpretorAttributes.h
-    \brief Definition of NetcdfGeoMatrixInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfGeoMatrixInterpretorAttributes_H
-#define NetcdfGeoMatrixInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfGeoMatrixInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfGeoMatrixInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfGeoMatrixInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfGeoMatrixInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string latitude_;
-	string longitude_;
-	int longitude_sample_;
-	int latitude_sample_;
-	string primary_index_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfGeoMatrixInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfGeoPolarMatrixInterpretorAttributes.h b/src/decoders/NetcdfGeoPolarMatrixInterpretorAttributes.h
deleted file mode 100644
index 710e6c0..0000000
--- a/src/decoders/NetcdfGeoPolarMatrixInterpretorAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfGeoPolarMatrixInterpretorAttributes.h
-    \brief Definition of NetcdfGeoPolarMatrixInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfGeoPolarMatrixInterpretorAttributes_H
-#define NetcdfGeoPolarMatrixInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfGeoPolarMatrixInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfGeoPolarMatrixInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfGeoPolarMatrixInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfGeoPolarMatrixInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string speed_;
-	string direction_;
-	string latitude_;
-	string longitude_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfGeoPolarMatrixInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfGeoVectorInterpretorAttributes.h b/src/decoders/NetcdfGeoVectorInterpretorAttributes.h
deleted file mode 100644
index 6be49b5..0000000
--- a/src/decoders/NetcdfGeoVectorInterpretorAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfGeoVectorInterpretorAttributes.h
-    \brief Definition of NetcdfGeoVectorInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfGeoVectorInterpretorAttributes_H
-#define NetcdfGeoVectorInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfGeoVectorInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfGeoVectorInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfGeoVectorInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfGeoVectorInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string x_component_;
-	string y_component_;
-	string latitude_;
-	string longitude_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfGeoVectorInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfGeopointsInterpretor.cc b/src/decoders/NetcdfGeopointsInterpretor.cc
index 708e201..372104d 100644
--- a/src/decoders/NetcdfGeopointsInterpretor.cc
+++ b/src/decoders/NetcdfGeopointsInterpretor.cc
@@ -28,6 +28,7 @@
 */
 
 #include "NetcdfGeopointsInterpretor.h"
+#include "TextVisitor.h"
 #include "Factory.h"
 #include "Netcdf.h"
 #include <limits>
@@ -48,7 +49,7 @@ NetcdfGeopointsInterpretor::~NetcdfGeopointsInterpretor()
 static void setDim(Netcdf& netcdf, const string& name, vector<double>& values, map<string, string>& first, map<string, string>& last)
 {
     try {
-       netcdf.get(name, values, first, last); 
+       netcdf.get(name, values, first, last);
     }
     catch (...) {
         int dim = netcdf.getDimension(name);
@@ -58,8 +59,8 @@ static void setDim(Netcdf& netcdf, const string& name, vector<double>& values, m
 }
 
 
-void NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list, const Transformation& projection) {
-    Netcdf netcdf(path_);
+bool NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list, const Transformation& projection) {
+    Netcdf netcdf(path_, dimension_method_);
 	
 	// get the data ...
 	try
@@ -110,11 +111,13 @@ void NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list, const Trans
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		return false;
 	}
+	return true;
 }
-void NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list)
+bool NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list)
 {
-	Netcdf netcdf(path_);
+	Netcdf netcdf(path_, dimension_method_);
 	
 	// get the data ...
 	try
@@ -164,7 +167,9 @@ void NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list)
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		return  false;
 	}
+	return true;
 }
 
 void NetcdfGeopointsInterpretor::visit(MetaDataCollector& mdc)
@@ -179,7 +184,7 @@ void NetcdfGeopointsInterpretor::visit(MetaDataCollector& mdc)
 	string attrKey;
 	string attrVal;		
 
-	Netcdf nc(path_);
+	Netcdf nc(path_, dimension_method_);
 	//Value attributes
 	getAttributes(nc,field_,attrKey,attrVal);		
 	if(!attrKey.empty())
@@ -198,15 +203,7 @@ void NetcdfGeopointsInterpretor::visit(ValuesCollector& vcp,PointsList& points)
   
   	vcp.setCollected(true);
 	
-	/*if(!matrix_ && stats_.find("value") == stats_.end())
-	{
-		points.setCollected(true);	
-	}
-	else
-	{  	
-		points.setCollected(true);
-	}*/
-	
+
 	
 	if(points.size() <=0)
 	   return;
@@ -272,9 +269,8 @@ NetcdfXYpointsInterpretor::~NetcdfXYpointsInterpretor()
 
 
 
-
-void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const Transformation& projection) {
-    Netcdf netcdf(path_);
+bool NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const Transformation& projection) {
+    Netcdf netcdf(path_, dimension_method_);
 
 	// get the data ...
 	try
@@ -291,6 +287,9 @@ void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const Transf
 		setDim(netcdf, x_, xs, first, last);
 		setDim(netcdf, y_, ys, first, last);
 
+		double xmissing = netcdf.getDefaultMissing(x_);
+		double ymissing = netcdf.getDefaultMissing(y_);
+
 		vector<double>::iterator x = xs.begin();
 		vector<double>::iterator y = ys.begin();
 		vector<double>::const_iterator val = values.begin();
@@ -301,9 +300,12 @@ void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const Transf
 				 value = *val;
 				 val++;
 			 }
+			 if ( !same(*x,xmissing)  ||   !same(*y,ymissing) ) {
+
             UserPoint*  xy = new UserPoint(*x,*y,value);
             if ( projection.in(*xy) )
 			    list.push_back(xy);
+			 }
 			x++;
 			y++;
 		}
@@ -311,17 +313,26 @@ void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const Transf
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		return false;
 	}
+
+	return true;
 }
-void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list)
+
+bool NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list)
+{
+	std::set<string> needs;
+	return interpretAsPoints(list, needs);
+}
+bool NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const std::set<string>& needs)
 {
-	Netcdf netcdf(path_);
+	Netcdf netcdf(path_, dimension_method_);
 
 	// get the data ...
 	try
 	{
 		vector<double> ys;
-		vector<double> xs;
+		vector<double> xs, datex;
 		vector<double> values;
 		map<string, string> first, last;
 		setDimensions(dimension_, first, last);
@@ -330,6 +341,13 @@ void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list)
 		}
 		setDim(netcdf, x_, xs, first, last);
 		setDim(netcdf, y_, ys, first, last);
+		//double xmissing = netcdf.getDefaultMissing(x_);
+		double ymissing = netcdf.getDefaultMissing(y_);
+		ymissing = netcdf.getVariableAttribute(y_, missing_attribute_, ymissing);
+
+		 baseDateX_ = "";
+		 if ( !reference_date(netcdf, x_, refDateX_, baseDateX_, xs, datex) )
+		        	cf_date(netcdf, x_, refDateX_, baseDateX_, xs, datex);
 
 		vector<double>::iterator y = ys.begin();
 		vector<double>::iterator x = xs.begin();
@@ -344,16 +362,37 @@ void NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list)
 			 	value = *val;
 			 	val++;
 			}
-			list.push_back(new UserPoint(*x,*y,value));
+
+			list.push_back(new UserPoint(*x,*y,value, same(*y,ymissing) ));
+
 			x++;
 			y++;
 
 		}
+		if ( needs.find("area")  == needs.end() )
+				return true;
+		vector<double> y2s;
+		vector<double> x2s;
+
+		setDim(netcdf, x2_, x2s, first, last);
+		setDim(netcdf, y2_, y2s, first, last);
+
+		vector<double>::reverse_iterator x2 = x2s.rbegin();
+		vector<double>::reverse_iterator y2 = y2s.rbegin();
+		while (  x2 != x2s.rend() && y2 != y2s.rend()  ) {
+				list.push_back(new UserPoint(*x2,*y2));
+				++x2;
+				++y2;
+		}
+
 	}
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		return false;
 	}
+
+	return true;
 }
 
 /*
@@ -372,27 +411,41 @@ void NetcdfXYpointsInterpretor::visit(Transformation& transformation)
 
 
 	try {
+		refDateX_ = ( transformation.getAutomaticX() ) ? "" : transformation.getReferenceX();
+		refDateY_ = ( transformation.getAutomaticY() ) ? "" : transformation.getReferenceY();
 		PointsList points;
 		interpretAsPoints(points);
 
-		transformation.setMinX(points.minX());
-		transformation.setMaxX(points.maxX());
-		transformation.setMinY(points.minY());
-		transformation.setMaxY(points.maxY());
+		if ( transformation.getAutomaticX() ) {
+			if ( !this->baseDateX_.empty() ) {
+				transformation.setDataMinMaxX(points.minX(), points.maxX(), this->baseDateX_);
+
+			}
+
+			else
+			{
+				transformation.setMinMaxX(points.minX(), points.maxX());
+
+			}
+		}
+		transformation.setMinMaxY(points.minY(), points.maxY());
 	}
 	catch ( ... ) {}
 }
 
-void NetcdfXYpointsInterpretor::customisedPoints(const Transformation& transformation, const std::set<string>&, CustomisedPointsList& out)
+void NetcdfXYpointsInterpretor::customisedPoints(const Transformation& transformation, const std::set<string>& needs, CustomisedPointsList& out)
 {
+	refDateX_ = transformation.getReferenceX();
+    refDateY_ = transformation.getReferenceY();
 	PointsList points;
-	interpretAsPoints(points);
+	interpretAsPoints(points, needs);
 
 	for (PointsList::iterator point = points.begin(); point != points.end(); ++point)  {
 		CustomisedPoint* pt = new CustomisedPoint();
 		out.push_back(pt);
 		pt->insert(make_pair("x", (*point)->x()));
 		pt->insert(make_pair("y", (*point)->y()));
+		pt->missing((*point)->missing());
 	}
 
 }
@@ -401,7 +454,7 @@ void NetcdfXYpointsInterpretor::visit(MetaDataCollector& mdc)
 {
 	bool isVprof=false;
   
-  	Netcdf nc(path_);
+  	Netcdf nc(path_, dimension_method_);
   	map<string, NetAttribute> attrs = nc.getAttributes();
 
 	//Find out if its vertical profile data
@@ -498,14 +551,6 @@ void NetcdfXYpointsInterpretor::visit(ValuesCollector& vcp,PointsList& points)
   
   	vcp.setCollected(true);
 	
-	/*if(!matrix_ && stats_.find("value") == stats_.end())
-	{
-		points.setCollected(true);	
-	}
-	else
-	{  	
-		points.setCollected(true);
-	}*/
 	
 	
 	if(points.size() <=0)
@@ -553,4 +598,20 @@ void NetcdfXYpointsInterpretor::visit(ValuesCollector& vcp,PointsList& points)
 					     				
 	}
 }
+void NetcdfXYpointsInterpretor::visit(TextVisitor& title)
+{
+	vector<string> titles;
+
+	title.titles(titles);
+
 
+
+	NetcdfTag tag(*this, title);
+	for ( vector<string>::const_iterator t = titles.begin(); t != titles.end(); ++t ) {
+		MagLog::debug() << "NetcdfMatrixInterpretor::visit" << *t << endl;
+		tag.decode(*t);
+	}
+
+
+
+}
diff --git a/src/decoders/NetcdfGeopointsInterpretor.h b/src/decoders/NetcdfGeopointsInterpretor.h
index 34798e6..db833f2 100644
--- a/src/decoders/NetcdfGeopointsInterpretor.h
+++ b/src/decoders/NetcdfGeopointsInterpretor.h
@@ -67,9 +67,9 @@ public:
     	NetcdfInterpretorAttributes::copy(other); 
     	NetcdfGeopointsInterpretorAttributes::copy(other); 
     }
-    virtual void interpretAsPoints(PointsList&);
-    virtual void interpretAsPoints(PointsList&, const Transformation&);
-    virtual void interpretAsMatrix(Matrix**) { throw MagicsException("Not Yet"); }
+    bool interpretAsPoints(PointsList&);
+    bool interpretAsPoints(PointsList&, const Transformation&);
+    bool interpretAsMatrix(Matrix**) { throw MagicsException("Not Yet"); }
     virtual void visit(MetaDataCollector&);
     virtual void visit(ValuesCollector&,PointsList&);
     
@@ -118,13 +118,15 @@ public:
     	NetcdfInterpretorAttributes::copy(other);
     	NetcdfXYpointsInterpretorAttributes::copy(other);
     }
-    virtual void interpretAsPoints(PointsList&);
-    virtual void interpretAsPoints(PointsList&, const Transformation&);
-    virtual void interpretAsMatrix(Matrix**) { throw MagicsException("Not Yet"); }
+    bool interpretAsPoints(PointsList&, const std::set<string>&);
+    bool interpretAsPoints(PointsList&);
+    bool interpretAsPoints(PointsList&, const Transformation&);
+    bool interpretAsMatrix(Matrix**) { throw MagicsException("Not Yet"); }
     virtual void visit(Transformation&);
     virtual void customisedPoints(const Transformation&, const std::set<string>&, CustomisedPointsList&);
     virtual void visit(MetaDataCollector&);
     virtual void visit(ValuesCollector&,PointsList&);
+    void visit(TextVisitor&);
 
 
 protected:
diff --git a/src/decoders/NetcdfGeopointsInterpretorAttributes.h b/src/decoders/NetcdfGeopointsInterpretorAttributes.h
deleted file mode 100644
index c34cf4b..0000000
--- a/src/decoders/NetcdfGeopointsInterpretorAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfGeopointsInterpretorAttributes.h
-    \brief Definition of NetcdfGeopointsInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfGeopointsInterpretorAttributes_H
-#define NetcdfGeopointsInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfGeopointsInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfGeopointsInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfGeopointsInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfGeopointsInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string latitude_;
-	string longitude_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfGeopointsInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfInterpretor.cc b/src/decoders/NetcdfInterpretor.cc
index f0f671d..82cfbf6 100644
--- a/src/decoders/NetcdfInterpretor.cc
+++ b/src/decoders/NetcdfInterpretor.cc
@@ -31,6 +31,7 @@
 
 #include "NetcdfInterpretor.h"
 #include "Netcdf.h"
+#include "XmlReader.h"
 #include <limits>
 
 using namespace magics;
@@ -67,7 +68,7 @@ void NetcdfInterpretor::setDimensions(const stringarray& value, map<string, stri
         }
           
     }
-    MagLog::debug() << "NetcdfInterpretor::setDimensions---> OK!" << "\n";
+
 }
 NetcdfInterpretor::~NetcdfInterpretor() 
 {
@@ -91,6 +92,82 @@ double NetcdfInterpretor::missing(Netcdf& netcdf) const
 	return missing;
 }
 
+bool NetcdfInterpretor::reference_date(Netcdf& netcdf, const string& var, const string& refdate, string& basedate, vector<double>& coords, vector<double>& originals)
+{
+	static map<string, double> factors;
+	if ( factors.empty() ) {
+		factors["hours"] = 3600;
+		factors["days"] = 24*3600;
+	}
+	string date = netcdf.getVariableAttribute(var, "reference_date", "");
+	if ( date.empty() ) return false;
+	originals.reserve(coords.size());
+	for (vector<double>::iterator c = coords.begin(); c != coords.end(); ++c)
+		 originals.push_back(*c);
+	string units = netcdf.getVariableAttribute(var, "units", "");
+	basedate = date;
+	double diff = ( refdate.empty() ) ? 0 : DateTime(date) - DateTime(refdate) ;
+	map<string, double>::const_iterator factor = factors.find(units);
+	if ( factor != factors.end() )
+		std::transform(coords.begin(), coords.end(),  coords.begin(), Multiply(factor->second, std::numeric_limits<double>::max()));
+	std::transform(coords.begin(), coords.end(),  coords.begin(), Plus(diff, std::numeric_limits<double>::max()));
+}
+
+bool NetcdfInterpretor::cf_date(Netcdf& netcdf, const string& var, const string& refdate, string& basedate, vector<double>& coords, vector<double>& originals)
+{
+	//Step 1 : try to find a attribute long_name = time
+	//Step 2 : Parse the attribute  units : days since date
+	static map<string, double> factors;
+	if ( factors.empty() ) {
+		factors["hours"] = 3600;
+		factors["days"] = 24*3600;
+	}
+	string date = netcdf.getVariableAttribute(var, "long_name", "");
+	if ( date.empty() ) return false;
+	if ( date != "time" ) return false;
+
+	string units = netcdf.getVariableAttribute(var, "units", "");
+	if ( units.empty() ) return false;
+	originals.reserve(coords.size());
+	for (vector<double>::iterator c = coords.begin(); c != coords.end(); ++c)
+		 originals.push_back(*c);
+
+	// Now we parse the string !
+	vector<string> tokens;
+	Tokenizer tokenizer(" ");
+	tokenizer(units, tokens);
+
+
+
+	basedate = tokens[2];
+	double diff = ( refdate.empty() ) ? 0 : DateTime(basedate) - DateTime(refdate) ;
+	map<string, double>::const_iterator factor = factors.find(tokens[0]);
+	if ( factor != factors.end() )
+		std::transform(coords.begin(), coords.end(),  coords.begin(), Multiply(factor->second, std::numeric_limits<double>::max()));
+	std::transform(coords.begin(), coords.end(),  coords.begin(), Plus(diff, std::numeric_limits<double>::max()));
+}
+string NetcdfInterpretor::getAttribute(const string& var, const string& attr, const string& def)
+{
+	Netcdf netcdf(path_, dimension_method_);
+	if ( var.empty() )
+		return netcdf.getAttribute(attr, def.c_str());
+	return netcdf.getVariableAttribute(var, attr, def.c_str());
+}
+
+void NetcdfInterpretor::visit(TextVisitor& title)
+{
+	vector<string> titles;
+
+	title.titles(titles);
+
+	NetcdfTag tag(*this, title);
+	for ( vector<string>::const_iterator t = titles.begin(); t != titles.end(); ++t ) {
+		tag.decode(*t);
+	}
+	Netcdf netcdf(path_, dimension_method_);
+	title.addAutomaticTitle(netcdf.getAttribute("title", "NO TITLE"));
+}
+
 void NetcdfInterpretor::getAttributes(Netcdf& nc,const string& varName,string& keys,string& values)
 {
 	try
@@ -119,3 +196,43 @@ void NetcdfInterpretor::getAttributes(Netcdf& nc,const string& varName,string& k
 }
 
 
+void NetcdfTag::visit(const XmlNode& node)
+	{
+		if ( magCompare(node.name(), "netcdf_info") )
+		{
+			string var = node.getAttribute("variable");
+
+			string attr = node.getAttribute("attribute");
+			string def = node.getAttribute("default");
+
+
+			string val = netcdf_.getAttribute(var, attr, def);
+
+
+			title_.update("netcdf"+var, attr,  val);
+		}
+
+
+		node.visit(*this);
+	}
+
+	void  NetcdfTag::decode(const string& line)
+	{
+		XmlReader parser;
+		XmlTree tree;
+
+		ostringstream xml;
+		xml << "<?xml version='1.0' ?> \n";
+		xml << "<xml> \n";
+		xml << line;
+		xml << "\n</xml>";
+
+		try {
+			parser.decode(xml.str(), &tree);
+			tree.visit(*this);
+		}
+		catch (MagicsException& e) {
+			MagLog::debug() << e.what() << endl;
+		}
+     }
+
diff --git a/src/decoders/NetcdfInterpretor.h b/src/decoders/NetcdfInterpretor.h
index e5d6f75..011a231 100644
--- a/src/decoders/NetcdfInterpretor.h
+++ b/src/decoders/NetcdfInterpretor.h
@@ -34,10 +34,11 @@
 #include "MagTranslator.h"
 #include "Factory.h"
 #include "UserPoint.h"
-#include "UserPoint.h"
 #include "MatrixHandler.h"
 #include "NetcdfInterpretorAttributes.h"
 #include "CustomisedPoint.h"
+#include "TagHandler.h"
+#include "TextVisitor.h"
 
 namespace magics {
 
@@ -51,21 +52,21 @@ public:
 	virtual ~NetcdfInterpretor();
 	virtual void visit(Transformation&) {}
 	virtual void getReady(const Transformation&) {}
-    virtual void interpretAsMatrix(Matrix**)
-    	{ MagLog::dev() << "Method  NetcdfInterpretor::interpretAsMatrix() --> Not yet implemented.\n"; }
-    virtual void interpretAsVectors(Matrix**, Matrix**) 
-    	{ MagLog::dev() << "Method  NetcdfInterpretor::interpretAsVectors() --> Not yet implemented.\n"; }
-    virtual void interpretAsRaster(RasterData&)
-    	{ MagLog::dev() << "Method  NetcdfInterpretor::interpretAsRaster() --> Not yet implemented.\n"; }
-    virtual void interpretAsPoints(PointsList&)
-    	{ MagLog::dev() << "Method  NetcdfInterpretor::interpretAsPoints() --> Not yet implemented.\n"; }
+    virtual bool interpretAsMatrix(Matrix**)
+        { MagLog::dev() << "Method  NetcdfInterpretor::interpretAsMatrix() --> Not yet implemented.\n"; return false; }
+    virtual bool interpretAsVectors(Matrix**, Matrix**)
+        { MagLog::dev() << "Method  NetcdfInterpretor::interpretAsVectors() --> Not yet implemented.\n"; return false; }
+    virtual bool interpretAsRaster(RasterData&)
+        { MagLog::dev() << "Method  NetcdfInterpretor::interpretAsRaster() --> Not yet implemented.\n"; return false; }
+    virtual bool interpretAsPoints(PointsList&)
+        { MagLog::dev() << "Method  NetcdfInterpretor::interpretAsPoints() --> Not yet implemented.\n"; return false; }
     virtual void customisedPoints(const std::set<string>&, CustomisedPointsList&)  
         	{ MagLog::dev() << "Method  NetcdfInterpretor::customisedPoints() --> Not yet implemented.\n"; }
     virtual void customisedPoints(const Transformation&, const std::set<string>&, CustomisedPointsList&)  
             	{ MagLog::dev() << "Method  NetcdfInterpretor::customisedPoints() --> Not yet implemented.\n"; }
 
-    virtual void interpretAsPoints(PointsList& points, const Transformation&)
-    	{ interpretAsPoints(points);}
+    virtual bool interpretAsPoints(PointsList& points, const Transformation&)
+        { return interpretAsPoints(points);}
     virtual void set(const map<string, string>& params) { NetcdfInterpretorAttributes::set(params); }
     virtual void set(const XmlNode& node) { NetcdfInterpretorAttributes::set(node); }
      virtual bool accept(const string& node) { return NetcdfInterpretorAttributes::accept(node); }
@@ -78,15 +79,25 @@ public:
     virtual void statsData(map<string,vector<double> >&) {}
     virtual void visit(MetaDataCollector&) {}
     virtual void visit(ValuesCollector&,PointsList&) {};
-    virtual void visit(TextVisitor&) {}    
+    virtual void visit(TextVisitor&);
     double missing(Netcdf&) const;
+    string getAttribute(const string&, const string&, const string&);
+	bool cf_date(Netcdf& netcdf, const string&, const string&, string&, vector<double>&, vector<double>&);
+	//return true, if the the data is date CF-compliant and the date axis has been set
+	bool reference_date(Netcdf& netcdf, const string&, const string&, string&, vector<double>&, vector<double>&);
+	//return true, if the the data is Metview-date compliant and the date axis has been set
 
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
      void setDimensions(const stringarray&, map<string, string>& first, map<string, string>& last);
      void getAttributes(Netcdf&,const string&,string&,string&);
-	
+
+     string baseDateX_;
+     string baseDateY_;
+     string refDateX_;
+     string refDateY_;
+
 private:
     //! Copy constructor - No copy allowed
 	NetcdfInterpretor(const NetcdfInterpretor&);
@@ -114,5 +125,23 @@ public:
 
 };
 
+
+
+class NetcdfTag: public XmlNodeVisitor
+{
+public:
+	NetcdfTag(NetcdfInterpretor& netcdf, TagHandler& title) : netcdf_(netcdf), title_(title) {}
+
+	~NetcdfTag() {}
+
+	void visit(const XmlNode& node);
+
+	void decode(const string& line);
+     string str() const { return out.str(); }
+protected :
+	NetcdfInterpretor& netcdf_;
+	TagHandler& title_;
+	ostringstream out;
+};
 } // namespace magics
 #endif
diff --git a/src/decoders/NetcdfInterpretorAttributes.h b/src/decoders/NetcdfInterpretorAttributes.h
deleted file mode 100644
index 5dca2d6..0000000
--- a/src/decoders/NetcdfInterpretorAttributes.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfInterpretorAttributes.h
-    \brief Definition of NetcdfInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfInterpretorAttributes_H
-#define NetcdfInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string path_;
-	stringarray dimension_;
-	string field_;
-	double scaling_;
-	double offset_;
-	string missing_attribute_;
-	string reference_;
-	double suppress_below_;
-	double suppress_above_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfMatrixInterpretor.cc b/src/decoders/NetcdfMatrixInterpretor.cc
index 5715074..1f0eb5c 100644
--- a/src/decoders/NetcdfMatrixInterpretor.cc
+++ b/src/decoders/NetcdfMatrixInterpretor.cc
@@ -38,7 +38,7 @@
 #include "Tokenizer.h"
 using namespace magics;
 
-NetcdfMatrixInterpretor::NetcdfMatrixInterpretor() : baseDateX_(""), baseDateY_("")
+NetcdfMatrixInterpretor::NetcdfMatrixInterpretor()
 {
 }
 
@@ -48,21 +48,24 @@ NetcdfMatrixInterpretor::~NetcdfMatrixInterpretor()
 }
 
 
-void NetcdfMatrixInterpretor::interpretAsMatrix(Matrix** matrix)
+bool NetcdfMatrixInterpretor::interpretAsMatrix(Matrix** matrix)
 {
 	
 	MagLog::debug() << "NetcdfMatrixInterpretor::interpret()--->" << *this << "\n";
-	if ( *matrix ) return;
+	if ( *matrix ) return false;
+
 	
 	matrix_ = new Matrix();
 	
 	*matrix = matrix_;
-	if ( !matrix_->empty() ) return;
+	if ( !matrix_->empty() ) return false;
     
 	matrix_->missing(std::numeric_limits<double>::max());
 
-	Netcdf netcdf(path_);
-	matrix_->missing(netcdf.getDefaultMissing(field_));
+	Netcdf netcdf(path_, dimension_method_);
+	double missing =  netcdf.getVariableAttribute(field_, missing_attribute_,netcdf.getDefaultMissing(field_));
+	matrix_->missing(missing);
+
 	string title = netcdf.getAttribute("title", "NO TITLE");
 
 
@@ -70,24 +73,20 @@ void NetcdfMatrixInterpretor::interpretAsMatrix(Matrix** matrix)
     y();
 	// get the data ...
 	try {
-		string missing = netcdf.getVariableAttribute(field_, missing_attribute_, "");
-		if ( !missing.empty() ) {
-			std::stringstream ss(missing);
-			double m;
-			ss >> m;
-		    matrix_->missing(m);
-		}
+
 
 		map<string, string> first, last;
 		setDimensions(dimension_, first, last);
 		vector<double> rows = dateRows_.empty() ? rows_ : dateRows_;
+		vector<double> columns = dateColumns_.empty() ? columns_ : dateColumns_;
+
 		for ( vector<double>::iterator r = rows.begin(); r != rows.end(); r++) {
 			vector<string> dims;
 			ostringstream x,y;
 			x.precision(20);
 			y.precision(20);
 			y << y_ << "/" << *r;
-			x << x_ << "/" << columns_.front() << "/" << columns_.back();
+			x << x_ << "/" << columns.front() << "/" << columns.back();
 			dims.push_back(y.str());
 			dims.push_back(x.str());
 			setDimensions(dims, first, last);
@@ -123,7 +122,9 @@ void NetcdfMatrixInterpretor::interpretAsMatrix(Matrix** matrix)
 	catch (MagicsException& e)
 	{
 		MagLog::error() << e << "\n";
+		 return false;
 	}    
+	return true;
 }
 
 
@@ -141,67 +142,14 @@ void NetcdfMatrixInterpretor::print(ostream& out)  const
 
 
 
-bool NetcdfMatrixInterpretor::reference_date(Netcdf& netcdf, const string& var, const string& refdate, string& basedate, vector<double>& coords, vector<double>& originals)
-{
-	static map<string, double> factors;
-	if ( factors.empty() ) {
-		factors["hours"] = 3600;
-		factors["days"] = 24*3600;
-	}
-	string date = netcdf.getVariableAttribute(var, "reference_date", "");
-	if ( date.empty() ) return false;
-	originals.reserve(coords.size());
-	for (vector<double>::iterator c = coords.begin(); c != coords.end(); ++c)
-		 originals.push_back(*c);
-	string units = netcdf.getVariableAttribute(var, "units", "");
-	basedate = date;
-	double diff = ( refdate.empty() ) ? 0 : DateTime(date) - DateTime(refdate) ;
-	map<string, double>::const_iterator factor = factors.find(units);
-	if ( factor != factors.end() )
-		std::transform(coords.begin(), coords.end(),  coords.begin(), Multiply(factor->second, std::numeric_limits<double>::max()));
-	std::transform(coords.begin(), coords.end(),  coords.begin(), Plus(diff, std::numeric_limits<double>::max()));
-}
-
-bool NetcdfMatrixInterpretor::cf_date(Netcdf& netcdf, const string& var, const string& refdate, string& basedate, vector<double>& coords, vector<double>& originals)
-{
-	//Step 1 : try to find a attribute long_name = time
-	//Step 2 : Parse the attribute  units : days since date
-	static map<string, double> factors;
-	if ( factors.empty() ) {
-		factors["hours"] = 3600;
-		factors["days"] = 24*3600;
-	}
-	string date = netcdf.getVariableAttribute(var, "long_name", "");
-	if ( date.empty() ) return false;
-	if ( date != "time" ) return false;
 
-	string units = netcdf.getVariableAttribute(var, "units", "");
-	if ( units.empty() ) return false;
-	originals.reserve(coords.size());
-	for (vector<double>::iterator c = coords.begin(); c != coords.end(); ++c)
-		 originals.push_back(*c);
-
-	// Now we parse the string !
-	vector<string> tokens;
-	Tokenizer tokenizer(" ");
-	tokenizer(units, tokens);
-
-
-
-	basedate = tokens[2];
-	double diff = ( refdate.empty() ) ? 0 : DateTime(basedate) - DateTime(refdate) ;
-	map<string, double>::const_iterator factor = factors.find(tokens[0]);
-	if ( factor != factors.end() )
-		std::transform(coords.begin(), coords.end(),  coords.begin(), Multiply(factor->second, std::numeric_limits<double>::max()));
-	std::transform(coords.begin(), coords.end(),  coords.begin(), Plus(diff, std::numeric_limits<double>::max()));
-}
 	
-void NetcdfMatrixInterpretor::x()
+bool NetcdfMatrixInterpretor::x()
 {
 	if ( !columns_.empty() )
-			return;
+			return false;
 
-    Netcdf netcdf(path_);
+    Netcdf netcdf(path_, dimension_method_);
     map<string, string> first, last;
     setDimensions(dimension_, first, last);
 
@@ -212,37 +160,61 @@ void NetcdfMatrixInterpretor::x()
         	cf_date(netcdf, x_, refDateX_, baseDateX_, columns_, dateColumns_);
 	} 
     catch (...) {
-        int x = netcdf.getDimension(x_);
-        for (int i = 0; i < x; i++) 
-            columns_.push_back(i);
+    	try {
+    		int x = netcdf.getDimension(x_);
+    		if ( !x ) {
+    	    			MagLog::warning() << "No valid X dimension.." << endl;
+    	    			return false;
+    	    		}
+    		for (int i = 0; i < x; i++)
+    			columns_.push_back(i);
+    	}
+        catch (...) {
+        	MagLog::warning() << "No valid X dimension.." << endl;
+        		return false;
+        	}
     }
 
     if ( aux_x_.empty() )
-    	return;
+    	return true;
     try {
     	vector<double> aux;
 
     	netcdf.get(aux_x_,aux, first, last);
     	if ( !aux.empty() ) {
+    		// small check to make sure that we do not have problem :
     		ostringstream geominx, geomaxx;
-    		geominx << columns_.front() << "/" << aux.front() << endl;
-    		geomaxx << columns_.back() << "/" << aux.back() << endl;
+    		if ( magCompare(geo_x_convention_, "latlon") ) {
+    			geominx << aux.front() << "/" << columns_.front();
+    			geomaxx << aux.back() << "/" << columns_.back();
+    		}
+    		else {
+    			geominx << columns_.front() << "/" << aux.front();
+    			geomaxx << columns_.back() << "/" << aux.back();
+    		}
     		geoMinX_ = geominx.str();
     		geoMaxX_ = geomaxx.str();
+
+
+
+
     	}
     }
     catch (...) {
+    	return false;
     }
 
+    return true;
+
 }
 
-void NetcdfMatrixInterpretor::y()
+bool NetcdfMatrixInterpretor::y()
 {
 
 	if ( !rows_.empty() )
-		return;
+		return false;
 
-    Netcdf netcdf(path_);
+    Netcdf netcdf(path_, dimension_method_);
     map<string, string> first, last;
     setDimensions(dimension_, first, last);
     try {
@@ -253,37 +225,61 @@ void NetcdfMatrixInterpretor::y()
     	      cf_date(netcdf, y_, refDateY_, baseDateY_, rows_, dateRows_);
 	} 
     catch (...) {
-        int y = netcdf.getDimension(y_);
-        for (int i = 0; i < y; i++) 
-            rows_.push_back(i);
+    	try {
+    		int y = netcdf.getDimension(y_);
+    		if ( !y ) {
+    			MagLog::warning() << "No valid Y dimension.." << endl;
+    			return false;
+    		}
+
+    		for (int i = 0; i < y; i++)
+    			rows_.push_back(i);
+    	}
+    	catch (...) {
+    		MagLog::warning() << "No valid Y dimension.." << endl;
+    		return false;
+    	}
     } 
 
     if ( aux_y_.empty() )
-    	return;
+    	return true;
     try {
     	vector<double> aux;
     	netcdf.get(aux_y_,aux, first, last);
     	if ( !aux.empty() ) {
-    		ostringstream geominx, geomaxx;
-    		geominx << rows_.front() << "/" << aux.front() << endl;
-    		geomaxx << rows_.back() << "/" << aux.back() << endl;
-    		geoMinY_ = geominx.str();
-    		geoMaxY_ = geomaxx.str();
+    		ostringstream geominy, geomaxy;
+    		if ( magCompare(geo_y_convention_, "latlon") ) {
+    			geominy << rows_.front() << "/" << aux.front();
+    			geomaxy << rows_.back() << "/" << aux.back();
+    		}
+    		else {
+    			geominy << aux.front() << "/" << rows_.front();
+    			geomaxy << aux.back() << "/" << rows_.back();
+    		}
+
+    		geoMinY_ = geominy.str();
+    		geoMaxY_ = geomaxy.str();
     	}
     }
     catch (...) {
+    	return false;
     }
+    return true;
 }
 void NetcdfMatrixInterpretor::getReady(const Transformation& transformation)
 {
 	// adjust the data to the transformation..
 
-	refDateX_ = transformation.getReferenceX(); //( transformation.getAutomaticX() ) ? "" : transformation.getReferenceX();
-	columns_.clear();
-	x();
-	refDateY_ = transformation.getReferenceY(); //( transformation.getAutomaticY() ) ? "" : transformation.getReferenceY();
-	rows_.clear();
-	y();
+
+		refDateX_ = transformation.getReferenceX();
+		columns_.clear();
+		x();
+
+
+		refDateY_ = transformation.getReferenceY();
+		rows_.clear();
+		y();
+
 
 }
 
@@ -300,31 +296,31 @@ void NetcdfMatrixInterpretor::visit(Transformation& transformation)
 
 			if ( transformation.getAutomaticX() ) {
 				if ( !this->baseDateX_.empty() ) {
-					transformation.setDataMinX(columns_.front(), this->baseDateX_);
-					transformation.setDataMaxX(columns_.back(), this->baseDateX_);
+					transformation.setDataMinMaxX(columns_.front(), columns_.back(), this->baseDateX_);
+
 				}
 				else if ( !this->geoMinX_.empty() ) {
-					transformation.setDataMinX(columns_.front(), this->geoMinX_);
-					transformation.setDataMaxX(columns_.back(), this->geoMaxX_);
+					string coords = this->geoMinX_ + "/" + this->geoMaxX_;
+					transformation.setDataMinMaxX(columns_.front(), columns_.back(), coords);
 				}
 				else
 				{
-					transformation.setMinX(columns_.front());
-					transformation.setMaxX(columns_.back());
+					transformation.setMinMaxX(columns_.front(), columns_.back());
+
 				}
 			}
 			if ( transformation.getAutomaticY() ) {
 				if ( !this->baseDateY_.empty() ) {
-					transformation.setDataMinY(rows_.front(), this->baseDateY_);
-					transformation.setDataMaxY(rows_.back(), this->baseDateY_);
+					transformation.setDataMinMaxY(rows_.front(), rows_.back(), this->baseDateY_);
+
 				}
 				else if ( !this->geoMinY_.empty() ) {
-					transformation.setDataMinY(rows_.front(), this->geoMinY_);
-					transformation.setDataMaxY(rows_.back(), this->geoMaxY_);
+					transformation.setDataMinMaxY(rows_.front(), rows_.back(),this->geoMinY_);
+
 				}
 				else {
-					transformation.setMinY(rows_.front());
-					transformation.setMaxY(rows_.back());
+					transformation.setMinMaxY(rows_.front(), rows_.back());
+
 				}
 			}
 
@@ -357,7 +353,7 @@ void NetcdfMatrixInterpretor::visit(MetaDataCollector& mdc)
 	mdc["value"]=field_;	
 	mdc["statsType"]="scalar";
 	
-	Netcdf nc(path_);
+	Netcdf nc(path_, dimension_method_);
 	
 	string attrKey;
 	string attrVal;		
@@ -388,30 +384,18 @@ void NetcdfMatrixInterpretor::visit(ValuesCollector& vcp,PointsList&)
 	//}
 }
 
-void NetcdfMatrixInterpretor::visit(TextVisitor& title)
-{
-	vector<string> titles;
-
-	title.titles(titles);
 
 
-	for ( vector<string>::const_iterator t = titles.begin(); t != titles.end(); ++t ) {
-		MagLog::debug() << "NetcdfMatrixInterpretor::visit" << *t << endl;
 
-	}
-	Netcdf netcdf(path_);
-	title.addAutomaticTitle(netcdf.getAttribute("title", "NO TITLE"));
-}
-
-
-void NetcdfMatrixInterpretor::interpretAsPoints(PointsList& points, const Transformation& transformation)
+bool NetcdfMatrixInterpretor::interpretAsPoints(PointsList& points, const Transformation& transformation)
 {
 	refDateX_ = transformation.getReferenceX();
 	refDateY_ = transformation.getReferenceY();
 
 	Matrix* data = 0;
 
-	interpretAsMatrix(&data);
+	if ( !interpretAsMatrix(&data) )
+		return false;
 
 	vector<double>::iterator d = data->begin();
 	for (vector<double>::iterator row = rows_.begin(); row != rows_.end(); ++row)
@@ -420,6 +404,6 @@ void NetcdfMatrixInterpretor::interpretAsPoints(PointsList& points, const Transf
 			++d;
 			points.push_back(point);
 		}
-
+	return true;
 
 }
diff --git a/src/decoders/NetcdfMatrixInterpretor.h b/src/decoders/NetcdfMatrixInterpretor.h
index 55c500c..d628830 100644
--- a/src/decoders/NetcdfMatrixInterpretor.h
+++ b/src/decoders/NetcdfMatrixInterpretor.h
@@ -82,20 +82,17 @@ public:
     	NetcdfInterpretorAttributes::copy(*this); 
     	NetcdfMatrixInterpretorAttributes::copy(*this); 
     }
-    virtual void interpretAsMatrix(Matrix**);
-    virtual void interpretAsPoints(PointsList& points, const Transformation&);
+    virtual bool interpretAsMatrix(Matrix**);
+    virtual bool interpretAsPoints(PointsList& points, const Transformation&);
     virtual void visit(Transformation&);
     virtual void getReady(const Transformation&);
     virtual void visit(MetaDataCollector&);
     virtual void visit(ValuesCollector&,PointsList&);
-    virtual void visit(TextVisitor&); 
+
     virtual void statsData(map<string,vector<double> >&);
-	virtual void x();
-	virtual void y(); 
-	bool cf_date(Netcdf& netcdf, const string&, const string&, string&, vector<double>&, vector<double>&);
-	//return true, if the the data is date CF-compliant and the date axis has been set
-	bool reference_date(Netcdf& netcdf, const string&, const string&, string&, vector<double>&, vector<double>&);
-	//return true, if the the data is Metview-date compliant and the date axis has been set
+	virtual bool x();
+	virtual bool y();
+
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
@@ -104,14 +101,12 @@ protected:
 	 vector<double> rows_;
 	 vector<double> dateRows_; // Used when dealing with date dimensions to store the original values
 	 vector<double> dateColumns_; // Used when dealing with date dimensions to store the original values
-	 string baseDateX_;
-	 string baseDateY_;
+
 	 string geoMinX_;
 	 string geoMaxX_;
 	 string geoMinY_;
 	 string geoMaxY_;
-	 string refDateX_;
-	 string refDateY_;
+
 private:
     //! Copy constructor - No copy allowed
 	NetcdfMatrixInterpretor(const NetcdfMatrixInterpretor&);
diff --git a/src/decoders/NetcdfMatrixInterpretorAttributes.h b/src/decoders/NetcdfMatrixInterpretorAttributes.h
deleted file mode 100644
index 3247746..0000000
--- a/src/decoders/NetcdfMatrixInterpretorAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfMatrixInterpretorAttributes.h
-    \brief Definition of NetcdfMatrixInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfMatrixInterpretorAttributes_H
-#define NetcdfMatrixInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfMatrixInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfMatrixInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfMatrixInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfMatrixInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string y_;
-	string x_;
-	string aux_x_;
-	string aux_y_;
-	string primary_index_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfMatrixInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/NetcdfOrcaInterpretor.cc b/src/decoders/NetcdfOrcaInterpretor.cc
index 4876f3a..02ad6d5 100644
--- a/src/decoders/NetcdfOrcaInterpretor.cc
+++ b/src/decoders/NetcdfOrcaInterpretor.cc
@@ -44,38 +44,37 @@ NetcdfOrcaInterpretor::~NetcdfOrcaInterpretor()
 #include <boost/geometry/geometries/point_xy.hpp>
 #include <boost/geometry/geometries/polygon.hpp>
 
-void NetcdfOrcaInterpretor::interpretAsMatrix(Matrix** data)
+bool NetcdfOrcaInterpretor::interpretAsMatrix(Matrix** data)
 {
 	
-	if ( *data ) return;
+	if ( *data ) return false;
 	
 
 	
 	    
 		
 	  
-		Netcdf netcdf(path_);
-		
-		
-		int jm = netcdf.getDimension("y");
-		int im = netcdf.getDimension("x");
+		Netcdf netcdf(path_, dimension_method_);
+		NetVariable var = netcdf.getVariable(longitude_);
+		vector<long> dims;
+		var.getDimensions(dims);
+
+
+		int jm = dims[dims.size() - 2];
+		int im = dims[dims.size() - 1];
 		
 		Matrix* matrix = new Matrix(jm, im);
 		
 		*data = matrix;
-		double m = std::numeric_limits<double>::max();
-		matrix->missing(std::numeric_limits<double>::max());
-		string missing = netcdf.getVariableAttribute(field_, missing_attribute_, "");
-		if ( !missing.empty() ) {
-			std::stringstream ss(missing);
-			ss >> m;
-		}
+
+
+		double missing =  netcdf.getVariableAttribute(field_, missing_attribute_,netcdf.getDefaultMissing(field_));
 		typedef boost::geometry::model::d2::point_xy<double> point_type;
 		typedef boost::geometry::model::polygon<point_type> polygon_type;
 
-		vector<pair<point_type, pair<int, int> > > points;
+		vector< std::pair<point_type, pair<int, int> > > points;
 
-		matrix->missing(m);
+		matrix->missing(missing);
 		// get the data ...
 		try
 		{
@@ -129,9 +128,9 @@ void NetcdfOrcaInterpretor::interpretAsMatrix(Matrix** data)
 
 						int column = 0;
 						for (vector<double>::iterator x = lon.begin(); x != lon.end(); ++x) {
-							h->second.insert(make_pair(*x, make_pair(row, column)));
+							h->second.insert(make_pair(*x, std::make_pair(row, column)));
 
-							matrix->push_back(m);
+							matrix->push_back(missing);
 							column++;
 
 						}
@@ -200,17 +199,17 @@ void NetcdfOrcaInterpretor::interpretAsMatrix(Matrix** data)
 
 									double lat = it->first;
 									double lon = lit->first;
-									pair<int, int> index = lit->second;
+									std::pair<int, int> index = lit->second;
 
 									// we interpolate at the point using the 4 points found!
-									double val = m;
-									if ( val11 != m && val12 != m && val21 != m && val22 != m) {
+									double val = missing;
+									if ( val11 != missing && val12 != missing && val21 !=missing && val22 != missing) {
 										double val1 =  	((lon12 - lon )/(lon12-lon11))*val11 + ((lon - lon11)/(lon12-lon11))*val12;
 
 										double val2 =  	((lon22 - lon )/(lon22-lon21))*val21 + ((lon - lon21)/(lon22-lon21))*val22;
 										if ( isnan(val1) ) {
 											if ( isnan(val2) ) {
-												val = m;
+												val = missing;
 											}
 											else
 												val = ((lat - lat11)/(lat22-lat11))*val2;
@@ -225,11 +224,11 @@ void NetcdfOrcaInterpretor::interpretAsMatrix(Matrix** data)
 										}
 
 										if (isnan(val) || isinf(val) || isinf(-val) ) {
-											val = m;
+											val = missing;
 										}
 									}
-									if (isnan(val) ) val = m;
-									if ( (*matrix)[index.second +( index.first*im)] == m )
+									if (isnan(val) ) val = missing;
+									if ( (*matrix)[index.second +( index.first*im)] == missing )
 										(*matrix)[index.second +( index.first*im)] = val;
 
 								}
@@ -255,11 +254,13 @@ void NetcdfOrcaInterpretor::interpretAsMatrix(Matrix** data)
 		catch (MagicsException& e)
 		{
 			MagLog::error() << e << "\n";
+			return false;
 		}
+		return true;
 }
 
 
-void NetcdfOrcaInterpretor::interpretAsPoints(PointsList& points)
+bool NetcdfOrcaInterpretor::interpretAsPoints(PointsList& points)
 {
 	
     Matrix latitudes;
@@ -273,7 +274,7 @@ void NetcdfOrcaInterpretor::interpretAsPoints(PointsList& points)
 	try
 	{
 		MagLog::dev() << " Netcdf File Path --->" << path_ << "\n";
-		Netcdf netcdf(path_);
+		Netcdf netcdf(path_, dimension_method_);
 		map<string, string> first, last;
 		setDimensions(dimension_, first, last);
 		vector<double> latm;
diff --git a/src/decoders/NetcdfOrcaInterpretor.h b/src/decoders/NetcdfOrcaInterpretor.h
index c894658..4d8aa3e 100644
--- a/src/decoders/NetcdfOrcaInterpretor.h
+++ b/src/decoders/NetcdfOrcaInterpretor.h
@@ -54,8 +54,8 @@ public:
         NetcdfOrcaInterpretorAttributes::set(params);
     }
 
-    virtual void interpretAsPoints(PointsList&);
-    virtual void interpretAsMatrix(Matrix**);
+    bool interpretAsPoints(PointsList&);
+    bool interpretAsMatrix(Matrix**);
    
     
 protected:
diff --git a/src/decoders/NetcdfVectorInterpretor.cc b/src/decoders/NetcdfVectorInterpretor.cc
index 8840f7b..d139f8c 100644
--- a/src/decoders/NetcdfVectorInterpretor.cc
+++ b/src/decoders/NetcdfVectorInterpretor.cc
@@ -79,7 +79,7 @@ NetcdfGeoVectorInterpretor::~NetcdfGeoVectorInterpretor()
 
 void NetcdfGeoVectorInterpretor::customisedPoints(const Transformation& transformation, const std::set<string>&, CustomisedPointsList& list)
 {
-	Netcdf netcdf(path_);
+	Netcdf netcdf(path_, dimension_method_);
 	try {
 			vector<double> latitudes;
 			vector<double> longitudes;
@@ -166,7 +166,7 @@ NetcdfGeoPolarMatrixInterpretor::~NetcdfGeoPolarMatrixInterpretor()
 
 void NetcdfGeoPolarMatrixInterpretor::customisedPoints(const Transformation&, const std::set<string>&, CustomisedPointsList& list)
 {
-	Netcdf netcdf(path_);
+	Netcdf netcdf(path_, dimension_method_);
 	try {
 			vector<double> latitudes;
 			vector<double> longitudes;
diff --git a/src/decoders/NetcdfVectorInterpretorAttributes.h b/src/decoders/NetcdfVectorInterpretorAttributes.h
deleted file mode 100644
index a4e02d9..0000000
--- a/src/decoders/NetcdfVectorInterpretorAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NetcdfVectorInterpretorAttributes.h
-    \brief Definition of NetcdfVectorInterpretor Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef NetcdfVectorInterpretorAttributes_H
-#define NetcdfVectorInterpretorAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NetcdfVectorInterpretorAttributes 
-{
-public:
-//  --  constructor
-    NetcdfVectorInterpretorAttributes();
-    
-//  --  destructor
-    virtual ~NetcdfVectorInterpretorAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NetcdfVectorInterpretorAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string x_component_;
-	string y_component_;
-	string y_;
-	string x_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NetcdfVectorInterpretorAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/ObsDecoder.cc b/src/decoders/ObsDecoder.cc
index 4ccb16a..bf42fb7 100644
--- a/src/decoders/ObsDecoder.cc
+++ b/src/decoders/ObsDecoder.cc
@@ -562,7 +562,10 @@ void ObsDecoder::decode()
 {
 	// Read observation file
 	MvObsSet obsSet(file_name_.c_str());
-
+	if ( obsSet.messageCount() <= 0 ) {
+		valid_ = false;
+		return;
+	}
 	// Test 
         MvObsSetIterator obsIterator(obsSet);
 	MvObs obs = obsIterator();
@@ -609,7 +612,8 @@ bool ObsDecoder::checkLevel(double level)
 void ObsDecoder::getInfo(const std::set<string>& tokens, multimap<string, string>& values)
 {
 	MvObsSet obsSet(file_name_.c_str());
-
+	if ( obsSet.messageCount() <= 0 )
+		return;
 	for (std::set<string>::const_iterator token = tokens.begin(); token != tokens.end(); ++token)
 	{
 		std::set<string> noduplicate;
@@ -648,6 +652,11 @@ void ObsDecoder::customisedPoints(const Transformation& transformation, const st
 {
 	MvObsSet obsSet(file_name_.c_str());
 
+	if ( obsSet.messageCount() <= 0 ) {
+		valid_ = false;
+		return;
+	}
+
 	// Test 
 	MvObsSetIterator obsIterator(obsSet);
 	MvObs obs = obsIterator();
@@ -712,7 +721,8 @@ void ObsDecoder::customisedPoints(const Transformation& transformation, const st
 				   for (VectorOfPointers<vector<BufrAccessor*> >::const_iterator accessor = accessors.begin(); accessor != accessors.end(); ++accessor)
 				   {
 					   (**accessor)(*this, obs, value);	    
-					   if (value != kBufrMissingValue)  (*point)[(*accessor)->keyword()] = value;
+					   if (value != kBufrMissingValue)  
+                            (*point)[(*accessor)->keyword()] = value;
 				   }
 				   if ( !(*point).empty())
 				   {
diff --git a/src/decoders/ObsDecoderAttributes.h b/src/decoders/ObsDecoderAttributes.h
deleted file mode 100644
index ae8466c..0000000
--- a/src/decoders/ObsDecoderAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ObsDecoderAttributes.h
-    \brief Definition of ObsDecoder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:23 2013
-*/
-   
-
-#ifndef ObsDecoderAttributes_H
-#define ObsDecoderAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ObsDecoderAttributes 
-{
-public:
-//  --  constructor
-    ObsDecoderAttributes();
-    
-//  --  destructor
-    virtual ~ObsDecoderAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ObsDecoderAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string file_name_;
-	int level_;
-	int level2_;
-	int tolerance_;
-	stringarray types_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ObsDecoderAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/ObsStatDecoderAttributes.h b/src/decoders/ObsStatDecoderAttributes.h
deleted file mode 100644
index 21939e2..0000000
--- a/src/decoders/ObsStatDecoderAttributes.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ObsStatDecoderAttributes.h
-    \brief Definition of ObsStatDecoder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef ObsStatDecoderAttributes_H
-#define ObsStatDecoderAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ObsStatDecoderAttributes 
-{
-public:
-//  --  constructor
-    ObsStatDecoderAttributes();
-    
-//  --  destructor
-    virtual ~ObsStatDecoderAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ObsStatDecoderAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string path_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ObsStatDecoderAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/decoders/TableDecoder.cc b/src/decoders/TableDecoder.cc
index a44e856..4d05414 100644
--- a/src/decoders/TableDecoder.cc
+++ b/src/decoders/TableDecoder.cc
@@ -400,8 +400,9 @@ MatrixHandler& TableDecoder::matrix()
 		prepareXY();
 		matrix_ = (*table_binning_)(*this);
 	}
-	cout << *matrix_ << endl;
+
 	this->matrixHandlers_.push_back(new MatrixHandler(*matrix_));
+
 	return *(this->matrixHandlers_.back());
 }
 
@@ -437,14 +438,14 @@ void TableDecoder::visit(Transformation& transformation)
 			if ( magCompare(this->x_type_, "date" ) ) {
 				double min = ( this->x_values_.empty() ) ? 0 : *std::min_element(this->x_values_.begin(), this->x_values_.end());
 				double max = ( this->x_values_.empty() ) ? 24*3600 : *std::max_element(this->x_values_.begin(), this->x_values_.end());
-				transformation.setDataMinX(min, this->baseDateX_);
-				transformation.setDataMaxX(max, this->baseDateX_);
+				transformation.setDataMinMaxX(min, max, this->baseDateX_);
+
 			}
 			else {
 				double min = ( this->x_values_.empty() ) ? 0 : *std::min_element(this->x_values_.begin(), this->x_values_.end());
 				double max = ( this->x_values_.empty() ) ? 100 : *std::max_element(this->x_values_.begin(), this->x_values_.end());
-				transformation.setMinX(min);
-				transformation.setMaxX(max);
+				transformation.setMinMaxX(min, max);
+
 			}
 		}
 		if ( transformation.getAutomaticY() ) {
@@ -452,15 +453,13 @@ void TableDecoder::visit(Transformation& transformation)
 				double min = ( this->y_values_.empty() ) ? 0 : *std::min_element(this->y_values_.begin(), this->y_values_.end());
 				double max = ( this->y_values_.empty() ) ? 24*3600 : *std::max_element(this->y_values_.begin(), this->y_values_.end());
 
-				transformation.setDataMinY(min, this->baseDateY_);
-				transformation.setDataMaxY(max, this->baseDateY_);
+				transformation.setDataMinMaxY(min, max, this->baseDateY_);
 			}
 			else {
 				double min = ( this->y_values_.empty() ) ? 0 : *std::min_element(this->y_values_.begin(), this->y_values_.end());
 				double max = ( this->y_values_.empty() ) ? 100 : *std::max_element(this->y_values_.begin(), this->y_values_.end());
 
-				transformation.setMinY(min);
-				transformation.setMaxY(max);
+				transformation.setMinMaxY(min, max);
 			}
 		}
 	}
@@ -647,6 +646,7 @@ void TableDecoder::customisedPoints(const Transformation& t, const std::set<stri
 
 void TableDecoder::visit(ValuesCollector& points)
 {
+
 	const Transformation& transformation = points.transformation();
 	
 	points.setCollected(true);
diff --git a/src/decoders/ThinningMethod.cc b/src/decoders/ThinningMethod.cc
index d0623f9..bf7b5f2 100644
--- a/src/decoders/ThinningMethod.cc
+++ b/src/decoders/ThinningMethod.cc
@@ -78,6 +78,9 @@ AutomaticThinningMethod::~AutomaticThinningMethod()
 void AutomaticThinningMethod::set(const ThinningMethodUI& ui) 
 {
 	nbPoints_ = ui.nbPoints_;
+	x_ = ui.width_*nbPoints_;
+	y_ = ui.height_*nbPoints_;
+	units_ = nbPoints_;
 	rawOnly_ = ui.rawOnly_; // If true, do not thin .. only show raw data if resolution allows it! 
 }
 
@@ -100,48 +103,5 @@ static SimpleObjectMaker<AutomaticThinningMethod, ThinningMethod> automatic("aut
 static SimpleObjectMaker<BasicThinningMethod, BasicThinningMethod> basic("basic");
 static SimpleObjectMaker<BasicThinningMethod, BasicThinningMethod> data("data");
 
-/*
-const Transformation& transformation = parent.transformation();
-try {
-	MatrixHandler<P>& inx = data.xComponent();
-	MatrixHandler<P>& iny = data.yComponent();
-
-	vector thinx;
-	vector thiny;
-	
- int xfactor = this->thinning_factor_;
-	if ( magCompare(this->thinning_method_, "automatic" ) ) {
-		// We need to recalcalate the thinning ...			
-		double width = parent.transformation().getMaxX() - parent.transformation().getMinX();
-		this->thinning_factor_ = (width/this->thinning_factor_) / inx .XResolution();
-		xfactor = (int) ceil((float)  this->thinning_factor_);
-		 
-		MagLog::dev() << " Thinning factor->" << this->thinning_factor_ << endl;
-		
-	}
-	this->thinning_factor_ = xfactor;
-	(*this->type_).prepare(parent, xfactor*inx .XResolution());
-
-	transformation.thin(inx, this->thinning_factor_, this->thinning_factor_, thinx);
-	transformation.thin(iny, this->thinning_factor_, this->thinning_factor_, thiny);
-
-	typename vector<P>::const_iterator x = thinx.begin();
-	typename vector<P>::const_iterator y = thiny.begin();
-
-	while ( x != thinx.end() && y != thiny.end() )
-	{
-		
-		if ( x->value() != inx.missing() &&  y->value() != iny.missing() ) {
-		    pair<double, double> component = make_pair( x->value(), y->value());
-		    transformation.reprojectComponents(*x, component);
-			(*this->type_)(*x, transformation(*x), component.first,  component.second, 0);
-		}
-		// Here we could check that the lat/lon of the x and y coordinates are the same...
-		x++;
-		y++;
-	} 
-}
-catch ( MagException& e) 
-{
-*/
+
 
diff --git a/src/decoders/ThinningMethod.h b/src/decoders/ThinningMethod.h
index 0c4cd95..729f585 100644
--- a/src/decoders/ThinningMethod.h
+++ b/src/decoders/ThinningMethod.h
@@ -27,9 +27,11 @@ class UserPoint;
 class UserPoint;
 
 struct ThinningMethodUI {
-	int nbPoints_; // For automatic Method
+	int nbPoints_; // For automatic Method by cm !
 	int factor_;
 	bool rawOnly_;
+	double  height_; // hight of the plit in  cm !
+	double  width_; // hight of the plit in  cm !
 };
 
 class ThinningMethod {
@@ -75,9 +77,16 @@ public:
 	int points() const { return nbPoints_; }
 	void points(int points) { nbPoints_ = points; }
 	bool rawOnly() const { return rawOnly_; }
+
+	int x() const { return x_; }
+	int y() const { return y_; }
+
 protected: 
 	int nbPoints_;
 	bool rawOnly_;
+	int x_;
+	int y_;
+
 };
 
 class BasicThinningMethod: public ThinningMethod
diff --git a/src/decoders/WindMode.cc b/src/decoders/WindMode.cc
index 054346c..6461c70 100644
--- a/src/decoders/WindMode.cc
+++ b/src/decoders/WindMode.cc
@@ -103,7 +103,7 @@ pair<double, double> SDWindMode::operator()(double s, double d)
 	double a = 90 - (d);    
 	double x = 3.14/180.;
 	a *= x;
-    return make_pair(s * -1 * cos(a), s*-1* sin(a)) ;
+    return std::make_pair(s * -1 * cos(a), s*-1* sin(a)) ;
   
 }
 
diff --git a/src/decoders/WindMode.h b/src/decoders/WindMode.h
index 0b269a7..dc49fde 100644
--- a/src/decoders/WindMode.h
+++ b/src/decoders/WindMode.h
@@ -60,7 +60,7 @@ public:
     virtual void toxml(ostream&) {}
 
     virtual void x(Matrix**,  Matrix**, Matrix*, Matrix*) {}
-    virtual pair<double, double> operator()(double x, double y) { return make_pair(x, y); }
+    virtual pair<double, double> operator()(double x, double y) { return std::make_pair(x, y); }
 
     virtual ValuesCollectorData* values(double lon, double lat, double x, double y, double dist)
     { return new ValuesCollectorData(lon, lat, x, dist); }
@@ -91,7 +91,7 @@ public:
 	virtual ~UVWindMode() {}
 	WindMode* clone() const { return new UVWindMode(); }
 	virtual void x(Matrix** out,  Matrix**, Matrix* in1, Matrix* in2);
-	virtual pair<double, double> operator()(double x, double y) { return make_pair(x, y); }
+	virtual pair<double, double> operator()(double x, double y) { return std::make_pair(x, y); }
 	ValuesCollectorData* values(double lon, double lat, double x, double y, double dist)
 	{ return new ValuesCollectorUVData(lon, lat, x, y, dist); }
 	double norm(double x, double y) const {return sqrt(x*x+y*y);}
diff --git a/src/decoders/XYList.cc b/src/decoders/XYList.cc
index fdebb85..1cc7b25 100644
--- a/src/decoders/XYList.cc
+++ b/src/decoders/XYList.cc
@@ -127,7 +127,8 @@ void XYList::customisedPoints(const std::set<string>& needs, CustomisedPointsLis
 	if ( needs.find("area")  == needs.end() )
 		return;
 
-	while (  x2 != x2_.rend() || y2 != y2_.rend()  ) {
+
+	while (  x2 != x2_.rend() && y2 != y2_.rend()  ) {
 		CustomisedPoint* point = new CustomisedPoint();
 			    		if ( same(*x2, x_missing_) )
 			    			point->missing(true);
@@ -226,13 +227,39 @@ void XYList::getReady(const Transformation& transformation)
 	catch (...) {}
 	
 	try {
-		for ( vector<string>::const_iterator x = x2_date_.begin(); x != x2_date_.end(); ++x )
-			x2_.push_back(transformation.x(*x));
-		}
+		if ( transformation.xAxisType() == "date" ) {
+			// Fisrt create the x_date if base date and offset are used!
+			if ( x2_date_.empty() && !x2_base_.empty() ) {
+				DateTime base(x2_base_);
+				double off = offset(x2_offset_);
+				for ( vector<double>::const_iterator x = x2_.begin(); x != x2_.end(); ++x ) {
+					DateTime date(base + Second((*x)*off));
+					x2_date_.push_back(date);
+				}
+			}
+			if ( !x2_date_.empty() )
+				x2_.clear();
+			for ( vector<string>::const_iterator x = x2_date_.begin(); x != x2_date_.end(); ++x )
+				x2_.push_back(transformation.x(*x));
+			}
+	}
 	catch (...) {}
 	try {
-		for ( vector<string>::const_iterator y = y2_date_.begin(); y != y2_date_.end(); ++y )
-			y2_.push_back(transformation.y(*y));
+		// Fisrt create the x_date if base date and offset are used!
+				if ( transformation.yAxisType() == "date" ) {
+				if ( y2_date_.empty() && !y2_base_.empty() ) {
+					DateTime base(y2_base_);
+					double off = offset(y2_offset_);
+					for ( vector<double>::const_iterator y = y2_.begin(); y != y2_.end(); ++y ) {
+						DateTime date(base + Second((*y)*off));
+						y2_date_.push_back(date);
+					}
+				}
+				if ( !y2_date_.empty() )
+					y2_.clear();
+				for ( vector<string>::const_iterator y = y2_date_.begin(); y != y2_date_.end(); ++y )
+					y2_.push_back(transformation.y(*y));
+				}
 	}
 	catch (...) {}
 
@@ -268,12 +295,11 @@ void XYList::visit(Transformation& transformation)
 		this->prepare();
 
 				if ( transformation.getAutomaticX() ) {
-					transformation.setMinX(*std::min_element(this->x_.begin(), this->x_.end()));
-					transformation.setMaxX(*std::max_element(this->x_.begin(), this->x_.end()));
-				}
+					transformation.setMinMaxX(*std::min_element(this->x_.begin(), this->x_.end()),
+								*std::max_element(this->x_.begin(), this->x_.end()));				}
 				if ( transformation.getAutomaticY() ) {
-					transformation.setMinY(*std::min_element(this->y_.begin(), this->y_.end()));
-					transformation.setMaxY(*std::max_element(this->y_.begin(), this->y_.end()));
+					transformation.setMinMaxY(*std::min_element(this->y_.begin(), this->y_.end()),
+								*std::max_element(this->y_.begin(), this->y_.end()) );
 				}
 			}
 			catch ( ... )
diff --git a/src/drivers/BaseDriver.cc b/src/drivers/BaseDriver.cc
index 2cf2b54..6d0ffe5 100644
--- a/src/drivers/BaseDriver.cc
+++ b/src/drivers/BaseDriver.cc
@@ -43,9 +43,9 @@
 #include <BaseDriverSymbols.h>
 #include <BaseDriverWind.h>
 #include <BaseDriverImages.h>
-#include <BaseDriverBinaryReader.cc>
 
 #include <System.h>
+#include <Timer.h>
 
 using namespace magics;
 
@@ -206,7 +206,7 @@ void BaseDriver::readFonts() const
 		}
 		psfile.close();
 	}
-	else MagLog::fatal() << "BaseDriver::readFonts() --> Cannot open Font file " << s << " ! No text can be plotted.\n";
+	else MagLog::error() << "BaseDriver::readFonts() --> Cannot open Font file " << s << " ! No text can be plotted.\n";
 }
 
 /*! \brief formulating a filename
@@ -219,6 +219,9 @@ void BaseDriver::readFonts() const
 */
 string BaseDriver::getFileName(const string &extension, const unsigned int no) const
 {
+	// offsetting the current page number if the users has set so
+	const unsigned int no2 = (firstvalue_ >= 0) ? (no+firstvalue_-1) : no;
+
 	string ext = "."+extension;
 	bool full     = false;
 	bool legacy   = false;
@@ -241,9 +244,7 @@ string BaseDriver::getFileName(const string &extension, const unsigned int no) c
 
 	// name stays the same as given
 	if( no==0 && (full || (legacy && extension=="ps")) ) return filename;
-	if( no==0 )  { filename += ext; return filename;}
-//	if( external_ )   { filename += "_legend"+ext; return filename;}
-
+	if( no==0 && (extension=="ps" || extension=="pdf" || extension=="kmz") )  { filename += ext;return filename;}
 
 	// if nothing is set
 	if(filename=="") filename = "magics";
@@ -262,13 +263,13 @@ string BaseDriver::getFileName(const string &extension, const unsigned int no) c
 
 	const int numberWidth = numberingwidth_;
 
-	if( (no > 1) || firstnumber_ || legacy )
+	if( (no2 > 1) || firstnumber_ || legacy )
 	{
 		char *ostr;
-		if(numberWidth==4)      {ostr=new char[5]; sprintf(ostr,"%04u",no);}
-		else if(numberWidth==3) {ostr=new char[4]; sprintf(ostr,"%03u",no);}
-		else if(numberWidth==2) {ostr=new char[3]; sprintf(ostr,"%02u",no);}
-		else                    {ostr=new char[2]; sprintf(ostr,"%u",no);}
+		if(numberWidth==4)      {ostr=new char[5]; sprintf(ostr,"%04u",no2);}
+		else if(numberWidth==3) {ostr=new char[4]; sprintf(ostr,"%03u",no2);}
+		else if(numberWidth==2) {ostr=new char[3]; sprintf(ostr,"%02u",no2);}
+		else                    {ostr=new char[2]; sprintf(ostr,"%u",no2);}
 		filename += separator_+ostr+ext;
 		delete [] ostr;
 	}
@@ -321,6 +322,10 @@ MAGICS_NO_EXPORT void BaseDriver::redisplay(const EndPage& ) const
    vecPoints_.clear();
 }
 
+MAGICS_NO_EXPORT void BaseDriver::redisplay(const ClearObject& ) const
+{
+   vecPoints_.clear();
+}
 
 void BaseDriver::redisplay(const PolylineSet& line) const
 {
@@ -336,6 +341,8 @@ void BaseDriver::redisplay(const Polyline& line) const
 {
 	if(line.isFilled())   renderSimplePolygon(line);
 	if(line.isStroked())  printLine(line);
+//	ArrowProperties* pArrowProperties = line.arrowProperties();
+//	if(pArrowProperties)
 }
 
 void BaseDriver::redisplay(const Arrow& arrow) const
@@ -683,3 +690,481 @@ void BaseDriver::redisplay(const StepLayer& layer) const
 {
   MagLog::dev() << "BaseDriver::redisplay( StepLayer&)" << layer.name()<< endl;
 }
+/*!
+ \brief Method to read and execute binary file
+ 
+ This method is implemented for performance in Metview 4 and WREP
+ 
+*/
+void BaseDriver::setDimensionsFromBinary(string mbg_tmpl,MFloat &ratio,int &width) const
+{
+  ifstream in(mbg_tmpl.c_str());
+  if(in.is_open()) 
+  {
+	char mag [6];
+	in.read((char *)(&mag), 6);
+	if(strncmp( "MAGICS", mag,6) !=0 )
+	{
+		MagLog::error() << "Magics number of TEMPLATE binary file " <<mbg_tmpl<<" is wrong!\n"
+			<< "   Please check endiness and/or if you gave the right filename."<< endl;
+		return;
+	}
+
+	int checksum;
+	in.read((char *)(&checksum), sizeof(int));
+	if(checksum!=10)
+	{
+		MagLog::error() << "Checksum of TEMPLATE binary file " <<mbg_tmpl<<" is wrong!\n"
+		       << "   Please check endiness of your file."<< endl;
+		return;
+	}
+
+	int version;
+	in.read((char *)(&version), sizeof(int));
+	if(version!=BINARY_VERSION) MagLog::error() << " MGB VERSION MISMATCH " <<version<<" != "<<BINARY_VERSION << endl;
+	int lengthHeader;
+	in.read((char *)(&lengthHeader), sizeof(int));
+
+	MFloat lx;
+	MFloat ly;
+	in.read((char *)(&lx), sizeof(MFloat));
+	in.read((char *)(&ly), sizeof(MFloat));
+	in.close();
+
+	ratio = ly / lx;
+	width = maground(lx);
+  }
+  else
+  {
+  	MagLog::error() << "TEMPLATE binary file " <<mbg_tmpl<<" could NOT be opened!"<< endl;
+  }
+}
+
+
+/*!
+ \brief Method to read and execute binary file
+ 
+ This method is implemented for performance in Metview 4 and WREP
+ 
+*/
+void BaseDriver::redisplay(const BinaryObject& binary) const 
+{
+  Timer timer("binary", " read");
+  const string mbg_tmpl = binary.getPath();
+  ifstream in(mbg_tmpl.c_str());
+  if(in.is_open()) 
+  {
+    const float alpha = binary.getTransparency();
+    char mag [6];
+    in.read((char *)(&mag), 6);
+    if(strncmp( "MAGICS", mag,6) !=0 )
+    {
+	  MagLog::error() << "Magics number of binary file " <<mbg_tmpl.c_str()<<" is wrong!\n"
+			<< "   Please check endiness and if you gave the right filename."<< endl;
+	  return;
+    }
+
+    int checksum;
+  in.read((char *)(&checksum), sizeof(int));
+  if(checksum!=10)
+  {
+    MagLog::error() << "Checksum of binary file " <<mbg_tmpl.c_str()<<" is wrong!\n"
+                    << "   Please check endiness of your file."<< endl;
+    return;
+  }
+
+  string old_currentLayer_ = currentLayer_;
+  currentLayer_ = mbg_tmpl;
+
+  Layer lay;
+  lay.name(mbg_tmpl);
+  newLayer(lay);
+
+  int version;
+  in.read((char *)(&version), sizeof(int));
+
+  int lengthHeader;
+  in.read((char *)(&lengthHeader), sizeof(int));
+  
+  
+  MFloat lx;
+  MFloat ly;
+  in.read((char *)(&lx), sizeof(MFloat));
+  in.read((char *)(&ly), sizeof(MFloat));
+  
+//  if(lx!=0 || ly != 0) MagLog::warning()<<"Reading Binary: dimension mismatch!!!"<< std::endl;
+  Layout la;
+   la.x(binary.getMgb_x());
+   la.y(binary.getMgb_y());
+   la.width(binary.getMgb_width());
+   la.height(binary.getMgb_height());
+   la.minX(0);
+   la.minY(0);
+   la.maxX(100);
+   la.maxY(100);
+  project(la);
+
+  char c;
+  while( in.get(c) )
+  {
+	int n;
+	switch(c) {
+	case 'T':
+		MFloat x;
+		MFloat y;
+		MFloat s;
+		int len, noNT;
+		int size;
+		{ 
+			in.read((char *)(&size), sizeof(int));
+			MFloat r,g,b;
+			in.read((char *)(&r), sizeof(MFloat));
+			in.read((char *)(&g), sizeof(MFloat));
+			in.read((char *)(&b), sizeof(MFloat));
+
+			MFloat angle;
+			in.read((char *)(&angle), sizeof(MFloat));
+			bool bl;
+			in.read((char *)(&bl), sizeof(bool));
+			enum Justification horizontal;
+			enum VerticalAlign vertical;
+			in.read((char *)(&horizontal), sizeof(enum Justification));
+			in.read((char *)(&vertical), sizeof(enum VerticalAlign));
+
+			in.read((char *)(&noNT), sizeof(int));
+
+			Text text;
+			text.setBlanking(bl);
+			text.setJustification(horizontal);
+			text.setVerticalAlign(vertical);
+			text.setAngle(angle);
+
+			for(int ntc=0;ntc<noNT;ntc++)
+			{
+			  in.read((char *)(&r), sizeof(MFloat));
+			  in.read((char *)(&g), sizeof(MFloat));
+			  in.read((char *)(&b), sizeof(MFloat));
+			  in.read((char *)(&s), sizeof(MFloat));
+			  in.read((char *)(&len), sizeof(int));
+			  char *tex = new char[len+1];
+			  in.read(tex, sizeof(char)*len);
+			  tex[len]='\0';
+			  string str(tex);
+			  text.addText(str,Colour(r,g,b,alpha),s);
+			  delete [] tex;
+			}
+
+			for(int n=0;n<size;n++)
+			{
+				in.read((char *)(&x), sizeof(MFloat));
+				in.read((char *)(&y), sizeof(MFloat));
+				PaperPoint pp(x,y);
+				text.push_back(pp);
+			}
+			renderText(text);
+		}
+        	break;
+
+	case 'A':
+        	in.read((char *)(&n), sizeof(int));
+        	{
+			Arrow arrow;
+			double sc;
+			in.read((char *)(&sc), sizeof(double));
+			arrow.setScale(sc);
+			int index;
+			in.read((char *)(&index), sizeof(int));
+			arrow.setHeadIndex(index);
+			LineStyle ls;
+			in.read((char *)(&ls), sizeof(LineStyle));
+			arrow.setStyle(ls);
+			ArrowPosition ap;
+			in.read((char *)(&ap), sizeof(ArrowPosition));
+			arrow.setArrowPosition(ap);
+			int hi;
+			in.read((char *)(&hi), sizeof(int));
+			arrow.setHeadIndex(hi);
+			double hr;
+			in.read((char *)(&hr), sizeof(double));
+			arrow.setHeadRatio(hr);
+			MFloat r,g,b;
+			in.read((char *)(&r), sizeof(MFloat));
+			in.read((char *)(&g), sizeof(MFloat));
+			in.read((char *)(&b), sizeof(MFloat));
+			setNewColour(Colour(r,g,b,alpha));
+			arrow.setColour(Colour(r,g,b,alpha));
+
+			for(int pts=0;pts<n;pts++)
+			{
+			  double x,y;
+			  in.read((char *)(&x), sizeof(double));
+			  in.read((char *)(&y), sizeof(double));
+			  PaperPoint p;
+			  in.read((char *)(&p), sizeof(PaperPoint));
+			  ArrowPoint ap(x, y, p);
+			  arrow.push_back(ap);
+			} 
+			renderWindArrow(arrow);
+		}
+		break;
+	case 'F':
+        	in.read((char *)(&n), sizeof(int));
+        	{
+			Flag flag;
+			double ll;
+			in.read((char *)(&ll), sizeof(double));
+			flag.setLength(ll);
+			LineStyle ls;
+			in.read((char *)(&ls), sizeof(LineStyle));
+			flag.setStyle(ls);
+			FlagConvention fc;
+			in.read((char *)(&fc), sizeof(FlagConvention));
+			flag.setConvention(fc);
+			Hemisphere he;
+			in.read((char *)(&he), sizeof(Hemisphere));
+			flag.setHemisphere(he);
+			double hr;
+			in.read((char *)(&hr), sizeof(double));
+			flag.setThickness(hr);
+			double hi;
+			in.read((char *)(&hi), sizeof(double));
+			flag.setOriginHeight(hi);
+
+			MFloat r,g,b;
+			in.read((char *)(&r), sizeof(MFloat));
+			in.read((char *)(&g), sizeof(MFloat));
+			in.read((char *)(&b), sizeof(MFloat));
+			setNewColour(Colour(r,g,b,alpha));
+			flag.setColour(Colour(r,g,b,alpha));
+
+			int len;
+			in.read((char *)(&len), sizeof(int));
+			char *tex = new char[len+1];
+			in.read(tex, sizeof(char)*len);
+			tex[len]='\0';
+			string str(tex);
+			flag.setOriginMarker(str);
+
+			for(int pts=0;pts<n;pts++)
+			{
+			  double x,y;
+			  in.read((char *)(&x), sizeof(double));
+			  in.read((char *)(&y), sizeof(double));
+			  PaperPoint p;
+			  in.read((char *)(&p), sizeof(PaperPoint));
+			  ArrowPoint ap(x, y, p);
+			  flag.push_back(ap);
+			} 
+			renderWindFlag(flag);
+		}
+		break;
+	case 'H':
+		in.read((char *)(&n), sizeof(int));
+		{
+			MFloat *x = new MFloat[n];
+			MFloat *y = new MFloat[n];
+			in.read((char *)(x), sizeof(MFloat)*n);
+			in.read((char *)(y), sizeof(MFloat)*n);
+			renderPolyline( n, x, y);
+			delete [] x;
+			delete [] y;
+		}
+		break;
+
+	case 'I':
+		{
+			MFloat x0=0.;
+			MFloat x1=0.;
+			MFloat y0=0.;
+			MFloat y1 = 0.;
+			int he=0;
+			int wi=0;
+			int si=0;
+			double red=0.;double green=0.;double blue=0.;double alpha=0.;
+
+			in.read((char *)(&wi), sizeof(int));
+			in.read((char *)(&he), sizeof(int));
+			in.read((char *)(&x0), sizeof(MFloat));
+			in.read((char *)(&y0), sizeof(MFloat));
+			in.read((char *)(&x1), sizeof(MFloat));
+			in.read((char *)(&y1), sizeof(MFloat));
+			const int d=wi*he;
+
+			in.read((char *)(&si), sizeof(int));
+			ColourTable table;
+
+
+			for(int v=0;v<si;v++)
+			{
+			  in.read((char *)(&red  ), sizeof(double));
+			  in.read((char *)(&green), sizeof(double));
+			  in.read((char *)(&blue ), sizeof(double));
+			  in.read((char *)(&alpha), sizeof(double));
+			  table.push_back(ColourTableEntry(Colour(red,green,blue,alpha)));
+			}
+
+			short cc[d];
+			in.read((char *)(cc), sizeof(short)*d);
+
+			Image object;
+			PaperPoint pp(x0,y0,0.);
+			object.setOrigin(pp);
+			object.setWidth(x1);
+			object.setHeight(y1);
+			object.set(he,wi);
+			for(int i=0;i<d;i++) object.push_back(cc[i]);
+			object.setColourTable(table);
+			renderCellArray(object);
+		}
+		break;
+
+	case 'B':
+		in.read((char *)(&n), sizeof(int));
+		{
+			MFloat *x = new MFloat[n];
+			MFloat *y = new MFloat[n];
+			in.read((char *)(x), sizeof(MFloat)*n);
+			in.read((char *)(y), sizeof(MFloat)*n);
+			renderPolyline2( n, x, y);
+			delete [] x;
+			delete [] y;
+		}
+		break;
+
+	case 'R':
+		MFloat cx,cy,cr;
+		int cs;
+		in.read((char *)(&cx), sizeof(MFloat));
+		in.read((char *)(&cy), sizeof(MFloat));
+		in.read((char *)(&cr), sizeof(MFloat));
+		in.read((char *)(&cs), sizeof(int));
+		circle( cx, cy, cr, cs);
+		break;
+
+	case 'X':
+		in.read((char *)(&n), sizeof(int));
+		{
+			MFloat *x = new MFloat[n];
+			MFloat *y = new MFloat[n];
+			in.read((char *)(x), sizeof(MFloat)*n);
+			in.read((char *)(y), sizeof(MFloat)*n);
+			Polyline line;
+			for(int i=0;i<n;i++)
+			{
+				line.push_back(PaperPoint(x[i],y[i]));
+			}
+			unsigned int nh = 0;
+			in.read((char *)(&nh), sizeof(unsigned int));
+			if(nh!=0)
+			{
+			 for (unsigned int h=0; h < nh; ++h)
+			 {
+			  unsigned int nhx = 0;
+			  in.read((char *)(&nhx), sizeof(unsigned int));
+			  MFloat *xx = new MFloat[nhx];
+			  MFloat *yy = new MFloat[nhx];
+			  in.read((char *)(xx), sizeof(MFloat)*nhx);
+			  in.read((char *)(yy), sizeof(MFloat)*nhx);
+			  line.newHole();
+			  for (unsigned int u=0; u < nhx; ++u)
+			  {
+			    line.push_back_hole( PaperPoint(xx[u],yy[u]) );
+			  }
+			 }
+			}
+			line.setFillColour(Colour("green"));
+			FillShadingProperties* shading = new FillShadingProperties();    
+			line.setShading(shading);
+			MFloat r,g,b,a;
+			in.read((char *)(&r), sizeof(MFloat));
+			in.read((char *)(&g), sizeof(MFloat));
+			in.read((char *)(&b), sizeof(MFloat));
+			in.read((char *)(&a), sizeof(MFloat));
+			line.setFillColour(Colour(r,g,b,a*alpha));
+			renderSimplePolygon(line);
+			delete [] x;
+			delete [] y;
+		}
+	break;
+	case 'S':
+		in.read((char *)(&n), sizeof(int));
+        	{
+			MFloat *x = new MFloat[n];
+			MFloat *y = new MFloat[n];
+			in.read((char *)(x), sizeof(MFloat)*n);
+			in.read((char *)(y), sizeof(MFloat)*n);
+			renderSimplePolygon( n, x, y);
+			delete [] x;
+			delete [] y;
+		}
+		break;
+
+	case 'W':
+		MFloat width;
+		in.read((char *)(&width), sizeof(MFloat));
+		setNewLineWidth(width);
+		break;
+
+	case 'L':
+		MFloat w;
+		LineStyle linestyle;
+		in.read((char *)(&linestyle), sizeof(LineStyle));
+		in.read((char *)(&w), sizeof(MFloat));
+		setLineParameters(linestyle, w);
+		break;
+
+	case 'C':
+		MFloat r,g,b,a;
+		in.read((char *)(&r), sizeof(MFloat));
+		in.read((char *)(&g), sizeof(MFloat));
+		in.read((char *)(&b), sizeof(MFloat));
+		in.read((char *)(&a), sizeof(MFloat));
+        	setNewColour(Colour(r,g,b,a*alpha));
+        	break;
+
+	case 'N':
+        	startPage();
+        	break;
+
+	case 'E':
+        	endPage();
+        	break;
+
+	case 'P':
+		{
+			Layout l;
+			double x,y,w,h,minx,miny,maxx,maxy;
+			in.read((char *)(&x), sizeof(double));
+			in.read((char *)(&y), sizeof(double));
+			in.read((char *)(&w), sizeof(double));
+			in.read((char *)(&h), sizeof(double));
+			in.read((char *)(&minx), sizeof(double));
+			in.read((char *)(&miny), sizeof(double));
+			in.read((char *)(&maxx), sizeof(double));
+			in.read((char *)(&maxy), sizeof(double));
+			l.x(x);
+			l.y(y);
+			l.width(w);
+			l.height(h);
+			l.minX(minx);
+			l.minY(miny);
+			l.maxX(maxx);
+			l.maxY(maxy);
+			project(l);
+		}
+        	break;
+	case 'U':
+        	unproject();
+        	break;
+	}
+   }
+   unproject();
+   in.close();
+   closeLayer(lay);
+   currentLayer_ = old_currentLayer_;
+  }
+  else
+  {
+  	MagLog::error() << "TEMPLATE binary file " <<mbg_tmpl<<" could NOT be opened!"<< endl;
+  }
+}
diff --git a/src/drivers/BaseDriver.h b/src/drivers/BaseDriver.h
index 0647c44..56e2681 100644
--- a/src/drivers/BaseDriver.h
+++ b/src/drivers/BaseDriver.h
@@ -87,7 +87,7 @@ class PolylineSet;
 class Text;
 class Symbol;
 class TextSymbol;
-
+class ClearObject;
 class ComplexSymbol;
 class TextItem;
 class FlagItem;
@@ -286,6 +286,7 @@ public:
 	MAGICS_NO_EXPORT void redisplay(const TextSymbol&) const;
 	//! Method to redisplay a ComlpexSymbol.
 	void redisplay(const ComplexSymbol&) const;
+	void redisplay(const ClearObject&) const;
 	void redisplay(const TextItem&, const ComplexSymbol&) const;
 	void redisplay(const FlagItem&, const ComplexSymbol&) const;
 	void redisplay(const SymbolItem&, const ComplexSymbol&) const;
diff --git a/src/drivers/BaseDriverBinaryReader.cc b/src/drivers/BaseDriverBinaryReader.cc
deleted file mode 100644
index f11cf0e..0000000
--- a/src/drivers/BaseDriverBinaryReader.cc
+++ /dev/null
@@ -1,513 +0,0 @@
-/******************************** LICENSE ********************************
-
-
-  Copyright 2009 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-
- ******************************** LICENSE ********************************/
-
-/*! \file BaseDriverBinaryReader.cc
-    \brief Implementation of methods to read the binary input
-    
-    Magics Team - ECMWF 2010
-    
-    Started: June 2010
-    
-    Changes:
-
-*/
-#include "Timer.h"
-
-using namespace magics;
-
-/*!
- \brief Method to read and execute binary file
- 
- This method is implemented for performance in Metview 4 and WREP
- 
-*/
-void BaseDriver::setDimensionsFromBinary(string mbg_tmpl,MFloat &ratio,int &width) const
-{
-  ifstream in(mbg_tmpl.c_str());
-  if(in.is_open()) 
-  {
-	char mag [6];
-	in.read((char *)(&mag), 6);
-	if(strncmp( "MAGICS", mag,6) !=0 )
-	{
-		MagLog::error() << "Magics number of TEMPLATE binary file " <<mbg_tmpl<<" is wrong!\n"
-			<< "   Please check endiness and/or if you gave the right filename."<< endl;
-		return;
-	}
-
-	int checksum;
-	in.read((char *)(&checksum), sizeof(int));
-	if(checksum!=10)
-	{
-		MagLog::error() << "Checksum of TEMPLATE binary file " <<mbg_tmpl<<" is wrong!\n"
-		       << "   Please check endiness of your file."<< endl;
-		return;
-	}
-
-	int version;
-	in.read((char *)(&version), sizeof(int));
-	if(version!=BINARY_VERSION) MagLog::error() << " MGB VERSION MISMATCH " <<version<<" != "<<BINARY_VERSION << endl;
-	int lengthHeader;
-	in.read((char *)(&lengthHeader), sizeof(int));
-
-	MFloat lx;
-	MFloat ly;
-	in.read((char *)(&lx), sizeof(MFloat));
-	in.read((char *)(&ly), sizeof(MFloat));
-	in.close();
-
-	ratio = ly / lx;
-	width = maground(lx);
-  }
-  else
-  {
-  	MagLog::error() << "TEMPLATE binary file " <<mbg_tmpl<<" could NOT be opened!"<< endl;
-  }
-}
-
-
-/*!
- \brief Method to read and execute binary file
- 
- This method is implemented for performance in Metview 4 and WREP
- 
-*/
-void BaseDriver::redisplay(const BinaryObject& binary) const 
-{
-  Timer timer("binary", " read");
-  const string mbg_tmpl = binary.getPath();
-  ifstream in(mbg_tmpl.c_str());
-  if(in.is_open()) 
-  {
-    const float alpha = binary.getTransparency();
-    char mag [6];
-    in.read((char *)(&mag), 6);
-    if(strncmp( "MAGICS", mag,6) !=0 )
-    {
-	  MagLog::error() << "Magics number of binary file " <<mbg_tmpl.c_str()<<" is wrong!\n"
-			<< "   Please check endiness and if you gave the right filename."<< endl;
-	  return;
-    }
-
-    int checksum;
-  in.read((char *)(&checksum), sizeof(int));
-  if(checksum!=10)
-  {
-    MagLog::error() << "Checksum of binary file " <<mbg_tmpl.c_str()<<" is wrong!\n"
-                    << "   Please check endiness of your file."<< endl;
-    return;
-  }
-
-  string old_currentLayer_ = currentLayer_;
-  currentLayer_ = mbg_tmpl;
-
-  Layer lay;
-  lay.name(mbg_tmpl);
-  newLayer(lay);
-
-  int version;
-  in.read((char *)(&version), sizeof(int));
-
-  int lengthHeader;
-  in.read((char *)(&lengthHeader), sizeof(int));
-  
-  
-  MFloat lx;
-  MFloat ly;
-  in.read((char *)(&lx), sizeof(MFloat));
-  in.read((char *)(&ly), sizeof(MFloat));
-  
-//  if(lx!=0 || ly != 0) MagLog::warning()<<"Reading Binary: dimension mismatch!!!"<<endl;
-  Layout la;
-   la.x(binary.getMgb_x());
-   la.y(binary.getMgb_y());
-   la.width(binary.getMgb_width());
-   la.height(binary.getMgb_height());
-   la.minX(0);
-   la.minY(0);
-   la.maxX(100);
-   la.maxY(100);
-  project(la);
-
-  char c;
-  while( in.get(c) )
-  {
-	int n;
-	switch(c) {
-	case 'T':
-		MFloat x;
-		MFloat y;
-		MFloat s;
-		int len, noNT;
-		int size;
-		{ 
-			in.read((char *)(&size), sizeof(int));
-			MFloat r,g,b;
-			in.read((char *)(&r), sizeof(MFloat));
-			in.read((char *)(&g), sizeof(MFloat));
-			in.read((char *)(&b), sizeof(MFloat));
-
-			MFloat angle;
-			in.read((char *)(&angle), sizeof(MFloat));
-			bool bl;
-			in.read((char *)(&bl), sizeof(bool));
-			enum Justification horizontal;
-			enum VerticalAlign vertical;
-			in.read((char *)(&horizontal), sizeof(enum Justification));
-			in.read((char *)(&vertical), sizeof(enum VerticalAlign));
-
-			in.read((char *)(&noNT), sizeof(int));
-
-			Text text;
-			text.setBlanking(bl);
-			text.setJustification(horizontal);
-			text.setVerticalAlign(vertical);
-			text.setAngle(angle);
-
-			for(int ntc=0;ntc<noNT;ntc++)
-			{
-			  in.read((char *)(&r), sizeof(MFloat));
-			  in.read((char *)(&g), sizeof(MFloat));
-			  in.read((char *)(&b), sizeof(MFloat));
-			  in.read((char *)(&s), sizeof(MFloat));
-			  in.read((char *)(&len), sizeof(int));
-			  char *tex = new char[len+1];
-			  in.read(tex, sizeof(char)*len);
-			  tex[len]='\0';
-			  string str(tex);
-			  text.addText(str,Colour(r,g,b,alpha),s);
-			  delete [] tex;
-			}
-
-			for(int n=0;n<size;n++)
-			{
-				in.read((char *)(&x), sizeof(MFloat));
-				in.read((char *)(&y), sizeof(MFloat));
-				PaperPoint pp(x,y);
-				text.push_back(pp);
-			}
-			renderText(text);
-		}
-        	break;
-
-	case 'A':
-        	in.read((char *)(&n), sizeof(int));
-        	{
-			Arrow arrow;
-			double sc;
-			in.read((char *)(&sc), sizeof(double));
-			arrow.setScale(sc);
-			int index;
-			in.read((char *)(&index), sizeof(int));
-			arrow.setHeadIndex(index);
-			LineStyle ls;
-			in.read((char *)(&ls), sizeof(LineStyle));
-			arrow.setStyle(ls);
-			ArrowPosition ap;
-			in.read((char *)(&ap), sizeof(ArrowPosition));
-			arrow.setArrowPosition(ap);
-			int hi;
-			in.read((char *)(&hi), sizeof(int));
-			arrow.setHeadIndex(hi);
-			double hr;
-			in.read((char *)(&hr), sizeof(double));
-			arrow.setHeadRatio(hr);
-			MFloat r,g,b;
-			in.read((char *)(&r), sizeof(MFloat));
-			in.read((char *)(&g), sizeof(MFloat));
-			in.read((char *)(&b), sizeof(MFloat));
-			setNewColour(Colour(r,g,b,alpha));
-			arrow.setColour(Colour(r,g,b,alpha));
-
-			for(int pts=0;pts<n;pts++)
-			{
-			  double x,y;
-			  in.read((char *)(&x), sizeof(double));
-			  in.read((char *)(&y), sizeof(double));
-			  PaperPoint p;
-			  in.read((char *)(&p), sizeof(PaperPoint));
-			  ArrowPoint ap(x, y, p);
-			  arrow.push_back(ap);
-			} 
-			renderWindArrow(arrow);
-		}
-		break;
-	case 'F':
-        	in.read((char *)(&n), sizeof(int));
-        	{
-			Flag flag;
-			double ll;
-			in.read((char *)(&ll), sizeof(double));
-			flag.setLength(ll);
-			LineStyle ls;
-			in.read((char *)(&ls), sizeof(LineStyle));
-			flag.setStyle(ls);
-			FlagConvention fc;
-			in.read((char *)(&fc), sizeof(FlagConvention));
-			flag.setConvention(fc);
-			Hemisphere he;
-			in.read((char *)(&he), sizeof(Hemisphere));
-			flag.setHemisphere(he);
-			double hr;
-			in.read((char *)(&hr), sizeof(double));
-			flag.setThickness(hr);
-			double hi;
-			in.read((char *)(&hi), sizeof(double));
-			flag.setOriginHeight(hi);
-
-			MFloat r,g,b;
-			in.read((char *)(&r), sizeof(MFloat));
-			in.read((char *)(&g), sizeof(MFloat));
-			in.read((char *)(&b), sizeof(MFloat));
-			setNewColour(Colour(r,g,b,alpha));
-			flag.setColour(Colour(r,g,b,alpha));
-
-			int len;
-			in.read((char *)(&len), sizeof(int));
-			char *tex = new char[len+1];
-			in.read(tex, sizeof(char)*len);
-			tex[len]='\0';
-			string str(tex);
-			flag.setOriginMarker(str);
-
-			for(int pts=0;pts<n;pts++)
-			{
-			  double x,y;
-			  in.read((char *)(&x), sizeof(double));
-			  in.read((char *)(&y), sizeof(double));
-			  PaperPoint p;
-			  in.read((char *)(&p), sizeof(PaperPoint));
-			  ArrowPoint ap(x, y, p);
-			  flag.push_back(ap);
-			} 
-			renderWindFlag(flag);
-		}
-		break;
-	case 'H':
-		in.read((char *)(&n), sizeof(int));
-		{
-			MFloat *x = new MFloat[n];
-			MFloat *y = new MFloat[n];
-			in.read((char *)(x), sizeof(MFloat)*n);
-			in.read((char *)(y), sizeof(MFloat)*n);
-			renderPolyline( n, x, y);
-			delete [] x;
-			delete [] y;
-		}
-		break;
-
-	case 'I':
-		{
-			MFloat x0=0.;
-			MFloat x1=0.;
-			MFloat y0=0.;
-			MFloat y1 = 0.;
-			int he=0;
-			int wi=0;
-			int si=0;
-			double red=0.;double green=0.;double blue=0.;double alpha=0.;
-
-			in.read((char *)(&wi), sizeof(int));
-			in.read((char *)(&he), sizeof(int));
-			in.read((char *)(&x0), sizeof(MFloat));
-			in.read((char *)(&y0), sizeof(MFloat));
-			in.read((char *)(&x1), sizeof(MFloat));
-			in.read((char *)(&y1), sizeof(MFloat));
-			const int d=wi*he;
-
-			in.read((char *)(&si), sizeof(int));
-			ColourTable table;
-
-//cout << "Image>  pixel: "<<wi<<"x"<<he<<"="<<d<<" orig: "<<x0<<"/"<<y0<<"    dim: "<<x1<<"/"<<y1<<"     noColours: "<<si<< endl;
-
-			for(int v=0;v<si;v++)
-			{
-			  in.read((char *)(&red  ), sizeof(double));
-			  in.read((char *)(&green), sizeof(double));
-			  in.read((char *)(&blue ), sizeof(double));
-			  in.read((char *)(&alpha), sizeof(double));
-			  table.push_back(ColourTableEntry(Colour(red,green,blue,alpha)));
-			}
-
-			short cc[d];
-			in.read((char *)(cc), sizeof(short)*d);
-
-			Image object;
-			PaperPoint pp(x0,y0,0.);
-			object.setOrigin(pp);
-			object.setWidth(x1);
-			object.setHeight(y1);
-			object.set(he,wi);
-			for(int i=0;i<d;i++) object.push_back(cc[i]);
-			object.setColourTable(table);
-			renderCellArray(object);
-		}
-		break;
-
-	case 'B':
-		in.read((char *)(&n), sizeof(int));
-		{
-			MFloat *x = new MFloat[n];
-			MFloat *y = new MFloat[n];
-			in.read((char *)(x), sizeof(MFloat)*n);
-			in.read((char *)(y), sizeof(MFloat)*n);
-			renderPolyline2( n, x, y);
-			delete [] x;
-			delete [] y;
-		}
-		break;
-
-	case 'R':
-		MFloat cx,cy,cr;
-		int cs;
-		in.read((char *)(&cx), sizeof(MFloat));
-		in.read((char *)(&cy), sizeof(MFloat));
-		in.read((char *)(&cr), sizeof(MFloat));
-		in.read((char *)(&cs), sizeof(int));
-		circle( cx, cy, cr, cs);
-		break;
-
-	case 'X':
-		in.read((char *)(&n), sizeof(int));
-		{
-			MFloat *x = new MFloat[n];
-			MFloat *y = new MFloat[n];
-			in.read((char *)(x), sizeof(MFloat)*n);
-			in.read((char *)(y), sizeof(MFloat)*n);
-			Polyline line;
-			for(int i=0;i<n;i++)
-			{
-				line.push_back(PaperPoint(x[i],y[i]));
-			}
-			unsigned int nh = 0;
-			in.read((char *)(&nh), sizeof(unsigned int));
-			if(nh!=0)
-			{
-			 for (unsigned int h=0; h < nh; ++h)
-			 {
-			  unsigned int nhx = 0;
-			  in.read((char *)(&nhx), sizeof(unsigned int));
-			  MFloat *xx = new MFloat[nhx];
-			  MFloat *yy = new MFloat[nhx];
-			  in.read((char *)(xx), sizeof(MFloat)*nhx);
-			  in.read((char *)(yy), sizeof(MFloat)*nhx);
-			  line.newHole();
-			  for (unsigned int u=0; u < nhx; ++u)
-			  {
-			    line.push_back_hole( PaperPoint(xx[u],yy[u]) );
-			  }
-			 }
-			}
-			line.setFillColour(Colour("green"));
-			FillShadingProperties* shading = new FillShadingProperties();    
-			line.setShading(shading);
-			MFloat r,g,b,a;
-			in.read((char *)(&r), sizeof(MFloat));
-			in.read((char *)(&g), sizeof(MFloat));
-			in.read((char *)(&b), sizeof(MFloat));
-			in.read((char *)(&a), sizeof(MFloat));
-			line.setFillColour(Colour(r,g,b,a*alpha));
-			renderSimplePolygon(line);
-			delete [] x;
-			delete [] y;
-		}
-	break;
-	case 'S':
-		in.read((char *)(&n), sizeof(int));
-        	{
-			MFloat *x = new MFloat[n];
-			MFloat *y = new MFloat[n];
-			in.read((char *)(x), sizeof(MFloat)*n);
-			in.read((char *)(y), sizeof(MFloat)*n);
-			renderSimplePolygon( n, x, y);
-			delete [] x;
-			delete [] y;
-		}
-		break;
-
-	case 'W':
-		MFloat width;
-		in.read((char *)(&width), sizeof(MFloat));
-		setNewLineWidth(width);
-		break;
-
-	case 'L':
-		MFloat w;
-		LineStyle linestyle;
-		in.read((char *)(&linestyle), sizeof(LineStyle));
-		in.read((char *)(&w), sizeof(MFloat));
-		setLineParameters(linestyle, w);
-		break;
-
-	case 'C':
-		MFloat r,g,b,a;
-		in.read((char *)(&r), sizeof(MFloat));
-		in.read((char *)(&g), sizeof(MFloat));
-		in.read((char *)(&b), sizeof(MFloat));
-		in.read((char *)(&a), sizeof(MFloat));
-        	setNewColour(Colour(r,g,b,a*alpha));
-        	break;
-
-	case 'N':
-        	startPage();
-        	break;
-
-	case 'E':
-        	endPage();
-        	break;
-
-	case 'P':
-		{
-			Layout l;
-			double x,y,w,h,minx,miny,maxx,maxy;
-			in.read((char *)(&x), sizeof(double));
-			in.read((char *)(&y), sizeof(double));
-			in.read((char *)(&w), sizeof(double));
-			in.read((char *)(&h), sizeof(double));
-			in.read((char *)(&minx), sizeof(double));
-			in.read((char *)(&miny), sizeof(double));
-			in.read((char *)(&maxx), sizeof(double));
-			in.read((char *)(&maxy), sizeof(double));
-			l.x(x);
-			l.y(y);
-			l.width(w);
-			l.height(h);
-			l.minX(minx);
-			l.minY(miny);
-			l.maxX(maxx);
-			l.maxY(maxy);
-			project(l);
-		}
-        	break;
-	case 'U':
-        	unproject();
-        	break;
-	}
-   }
-   unproject();
-   in.close();
-   closeLayer(lay);
-   currentLayer_ = old_currentLayer_;
-  }
-  else
-  {
-  	MagLog::error() << "TEMPLATE binary file " <<mbg_tmpl<<" could NOT be opened!"<< endl;
-  }
-}
diff --git a/src/drivers/BaseDriverImages.h b/src/drivers/BaseDriverImages.h
index 5ea12ce..8746e7e 100644
--- a/src/drivers/BaseDriverImages.h
+++ b/src/drivers/BaseDriverImages.h
@@ -429,7 +429,7 @@ MAGICS_NO_EXPORT bool BaseDriver::convertToPixmap(const string &fname, const Gra
 	bool alpha = (pixmapFormat == "rgba");
 	status = renderPixmap(x0,y0,x1,y1,col,row,image,Landscape,alpha);
 
-	if(!status) MagLog::warning() <<"BaseDriver::convertToPixmap() -> no Pixmap could be drawn! Zero size of at least one dimension."<<endl;
+	if(!status) MagLog::warning() <<"BaseDriver::convertToPixmap() -> no Pixmap could be drawn! Zero size of at least one dimension."<< std::endl;
 	delete [] image;
 
 	return status;
diff --git a/src/drivers/BaseDriverSymbols.h b/src/drivers/BaseDriverSymbols.h
index fbe3b0b..946cdf4 100644
--- a/src/drivers/BaseDriverSymbols.h
+++ b/src/drivers/BaseDriverSymbols.h
@@ -129,12 +129,12 @@ MAGICS_NO_EXPORT void BaseDriver::renderTextSymbols(const TextSymbol& symbol) co
 		text.setBlanking(symbol.blanking());
 
 		MFloat shiftX = 0.;
-		MFloat shiftY = 0;
+		MFloat shiftY = 0.;
 
 		// default is M_NONE
 		if( symbol.position() == Symbol::M_NONE )
 		{
-//			cout<<"M_NONE"<<endl;
+//			std::cout<<"M_NONE"<< std::endl;
 		}
 		else if( symbol.position() == Symbol::M_RIGHT )
 		{
@@ -188,6 +188,7 @@ MAGICS_NO_EXPORT void BaseDriver::renderTextItem(const TextItem& textItem, const
 	const MFloat pX = 1. / coordRatioX_;
 	const MFloat pY = 1. / coordRatioY_;
 
+//cout <<">>>>>>>>>> "<<(*text.textBegin()).text()<<" -> "<<owner[0].x() <<" "<<owner[0].y()<< endl;
 	const MFloat posX = owner[0].x() + (           textItem.x()  * scaling *pX);
 	const MFloat posY = owner[0].y() + (setSymbolY(textItem.y()) * scaling *pY);
 	text.push_back(PaperPoint(posX, posY));
@@ -209,7 +210,7 @@ MAGICS_NO_EXPORT void BaseDriver::renderFlagItem(const FlagItem& flagItem, const
 	Flag flag;
 	flag.setLength(flagItem.length());
 	flag.setOriginMarker(flagItem.getOriginMarker());
-	flag.setOriginHeight(owner.getHeight());           // NOT flagItem.getOriginHeight() !!!
+	flag.setOriginHeight(flagItem.getOriginHeight());           // NOT flagItem.getOriginHeight() !!!
 	flag.setColour(flagItem.getColour());
 
 	flag.setHemisphere(flagItem.getHemisphere());
@@ -232,7 +233,7 @@ MAGICS_NO_EXPORT void BaseDriver::renderSymbolItem(const SymbolItem& symbol, con
 	setNewColour(symbol.colour());
 	setLineParameters(M_SOLID, 1.); // reset line
 	loadSymbols();
-	if(sym_.empty()) {MagLog::error() << "BaseDriver::renderSymbols("<<symbol.symbol()<<")-> NO symbols available!"<<endl; return;}
+	if(sym_.empty()) {MagLog::error() << "BaseDriver::renderSymbols("<<symbol.symbol()<<")-> NO symbols available!"<< std::endl; return;}
 
 	const int noSymbols = sym_.size();
 	svgSymbol sym;
@@ -331,7 +332,7 @@ MAGICS_NO_EXPORT void BaseDriver::renderSymbols(const Symbol& symbol) const
 	loadSymbols();
 
 	// if still empty
-	if(sym_.empty()) {MagLog::error() << "BaseDriver::renderSymbols("<<symbol.getSymbol()<<")-> NO symbols available!"<<endl; return;}
+	if(sym_.empty()) {MagLog::error() << "BaseDriver::renderSymbols("<<symbol.getSymbol()<<")-> NO symbols available!"<< std::endl; return;}
 
 	const int noSymbols = sym_.size();
 	svgSymbol sym;
@@ -482,13 +483,13 @@ MAGICS_NO_EXPORT void BaseDriver::snowflake(const MFloat x, const MFloat y, cons
 */
 MAGICS_NO_EXPORT void BaseDriver::drizzle(const MFloat x, const MFloat y, const MFloat size) const
 {
-	const MFloat s2 = size*.5;
+	const MFloat s2 = size*.4;
 
 	circle(x,y,s2 * coordRatioX_,8);
 
 	vector<PaperPoint> line;
-	  line.push_back(PaperPoint(x+(s2*0.8),y));
-	  line.push_back(PaperPoint(x,y-size));
+	  line.push_back(PaperPoint(x+(s2*0.9),y));
+	  line.push_back(PaperPoint(x-size*0.3,y-size*1.25));
 	renderPolyline2(line);
 }
 
@@ -498,20 +499,20 @@ MAGICS_NO_EXPORT void BaseDriver::drizzle(const MFloat x, const MFloat y, const
 MAGICS_NO_EXPORT void BaseDriver::lightning(const MFloat x, const MFloat y, const MFloat size) const
 {
 	vector<PaperPoint> line;
-	  line.push_back(PaperPoint(x-(size*.9),y-(size*.9)));
-	  line.push_back(PaperPoint(x-(size*.9),y+(size*.9)));
-	renderPolyline(line);
-	line.clear();
-	  line.push_back(PaperPoint(x-(size*.9),y+(size*.9)));
-	  line.push_back(PaperPoint(x+(size*.9),y+(size*.9)));
-	  line.push_back(PaperPoint(x+(size*.1),y));
-	  line.push_back(PaperPoint(x+(size*.9),y-(size*.9)));
-	renderPolyline(line);
-	line.clear();
-	  line.push_back(PaperPoint(x+(size*.8), y-(size*.4) ));
-	  line.push_back(PaperPoint(x+(size*.9), y-(size*.9) ));
-	  line.push_back(PaperPoint(x+(size*.45), y-(size*.8)));
-	renderPolyline(line);
+		  line.push_back(PaperPoint(x-(size*.5),y-(size*.9)));
+		  line.push_back(PaperPoint(x-(size*.5),y+(size*.9)));
+		renderPolyline(line);
+		line.clear();
+		  line.push_back(PaperPoint(x-(size*.5),y+(size*.9)));
+		  line.push_back(PaperPoint(x+(size*.5),y+(size*.9)));
+		  line.push_back(PaperPoint(x+(size*.1),y));
+		  line.push_back(PaperPoint(x+(size*.5),y-(size*.9)));
+		renderPolyline(line);
+		line.clear();
+		  line.push_back(PaperPoint(x+(size*.4), y-(size*.4) ));
+		  line.push_back(PaperPoint(x+(size*.5), y-(size*.9) ));
+		  line.push_back(PaperPoint(x+(size*.3), y-(size*.8)));
+		renderPolyline(line);
 }
 
 /*!
@@ -524,7 +525,7 @@ MAGICS_NO_EXPORT void BaseDriver::triangle(const MFloat x, const MFloat y, const
 	vector<PaperPoint> line;
 	  line.push_back(PaperPoint( x+s, y-s) );
 	  line.push_back(PaperPoint( x-s, y-s) );
-	  line.push_back(PaperPoint(   x, y+s) );
+	  line.push_back(PaperPoint(   x, y+size) );
 	  line.push_back(PaperPoint( x+s, y-s) );
 	if(fill < 1)
 	{
diff --git a/src/drivers/BinaryDriver.cc b/src/drivers/BinaryDriver.cc
index ce38e02..7d6683d 100644
--- a/src/drivers/BinaryDriver.cc
+++ b/src/drivers/BinaryDriver.cc
@@ -40,7 +40,7 @@ using namespace magics;
 */
 BinaryDriver::BinaryDriver()
 {
-	MagLog::debug() << "BinaryDriver::BinaryDriver needs implementing." <<endl;
+	MagLog::debug() << "BinaryDriver::BinaryDriver needs implementing." << std::endl;
 }
 
 /*!
@@ -445,12 +445,11 @@ MAGICS_NO_EXPORT void BinaryDriver::renderSimplePolygon(const Polyline& line) co
 	out_.write((char *)(y),  sizeof(MFloat)*n);
 	delete [] x;
 	delete [] y;
-//cout <<"BWRITER>>> "<< n<< endl;
 	Polyline::Holes::const_iterator h = line.beginHoles();
 	Polyline::Holes::const_iterator he = line.endHoles();
 	const unsigned int nh = line.numberOfHoles();
 	out_.write((char *)(&nh), sizeof(int));
-//cout <<"BWRITER>>> "<< nh<< endl;
+
 	if(nh!=0)
 	{
 	  for (; h != he; ++h)
@@ -623,7 +622,7 @@ MAGICS_NO_EXPORT void BinaryDriver::circle(const MFloat x, const MFloat y, const
 MAGICS_NO_EXPORT bool BinaryDriver::renderPixmap(MFloat x0,MFloat y0,MFloat x1,MFloat y1,
                                             int w,int h,unsigned char* pixmap,int landscape, bool) const
 {
-	MagLog::debug() << "BinaryDriver::renderPixmap needs implementing." <<endl;
+	MagLog::debug() << "BinaryDriver::renderPixmap needs implementing." << std::endl;
 	return true;
 }
 
@@ -663,7 +662,6 @@ MAGICS_NO_EXPORT bool BinaryDriver::renderCellArray(const Image& image) const
 	}
 	const int sii = si;
 
-// cout << "Image>  pixel: "<<width<<"x"<<height<<"="<<width*height<<" orig: "<<x0<<"/"<<y0<<"    dim: "<<x1<<"/"<<y1<<"     noColours: "<<sii<< endl;
 
 	out_.write((char *)(&sii), sizeof(int));
 	for(int v=0;v<sii;v++)
diff --git a/src/drivers/CMakeLists.txt b/src/drivers/CMakeLists.txt
new file mode 100644
index 0000000..7d9b9c6
--- /dev/null
+++ b/src/drivers/CMakeLists.txt
@@ -0,0 +1,88 @@
+list( APPEND _drivers_srcs
+
+# basic
+
+  BaseDriver.h BinaryDriver.h PostScriptDriver.h DriverManager.h
+  System.h BaseDriverImages.h BaseDriverWind.h BaseDriverSymbols.h 
+  BaseDriver.cc DriverManager.cc BinaryDriver.cc PostScriptDriver.cc
+
+# minizip
+  minizip/ioapi.c minizip/zip.c
+  minizip/ioapi.h minizip/zip.h minizip/crypt.h
+
+)
+
+if( MAGICS_QT )
+  list( APPEND _drivers_srcs
+          QtDriver.h
+		  MgQ/MgQ.h
+          MgQ/MgQLayoutItem.h MgQ/MgQStepItem.h
+		  MgQ/MgQLayerItem.h MgQ/MgQPlotScene.h
+	      MgQ/MgQSymbol.h MgQ/MgQPixmapItem.h MgQ/MgQPathItem.h
+		  MgQ/MgQTextItem.h MgQ/MgQDriverObject.h
+		  MgQ/MgQPolylineSetItem.h MgQ/MgQScene.h MgQ/MgQSceneItem.h
+		  MgQ/MgQSceneCacheItem.h MgQ/MgQStepMetaData.h
+		  MgQ/MgQPattern.h MgQ/MgQHistoItem.h MgQ/MgQRootItem.h
+          QtDriver.cc 
+          MgQ/MgQPlotScene.cc
+		  MgQ/MgQLayoutItem.cc MgQ/MgQStepItem.cc
+		  MgQ/MgQLayerItem.cc
+		  MgQ/MgQSymbol.cc MgQ/MgQPixmapItem.cc MgQ/MgQPathItem.cc
+		  MgQ/MgQTextItem.cc
+		  MgQ/MgQPolylineSetItem.cc MgQ/MgQScene.cc MgQ/MgQSceneItem.cc
+		  MgQ/MgQSceneCacheItem.cc MgQ/MgQStepMetaData.cc
+          MgQ/MgQPattern.cc MgQ/MgQHistoItem.cc
+      )
+      
+   
+   
+   set (qt_files_HEADERS MgQ/MgQPlotScene.h)
+   QT4_WRAP_CPP(qt_files_HEADERS_MOC ${qt_files_HEADERS})
+  
+   list( APPEND qt_srcs   ${qt_files_HEADERS_MOC}) 
+
+endif()
+
+if( MAGICS_CAIRO )
+  list( APPEND _drivers_srcs CairoDriver.h CairoDriver.cc )
+endif()
+
+if ( ENABLE_METVIEW )
+	list (APPEND metview_include 
+				drivers/DriverManager.h
+				drivers/BaseDriver.h 
+				${CMAKE_CURRENT_BINARY_DIR}/../params/BaseDriverAttributes.h
+				drivers/MgQ/MgQPlotScene.h
+				drivers/MgQ/MgQScene.h
+				drivers/QtDriver.h 
+				drivers/MgQ/MgQLayoutItem.h
+				drivers/MgQ/MgQ.h
+				drivers/MgQ/MgQSceneItem.h
+				drivers/MgQ/MgQLayerItem.h
+				drivers/MgQ/MgQRootItem.h
+				drivers/MgQ/MgQStepMetaData.h
+		)
+	set( metview_include ${metview_include} PARENT_SCOPE )
+endif()
+# if( MAGICS_MING )
+#   list( APPEND mgq_srcs MingDriver.h  MingDriver.cc )
+# endif()
+
+# KML
+list( APPEND _drivers_srcs   KMLDriver.h   KMLDriver.cc )
+
+# SVG
+list( APPEND _drivers_srcs   SVGDriver.h   SVGDriver.cc )
+
+if( MAGICS_RASTER )
+  list( APPEND mgq_srcs   GDDriver.h  GDDriver.cc )
+endif()
+
+# AM_CPPFLAGS	= -DNO_ADDFILEINEXISTINGZIP -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers
+
+foreach( file ${_drivers_srcs} )
+  list( APPEND drivers_srcs drivers/${file} )
+endforeach()
+
+set( drivers_srcs ${drivers_srcs} PARENT_SCOPE )
+
diff --git a/src/drivers/CairoDriver.cc b/src/drivers/CairoDriver.cc
index d7ed565..184fd39 100644
--- a/src/drivers/CairoDriver.cc
+++ b/src/drivers/CairoDriver.cc
@@ -101,7 +101,7 @@ CairoDriver::~CairoDriver()
 */
 void CairoDriver::open()
 {
-	MagLog::dev() << "Cairo version used is: "<<cairo_version_string()<< " backend: "<<backend_ <<endl;
+	MagLog::dev() << "Cairo version used is: "<<cairo_version_string()<< " backend: "<<backend_ << std::endl;
 
 	MFloat ratio = getYDeviceLength() / getXDeviceLength();
 	int width = maground(width_);
@@ -110,7 +110,6 @@ void CairoDriver::open()
 	if(!mbg_tmpl.empty())
 	{
 		setDimensionsFromBinary(mbg_tmpl,ratio,	width);
-//cout <<"CAIRO> BINARY TEMPLATE: SET WIDTH TO "<<width<< " and ratio to "<<ratio<<endl;
 	}
 
 	setCMscale(MFloat(width)/getXDeviceLength());
@@ -131,7 +130,7 @@ void CairoDriver::open()
 		dimensionXglobal_ = cairo_image_surface_get_width (surface_);
                 dimensionYglobal_ = cairo_image_surface_get_height(surface_);
 #else
-		MagLog::error() << "CairoDriver: For contexts you need at least Cairo 1.2!" <<endl;
+		MagLog::error() << "CairoDriver: For contexts you need at least Cairo 1.2!" << std::endl;
 #endif
 	}
 	else
@@ -168,7 +167,7 @@ void CairoDriver::setupNewSurface() const
 
 	    surface_ = cairo_pdf_surface_create(filename_.c_str(), dimensionXglobal_, dimensionYglobal_);
 #else
-	    MagLog::error() << "CairoDriver: PDF output NOT supported! Enable PDF support in your Cairo installation." <<endl;
+	    MagLog::error() << "CairoDriver: PDF output NOT supported! Enable PDF support in your Cairo installation." << std::endl;
 #endif
 	}
 	else if(magCompare(backend_,"ps"))
@@ -188,7 +187,7 @@ void CairoDriver::setupNewSurface() const
                 surface_ = cairo_ps_surface_create(filename_.c_str(), dimensionXglobal,dimensionYglobal);
 //            }
 #else
-	    MagLog::error() << "CairoDriver: PS output NOT supported! Enable PS support in your Cairo installation." <<endl;
+	    MagLog::error() << "CairoDriver: PS output NOT supported! Enable PS support in your Cairo installation." << std::endl;
 #endif
 	}
 	else if(magCompare(backend_,"eps"))
@@ -199,7 +198,7 @@ void CairoDriver::setupNewSurface() const
 	    cairo_ps_surface_set_eps (surface_,true);
 #else
 	    MagLog::error() << "CairoDriver: EPS output NOT supported! You need at least version Cairo 1.5.2.\n"
-	                 << "PostScript is generated instead." <<endl;
+	                 << "PostScript is generated instead." << std::endl;
 	    filename_ = getFileName("ps");
 	    surface_ = cairo_ps_surface_create(filename_.c_str(), dimensionXglobal_, dimensionYglobal_);
 #endif
@@ -212,7 +211,7 @@ void CairoDriver::setupNewSurface() const
 	    surface_ = cairo_svg_surface_create (filename_.c_str(), dimensionXglobal_, dimensionYglobal_);
 //	    cairo_svg_surface_restrict_to_version (surface_, CAIRO_SVG_VERSION_1_2);
 #else
-	    MagLog::error() << "CairoDriver: SVG output NOT supported! Enable SVG support in your Cairo installation." <<endl;
+	    MagLog::error() << "CairoDriver: SVG output NOT supported! Enable SVG support in your Cairo installation." << std::endl;
 #endif
 	}
 	else if(magCompare(backend_,"x"))
@@ -223,7 +222,7 @@ void CairoDriver::setupNewSurface() const
 
 		if(!(dpy=XOpenDisplay(NULL)))
 		{
-			MagLog::fatal() << "CairoDriver: Could not open display for Xlib!"<<endl;
+			MagLog::error() << "CairoDriver: Could not open display for Xlib!"<< std::endl;
 			terminate();
 		}
 
@@ -239,19 +238,19 @@ void CairoDriver::setupNewSurface() const
 
 		surface_ = cairo_xlib_surface_create(dpy, win, DefaultVisual(dpy, 0), dimensionXglobal_, dimensionYglobal_);
 #else
-		MagLog::error() << "CairoDriver: Xlib output NOT supported! Enable Xlib support in your Cairo installation." <<endl;
+		MagLog::error() << "CairoDriver: Xlib output NOT supported! Enable Xlib support in your Cairo installation." << std::endl;
 #endif
 	}
 	else
 	{
-		MagLog::error() << "CairoDriver: The backend "<< backend_ <<" is NOT supported!" <<endl;
+		MagLog::error() << "CairoDriver: The backend "<< backend_ <<" is NOT supported!" << std::endl;
 	}
 
 	cairo_status_t status = cairo_surface_status(surface_);
 	if (status)
 	{
 		MagLog::error()	<< "CairoDriver: the surface ("<<backend_<<") could not be generated!\n"
-				<< " -> "<<cairo_status_to_string(status)<<endl;
+				<< " -> "<<cairo_status_to_string(status)<< std::endl;
 	}
 
 	if ( !cr_) cr_ = cairo_create (surface_);
@@ -840,7 +839,7 @@ MAGICS_NO_EXPORT void CairoDriver::renderSimplePolygon(const Polyline& line) con
 #else
                 if (currentShading_==M_SH_HATCH || currentShading_==M_SH_DOT)
                     MagLog::error() << "CairoDriver: For hatch and dot shading you need at least Cairo 1.2!\n"
-                                 << "             Solid shading used instead."<<endl;
+                                 << "             Solid shading used instead."<< std::endl;
 #endif
 	{
 	    if(cairo_get_antialias(cr_) != CAIRO_ANTIALIAS_NONE && currentColour_.alpha() > 0.9999 )
@@ -980,7 +979,7 @@ MAGICS_NO_EXPORT void CairoDriver::renderSimplePolygon(const int n, MFloat* x, M
 #else
                 if (currentShading_==M_SH_HATCH || currentShading_==M_SH_DOT)
                     MagLog::error() << "CairoDriver: For hatch and dot shading you need at least Cairo 1.2!\n"
-                                 << "             Solid shading used instead."<<endl;
+                                 << "             Solid shading used instead."<< std::endl;
 #endif
 	{
 	    if(cairo_get_antialias(cr_) != CAIRO_ANTIALIAS_NONE && currentColour_.alpha() > 0.9999 )
diff --git a/src/drivers/KMLDriver.cc b/src/drivers/KMLDriver.cc
index 0486df2..9e96a49 100755
--- a/src/drivers/KMLDriver.cc
+++ b/src/drivers/KMLDriver.cc
@@ -117,7 +117,8 @@ void KMLDriver::open()
 	pFile_.open(fileName_.c_str());
 	if(!pFile_)
 	{
-		MagLog::fatal() << "KMLDriver::open() --> Cannot open KML output file: " << fileName_ << "!\n";
+		MagLog::error() << "KMLDriver::open() --> Cannot open KML output file: " << fileName_ << "!\n";
+		MagLog::error() << "";  // to ensure that the error message is broadcast
 		terminate();
 	}
 	pFile_	<< "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
@@ -125,6 +126,7 @@ void KMLDriver::open()
 		<< "     xmlns:atom=\"http://www.w3.org/2005/Atom\">\n"
 		<< "<Document>\n"<< " <name>"<<title_<<"</name>\n"
 		<< " <open>1</open>\n";
+	pFile_  << " <atom:generator>"<<getMagicsVersionString()<<"</atom:generator>\n";
 	if(!author_.empty()) pFile_ << " <atom:author><atom:name>"<<author_<<"</atom:name></atom:author>\n";
 	if(!link_.empty())   pFile_ << " <atom:link href=\""<<link_<<"\" />\n";
 	pFile_	<< " <description>\n"
@@ -205,7 +207,7 @@ void KMLDriver::close()
 		void* buf = (void*)malloc(size_buf);
 		if (buf==0)
 		{
-			MagLog::error() <<"Error allocating memory for KMZ generation!"<<endl;
+			MagLog::error() <<"Error allocating memory for KMZ generation!"<< std::endl;
 			return;
 		}
 		stringarray::iterator it    = kml_output_resource_list_.begin();
@@ -227,7 +229,7 @@ void KMLDriver::close()
 			  fin = fopen(filename,"rb");
 			  if(fin==0)
 			  {
-			     MagLog::fatal() << "Open file "<<filename<<" to be added to KMZ FAILED!"<< endl;
+			     MagLog::error() << "Open file "<<filename<<" to be added to KMZ FAILED!"<< endl;
 			     return;
 			  }
 			  else
@@ -382,7 +384,6 @@ MAGICS_NO_EXPORT void KMLDriver::redisplay(const magics::LegendLayout& layout) c
 */
 MAGICS_NO_EXPORT void KMLDriver::redisplay(const StaticLayer& layer) const
 {
-//cout <<"KML staticlayer > "<<layer.name() <<" - "<<layer.kmlTimeBegin()<<endl;
   if(!magCompare("coastlines",layer.name()) ||coastlines_ )
   {
 //	if(!magCompare(currentLayer_,layer.name()))
@@ -390,7 +391,6 @@ MAGICS_NO_EXPORT void KMLDriver::redisplay(const StaticLayer& layer) const
 		currentLayer_     = (layer.name().empty()) ? "StaticLayer" : layer.name();
 		currentTimeBegin_ = layer.kmlTimeBegin();
 		currentTimeEnd_   = layer.kmlTimeEnd();
-//cout << "layer "<<layer.name()<<" "<<layer.kmlTimeBegin()<< endl;
 		newLayer();
 		layer.visit(*this);
 		closeLayer();
@@ -402,7 +402,6 @@ MAGICS_NO_EXPORT void KMLDriver::redisplay(const StaticLayer& layer) const
 
 MAGICS_NO_EXPORT void KMLDriver::redisplay(const StepLayer& layer) const
 {
-//  cout <<"KML StepLayer> "<<layer.name() <<" - "<<layer.kmlTimeBegin()<<endl;
   if(!magCompare("coastlines",layer.name()) || coastlines_ )
   {
 //	if(!magCompare(currentLayer_,layer.name()))
@@ -410,7 +409,6 @@ MAGICS_NO_EXPORT void KMLDriver::redisplay(const StepLayer& layer) const
 		currentLayer_     = (layer.name().empty()) ? "Step" : layer.name();
 		currentTimeBegin_ = layer.kmlTimeBegin();
 		currentTimeEnd_   = layer.kmlTimeEnd();
-//cout << "layer "<<layer.name()<<" "<<layer.kmlTimeBegin()<< endl;
 		newLayer();
 		layer.visit(*this);
 		closeLayer();
@@ -427,7 +425,6 @@ MAGICS_NO_EXPORT void KMLDriver::redisplay(const StepLayer& layer) const
  */
 MAGICS_NO_EXPORT void KMLDriver::redisplay(const NoDataLayer& layer) const
 {
-//   cout << "KML::NoDataLayer> "<<layer.name()<< endl;
 }
 
 /*!
@@ -436,7 +433,6 @@ MAGICS_NO_EXPORT void KMLDriver::redisplay(const NoDataLayer& layer) const
 */
 MAGICS_NO_EXPORT void KMLDriver::newLayer() const
 {
-//cout << "KML::newLayer()> "<<currentLayer_<< endl;
 	if (kml_placemark_) closePlacemark();
 
 	debugOutput("Start Layer - "+currentLayer_);
@@ -459,7 +455,6 @@ MAGICS_NO_EXPORT void KMLDriver::newLayer() const
 */
 MAGICS_NO_EXPORT void KMLDriver::closeLayer() const
 {
-//  cout << "KML::closeLayer()> "<<currentLayer_<< endl;
 	if (kml_placemark_) closePlacemark();
 
 	layer_=false;
@@ -499,6 +494,27 @@ MAGICS_NO_EXPORT void KMLDriver::setNewColour(const Colour &colour) const
 	currentColour_ = colour;
 }
 
+MAGICS_NO_EXPORT void KMLDriver::writeColour(const Colour &col) const
+{
+		const int r = (int)(col.red()*255.);
+		const int g = (int)(col.green()*255.);
+		const int b = (int)(col.blue()*255.);
+		const int a = (int)(transparency_ * 2.55);
+
+		pFile_	<< "\t<!-- r:"<<r<<" g:"<<g<<" b:"<<b <<" -->"<< endl;
+
+		pFile_	<< "\t<color>" <<hex;
+			if(a>15)	pFile_ <<a;
+			else		pFile_ <<"0"<< a;
+			if(b>15)	pFile_ <<b;
+			else		pFile_ <<"0"<< b;
+			if(g>15)	pFile_ <<g;
+			else		pFile_ <<"0"<< g;
+			if(r>15)	pFile_ <<r;
+			else		pFile_ <<"0"<< r;
+		pFile_	<< "</color>\n" << dec;
+}
+
 /*!
   \brief sets a new line width
 
@@ -528,7 +544,7 @@ MAGICS_NO_EXPORT int KMLDriver::setLineParameters(const LineStyle , const MFloat
 {
 	setNewLineWidth(w);
 
-//	MagLog::debug() << "KMLDriver::setLineParameters needs implementing." <<endl;
+//	MagLog::debug() << "KMLDriver::setLineParameters needs implementing." << std::endl;
 	return 0;
 }
 
@@ -580,25 +596,10 @@ MAGICS_NO_EXPORT void KMLDriver::renderPolyline(const int n, MFloat *x, MFloat *
 
 		kml_placemark_=true;
 
-		const int r = (int)currentColour_.red()*255;
-		const int g = (int)currentColour_.green()*255;
-		const int b = (int)currentColour_.blue()*255;
-		const int a = (int)(transparency_ * 2.55);
-
-		pFile_	<< "<!-- r:"<<r<<" g:"<<g<<" b:"<<b <<" -->"<< endl;
 
-		pFile_	<< "<Style>\n<LineStyle>\n"
-			<< "\t<color>" <<hex;
-			if(a>15)	pFile_ <<a;
-			else		pFile_ <<"0"<< a;
-			if(b>15)	pFile_ <<b;
-			else		pFile_ <<"0"<< b;
-			if(g>15)	pFile_ <<g;
-			else		pFile_ <<"0"<< g;
-			if(r>15)	pFile_ <<r;
-			else		pFile_ <<"0"<< r;
-		pFile_	<< "</color>\n" << dec
-			<< "\t<width>"<<currentLineWidth_<<"</width>\n"<<"</LineStyle>\n"
+		pFile_	<< "<Style>\n<LineStyle>\n";
+		writeColour(currentColour_);
+		pFile_	<< "\t<width>"<<currentLineWidth_<<"</width>\n"<<"</LineStyle>\n"
 			<< "</Style>\n"
 			<< "<MultiGeometry>\n";
 		MultiGeometrySet_=true;
@@ -652,10 +653,6 @@ MAGICS_NO_EXPORT void KMLDriver::renderSimplePolygon(const int n, MFloat* xx, MF
 	if (!render_) return;
 	if (kml_placemark_) closePlacemark();
 
-	const int r = (int)(currentColour_.red()*255.);
-	const int g = (int)(currentColour_.green()*255.);
-	const int b = (int)(currentColour_.blue()*255.);
-	if (r*g*b < 0) return;
 //pFile_	<< "<!-- r:"<<r<<" g:"<<g<<" b:"<<b <<" -->"<< endl;
 	pFile_	<< "<Placemark>\n";
 //	if(layer_)
@@ -693,31 +690,13 @@ MAGICS_NO_EXPORT void KMLDriver::renderSimplePolygon(const int n, MFloat* xx, MF
 
 	const int a = (int)(transparency_ * 2.55);
 
-	pFile_	<< "<Style>\n<PolyStyle>\n"
-		<< "\t<color>" <<hex;
-		if(a>15)	pFile_ <<a;
-		else		pFile_ <<"0"<< a;
-		if(b>15)	pFile_ <<b;
-		else		pFile_ <<"0"<< b;
-		if(g>15)	pFile_ <<g;
-		else		pFile_ <<"0"<< g;
-		if(r>15)	pFile_ <<r;
-		else		pFile_ <<"0"<< r;
-	pFile_	<< "</color>\n" << dec
-		<< "\t<fill>1</fill>\n</PolyStyle>\n"
+	pFile_	<< "<Style>\n<PolyStyle>\n";
+	writeColour(currentColour_);
+	pFile_	<< "\t<fill>1</fill>\n</PolyStyle>\n"
 		<< "<LineStyle>\n"
-		<< "\t<width>"<<2<<"</width>\n"
-		<< "\t<color>" <<hex;
-		if(a>15)	pFile_ <<a;
-		else		pFile_ <<"0"<< a;
-		if(b>15)	pFile_ <<b;
-		else		pFile_ <<"0"<< b;
-		if(g>15)	pFile_ <<g;
-		else		pFile_ <<"0"<< g;
-		if(r>15)	pFile_ <<r;
-		else		pFile_ <<"0"<< r;
-	pFile_	<< "</color>\n" << dec
-		<< "</LineStyle>\n"
+		<< "\t<width>"<<2<<"</width>\n";
+	writeColour(currentColour_);
+	pFile_	<< "</LineStyle>\n"
 		<< "</Style>\n"
 		<< "<MultiGeometry>\n";
 	MultiGeometrySet_=true;
@@ -747,8 +726,11 @@ MAGICS_NO_EXPORT void KMLDriver::renderSimplePolygon(const int n, MFloat* xx, MF
 
 void KMLDriver::renderSimplePolygon(const Polyline& line) const
 {
+	if (!render_) return;
+	if (kml_placemark_) closePlacemark();
 	const unsigned int n = line.size();
 	if(n<3) return;
+
 	Colour tmpcol = currentColour_;
 	setNewColour(line.getFillColour());
 
@@ -760,9 +742,97 @@ void KMLDriver::renderSimplePolygon(const Polyline& line) const
 		x[i] = pp.x();
 		y[i] = pp.y();
 	}
-	renderSimplePolygon(line.size(),x,y);
+
+	pFile_	<< "<Placemark>\n";
+//	if(layer_)
+//	{
+//		pFile_ << "<name>"<<currentLayer_<<"</name>\n"
+//		       << "<description><![CDATA["<<currentLayer_<<"]]></description>\n";
+//	}
+//	    << "<altitudeMode>clampToGround</altitudeMode>\n"
+	if(layer_)
+	{
+		pFile_ << "<name>"<<currentLayer_<<"</name>\n";
+		if(!currentTimeBegin_.empty())
+		{
+//			   if(magCompare(currentTimeBegin_,currentTimeEnd_))
+//			   {
+//				pFile_	<< "<TimeStamp>\n"
+//					<< " <when>"<<currentTimeBegin_<<"</when>\n"
+// 					<< "</TimeStamp>\n"
+//					<< "<styleUrl>#hiker-icon</styleUrl>\n";
+//			   }
+//			   else
+		   {
+			pFile_	<< "<TimeSpan>\n"
+				<< " <begin>"<<currentTimeBegin_<<"</begin>\n"
+				<< " <end>"<<currentTimeEnd_<<"</end>\n"
+				<< "</TimeSpan>\n";
+		   }
+		}
+		pFile_	<< "<description><![CDATA["<<currentLayer_<<"]]></description>\n";
+	}
+
+	pFile_<< "<visibility>1</visibility>\n<open>0</open>\n";
+
+	pFile_	<< "<Style>\n<PolyStyle>\n";
+	writeColour(currentColour_);
+	pFile_	<< "\t<fill>1</fill>\n</PolyStyle>\n"
+		<< "<LineStyle>\n"
+		<< "\t<width>"<<2<<"</width>\n";
+	writeColour(currentColour_);
+	pFile_	<< "</LineStyle>\n"
+		<< "</Style>\n"
+		<< "<MultiGeometry>\n";
+	MultiGeometrySet_=true;
+
+	pFile_ << "<Polygon>\n"
+	       << " <extrude>1</extrude>\n"
+	//       << " <altitudeMode>relativeToGround</altitudeMode>\n"
+	       << " <altitudeMode>clampToGround</altitudeMode>\n"
+	       << " <tessellate>0</tessellate>\n"
+	       << "  <outerBoundaryIs>\n"
+	       << "   <LinearRing>\n"
+	       << "    <coordinates>\n";
+
+	for(int it=0;it<n;it++)
+	{
+		pFile_ <<"\t"<< x[it] <<","<< y[it] <<","<<height_*1000<<"\n";
+	}
 	delete [] x;
 	delete [] y;
+
+	pFile_ << "    </coordinates>\n"
+	       << "   </LinearRing>\n"
+	       << "  </outerBoundaryIs>\n";
+
+	Polyline::Holes::const_iterator h = line.beginHoles();
+	Polyline::Holes::const_iterator he = line.endHoles();
+
+	for (; h != he; ++h)
+	{
+	   pFile_ << "  <innerBoundaryIs>\n"
+	          << "   <LinearRing>\n"
+	          << "    <coordinates>\n";
+
+	   vector<double> x;
+	   vector<double> y;
+	   line.hole(h,x,y);
+	   if ( x.empty() ) 
+	     continue;
+	   vector<double>::const_iterator yt = y.begin();
+	   vector<double>::const_iterator xt = x.begin();
+	   for(int it=0;it<x.size();it++)
+	    {
+	       pFile_ <<"\t"<< x[it] <<","<< y[it] <<","<<height_*1000<<"\n";
+	    }
+
+	    pFile_ << "    </coordinates>\n"
+	           << "   </LinearRing>\n"
+	           << "  </innerBoundaryIs>\n";
+	}
+	pFile_ << "</Polygon>\n";
+	pFile_ << "</MultiGeometry>\n</Placemark>";
 	setNewColour(tmpcol);
 }
 
@@ -1221,7 +1291,7 @@ MagLog::dev()<< "KML driver uses GD -> for better results use Cairo backend."<<
 				g = 1.;
 				b = 1.;
 				a = 0.;
-//				MagLog::info()<< "PostScriptDriver-> Cellshading colour not defined in table! Colour index: "<<c<<endl;
+//				MagLog::info()<< "PostScriptDriver-> Cellshading colour not defined in table! Colour index: "<<c<< std::endl;
 //    PostScript will always 'overpaint' anything below missing data!!!!
 //
 			}
@@ -1273,29 +1343,14 @@ MAGICS_NO_EXPORT void KMLDriver::renderWindArrow(const Arrow &arrow) const
 
 //	const ArrowPosition pos = arrow.getArrowPosition();
 
-    setNewColour(arrow.getColour());
-    const int r = (int)(currentColour_.red()*255.);
-    const int g = (int)(currentColour_.green()*255.);
-    const int b = (int)(currentColour_.blue()*255.);
-    const int a = (int)(transparency_ * 2.55);
-
     Arrow::const_iterator arr = arrow.begin();
 	for(unsigned int pts=0;pts<arrPoNo;pts++)
 	{
         pFile_  << "<Placemark>\n"
                 << "<Style>\n"
-                << "<IconStyle>\n"
-                << "<color>" <<hex;
-        if(a>15)    pFile_ <<a;
-        else        pFile_ <<"0"<< a;
-        if(b>15)    pFile_ <<b;
-        else        pFile_ <<"0"<< b;
-        if(g>15)    pFile_ <<g;
-        else        pFile_ <<"0"<< g;
-        if(r>15)    pFile_ <<r;
-        else        pFile_ <<"0"<< r;
-        pFile_  << "</color>\n" << dec
-                << "<heading>"<<90.+(arr->angle()*-57.29578)<<"</heading>\n"
+                << "<IconStyle>\n";
+        writeColour(arrow.getColour());
+        pFile_  << "<heading>"<<90.+(arr->angle()*-57.29578)<<"</heading>\n"
                 << "<scale>"<<arr->norm()*0.2<<"</scale>\n"
                 << "<Icon>\n"
                 << "<href>magics_kml_icons.png</href>\n"
diff --git a/src/drivers/KMLDriver.h b/src/drivers/KMLDriver.h
index 22a0012..006727f 100755
--- a/src/drivers/KMLDriver.h
+++ b/src/drivers/KMLDriver.h
@@ -88,6 +88,7 @@ private:
 
 	MAGICS_NO_EXPORT void setNewLineWidth(const MFloat) const;
 	MAGICS_NO_EXPORT void setNewColour(const Colour &col) const;
+	MAGICS_NO_EXPORT void writeColour(const Colour &col) const;
 	MAGICS_NO_EXPORT int setLineParameters(const LineStyle style, const MFloat w) const;
 
 	MAGICS_NO_EXPORT void renderPolyline(const int, MFloat *, MFloat *) const;
@@ -107,7 +108,7 @@ private:
 	MAGICS_NO_EXPORT void debugOutput(const string &s) const;
 
 	/* K M L specific */
-    MAGICS_NO_EXPORT void redisplay(const LegendLayout& legend) const;
+	MAGICS_NO_EXPORT void redisplay(const LegendLayout& legend) const;
 	MAGICS_NO_EXPORT void closePlacemark() const;
 	mutable ofstream	pFile_;    //!< Output stream to file.
 	mutable Layout*		layout_;
diff --git a/src/drivers/Makefile.am b/src/drivers/Makefile.am
deleted file mode 100644
index e2ef32a..0000000
--- a/src/drivers/Makefile.am
+++ /dev/null
@@ -1,107 +0,0 @@
-if MAGICS_QT
-include ../../m4/autotroll.mk
-endif
-
-noinst_LTLIBRARIES	= libdrivers.la
-
-MINIZIP_la_S		= minizip/ioapi.c minizip/zip.c
-MINIZIP_inc_H		= minizip/ioapi.h minizip/zip.h minizip/crypt.h
-
-
-if MAGICS_QT
-QT_inc_H	= QtDriver.h \
-		  MgQ/MgQ.h \
-                  MgQ/MgQLayoutItem.h MgQ/MgQStepItem.h \
-		  MgQ/MgQLayerItem.h MgQ/MgQPlotScene.h \
-	          MgQ/MgQSymbol.h MgQ/MgQPixmapItem.h MgQ/MgQPathItem.h \
-		  MgQ/MgQTextItem.h MgQ/MgQDriverObject.h \
-		  MgQ/MgQPolylineSetItem.h MgQ/MgQScene.h MgQ/MgQSceneItem.h \
-		  MgQ/MgQSceneCacheItem.h MgQ/MgQStepMetaData.h \
-		  MgQ/MgQPattern.h MgQ/MgQHistoItem.h MgQ/MgQRootItem.h
-QT_la_S		= QtDriver.cc \
-		  MgQ/MgQLayoutItem.cc MgQ/MgQStepItem.cc \
-		  MgQ/MgQLayerItem.cc MgQ/MgQPlotScene.cc \
-		  MgQ/MgQSymbol.cc MgQ/MgQPixmapItem.cc MgQ/MgQPathItem.cc \
-		  MgQ/MgQTextItem.cc \
-		  MgQ/MgQPolylineSetItem.cc MgQ/MgQScene.cc MgQ/MgQSceneItem.cc \
-		  MgQ/MgQSceneCacheItem.cc MgQ/MgQStepMetaData.cc \
-                  MgQ/MgQPattern.cc MgQ/MgQHistoItem.cc
-QT_la_SA	= QtDriverAttributes.cc
-QT_la_HA	= QtDriverAttributes.h
-QT_la_built     = MgQ/MgQPlotScene.moc.cpp
-endif
-
-if MAGICS_CAIRO
-CAIRO_inc_H	= CairoDriver.h
-# CairoDriverRaster.cc
-CAIRO_la_S	= CairoDriver.cc 
-CAIRO_la_SA	= CairoDriverAttributes.cc
-CAIRO_la_HA	= CairoDriverAttributes.h
-endif
-
-#if MAGICS_MING
-#MING_inc_H	= MingDriver.h
-#MING_la_S	= MingDriver.cc
-#MING_la_SA	= MingDriverAttributes.cc
-#MING_la_HA	= MingDriverAttributes.h
-#endif
-
-KML_inc_H	= KMLDriver.h
-KML_la_S	= KMLDriver.cc
-KML_la_SA	= KMLDriverAttributes.cc
-KML_la_HA	= KMLDriverAttributes.h
-
-SVG_inc_H	= SVGDriver.h
-SVG_la_S	= SVGDriver.cc
-SVG_la_SA	= SVGDriverAttributes.cc
-SVG_la_HA	= SVGDriverAttributes.h
-
-if MAGICS_RASTER
-RASTER_inc_H	= GDDriver.h 
-RASTER_la_S	= GDDriver.cc
-RASTER_la_SA	= GDDriverAttributes.cc
-RASTER_la_HA	= GDDriverAttributes.h
-endif
-
-include_H  = BaseDriver.h BinaryDriver.h PostScriptDriver.h $(MINIZIP_inc_H) $(SVG_inc_H) $(RASTER_inc_H) $(QT_inc_H) $(CAIRO_inc_H) $(KML_inc_H) DriverManager.h
-nodist_include_H  = BaseDriverAttributes.h BinaryDriverAttributes.h PostScriptDriverAttributes.h $(SVG_la_HA) $(RASTER_la_HA) $(QT_la_HA) $(CAIRO_la_HA) $(KML_la_HA)
-noinst_H	= System.h BaseDriverImages.h BaseDriverWind.h BaseDriverSymbols.h BaseDriverBinaryReader.cc
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-nodist_include_HEADERS = $(nodist_include_H)
-noinst_HEADERS	= $(noinst_H)
-else
-include_HEADERS = 
-nodist_noinst_HEADERS  = $(nodist_include_H)
-noinst_HEADERS	= $(noinst_H) $(include_H)
-endif
-
-nodist_libdrivers_la_SOURCES	= BaseDriverAttributes.cc BinaryDriverAttributes.cc PostScriptDriverAttributes.cc $(MING_la_SA) $(SVG_la_SA) $(RASTER_la_SA) $(CAIRO_la_SA) $(KML_la_SA)
-libdrivers_la_SOURCES	= BaseDriver.cc DriverManager.cc BinaryDriver.cc PostScriptDriver.cc $(MINIZIP_la_S) $(MING_la_S) $(SVG_la_S) $(RASTER_la_S) $(CAIRO_la_S) $(KML_la_S)
-
-libdrivers_la_LDFLAGS	= -no-undefined -no-install
-
-lib_LTLIBRARIES =
-
-#
-# -DNO_ADDFILEINEXISTINGZIP is needed for minizip to waor to generate KMZ
-#
-AM_CPPFLAGS	= -DNO_ADDFILEINEXISTINGZIP -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers 
-
-
-if MAGICS_QT
-LIBRARY_CURRENT			= @LIBRARY_CURRENT@
-LIBRARY_REVISION		= @LIBRARY_REVISION@
-LIBRARY_AGE			= @LIBRARY_AGE@
-lib_LTLIBRARIES			+= libMagPlusQt.la
-nodist_libMagPlusQt_la_SOURCES  = $(QT_la_SA) $(QT_la_built)
-libMagPlusQt_la_LDFLAGS		= $(QT_LIBS) -version-info $(MAGICS_LIBRARY_CURRENT):$(MAGICS_LIBRARY_REVISION):$(MAGICS_LIBRARY_AGE)
-libMagPlusQt_la_SOURCES		= $(QT_la_S)
-AM_CPPFLAGS 			+= -I$(METVIEW_HOME)/src/libUtil -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-endif
-
-BUILT_SOURCES	= $(QT_la_built)
-CLEANFILES = $(QT_la_built)
-
-AM_CXXFLAGS	= $(MAGICS_VISIBILITY) # -Weffc++
diff --git a/src/drivers/Makefile.in b/src/drivers/Makefile.in
deleted file mode 100644
index 533f474..0000000
--- a/src/drivers/Makefile.in
+++ /dev/null
@@ -1,1187 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-
-# Makerules.
-# This file is part of AutoTroll.
-# Copyright (C) 2006, 2007, 2009, 2010  Benoit Sigoure.
-#
-# AutoTroll 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.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-# USA.
-#
-# In addition, as a special exception, the copyright holders of AutoTroll
-# give you unlimited permission to copy, distribute and modify the configure
-# scripts that are the output of Autoconf when processing the macros of
-# AutoTroll.  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
-# AutoTroll appear in them. The GNU General Public License (GPL) does govern
-# all other use of the material that constitutes AutoTroll.
-#
-# This special exception to the GPL applies to versions of AutoTroll
-# released by the copyright holders of AutoTroll.  Note that people who make
-# modified versions of AutoTroll are not obligated to grant this special
-# exception for their modified versions; it is their choice whether to do so.
-# The GNU General Public License gives permission to release a modified version
-# without this exception; this exception also makes it possible to release a
-# modified version which carries forward this exception.
-
-
-VPATH = @srcdir@
-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@
-target_triplet = @target@
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/../../m4/autotroll.mk $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
- at MAGICS_QT_TRUE@am__append_1 = libMagPlusQt.la
- at MAGICS_QT_TRUE@am__append_2 = -I$(METVIEW_HOME)/src/libUtil -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-subdir = src/drivers
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_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__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \
-	"$(DESTDIR)$(includedir)"
-LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
-libMagPlusQt_la_LIBADD =
-am__libMagPlusQt_la_SOURCES_DIST = QtDriver.cc MgQ/MgQLayoutItem.cc \
-	MgQ/MgQStepItem.cc MgQ/MgQLayerItem.cc MgQ/MgQPlotScene.cc \
-	MgQ/MgQSymbol.cc MgQ/MgQPixmapItem.cc MgQ/MgQPathItem.cc \
-	MgQ/MgQTextItem.cc MgQ/MgQPolylineSetItem.cc MgQ/MgQScene.cc \
-	MgQ/MgQSceneItem.cc MgQ/MgQSceneCacheItem.cc \
-	MgQ/MgQStepMetaData.cc MgQ/MgQPattern.cc MgQ/MgQHistoItem.cc
- at MAGICS_QT_TRUE@am__objects_1 = QtDriver.lo MgQLayoutItem.lo \
- at MAGICS_QT_TRUE@	MgQStepItem.lo MgQLayerItem.lo MgQPlotScene.lo \
- at MAGICS_QT_TRUE@	MgQSymbol.lo MgQPixmapItem.lo MgQPathItem.lo \
- at MAGICS_QT_TRUE@	MgQTextItem.lo MgQPolylineSetItem.lo \
- at MAGICS_QT_TRUE@	MgQScene.lo MgQSceneItem.lo \
- at MAGICS_QT_TRUE@	MgQSceneCacheItem.lo MgQStepMetaData.lo \
- at MAGICS_QT_TRUE@	MgQPattern.lo MgQHistoItem.lo
- at MAGICS_QT_TRUE@am_libMagPlusQt_la_OBJECTS = $(am__objects_1)
- at MAGICS_QT_TRUE@am__objects_2 = QtDriverAttributes.lo
- at MAGICS_QT_TRUE@am__objects_3 = MgQPlotScene.moc.lo
- at MAGICS_QT_TRUE@nodist_libMagPlusQt_la_OBJECTS = $(am__objects_2) \
- at MAGICS_QT_TRUE@	$(am__objects_3)
-libMagPlusQt_la_OBJECTS = $(am_libMagPlusQt_la_OBJECTS) \
-	$(nodist_libMagPlusQt_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libMagPlusQt_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(AM_CXXFLAGS) $(CXXFLAGS) $(libMagPlusQt_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
- at MAGICS_QT_TRUE@am_libMagPlusQt_la_rpath = -rpath $(libdir)
-libdrivers_la_LIBADD =
-am__libdrivers_la_SOURCES_DIST = BaseDriver.cc DriverManager.cc \
-	BinaryDriver.cc PostScriptDriver.cc minizip/ioapi.c \
-	minizip/zip.c SVGDriver.cc GDDriver.cc CairoDriver.cc \
-	KMLDriver.cc
-am__objects_4 = ioapi.lo zip.lo
-am__objects_5 = SVGDriver.lo
- at MAGICS_RASTER_TRUE@am__objects_6 = GDDriver.lo
- at MAGICS_CAIRO_TRUE@am__objects_7 = CairoDriver.lo
-am__objects_8 = KMLDriver.lo
-am_libdrivers_la_OBJECTS = BaseDriver.lo DriverManager.lo \
-	BinaryDriver.lo PostScriptDriver.lo $(am__objects_4) \
-	$(am__objects_5) $(am__objects_6) $(am__objects_7) \
-	$(am__objects_8)
-am__objects_9 = SVGDriverAttributes.lo
- at MAGICS_RASTER_TRUE@am__objects_10 = GDDriverAttributes.lo
- at MAGICS_CAIRO_TRUE@am__objects_11 = CairoDriverAttributes.lo
-am__objects_12 = KMLDriverAttributes.lo
-nodist_libdrivers_la_OBJECTS = BaseDriverAttributes.lo \
-	BinaryDriverAttributes.lo PostScriptDriverAttributes.lo \
-	$(am__objects_9) $(am__objects_10) $(am__objects_11) \
-	$(am__objects_12)
-libdrivers_la_OBJECTS = $(am_libdrivers_la_OBJECTS) \
-	$(nodist_libdrivers_la_OBJECTS)
-libdrivers_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(AM_CXXFLAGS) $(CXXFLAGS) $(libdrivers_la_LDFLAGS) $(LDFLAGS) \
-	-o $@
-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_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-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_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libMagPlusQt_la_SOURCES) $(nodist_libMagPlusQt_la_SOURCES) \
-	$(libdrivers_la_SOURCES) $(nodist_libdrivers_la_SOURCES)
-DIST_SOURCES = $(am__libMagPlusQt_la_SOURCES_DIST) \
-	$(am__libdrivers_la_SOURCES_DIST)
-am__include_HEADERS_DIST = BaseDriver.h BinaryDriver.h \
-	PostScriptDriver.h minizip/ioapi.h minizip/zip.h \
-	minizip/crypt.h SVGDriver.h GDDriver.h QtDriver.h MgQ/MgQ.h \
-	MgQ/MgQLayoutItem.h MgQ/MgQStepItem.h MgQ/MgQLayerItem.h \
-	MgQ/MgQPlotScene.h MgQ/MgQSymbol.h MgQ/MgQPixmapItem.h \
-	MgQ/MgQPathItem.h MgQ/MgQTextItem.h MgQ/MgQDriverObject.h \
-	MgQ/MgQPolylineSetItem.h MgQ/MgQScene.h MgQ/MgQSceneItem.h \
-	MgQ/MgQSceneCacheItem.h MgQ/MgQStepMetaData.h MgQ/MgQPattern.h \
-	MgQ/MgQHistoItem.h MgQ/MgQRootItem.h CairoDriver.h KMLDriver.h \
-	DriverManager.h
-am__noinst_HEADERS_DIST = System.h BaseDriverImages.h BaseDriverWind.h \
-	BaseDriverSymbols.h BaseDriverBinaryReader.cc BaseDriver.h \
-	BinaryDriver.h PostScriptDriver.h minizip/ioapi.h \
-	minizip/zip.h minizip/crypt.h SVGDriver.h GDDriver.h \
-	QtDriver.h MgQ/MgQ.h MgQ/MgQLayoutItem.h MgQ/MgQStepItem.h \
-	MgQ/MgQLayerItem.h MgQ/MgQPlotScene.h MgQ/MgQSymbol.h \
-	MgQ/MgQPixmapItem.h MgQ/MgQPathItem.h MgQ/MgQTextItem.h \
-	MgQ/MgQDriverObject.h MgQ/MgQPolylineSetItem.h MgQ/MgQScene.h \
-	MgQ/MgQSceneItem.h MgQ/MgQSceneCacheItem.h \
-	MgQ/MgQStepMetaData.h MgQ/MgQPattern.h MgQ/MgQHistoItem.h \
-	MgQ/MgQRootItem.h CairoDriver.h KMLDriver.h DriverManager.h
-HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) \
-	$(nodist_noinst_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# See autotroll.m4 :)
- at MAGICS_QT_TRUE@SUFFIXES = .moc.cpp .moc.cc .moc.cxx .moc.C .h .hh .hpp \
- at MAGICS_QT_TRUE@			.ui .ui.h .ui.hh .ui.hpp \
- at MAGICS_QT_TRUE@			.qrc .qrc.cpp .qrc.cc .qrc.cxx .qrc.C
-
- at MAGICS_QT_TRUE@DISTCLEANFILES = $(BUILT_SOURCES)
-noinst_LTLIBRARIES = libdrivers.la
-MINIZIP_la_S = minizip/ioapi.c minizip/zip.c
-MINIZIP_inc_H = minizip/ioapi.h minizip/zip.h minizip/crypt.h
- at MAGICS_QT_TRUE@QT_inc_H = QtDriver.h \
- at MAGICS_QT_TRUE@		  MgQ/MgQ.h \
- at MAGICS_QT_TRUE@                  MgQ/MgQLayoutItem.h MgQ/MgQStepItem.h \
- at MAGICS_QT_TRUE@		  MgQ/MgQLayerItem.h MgQ/MgQPlotScene.h \
- at MAGICS_QT_TRUE@	          MgQ/MgQSymbol.h MgQ/MgQPixmapItem.h MgQ/MgQPathItem.h \
- at MAGICS_QT_TRUE@		  MgQ/MgQTextItem.h MgQ/MgQDriverObject.h \
- at MAGICS_QT_TRUE@		  MgQ/MgQPolylineSetItem.h MgQ/MgQScene.h MgQ/MgQSceneItem.h \
- at MAGICS_QT_TRUE@		  MgQ/MgQSceneCacheItem.h MgQ/MgQStepMetaData.h \
- at MAGICS_QT_TRUE@		  MgQ/MgQPattern.h MgQ/MgQHistoItem.h MgQ/MgQRootItem.h
-
- at MAGICS_QT_TRUE@QT_la_S = QtDriver.cc \
- at MAGICS_QT_TRUE@		  MgQ/MgQLayoutItem.cc MgQ/MgQStepItem.cc \
- at MAGICS_QT_TRUE@		  MgQ/MgQLayerItem.cc MgQ/MgQPlotScene.cc \
- at MAGICS_QT_TRUE@		  MgQ/MgQSymbol.cc MgQ/MgQPixmapItem.cc MgQ/MgQPathItem.cc \
- at MAGICS_QT_TRUE@		  MgQ/MgQTextItem.cc \
- at MAGICS_QT_TRUE@		  MgQ/MgQPolylineSetItem.cc MgQ/MgQScene.cc MgQ/MgQSceneItem.cc \
- at MAGICS_QT_TRUE@		  MgQ/MgQSceneCacheItem.cc MgQ/MgQStepMetaData.cc \
- at MAGICS_QT_TRUE@                  MgQ/MgQPattern.cc MgQ/MgQHistoItem.cc
-
- at MAGICS_QT_TRUE@QT_la_SA = QtDriverAttributes.cc
- at MAGICS_QT_TRUE@QT_la_HA = QtDriverAttributes.h
- at MAGICS_QT_TRUE@QT_la_built = MgQ/MgQPlotScene.moc.cpp
- at MAGICS_CAIRO_TRUE@CAIRO_inc_H = CairoDriver.h
-# CairoDriverRaster.cc
- at MAGICS_CAIRO_TRUE@CAIRO_la_S = CairoDriver.cc 
- at MAGICS_CAIRO_TRUE@CAIRO_la_SA = CairoDriverAttributes.cc
- at MAGICS_CAIRO_TRUE@CAIRO_la_HA = CairoDriverAttributes.h
-
-#if MAGICS_MING
-#MING_inc_H	= MingDriver.h
-#MING_la_S	= MingDriver.cc
-#MING_la_SA	= MingDriverAttributes.cc
-#MING_la_HA	= MingDriverAttributes.h
-#endif
-KML_inc_H = KMLDriver.h
-KML_la_S = KMLDriver.cc
-KML_la_SA = KMLDriverAttributes.cc
-KML_la_HA = KMLDriverAttributes.h
-SVG_inc_H = SVGDriver.h
-SVG_la_S = SVGDriver.cc
-SVG_la_SA = SVGDriverAttributes.cc
-SVG_la_HA = SVGDriverAttributes.h
- at MAGICS_RASTER_TRUE@RASTER_inc_H = GDDriver.h 
- at MAGICS_RASTER_TRUE@RASTER_la_S = GDDriver.cc
- at MAGICS_RASTER_TRUE@RASTER_la_SA = GDDriverAttributes.cc
- at MAGICS_RASTER_TRUE@RASTER_la_HA = GDDriverAttributes.h
-include_H = BaseDriver.h BinaryDriver.h PostScriptDriver.h $(MINIZIP_inc_H) $(SVG_inc_H) $(RASTER_inc_H) $(QT_inc_H) $(CAIRO_inc_H) $(KML_inc_H) DriverManager.h
-nodist_include_H = BaseDriverAttributes.h BinaryDriverAttributes.h PostScriptDriverAttributes.h $(SVG_la_HA) $(RASTER_la_HA) $(QT_la_HA) $(CAIRO_la_HA) $(KML_la_HA)
-noinst_H = System.h BaseDriverImages.h BaseDriverWind.h BaseDriverSymbols.h BaseDriverBinaryReader.cc
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_TRUE@nodist_include_HEADERS = $(nodist_include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(noinst_H) $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = $(noinst_H)
- at MAGICS_ALLHEADERS_FALSE@nodist_noinst_HEADERS = $(nodist_include_H)
-nodist_libdrivers_la_SOURCES = BaseDriverAttributes.cc BinaryDriverAttributes.cc PostScriptDriverAttributes.cc $(MING_la_SA) $(SVG_la_SA) $(RASTER_la_SA) $(CAIRO_la_SA) $(KML_la_SA)
-libdrivers_la_SOURCES = BaseDriver.cc DriverManager.cc BinaryDriver.cc PostScriptDriver.cc $(MINIZIP_la_S) $(MING_la_S) $(SVG_la_S) $(RASTER_la_S) $(CAIRO_la_S) $(KML_la_S)
-libdrivers_la_LDFLAGS = -no-undefined -no-install
-lib_LTLIBRARIES = $(am__append_1)
-
-#
-# -DNO_ADDFILEINEXISTINGZIP is needed for minizip to waor to generate KMZ
-#
-AM_CPPFLAGS = -DNO_ADDFILEINEXISTINGZIP -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/basic \
-	-I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers \
-	-I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers \
-	$(am__append_2)
- at MAGICS_QT_TRUE@LIBRARY_CURRENT = @LIBRARY_CURRENT@
- at MAGICS_QT_TRUE@LIBRARY_REVISION = @LIBRARY_REVISION@
- at MAGICS_QT_TRUE@LIBRARY_AGE = @LIBRARY_AGE@
- at MAGICS_QT_TRUE@nodist_libMagPlusQt_la_SOURCES = $(QT_la_SA) $(QT_la_built)
- at MAGICS_QT_TRUE@libMagPlusQt_la_LDFLAGS = $(QT_LIBS) -version-info $(MAGICS_LIBRARY_CURRENT):$(MAGICS_LIBRARY_REVISION):$(MAGICS_LIBRARY_AGE)
- at MAGICS_QT_TRUE@libMagPlusQt_la_SOURCES = $(QT_la_S)
-BUILT_SOURCES = $(QT_la_built)
-CLEANFILES = $(QT_la_built)
-AM_CXXFLAGS = $(MAGICS_VISIBILITY) # -Weffc++
-all: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .moc.cpp .moc.cc .moc.cxx .moc.C .h .hh .hpp .ui .ui.h .ui.hh .ui.hpp .qrc .qrc.cpp .qrc.cc .qrc.cxx .qrc.C .c .cc .cpp .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/../../m4/autotroll.mk $(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/drivers/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/drivers/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-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@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 " $(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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libMagPlusQt.la: $(libMagPlusQt_la_OBJECTS) $(libMagPlusQt_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libMagPlusQt_la_LINK) $(am_libMagPlusQt_la_rpath) $(libMagPlusQt_la_OBJECTS) $(libMagPlusQt_la_LIBADD) $(LIBS)
-libdrivers.la: $(libdrivers_la_OBJECTS) $(libdrivers_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libdrivers_la_LINK)  $(libdrivers_la_OBJECTS) $(libdrivers_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BaseDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BaseDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinaryDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinaryDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CairoDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CairoDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DriverManager.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GDDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GDDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/KMLDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/KMLDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQHistoItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQLayerItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQLayoutItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQPathItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQPattern.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQPixmapItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQPlotScene.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQPlotScene.moc.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQPolylineSetItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQScene.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQSceneCacheItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQSceneItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQStepItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQStepMetaData.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQSymbol.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MgQTextItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PostScriptDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PostScriptDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/QtDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/QtDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SVGDriver.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SVGDriverAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ioapi.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/zip.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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-ioapi.lo: minizip/ioapi.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ioapi.lo -MD -MP -MF $(DEPDIR)/ioapi.Tpo -c -o ioapi.lo `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ioapi.Tpo $(DEPDIR)/ioapi.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='minizip/ioapi.c' object='ioapi.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ioapi.lo `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
-
-zip.lo: minizip/zip.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT zip.lo -MD -MP -MF $(DEPDIR)/zip.Tpo -c -o zip.lo `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/zip.Tpo $(DEPDIR)/zip.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='minizip/zip.c' object='zip.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o zip.lo `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-MgQLayoutItem.lo: MgQ/MgQLayoutItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQLayoutItem.lo -MD -MP -MF $(DEPDIR)/MgQLayoutItem.Tpo -c -o MgQLayoutItem.lo `test -f 'MgQ/MgQLayoutItem.cc' || echo '$(srcdir)/'`MgQ/MgQLayoutItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQLayoutItem.Tpo $(DEPDIR)/MgQLayoutItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQLayoutItem.cc' object='MgQLayoutItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQLayoutItem.lo `test -f 'MgQ/MgQLayoutItem.cc' || echo '$(srcdir)/'`MgQ/MgQLayoutItem.cc
-
-MgQStepItem.lo: MgQ/MgQStepItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQStepItem.lo -MD -MP -MF $(DEPDIR)/MgQStepItem.Tpo -c -o MgQStepItem.lo `test -f 'MgQ/MgQStepItem.cc' || echo '$(srcdir)/'`MgQ/MgQStepItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQStepItem.Tpo $(DEPDIR)/MgQStepItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQStepItem.cc' object='MgQStepItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQStepItem.lo `test -f 'MgQ/MgQStepItem.cc' || echo '$(srcdir)/'`MgQ/MgQStepItem.cc
-
-MgQLayerItem.lo: MgQ/MgQLayerItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQLayerItem.lo -MD -MP -MF $(DEPDIR)/MgQLayerItem.Tpo -c -o MgQLayerItem.lo `test -f 'MgQ/MgQLayerItem.cc' || echo '$(srcdir)/'`MgQ/MgQLayerItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQLayerItem.Tpo $(DEPDIR)/MgQLayerItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQLayerItem.cc' object='MgQLayerItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQLayerItem.lo `test -f 'MgQ/MgQLayerItem.cc' || echo '$(srcdir)/'`MgQ/MgQLayerItem.cc
-
-MgQPlotScene.lo: MgQ/MgQPlotScene.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQPlotScene.lo -MD -MP -MF $(DEPDIR)/MgQPlotScene.Tpo -c -o MgQPlotScene.lo `test -f 'MgQ/MgQPlotScene.cc' || echo '$(srcdir)/'`MgQ/MgQPlotScene.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQPlotScene.Tpo $(DEPDIR)/MgQPlotScene.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQPlotScene.cc' object='MgQPlotScene.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQPlotScene.lo `test -f 'MgQ/MgQPlotScene.cc' || echo '$(srcdir)/'`MgQ/MgQPlotScene.cc
-
-MgQSymbol.lo: MgQ/MgQSymbol.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQSymbol.lo -MD -MP -MF $(DEPDIR)/MgQSymbol.Tpo -c -o MgQSymbol.lo `test -f 'MgQ/MgQSymbol.cc' || echo '$(srcdir)/'`MgQ/MgQSymbol.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQSymbol.Tpo $(DEPDIR)/MgQSymbol.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQSymbol.cc' object='MgQSymbol.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQSymbol.lo `test -f 'MgQ/MgQSymbol.cc' || echo '$(srcdir)/'`MgQ/MgQSymbol.cc
-
-MgQPixmapItem.lo: MgQ/MgQPixmapItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQPixmapItem.lo -MD -MP -MF $(DEPDIR)/MgQPixmapItem.Tpo -c -o MgQPixmapItem.lo `test -f 'MgQ/MgQPixmapItem.cc' || echo '$(srcdir)/'`MgQ/MgQPixmapItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQPixmapItem.Tpo $(DEPDIR)/MgQPixmapItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQPixmapItem.cc' object='MgQPixmapItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQPixmapItem.lo `test -f 'MgQ/MgQPixmapItem.cc' || echo '$(srcdir)/'`MgQ/MgQPixmapItem.cc
-
-MgQPathItem.lo: MgQ/MgQPathItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQPathItem.lo -MD -MP -MF $(DEPDIR)/MgQPathItem.Tpo -c -o MgQPathItem.lo `test -f 'MgQ/MgQPathItem.cc' || echo '$(srcdir)/'`MgQ/MgQPathItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQPathItem.Tpo $(DEPDIR)/MgQPathItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQPathItem.cc' object='MgQPathItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQPathItem.lo `test -f 'MgQ/MgQPathItem.cc' || echo '$(srcdir)/'`MgQ/MgQPathItem.cc
-
-MgQTextItem.lo: MgQ/MgQTextItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQTextItem.lo -MD -MP -MF $(DEPDIR)/MgQTextItem.Tpo -c -o MgQTextItem.lo `test -f 'MgQ/MgQTextItem.cc' || echo '$(srcdir)/'`MgQ/MgQTextItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQTextItem.Tpo $(DEPDIR)/MgQTextItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQTextItem.cc' object='MgQTextItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQTextItem.lo `test -f 'MgQ/MgQTextItem.cc' || echo '$(srcdir)/'`MgQ/MgQTextItem.cc
-
-MgQPolylineSetItem.lo: MgQ/MgQPolylineSetItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQPolylineSetItem.lo -MD -MP -MF $(DEPDIR)/MgQPolylineSetItem.Tpo -c -o MgQPolylineSetItem.lo `test -f 'MgQ/MgQPolylineSetItem.cc' || echo '$(srcdir)/'`MgQ/MgQPolylineSetItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQPolylineSetItem.Tpo $(DEPDIR)/MgQPolylineSetItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQPolylineSetItem.cc' object='MgQPolylineSetItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQPolylineSetItem.lo `test -f 'MgQ/MgQPolylineSetItem.cc' || echo '$(srcdir)/'`MgQ/MgQPolylineSetItem.cc
-
-MgQScene.lo: MgQ/MgQScene.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQScene.lo -MD -MP -MF $(DEPDIR)/MgQScene.Tpo -c -o MgQScene.lo `test -f 'MgQ/MgQScene.cc' || echo '$(srcdir)/'`MgQ/MgQScene.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQScene.Tpo $(DEPDIR)/MgQScene.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQScene.cc' object='MgQScene.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQScene.lo `test -f 'MgQ/MgQScene.cc' || echo '$(srcdir)/'`MgQ/MgQScene.cc
-
-MgQSceneItem.lo: MgQ/MgQSceneItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQSceneItem.lo -MD -MP -MF $(DEPDIR)/MgQSceneItem.Tpo -c -o MgQSceneItem.lo `test -f 'MgQ/MgQSceneItem.cc' || echo '$(srcdir)/'`MgQ/MgQSceneItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQSceneItem.Tpo $(DEPDIR)/MgQSceneItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQSceneItem.cc' object='MgQSceneItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQSceneItem.lo `test -f 'MgQ/MgQSceneItem.cc' || echo '$(srcdir)/'`MgQ/MgQSceneItem.cc
-
-MgQSceneCacheItem.lo: MgQ/MgQSceneCacheItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQSceneCacheItem.lo -MD -MP -MF $(DEPDIR)/MgQSceneCacheItem.Tpo -c -o MgQSceneCacheItem.lo `test -f 'MgQ/MgQSceneCacheItem.cc' || echo '$(srcdir)/'`MgQ/MgQSceneCacheItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQSceneCacheItem.Tpo $(DEPDIR)/MgQSceneCacheItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQSceneCacheItem.cc' object='MgQSceneCacheItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQSceneCacheItem.lo `test -f 'MgQ/MgQSceneCacheItem.cc' || echo '$(srcdir)/'`MgQ/MgQSceneCacheItem.cc
-
-MgQStepMetaData.lo: MgQ/MgQStepMetaData.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQStepMetaData.lo -MD -MP -MF $(DEPDIR)/MgQStepMetaData.Tpo -c -o MgQStepMetaData.lo `test -f 'MgQ/MgQStepMetaData.cc' || echo '$(srcdir)/'`MgQ/MgQStepMetaData.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQStepMetaData.Tpo $(DEPDIR)/MgQStepMetaData.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQStepMetaData.cc' object='MgQStepMetaData.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQStepMetaData.lo `test -f 'MgQ/MgQStepMetaData.cc' || echo '$(srcdir)/'`MgQ/MgQStepMetaData.cc
-
-MgQPattern.lo: MgQ/MgQPattern.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQPattern.lo -MD -MP -MF $(DEPDIR)/MgQPattern.Tpo -c -o MgQPattern.lo `test -f 'MgQ/MgQPattern.cc' || echo '$(srcdir)/'`MgQ/MgQPattern.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQPattern.Tpo $(DEPDIR)/MgQPattern.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQPattern.cc' object='MgQPattern.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQPattern.lo `test -f 'MgQ/MgQPattern.cc' || echo '$(srcdir)/'`MgQ/MgQPattern.cc
-
-MgQHistoItem.lo: MgQ/MgQHistoItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQHistoItem.lo -MD -MP -MF $(DEPDIR)/MgQHistoItem.Tpo -c -o MgQHistoItem.lo `test -f 'MgQ/MgQHistoItem.cc' || echo '$(srcdir)/'`MgQ/MgQHistoItem.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQHistoItem.Tpo $(DEPDIR)/MgQHistoItem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQHistoItem.cc' object='MgQHistoItem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQHistoItem.lo `test -f 'MgQ/MgQHistoItem.cc' || echo '$(srcdir)/'`MgQ/MgQHistoItem.cc
-
-MgQPlotScene.moc.lo: MgQ/MgQPlotScene.moc.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MgQPlotScene.moc.lo -MD -MP -MF $(DEPDIR)/MgQPlotScene.moc.Tpo -c -o MgQPlotScene.moc.lo `test -f 'MgQ/MgQPlotScene.moc.cpp' || echo '$(srcdir)/'`MgQ/MgQPlotScene.moc.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/MgQPlotScene.moc.Tpo $(DEPDIR)/MgQPlotScene.moc.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='MgQ/MgQPlotScene.moc.cpp' object='MgQPlotScene.moc.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MgQPlotScene.moc.lo `test -f 'MgQ/MgQPlotScene.moc.cpp' || echo '$(srcdir)/'`MgQ/MgQPlotScene.moc.cpp
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-install-nodist_includeHEADERS: $(nodist_include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) 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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	clean-noinstLTLIBRARIES 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-includeHEADERS 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-includeHEADERS uninstall-libLTLIBRARIES \
-	uninstall-nodist_includeHEADERS
-
-.MAKE: all check install install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
-	ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
-
-
- at MAGICS_QT_TRUE@ # ------------- #
- at MAGICS_QT_TRUE@ # DOCUMENTATION #
- at MAGICS_QT_TRUE@ # ------------- #
-
-# --- #
-# MOC #
-# --- #
-
- at MAGICS_QT_TRUE@.hpp.moc.cpp:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.hh.moc.cpp:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.h.moc.cpp:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
- at MAGICS_QT_TRUE@.hpp.moc.cc:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.hh.moc.cc:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.h.moc.cc:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
- at MAGICS_QT_TRUE@.hpp.moc.cxx:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.hh.moc.cxx:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.h.moc.cxx:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
- at MAGICS_QT_TRUE@.hpp.moc.C:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.hh.moc.C:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
- at MAGICS_QT_TRUE@.h.moc.C:
- at MAGICS_QT_TRUE@	$(MOC) $(QT_CPPFLAGS) $(EXTRA_CPPFLAGS) $< -o $@
-
-# --- #
-# UIC #
-# --- #
-
- at MAGICS_QT_TRUE@.ui.ui.hpp:
- at MAGICS_QT_TRUE@	$(UIC) $< -o $@
-
- at MAGICS_QT_TRUE@.ui.ui.hh:
- at MAGICS_QT_TRUE@	$(UIC) $< -o $@
-
- at MAGICS_QT_TRUE@.ui.ui.h:
- at MAGICS_QT_TRUE@	$(UIC) $< -o $@
-
-# --- #
-# RCC #
-# --- #
-
- at MAGICS_QT_TRUE@.qrc.qrc.cpp:
- at MAGICS_QT_TRUE@	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
- at MAGICS_QT_TRUE@.qrc.qrc.cc:
- at MAGICS_QT_TRUE@	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
- at MAGICS_QT_TRUE@.qrc.qrc.cxx:
- at MAGICS_QT_TRUE@	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
- at MAGICS_QT_TRUE@.qrc.qrc.C:
- at MAGICS_QT_TRUE@	$(RCC) -name `echo "$<" | sed 's/\.qrc$$//'` $< -o $@
-
-# 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/drivers/MgQ/MgQLayoutItem.h b/src/drivers/MgQ/MgQLayoutItem.h
index 02f23942..6c41a22 100644
--- a/src/drivers/MgQ/MgQLayoutItem.h
+++ b/src/drivers/MgQ/MgQLayoutItem.h
@@ -30,7 +30,7 @@
 #define _MgQLayoutItem_H
 
 #include <magics.h>
-#include <Layout.h>
+#include "Layout.h"
 #include <PaperPoint.h>
 
 #include "MgQ.h"
diff --git a/src/drivers/MgQ/MgQPlotScene.cc b/src/drivers/MgQ/MgQPlotScene.cc
index 0f87615..303e112 100644
--- a/src/drivers/MgQ/MgQPlotScene.cc
+++ b/src/drivers/MgQ/MgQPlotScene.cc
@@ -547,4 +547,4 @@ void MgQPlotScene::slotSceneRectChanged(const QRectF& rect)
 		 highlightItem_->setRect(highlightedSceneItem_->sceneBoundingRect());
 		 //highlightItem_->setScale(plotRootItem_->scale()); 
 	}
-}	
\ No newline at end of file
+}	
diff --git a/src/drivers/MgQ/MgQScene.cc b/src/drivers/MgQ/MgQScene.cc
index a5cdab3..379b7b5 100644
--- a/src/drivers/MgQ/MgQScene.cc
+++ b/src/drivers/MgQ/MgQScene.cc
@@ -92,12 +92,13 @@ void MgQScene::renderContents(QPainter *painter, const QStyleOptionGraphicsItem*
   	//Save painter state
 	painter->save();
   
-	//Find the ideal x / y scaling ratio to fit \a source into \a target.
-    	qreal xratio = targetRect.width() / sourceRect.width();
-    	qreal yratio = targetRect.height() / sourceRect.height();
+	//Find the scaling ratio 
+    	float xRatio = targetRect.width() / sourceRect.width();
+    	float yRatio = targetRect.height() / sourceRect.height();
  
-	//Keep aspect ratio
-	xratio = yratio = qMin(xratio, yratio);
+	//Keep aspect ratio	
+	xRatio =(xRatio<yRatio)?xRatio:yRatio;
+	yRatio=xRatio;
 
 	//qDebug() << "CLIPPING " << sourceRect << targetRect;
     	
@@ -108,7 +109,7 @@ void MgQScene::renderContents(QPainter *painter, const QStyleOptionGraphicsItem*
 	QTransform painterTransform;
 	painterTransform *= QTransform()
                         .translate(targetRect.left(), targetRect.top())
-                        .scale(xratio, yratio)
+                        .scale(xRatio, yRatio)
                         .translate(-sourceRect.left(), -sourceRect.top());
     	painter->setWorldTransform(painterTransform, true);
 
diff --git a/src/drivers/MgQ/MgQSceneItem.h b/src/drivers/MgQ/MgQSceneItem.h
index c64cda4..5b88c20 100644
--- a/src/drivers/MgQ/MgQSceneItem.h
+++ b/src/drivers/MgQ/MgQSceneItem.h
@@ -171,4 +171,4 @@ protected:
 };
 
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/drivers/MingDriver.cc b/src/drivers/MingDriver.cc
new file mode 100644
index 0000000..9a29635
--- /dev/null
+++ b/src/drivers/MingDriver.cc
@@ -0,0 +1,568 @@
+
+
+/******************************** LICENSE ********************************
+
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+ 
+ Licensed under the Apache License, Version 2.0 (the "License"); 
+ you may not use this file except in compliance with the License. 
+ You may obtain a copy of the License at 
+ 
+ 	http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+
+
+ ******************************** LICENSE ********************************/
+
+/*! \file MingDriver.cc
+    \brief Implementation of MingDriver.
+    \author Meteorological Visualisation Section, ECMWF
+
+    Started: Tue Nov 20 12:26:52 2007
+
+*/
+
+#include <MingDriver.h>
+#include <Polyline.h>
+#include <Text.h>
+#include <Image.h>
+
+#define SCALE 35
+
+using namespace magics;
+
+/*!
+  \brief Constructor
+*/
+MingDriver::MingDriver() 
+{
+	setNewColour(Colour("black"));
+}
+
+/*!
+  \brief Destructor
+*/
+MingDriver::~MingDriver() 
+{
+}
+
+/*!
+  \brief Opening the driver
+*/
+void MingDriver::open()
+{
+MagLog::warning() << " MingDriver is still EXPERIMENTAL !!!"<< endl;
+	dimensionX_ = SCALE * getXDeviceLength();
+	dimensionY_ = SCALE * getYDeviceLength();
+	movie_ = new SWFMovie(9);  // version 9
+	movie_->setRate(0.5);
+	movie_->setDimension(dimensionX_,dimensionY_);
+	offsetY_ = dimensionY_;
+	coordRatioY_ = -1;
+}
+
+/*!
+  \brief Closing the driver
+*/
+void MingDriver::close()
+{
+	endPage();
+	currentPage_ = 0;
+
+	string fileName = getFileName("swf",0);
+	movie_->save(fileName.c_str());
+}
+
+/*!
+  \brief starting a new page
+
+  This method has to take care that previous pages are closed and that
+  for formats with multiple output files a new file is set up.
+*/
+MAGICS_NO_EXPORT void MingDriver::startPage() const
+{
+	if(currentPage_ > 0) endPage();
+
+	movie_->nextFrame();
+
+	currentPage_++;
+	newPage_ = true;
+}
+
+/*!
+  \brief ending a page
+ 
+  This method has to take care that for formats with multiple output 
+  files are closed.
+*/
+MAGICS_NO_EXPORT void MingDriver::endPage() const
+{
+}
+
+/*!
+  \brief project to a new Layout
+
+  This method will update the offset and scale according to the new Layout given.
+
+  \sa Layout
+*/
+MAGICS_NO_EXPORT void MingDriver::project(const magics::Layout& layout) const
+{
+	if( (!magCompare(currentBox_,"non")) ) unprojectBox();
+
+	newLayout_ = true;
+	if(newPage_) newPage_=false;
+
+	dimensionStack_.push(dimensionX_);
+	dimensionStack_.push(dimensionY_);
+
+	lastAreaHeightPercentage_ = layout.getAreaHeightPercentage() * 0.01;
+	lastAreaWidthPercentage_  = layout.getAreaWidthPercentage()  * 0.01;
+
+	const float Xoff = layout.getXOffsetPercentage() * 0.01 * dimensionX_;
+	const float Yoff = layout.getYOffsetPercentage() * 0.01 * dimensionY_;
+
+	offsetsX_.push(offsetX_);
+	offsetsY_.push(offsetY_);
+	offsetX_ = projectX(Xoff);
+	offsetY_ = projectY(Yoff);
+	dimensionX_= lastAreaWidthPercentage_  * dimensionX_;
+	dimensionY_= lastAreaHeightPercentage_ * dimensionY_;
+}
+
+/*!
+  \brief reproject out of the last Layout
+
+  This method will update the offset and scale to the state they were before the
+  last Layout was received.
+
+  \sa UnLayout
+*/
+MAGICS_NO_EXPORT void MingDriver::unproject(const magics::UnLayout& unlayout) const
+{
+	if( (newPage_==false) && (!magCompare(currentBox_,"non")) ) {unprojectBox();}
+	if(dimensionStack_.size()>1)
+	{
+		dimensionY_ = dimensionStack_.top();dimensionStack_.pop();
+		dimensionX_ = dimensionStack_.top();dimensionStack_.pop();
+
+		offsetX_ = offsetsX_.top();offsetsX_.pop();
+		offsetY_ = offsetsY_.top();offsetsY_.pop();
+	}
+	currentBox_ = "non";
+}
+
+/*!
+  \brief project into a box
+
+  This method will update the offset and scale to position for new box.
+  The properties of boxes are stored in the current Layout.
+
+  \sa Layout
+*/
+MAGICS_NO_EXPORT void MingDriver::projectBox(const string& area) const
+{
+	if(magCompare(currentBox_,area)) return;
+	if(newLayout_) newLayout_=false;
+	else { unprojectBox();}
+
+	currentBox_ = area;
+	setNewColour(Colour(0.,0.,0.));  // to set colours right!
+
+	Box *box = getBox(area);
+
+	const float Xoff    = dimensionX_ * box->getX()      * 0.01;
+	const float Yoff    = dimensionY_ * box->getY()      * 0.01;
+	const float Xlength = dimensionX_ * box->getWidth()  * 0.01;
+	const float Ylength = dimensionY_ * box->getHeight() * 0.01;
+	const float Xmin = box->getXmin();
+	const float Xmax = box->getXmax();
+	const float Ymin = box->getYmin();
+	const float Ymax = box->getYmax();
+	const float sumX = Xmax - Xmin;
+	const float sumY = Ymax - Ymin;
+
+	boxoffsetsX_.push(offsetX_);
+	boxoffsetsY_.push(offsetY_);
+	offsetX_ += Xoff;
+	offsetY_ -= Yoff;
+	scalesX_.push(coordRatioX_);
+	scalesY_.push(coordRatioY_);
+	coordRatioX_ *= Xlength/sumX;
+	coordRatioY_ *= Ylength/sumY;
+	offsetX_ = projectX(-Xmin);
+	offsetY_ = projectY(-Ymin);
+}
+
+/*!
+  \brief unproject into a box
+
+  This method will update the offset and scale to rest from the current box.
+  The properties of boxes are stored in the current Layout.
+
+  \sa Layout
+*/
+MAGICS_NO_EXPORT void MingDriver::unprojectBox() const
+{
+	if((!magCompare(currentBox_,"non")) && ( !offsetsX_.empty() && !scalesX_.empty() ) )
+	{
+		offsetX_ = boxoffsetsX_.top();
+		boxoffsetsX_.pop();
+		offsetY_ = boxoffsetsY_.top();
+		boxoffsetsY_.pop();
+
+		coordRatioX_  = scalesX_.top();
+		scalesX_.pop();
+		coordRatioY_  = scalesY_.top();
+		scalesY_.pop();
+	}
+	currentBox_ = "non";
+}
+
+/*!
+  \brief setup a new layer
+
+  This method will setup a new layer. Layers enable overlays of entities
+  of information.
+
+  \sa PhysicalLayer
+*/
+MAGICS_NO_EXPORT void MingDriver::newLayer(const PhysicalLayer& layer) const
+{
+	movie_->nextFrame();
+}
+
+/*!
+  \brief close the current layer
+
+  This method will close an existing layer. This includes resets of existing boxes. 
+
+  \sa UnPhysicalLayer PhysicalLayer
+*/
+MAGICS_NO_EXPORT void MingDriver::closeLayer(const UnPhysicalLayer& layer) const
+{
+}
+
+
+/*!
+  \brief sets a new colour
+
+  This colour stays the default drawing colour until the painting in the 
+  current box is finished.
+
+  \sa Colour
+*/
+MAGICS_NO_EXPORT void MingDriver::setNewColour(const Colour &colour) const
+{
+	if(currentColour_ == colour) return;
+	currentColour_ = colour;
+}
+
+/*!
+  \brief sets a new line width
+
+  This line width stays the default width until the painting in the 
+  current box is finished.
+
+  \sa setLineParameters()
+*/
+MAGICS_NO_EXPORT void MingDriver::setNewLineWidth(const float width) const
+{
+	currentLineWidth_ = width;
+}
+
+/*!
+  \brief sets new properties of how lines are drawn
+
+  These properties stay the default until the painting in the 
+  current box is finished.
+
+  \sa LineStyle
+
+  \param linestyle Object describing the line style
+  \param w width of the line
+
+*/
+MAGICS_NO_EXPORT int MingDriver::setLineParameters(const LineStyle linestyle, const float w) const
+{
+	setNewLineWidth(w);
+
+	MagLog::debug() << "MingDriver::setLineParameters needs implementing." <<endl;
+	return 0;
+}
+
+/*!
+  \brief renders polylines
+
+  This method renders a polyline given as two float arrays. The two 
+  arrays given as X and Y values have to be at least the length of
+  <i>n</i>. All values beyond <i>n</i> will be ignored. The style is
+  determined by what is described in the current LineStyle.
+
+  \sa setLineParameters()
+  \param n number of points
+  \param x array of x values
+  \param y array of y values
+*/
+MAGICS_NO_EXPORT void MingDriver::renderPolyline(const int n, float *x, float *y) const
+{
+	if(n<2) return;
+
+	SWFShape *shape = new SWFShape();
+
+	shape->setLine2(currentLineWidth_, (byte)currentColour_.red()*128,(byte)currentColour_.green()*128,(byte)currentColour_.blue()*128, (byte)128, 
+	                 SWF_LINESTYLE_FLAG_HINTING | SWF_LINESTYLE_JOIN_BEVEL | SWF_LINESTYLE_FLAG_ENDCAP_SQUARE, 0);
+
+	float old_x = projectX(x[0]);
+	float old_y = projectY(y[0]);
+	shape->movePenTo(old_x, old_y);
+
+	for(int l = 1; l<n; l++)
+	{
+		const float xx = projectX(x[l]);
+		const float yy = projectY(y[l]);
+		shape->drawLineTo(xx, yy);
+
+		old_x = xx;
+		old_y = yy;
+	}
+
+	movie_->add(shape);
+}
+
+/*!
+  \brief renders horizontal polylines
+
+  This method renders a horizontal polyline given as two float arrays.
+  This method is mainly thought for the scanline algorithm used by some 
+  output drivers to shade areas. <i>n</i> has to be a multiple of 2!
+
+  \sa setLineParameters()
+  \param n number of points
+  \param x array of x values
+  \param y y value
+*/
+MAGICS_NO_EXPORT void MingDriver::renderPolyline2x(const int n, int* x, const int y) const
+{
+	MagLog::debug() << "MingDriver::renderPolyline2x needs implementing." <<endl;
+}
+
+/*!
+  \brief renders a single line
+
+  This method renders a polyline with two points.The style is
+  determined by what is described in the current LineStyle.
+
+  \sa setLineParameters()
+  \param n number of points
+  \param x array of x values
+  \param y array of y values
+*/
+MAGICS_NO_EXPORT void MingDriver::renderPolyline2(const int n, float* x, float* y) const
+{
+	MagLog::debug() << "MingDriver::renderPolyline2 needs implementing." <<endl;
+}
+
+/*!
+  \brief renders a filled polygon
+
+  This method renders a filled polygon. The style is
+  determined by what is described in the current LineStyle.
+
+  \sa setLineParameters()
+  \param n number of points
+  \param x array of x values
+  \param y array of y values
+*/
+MAGICS_NO_EXPORT void MingDriver::renderSimplePolygon(const int n, float* x, float* y) const
+{
+	MagLog::debug() << "MingDriver::renderSimplePolygon needs implementing." <<endl;
+}
+
+/*!
+  \brief renders text strings
+
+  This method renders given text strings.
+
+  \note As of version 2.0 there are two forms of describing text in Text.
+
+  \sa Text
+  \param text object containing the strings and their description
+*/
+MAGICS_NO_EXPORT void MingDriver::renderText(const Text& text) const
+{
+   if(text.empty()) return;
+   const vector<NiceText>& niceT = text.getNiceText();
+   if(niceT.empty() && (text.getText().length()==0 || text.empty()) ) return;
+
+   if(niceT.empty())
+   {
+   }
+   /**************************************************************************
+   ***
+   ***    N I C E   T E X T
+   ***
+   **************************************************************************/
+   else
+   {
+	vector<NiceText>::const_iterator niceText = text.textBegin();
+	vector<NiceText>::const_iterator niceTextEnd = text.textEnd();
+
+	int text_length = 0;
+	for(;niceText<niceTextEnd;niceText++)
+	{
+		const MagFont magfont	= (*niceText).font();
+		const string style	= (magfont.style()=="") ? "normal": magfont.style();
+//		const bool underlined	= (magfont.style()=="underline") ? true : false; 
+		const string font	= magfont.name()+"_"+style;
+		const string lowFont	= lowerCase(font);
+		fontMapIter iter	= FontMap_.find(lowFont);
+
+		string ttf = getEnvVariable("MAGPLUS_HOME") + "/" + MAGICS_TTF_PATH;
+		if(iter!=FontMap_.end())
+			ttf += iter->second.ttf_filename;
+		else
+		{
+			ttf += FontMap_["sansserif_normal"].ttf_filename; // if not found get default
+			MagLog::warning() << "MingDriver: Font "<< font << " is not registered! Default font is used."<< endl;
+		}
+
+		SWFText *stext = new SWFText();
+		SWFFont *sfont = new SWFFont((char*)ttf.c_str());
+		if(sfont==NULL)
+		{
+		  MagLog::error() << "MingDriver -> Could not open TTF file "<<ttf<<" !"<< endl;
+		}
+		stext->moveTo( projectX(text[0].x()), projectY(text[0].y()));
+		stext->setFont(sfont);
+//		stext->setColor(0xff, 0, 0, 0xff);
+		stext->setColor(currentColour_.red(),currentColour_.green(),currentColour_.blue(),0xff);
+		stext->setHeight(text.getFontSize()*SCALE);
+		stext->addString((*niceText).text().c_str(), NULL);//text.getText());
+		movie_->add(stext);
+	}
+   } // end NICE text
+/*
+ $i->moveTo(160-$t->getWidth("fnar! fnar!")/2, 120+$t->getAscent()/2);
+
+	SWFTextField *text = new SWFTextField();
+
+	text->setFlags(SWFTEXTFIELD_NOEDIT);
+	text->addString("The quick brown fox jumps over the lazy dog. 1234567890");
+	m->add(text);*/
+}
+
+/*!
+  \brief drawing a circle
+
+  This method renders given text strings.
+
+  The meaning of the last parameter <i>s</i> is as follows:
+     - 0-8 determines how many quarters of the circle are filled. Starting from the top clock-wise.
+     - 9 fills the whole circle but leaves a vertical bar empty in the middle of the circle.
+
+  \param x X Position
+  \param y Y Position
+  \param r Radius of circle
+  \param s Style which determines how the circle is shaded
+*/
+MAGICS_NO_EXPORT void MingDriver::circle(const float x, const float y, const float r, const int s) const
+{
+	MagLog::debug() << "MingDriver::circle needs implementing." <<endl;
+}
+
+/*!
+  \brief render pixmaps
+
+  This method renders pixmaps. These are used for cell shading and raster input (GIFs and PNGs).
+
+  \sa renderCellArray()
+
+  \param x0 x of lower corner
+  \param y0 y of lower corner
+  \param x1 x of higher corner
+  \param y1 y of higher corner
+  \param w width of pixmap
+  \param h height of pixmap
+  \param pixmap contents
+  \param landscape says if contents is landscape
+
+*/
+MAGICS_NO_EXPORT bool MingDriver::renderPixmap(float x0,float y0,float x1,float y1,
+                                            int w,int h,unsigned char* pixmap,int landscape, bool) const
+{
+	MagLog::debug() << "MingDriver::renderPixmap needs implementing." <<endl;
+	return true;
+}
+
+/*!
+  \brief render cell arrays
+
+  This method renders cell arrays, also called images in Magics language. These are 
+  mainly used for satellite data.
+
+  \sa renderPixmap()
+
+  \param image Object containing an image
+*/
+MAGICS_NO_EXPORT bool MingDriver::renderCellArray(const Image& image) const
+{
+	MagLog::debug() << "MingDriver::renderCellArray needs implementing." <<endl;
+	return true;
+}
+
+/*!
+  \brief render filled polygons
+
+  This method renders filled polygons which were priviously defined in the BaseDriver.
+
+  \sa BaseDriver::renderPolylineSets()
+*/
+MAGICS_NO_EXPORT void MingDriver::endPolygon() const
+{
+/*
+	SWFFillStyle *fill =  SWFFillStyle::SolidFillStyle(255, 128, 0, 255);
+	SWFShape *shape = new SWFShape();
+	shape->setRightFillStyle(fill);
+	
+	shape->setLine(1, 0,0,0,255);
+	shape->drawLine(100, 0);
+	shape->drawLine(0, 100);
+	shape->drawLine(-100, 0);
+	shape->drawLine(0, -100);
+
+	movie_->add(shape);
+*/
+}
+
+/*!
+  \brief prints debug output
+
+  When Magics++ is compiled in debug mode these extra strings are printed.
+
+  \note This can increase file and log file sizes if you run Magics++ in debug mode!
+
+  \param s string to be printed
+*/
+MAGICS_NO_EXPORT void MingDriver::debugOutput(const string &s) const
+{
+	MagLog::debug() << s << endl;
+}
+
+/*!
+  \brief class information are given to the output-stream
+*/
+void MingDriver::print(ostream& out)  const
+{
+	out << "MingDriver[";
+	out << "]";
+}
+
+static SimpleObjectMaker<MingDriver, BaseDriver> Ming_driver("Ming");
+
diff --git a/src/drivers/MingDriver.h b/src/drivers/MingDriver.h
new file mode 100644
index 0000000..52ff7aa
--- /dev/null
+++ b/src/drivers/MingDriver.h
@@ -0,0 +1,132 @@
+/******************************** LICENSE ********************************
+
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+ 
+ Licensed under the Apache License, Version 2.0 (the "License"); 
+ you may not use this file except in compliance with the License. 
+ You may obtain a copy of the License at 
+ 
+ 	http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+
+
+ ******************************** LICENSE ********************************/
+
+/*!
+    \file MingDriver.h
+    \brief Definition of MingDriver.
+    \author Meteorological Visualisation Section, ECMWF
+
+    Started: Tue Nov 20 12:26:52 2007
+*/
+
+#ifndef _MingDriver_H
+#define _MingDriver_H
+
+#include <BaseDriver.h>
+#include <MingDriverAttributes.h>
+#include <XmlNode.h>
+
+#include <mingpp.h>
+
+namespace magics
+{
+
+/*! \class MingDriver
+    \brief This driver produces output for Ming
+    \ingroup drivers
+
+    This driver ...
+*/
+class MingDriver: public BaseDriver, public MingDriverAttributes
+{
+
+public:
+	MingDriver();
+	~MingDriver();
+	void open();
+	void close();
+
+	/*!
+	  \brief sets a new XML node
+	*/
+	void set(const XmlNode& node)
+	{
+		if ( magCompare(node.name(), "swf") )
+		{
+			XmlNode basic = node;
+			basic.name("driver");
+			BaseDriver::set(basic);
+			basic.name("swf");
+			MingDriverAttributes::set(basic);
+		}
+	}
+
+	/*!
+	  \brief sets a new map
+	*/
+	void set(const map<string, string>& map)
+	{
+		BaseDriver::set(map);
+		MingDriverAttributes::set(map);
+	}
+
+private:
+	MAGICS_NO_EXPORT void startPage() const;
+	MAGICS_NO_EXPORT void endPage() const;
+	MAGICS_NO_EXPORT void project(const Layout& lay) const;
+	MAGICS_NO_EXPORT void unproject(const magics::UnLayout&) const;
+	MAGICS_NO_EXPORT void projectBox(const string &) const;
+	MAGICS_NO_EXPORT void unprojectBox() const;
+	MAGICS_NO_EXPORT void newLayer(const PhysicalLayer& ) const;
+	MAGICS_NO_EXPORT void setNewLineWidth(const float) const;
+	MAGICS_NO_EXPORT void closeLayer(const UnPhysicalLayer& ) const;
+
+	MAGICS_NO_EXPORT void setNewColour(const Colour &col) const;
+	MAGICS_NO_EXPORT int setLineParameters(const LineStyle style, const float w) const;
+
+	MAGICS_NO_EXPORT void renderPolyline(const int, float *, float *) const;
+	MAGICS_NO_EXPORT void renderPolyline2x(const int, int*, const int) const;
+	MAGICS_NO_EXPORT void renderPolyline2(const int n, float *x, float *y) const;
+	MAGICS_NO_EXPORT void renderSimplePolygon(const int, float *, float *) const;
+	MAGICS_NO_EXPORT void renderText(const Text& text) const;
+	MAGICS_NO_EXPORT void circle(const float x, const float y, const float r, const int) const;
+	MAGICS_NO_EXPORT bool renderPixmap(float,float,float,float,int,int,unsigned char*,int, bool) const;
+	MAGICS_NO_EXPORT bool renderCellArray(const Image& obj) const;
+	MAGICS_NO_EXPORT void endPolygon() const;
+
+	MAGICS_NO_EXPORT float setY(const float y) const {return -y;}
+	MAGICS_NO_EXPORT float projectX(const float x) const {return offsetX_+(x*coordRatioX_);}
+	MAGICS_NO_EXPORT float projectY(const float y) const {return offsetY_+(y*coordRatioY_);}
+	mutable SWFMovie*     movie_;
+	mutable SWFFillStyle* currentStyle_;
+	mutable float offsetX_;
+	mutable float offsetY_;
+	mutable stack<float> offsetsX_;
+	mutable stack<float> offsetsY_;
+	mutable stack<float> boxoffsetsX_;
+	mutable stack<float> boxoffsetsY_;
+
+	//! Method to print string about this class on to a stream of type ostream (virtual).
+	void print(ostream&) const;
+	MAGICS_NO_EXPORT void debugOutput(const string &s) const;
+
+	//! Copy constructor - No copy allowed
+	MingDriver(const MingDriver&);
+	//! Overloaded << operator to copy - No copy allowed
+	MingDriver& operator=(const MingDriver&);
+
+	// -- Friends
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const MingDriver& p)
+		{ p.print(s); return s; }
+};
+
+} // namespace magics
+#endif
diff --git a/src/drivers/PostScriptDriver.cc b/src/drivers/PostScriptDriver.cc
index af4ecc5..d9a1e14 100644
--- a/src/drivers/PostScriptDriver.cc
+++ b/src/drivers/PostScriptDriver.cc
@@ -664,7 +664,9 @@ void PostScriptDriver::renderSimplePolygon(const Polyline& line) const
 		indexHatch_ = pro->index_;
 		if(indexHatch_<1 || indexHatch_>6)
 		{
-			MagLog::warning() << "PostScriptDriver::renderSimplePolygon > Hatch index " <<indexHatch_<<" is wrong. No hatch sahding possible!" << endl;
+			MagLog::warning() << "PostScriptDriver::renderSimplePolygon > Hatch index " <<indexHatch_<<" is wrong. No hatch shading possible!" << endl;
+			if(indexHatch_==0)
+			  MagLog::debug() << "PostScriptDriver::renderSimplePolygon > Hatch index is 0. Alternative hatch patterns between 1-6 should have been sent!" << endl;
 			return;
 		}
 		const int s = (int)(pro->density_);
@@ -1087,15 +1089,7 @@ MAGICS_NO_EXPORT void PostScriptDriver::renderText(const Text& text) const
 			else
 			{
 
-/*
-	MagLog::dev()<< "  PS TEXT >>> " << (*niceText).text()<<" " <<text.getAngle()<< "  ver:";
-	if (text.getVerticalAlign()==MBASE)      MagLog::dev()<< "MBASE";
-	else if (text.getVerticalAlign()==MTOP)  MagLog::dev()<< "MTOP";
-	else if (text.getVerticalAlign()==MHALF) MagLog::dev()<< "MHALF";
-	else if (text.getVerticalAlign()==MBOTTOM) MagLog::dev()<< "MBOTTOM";
-	else MagLog::dev()<< "???";
-	cout<<"  x: "<< text[nT].x()<< "   y: "<< text[nT].y()<< endl;
-*/
+
 				const MFloat an = 360.-(text.getAngle()*57.29577951);
 				if(an==0 || an==360)
 					*ps <<"gs "<< x0 << " " << y0 << " t ("<<tmp.str()<< ") 0 0 "<<textCommand<<"\n";
@@ -1251,7 +1245,7 @@ MAGICS_NO_EXPORT bool PostScriptDriver::renderPixmap(MFloat x0,MFloat y0,MFloat
 		if ( (++nl)%12 == 0) *ps << "\n";
 	   }
 	 }
-	 *ps << "gr" <<endl;
+	 *ps << "gr" << std::endl;
 	 currentColour_ = Colour("none");
 	 delete [] t;
 	 return true;
@@ -1315,7 +1309,7 @@ MAGICS_NO_EXPORT bool PostScriptDriver::renderCellArray(const Image& image) cons
 				r = 1.;
 				g = 1.;
 				b = 1.;
-//				MagLog::info()<< "PostScriptDriver-> Cellshading colour not defined in table! Colour index: "<<c<<endl;
+//				MagLog::info()<< "PostScriptDriver-> Cellshading colour not defined in table! Colour index: "<<c<< std::endl;
 //    PostScript will always 'overpaint' anything below missing data!!!!
 //
 			}
@@ -1360,12 +1354,12 @@ MAGICS_NO_EXPORT bool PostScriptDriver::renderCellArray(const Image& image) cons
 			if ( (++nl)%12 == 0) *ps << "\n";
 		}
 	}
-	*ps << "gr" <<endl;
+	*ps << "gr" << std::endl;
 	delete [] t;
    }
    else
    {
-	MagLog::warning() << "PostScriptDriver: failed to plot CellArray with wrong dimensions! Width: "<<width<<" Height: "<<height <<endl;
+	MagLog::warning() << "PostScriptDriver: failed to plot CellArray with wrong dimensions! Width: "<<width<<" Height: "<<height << std::endl;
    }
    return true;
 }
@@ -1446,13 +1440,15 @@ MAGICS_NO_EXPORT void PostScriptDriver::openFile() const
 	PSOut_.clear();
 	PSOut_.open(fileName_.c_str(),std::ios::out);
 	if(!PSOut_){
-		MagLog::fatal() << "PostScriptDriver::close() --> Cannot write PostScript file! " << fileName_ << "\n";
+		MagLog::error() << "PostScriptDriver::close() --> Cannot write PostScript file! " << fileName_ << "\n";
+		MagLog::error() << "";  // to ensure that the error message is broadcast
 		terminate();
 	}
 
 	PSOut_.setf(ios_base::fixed);
 	PSOut_.unsetf(ios::showpoint);
 	PSOut_.precision(2);
+//	PSOut_<< setprecision(2);
 	writePSFileHeader();
 }
 
@@ -1586,7 +1582,7 @@ MAGICS_NO_EXPORT void PostScriptDriver::copyMacro(fstream *ps, const string &fil
 	ifstream psfile(s.c_str());
 
 	if(!psfile){
-		MagLog::fatal() << "PostScriptDriver::copyMacro() --> Cannot open PostScript Macro file! " << s <<
+		MagLog::error() << "PostScriptDriver::copyMacro() --> Cannot open PostScript Macro file! " << s <<
 		 " Is MAGPLUS_HOME set correctly?\n";
 		return;
 	}
diff --git a/src/drivers/QtDriver.cc b/src/drivers/QtDriver.cc
index 620ef1e..dcc1991 100644
--- a/src/drivers/QtDriver.cc
+++ b/src/drivers/QtDriver.cc
@@ -1155,7 +1155,8 @@ MAGICS_NO_EXPORT void QtDriver::renderText(const Text& text) const
 		const MagFont magfont = niceText->font();
 		if(magfont.size() != magfontFirst.size() ||
 	           magfont.name() != magfontFirst.name() ||
-		   !(magfont.colour() == magfontFirst.colour()) )
+		   !(magfont.colour() == magfontFirst.colour()) ||
+		    magfont.styles() !=  magfontFirst.styles())
 		{
 			sameFontForItems=false;
 			break;
diff --git a/src/drivers/SVGDriver.cc b/src/drivers/SVGDriver.cc
index e832abe..f157df5 100644
--- a/src/drivers/SVGDriver.cc
+++ b/src/drivers/SVGDriver.cc
@@ -34,6 +34,7 @@
 #include <ImportObject.h>
 #include <System.h>
 #include <Layer.h>
+#include <iomanip>
 
 //! For generating SVGZ files
 extern "C"{
@@ -46,6 +47,7 @@ extern "C"{
 */
 #include <sys/stat.h>
 #include "minizip/zip.h"
+
 #define MAXFILENAME 256
 #define WRITEBUFFERSIZE 16384
 }
@@ -125,7 +127,8 @@ MAGICS_NO_EXPORT void SVGDriver::startPage() const
 
 	if(!pFile_)
 	{
-		MagLog::fatal() << "SVGDriver::startPage() --> Cannot open SVG output file: " << filename << "\n";
+		MagLog::error() << "SVGDriver::startPage() --> Cannot open SVG output file: " << filename << "\n";
+		MagLog::error() << "";  // to ensure that the error message is broadcast
 		terminate();
 	}
 
@@ -433,7 +436,6 @@ MAGICS_NO_EXPORT void SVGDriver::redisplay(const NoDataLayer& layer) const
 */
 MAGICS_NO_EXPORT void SVGDriver::newLayer() const
 {
-//cout << "SVGDriver::newLayer> " <<currentLayer_<< endl;
 	closeGroup();
 	debugOutput("Layer - "+currentLayer_+" START");
 
@@ -457,7 +459,6 @@ MAGICS_NO_EXPORT void SVGDriver::newLayer() const
 */
 MAGICS_NO_EXPORT void SVGDriver::closeLayer() const
 {
-//  cout << "SVGDriver::closeLayer> " <<currentLayer_<< endl;
 	closeGroup();
 	pFile_ << "</g>\n";
 	debugOutput("Layer - "+currentLayer_+" END");
@@ -487,7 +488,7 @@ MAGICS_NO_EXPORT void SVGDriver::renderInteractiveEnd(const InteractiveEnd&) con
 {
 	debugOutput("renderInteractiveEnd");
 	if( !magCompare(currentBox_,"non") ) unprojectBox();
-	pFile_ << "</g>"<<endl;
+	pFile_ << "</g>"<< std::endl;
 	interactive_=false;
 }
 */
@@ -497,7 +498,7 @@ MAGICS_NO_EXPORT void SVGDriver::openGroup(string g) const
 	if(!magCompare(g,groupString_))
 	{
 		closeGroup();
-		pFile_	<< "<g "<<g<<">" <<endl;
+		pFile_	<< "<g "<<g<<">" << std::endl;
 		groupString_ = g;
 	}
 }
@@ -506,7 +507,7 @@ MAGICS_NO_EXPORT void SVGDriver::closeGroup() const
 {
 	if(!groupString_.empty())
 	{
-		pFile_	<< "</g>"<<endl;
+		pFile_	<< "</g>"<< std::endl;
 		groupString_="";
 	}
 }
@@ -607,11 +608,9 @@ MAGICS_NO_EXPORT void SVGDriver::renderPolyline(const int n, MFloat *x, MFloat *
 		
 		if( x2==old_x && x2==projectX(x[is+1]))
 		{
-//			cout <<"X "<<x2 << endl;
 		}
 		else if( y2==old_y && y2==setY(projectY(y[is+1]))  )
 		{
-//			cout <<"Y "<<y2 << endl;
 		}
 		else
 		{
@@ -980,7 +979,6 @@ MAGICS_NO_EXPORT void SVGDriver::renderText(const Text& text) const
 
 	for(;niceText<niceTextEnd;niceText++)
 	{
-//cout <<"SVG> "<< (*niceText).text()<< endl;
 		const MagFont magfont = (*niceText).font();
 		setNewColour(magfont.colour());
 		const MFloat dheight = magfont.size()*text_scale;
@@ -1123,7 +1121,7 @@ MAGICS_NO_EXPORT void SVGDriver::circle(const MFloat x, const MFloat y, const MF
 			<< static_cast<int>(currentColour_.blue() *255) << ")\"";
 		openGroup(stream.str());
 		pFile_	<< "<circle cx=\""<<cx<<"\" cy=\""<<cy<<"\" r=\""<<r<<"\"/>\n"
-			<< "<polyline points=\"0,"<<r*.9<<" 0,"<<-r*.9<<"\" width=\"2\" stroke=\"white\" fill=\"white\"/>"<<endl;
+			<< "<polyline points=\"0,"<<r*.9<<" 0,"<<-r*.9<<"\" width=\"2\" stroke=\"white\" fill=\"white\"/>"<< std::endl;
 	}
 
 }
@@ -1147,7 +1145,6 @@ MAGICS_NO_EXPORT void SVGDriver::circle(const MFloat x, const MFloat y, const MF
 MAGICS_NO_EXPORT bool SVGDriver::renderPixmap(MFloat x0,MFloat y0,MFloat x1,MFloat y1,
                                             int w,int h,unsigned char* pixmap,int,bool ) const
 {
-//cout <<"SVGDriver::renderPixmap"<< endl;
 	unsigned char *p = pixmap;
 	const MFloat dx =  (x1 - x0)/w;
 	const MFloat dy = -(y1 - y0)/h;   // Minus needed for Y axis correction
@@ -1193,7 +1190,6 @@ MAGICS_NO_EXPORT bool SVGDriver::renderPixmap(MFloat x0,MFloat y0,MFloat x1,MFlo
 */
 MAGICS_NO_EXPORT bool SVGDriver::renderCellArray(const Image& image) const
 {
-//cout <<"SVGDriver::renderCellArray"<< endl;
 	ColourTable &lt  = image.getColourTable(); 
 	const int width  = image.getNumberOfColumns();
 	const int height = image.getNumberOfRows();
@@ -1352,7 +1348,7 @@ else
             FILE *fin = fopen(filename.c_str(),"rb");
             if(fin==0)
             {
-                MagLog::fatal() << "Open file "<<filename<<" to be added to SVG FAILED!"<< endl;
+                MagLog::error() << "Open file "<<filename<<" to be added to SVG FAILED!"<< endl;
                 return 1;
             }
             else
@@ -1378,7 +1374,6 @@ else
 */
 MAGICS_NO_EXPORT void SVGDriver::renderImage(const ImportObject& obj) const
 {
-//cout<< "SVGDriver::renderImage: "<<obj.getFormat()<<" "<<obj.getPath()<<" "<< obj.getOrigin().x()<<" "<<obj.getOrigin().y()<< endl;
 	closeGroup();
 	std::string file = obj.getPath();
 
diff --git a/src/drivers/SelectionMode.cc b/src/drivers/SelectionMode.cc
new file mode 100644
index 0000000..9f7fa17
--- /dev/null
+++ b/src/drivers/SelectionMode.cc
@@ -0,0 +1,55 @@
+
+/*******************************  LICENSE  *******************************
+
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+ 
+ Licensed under the Apache License, Version 2.0 (the "License"); 
+ you may not use this file except in compliance with the License. 
+ You may obtain a copy of the License at 
+ 
+ 	http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+
+
+ *******************************  LICENSE  *******************************/
+/*! \file SelectionMode.cc
+    \brief Implementation of the Template class SelectionMode.
+    
+    Magics Team - ECMWF 2007
+    
+    Started: Tue 20-Nov-2007
+    
+    Changes:
+    
+*/
+
+
+
+#include "SelectionMode.h"
+
+using namespace magics;
+
+SelectionMode::SelectionMode() 
+{
+}
+
+
+SelectionMode::~SelectionMode() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void SelectionMode::print(ostream& out)  const
+{
+	out << "SelectionMode[";
+	out << "]";
+}
+
diff --git a/src/drivers/SelectionMode.h b/src/drivers/SelectionMode.h
new file mode 100644
index 0000000..bd863fc
--- /dev/null
+++ b/src/drivers/SelectionMode.h
@@ -0,0 +1,66 @@
+
+/*******************************  LICENSE  *******************************
+
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+ 
+ Licensed under the Apache License, Version 2.0 (the "License"); 
+ you may not use this file except in compliance with the License. 
+ You may obtain a copy of the License at 
+ 
+ 	http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software 
+ distributed under the License is distributed on an "AS IS" BASIS, 
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ See the License for the specific language governing permissions and 
+ limitations under the License.
+
+
+ *******************************  LICENSE  *******************************/
+ 
+/*! \file SelectionMode.h
+    \brief Definition of the Template class SelectionMode.
+    
+    Magics Team - ECMWF 2007
+    
+    Started: Tue 20-Nov-2007
+    
+    Changes:
+    
+*/
+
+#ifndef SelectionMode_H
+#define SelectionMode_H
+
+#include "magics.h"
+
+#include "SelectionModeAttributes.h"
+
+namespace magics {
+
+class SelectionMode: public SelectionModeAttributes {
+
+public:
+	SelectionMode();
+	virtual ~SelectionMode();
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	SelectionMode(const SelectionMode&);
+    //! Overloaded << operator to copy - No copy allowed
+	SelectionMode& operator=(const SelectionMode&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const SelectionMode& p)
+		{ p.print(s); return s; }
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/eckit_readers/CMakeLists.txt b/src/eckit_readers/CMakeLists.txt
new file mode 100644
index 0000000..79f2703
--- /dev/null
+++ b/src/eckit_readers/CMakeLists.txt
@@ -0,0 +1,38 @@
+set( _eckit_srcs
+	TableReader.h
+	TableReader.cc
+)
+
+
+
+if ( MAGICS_BUFR )
+	list (APPEND   _eckit_srcs
+		MvLocation.cc  
+		MvObsSet.cc   
+		fmettim.cc  
+		fsortabl.cc  
+		inc_iostream.h
+		MvLocation.h   
+		MvObsSet.h 
+		fmettim.h
+		fsortabl.h
+		MvBufr.h 
+		MvObs.cc       
+		MvPrepBufrPrep.cc  
+		fdyntime.cc
+		fobject.cc  
+		fstatime.cc
+		MvBufrObs.h     
+		MvObs.h   
+		MvPrepBufrPrep.h   
+		fdyntime.h  
+		fobject.h   
+		fstatime.h
+	)
+endif()
+
+foreach( file ${_eckit_srcs} )
+  list( APPEND eckit_srcs eckit_readers/${file} )
+endforeach()
+
+set( eckit_srcs ${eckit_srcs} PARENT_SCOPE )
diff --git a/src/eckit_readers/MvBufr.h b/src/eckit_readers/MvBufr.h
new file mode 100644
index 0000000..488940c
--- /dev/null
+++ b/src/eckit_readers/MvBufr.h
@@ -0,0 +1,444 @@
+/***************************** LICENSE START ***********************************
+
+ Copyright 2012 ECMWF and INPE. This software is distributed under the terms
+ of the Apache License version 2.0. In applying this license, ECMWF does not
+ waive the privileges and immunities granted to it by virtue of its status as
+ an Intergovernmental Organization or submit itself to any jurisdiction.
+
+ ***************************** LICENSE END *************************************/
+
+// MvBufr.h,   vk Sep94
+//        rev vk 010720
+
+#ifndef MvBufr_DEFINED_
+#define MvBufr_DEFINED_
+
+#include "fdyntime.h"
+#include <map>
+using namespace std;
+
+/*! \file */
+
+//--------------------------------------------------------
+// This constant should be removed into 'Site Dependent Values'...
+//--------------------------------------------------------
+const int BUFR_ORIGINATING_CENTER = 98;   // 98 == ECMWF
+
+
+//------------------------------------------------------//
+// missing value code to be used in C/C++ routines      //
+//------------------------------------------------------//
+const float     kBufrMissingValue = 1.7e38;
+const fortint   kBufrMissingIntValue = 2147483647;
+
+
+//------------------------------------------------------//
+// missing value code returned by FORTRAN routines      //
+//------------------------------------------------------//
+const fortfloat kFortranBufrMissingValue = 1.7e38;
+const fortint   kFortranBufrMissingIntValue = 2147483647;
+
+//--------------------------------------------------------
+// maximum sizes of arrays used in FORTRAN routines
+// NOTE: sizes for arrrays for BUBOX set in MvObs.cc!!!
+// NOTE2: IBM/AIX cannot handle bigger arrays in -q32 mode
+//--------------------------------------------------------
+#if defined(AIX) || defined(MV_USE_SMALL_ARRAYS)
+ const int MAX_KELEM=  40000;  //12000;
+ const int NUM_MAX_KVALS=3;
+ const int aMAX_KVALS[NUM_MAX_KVALS]={90000, 180000, 360000}; // previous max values: 80000
+ //                                      7MB    14MB   27MB
+//                                    (vals*80)/(1024*1024)MB
+ const int MAX_KVALS=aMAX_KVALS[NUM_MAX_KVALS-1]; // biggest entry in aMAX_KVALS
+#else
+ const int MAX_KELEM = 160000; // max allowed is 160,000 !!!  // 80000;  // 40000;   //12000;
+ const int NUM_MAX_KVALS=3;
+ const int aMAX_KVALS[NUM_MAX_KVALS]={600000, 1500000, 4096000};  //360000;   //80000;
+//                                      45MB    115MB   312MB
+//                                    (vals*80)/(1024*1024)MB
+ const int MAX_KVALS=aMAX_KVALS[NUM_MAX_KVALS-1]; // biggest entry in aMAX_KVALS
+#endif
+
+//! \enum EBufrInState Status of a BUFR message being read
+enum  EBufrInState
+{
+   kBufrIn_Error
+ , kBufrIn_Coded
+ , kBufrIn_Sections012Expanded
+ , kBufrIn_DataDecoded
+ , kBufrIn_DataAndDescriptorsDecoded
+};
+
+//! \enum EBufrOutState Status of a BUFR message being created
+enum  EBufrOutState
+{
+   kBufrOut_error
+  ,kBufrOut_noBuffers
+  ,kBufrOut_emptyBuffers
+  ,kBufrOut_formatedBuffers
+  ,kBufrOut_dataInBuffers
+};
+
+//! \enum EElementValueType Values for data element types
+enum EElementValueType
+{
+   kEVT_unknown
+  ,kEVT_missing
+  ,kEVT_numeric
+  ,kEVT_string
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+                                             //  Sections of a BUFR message
+typedef struct
+{
+   unsigned char startStr;       // "B"
+   unsigned char startStr2;      // "U"
+   unsigned char startStr3;      // "F"
+   unsigned char startStr4;      // "R"
+   unsigned char totalLen;    // 24 bits
+   unsigned char totalLen2;
+   unsigned char totalLen3;
+   unsigned char editionNr;
+} TSection0;
+#endif
+
+#if 0
+typedef struct
+{
+   unsigned char len;        // 24;  // 1-3
+   unsigned char len2;       // 24;  // 2
+   unsigned char len3;       // 24;  // 3
+   unsigned char masterTable;//  8;  // 4
+   unsigned char origCentre; // 16;  // 5-6
+   unsigned char origCentre2;// 16;  // 6
+   unsigned char updateSeq;  //  8;  // 7
+
+   unsigned char bitField;   //  8;  // 8...
+   unsigned char msgType;    //  8;
+   unsigned char msgSubtype; //  8;
+   unsigned char masterTableVers; //8;
+
+   unsigned char localTableVers; //8;  // 12...
+   unsigned char yearYY;     //  8;
+   unsigned char month;      //  8;
+   unsigned char day;        //  8;
+
+   unsigned char hour;       //  8;  // 16...
+   unsigned char minute;     //  8;
+} TSection1;
+#endif
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+// internal classes, should not be included in Doxygen docs
+
+const unsigned char cOctetMissingIndicator = 255;
+
+class Section1Base
+{
+ public:
+   Section1Base( const unsigned char* octs );
+   Section1Base( const Section1Base* aSec1 );
+   virtual ~Section1Base(){ delete [] octets_; }
+
+   int         len() const { return 65536*octets_[0] + 256*octets_[1] + octets_[2]; }
+   bool        isDifferent( const Section1Base* aSec1 ) const;
+   const unsigned char* start() const { return octets_; }
+
+   virtual bool     hasSection2() = 0;
+   virtual TDynamicTime date() = 0;
+   virtual int      msgType() = 0;
+   virtual int      msgSubtypeWMO() = 0;
+   virtual int      msgSubtypeLocal() = 0;
+   virtual int      msgSubtype() = 0;
+   virtual int      origCentre() = 0;
+   virtual int      origSubCentre() = 0;
+   virtual int      masterTable() = 0;
+   virtual int      masterTableVersion() = 0;
+   virtual int 	    localTableVersion() = 0;
+
+ protected:
+   unsigned char* octets_;
+};
+
+class Section1_preEd4 : public Section1Base
+{
+ public:
+   Section1_preEd4( const unsigned char* octs ) : Section1Base( octs ){};
+   Section1_preEd4( const Section1Base* aSec1 ) : Section1Base( aSec1 ){};
+
+   bool     hasSection2();
+   TDynamicTime date();
+   int      msgType();
+   int      msgSubtypeWMO();
+   int      msgSubtypeLocal();
+   int      msgSubtype();
+   int      origCentre();
+   int      origSubCentre();
+   int      masterTable();
+   int      masterTableVersion();
+   int 	    localTableVersion();
+};
+
+class Section1_Ed4 : public Section1Base
+{
+ public:
+   Section1_Ed4( const unsigned char* octs ) : Section1Base( octs ){};
+   Section1_Ed4( const Section1Base* aSec1 ) : Section1Base( aSec1 ){};
+
+   bool     hasSection2();
+   TDynamicTime date();
+   int      msgType();
+   int      msgSubtypeWMO();
+   int      msgSubtypeLocal();
+   int      msgSubtype();
+   int      origCentre();
+   int      origSubCentre();
+   int      masterTable();
+   int      masterTableVersion();
+   int 	    localTableVersion();
+};
+
+typedef struct
+{
+   unsigned char len;      // : 24;
+   unsigned char len2;
+   unsigned char len3;
+   unsigned char reserved; // :  8;
+} TSection2;
+
+typedef struct
+{
+   unsigned char len;      // : 24;
+   unsigned char len2;
+   unsigned char len3;
+   unsigned char reserved;   //  8;
+   unsigned char subsetCnt;  // 16;
+   unsigned char subsetCnt2;
+   unsigned char bitField;   //  8;
+} TSection3;
+
+typedef struct
+{
+   unsigned char len;      // : 24;
+   unsigned char len2;
+   unsigned char len3;
+   unsigned char reserved; // :  8;
+} TSection4;
+// DOXYGEN_SHOULD_SKIP_THIS
+#endif
+
+//--------------------------------------------------------------- MvBufrBase
+
+class MvObsSet;
+
+//! Wrapper around Fortran 'bufren', base class for MvBufr and MvBufrOut
+/*! This class and its methods are a lower level wrapper around Fortran
+ *  subroutine 'bufren'. This class should be hidden from Metview applications
+ *  and the methods of this class should be called only from MvObs.
+ */
+class MvBufrBase
+{
+ friend class MvBufrOut;  //???
+ //friend class MvObsSet;
+
+ protected:
+	 int  _refCount;
+	long  fMessageNumber;
+
+        long *longptr;
+	char *fMessage;
+	long  fMessageLength;
+   TSection0 *fSec0;
+   Section1Base* Sec1;
+   TSection2 *fSec2;
+   unsigned char *fTotalSec2;
+   TSection3 *fSec3;
+   TSection4 *fSec4;
+
+     fortint  fKERR;
+     fortint *fKSUP;   // [ 9 ];
+     fortint *fKSEC0;  // [ 3 ];
+     fortint *fKSEC1;  // [ 40 ];
+     fortint *fKSEC2;  // [ 64 ];
+     fortint *fKSEC3;  // [ 4 ];
+     fortint *fKSEC4;  // [ 2 ];
+
+ protected:
+	    MvBufrBase( const long len );  //( char *msg, long len );
+	    virtual ~MvBufrBase( void );
+
+      void  attach( void );   // { _refCount++; }
+      void  detach( void );   // { if( --_refCount == 0 ) delete this; }
+      void  createFortranArrays( void );
+    void  createDataArrays( void );
+    void  deleteDataArrays( void );
+      unsigned int unsignedInt( const unsigned char* firstOctet
+                              , int octetCount );
+      int subsetCount(){ return unsignedInt( &(fSec3->subsetCnt), 2); }
+      int totalLen() { return unsignedInt( &(fSec0->totalLen), 3); }
+};
+
+//--------------------------------------------------------------- MvBufr
+
+//! C++ wrapper around Fortran 'bufren', used by MvObs
+/*! This class and its methods are a lower level wrapper around Fortran
+ *   subroutine 'bufren'. These methods should be called only via MvObs class.
+ */
+class MvBufr : public MvBufrBase
+{
+ friend class MvObs;
+ friend class MvObsSet;
+ friend class MvObsSetIterator;
+ friend class MvBufrConfidence;
+ friend class MvBufrOut;
+
+   static long  _bufrIn_ref;
+
+ protected:
+	    MvBufr( char *msg, long len, long aMessageNumber=0 );
+	    ~MvBufr( void );  //?? {} missing??
+
+      void  Decode( void );
+      void  Decode_012( void );
+      void  ExpandDescriptors( int subsetNumber );
+       int  descriptorToFortranIndex( const long aDescr, const int firstIndex = 0 );
+      long  currentBufrRef( void ) const { return _bufrIn_ref; };
+
+ EElementValueType  elementValueType( const int aSubsetNr );
+ EElementValueType  elementValueType( const long aDescriptor, const int aSubsetNr );
+ EElementValueType  elementValueTypeByIndex( const int anIndex, const int aSubsetNr );
+
+ bool  Value( const long aDescriptor
+		 , const long aSubsetNumber
+		 , fortfloat &aDataValue
+		 , int   firstIndex = 0 );
+     fortfloat  DataValue( const int aDescriptorArrayIndex
+		     , const long aSubsetNumber);
+     fortfloat  PeekDataValue( const int aDescriptorArrayIndex
+		         , const long aSubsetNumber);
+      long  intValue( const long aDescriptor, const int subsetNr );
+
+    double  feedbackValue( int col, int subset );
+    double  feedbackValue( int row, int col, int subset );
+    string   feedbackItemName( int row,int subset );
+    string   feedbackItemUnit( int row,int subset );
+
+  TDynamicTime  obsTime( const int subsetNr ); //- from msg body (section 4)
+  TDynamicTime  msgTime( void );               //- from msg header (section 1)
+
+    string  stringValue( const long aDescriptor, const int aSubsetNr );
+    string  stringValue( const int aSubsetNr );
+    string  stringValueByIndex( const int anIndex, const int aSubsetNr );
+
+    string  unit( const long aDescriptor );
+    string  unit( void );
+    string  unitByIndex( const int anIndex );
+
+    string  name( const long aDescriptor );
+    string  name( void );
+    string  nameByIndex( const int anIndex );
+
+   bool  SetFirstDescriptor( void );
+   bool  SetNextDescriptor( void );
+      long  CurrentDescriptor( void ){ return _currentDescr; }
+ fortfloat  CurrentValue( const int aSubsetNr ){ return DataValue( _currentDescrInd, aSubsetNr); }
+
+      bool  printSection(ostream &aStream,int which);
+      bool printSection_012( ostream& aStream,int which);
+      bool  writeBufrBox( int aSubsetNr );
+       int  fillBufrBox( int aSubsetNr );
+      bool  getBufrBoxSize( int& rows, int& cols, int aSubsetNr );
+
+      bool  getDataFromSection2(map<string,string> &data);
+      void  parseSection2(fortint *fKEY,map<string,string> &data);
+
+      void  setSubset( int subsetNumber ){ _lastKnownSubsetValue = subsetNumber; }
+
+ private:
+      void  computeIn_KELEM( void );
+
+ protected:
+  EBufrInState  _inState;
+	  long  _currentDescr;
+	  int   _currentDescrInd;
+	  int   _bufrBoxFilledSubset;
+	  fortint  _lastKnownSubsetValue; //-- Q&D trick, BUSEL2 requires
+};
+
+//--------------------------------------------------------------- MvBufrOut
+// A simple class capable of producing BUFR code only from 'MvObs'
+// objects i.e. usable in filtering applications which read a
+// BUFR file and write a new file with less messages...
+//---------------------------------------------------------------
+
+class MvObsSet;
+class MvObs;
+class MvBufrConfidence;
+
+const int MAX_KDLEN = 2000;  //-- big value needed for some NCEP PrepBUFR files
+
+//! Wrapper around Fortran 'bufren', for (re)encoding
+/*! This class and its methods are a lower level wrapper around Fortran
+ *  subroutine 'bufren'. These methods should be called only via MvObs class.
+ */
+class MvBufrOut : public MvBufrBase
+{
+ friend class MvObs;
+ friend class MvObsSet;
+ friend class MvObsSetIterator;
+
+ protected:
+	    MvBufrOut( const long len, MvObsSet* anOutSet );
+	    ~MvBufrOut( void );
+
+   static long  _bufrOut_ref;
+
+      void  createBuffers();
+      void  resetBuffers( void );
+      void  formatBuffers( const MvObs& anObs );
+      void  write( MvObs& anObs );
+      void  add( MvObs& anObs );
+      void  addIntoBuffers( MvObs& anObs );
+      void  encode( void );
+      void  checkDescriptors( const MvObs& anObs );
+       int  differentDescriptors( void ) const;
+       int  differentHeader( const MvObs& anObs ) const;
+       int  shouldBeWritten( void );
+      void  setSubsetCount( int MaxNrSubsets );
+   bool  isDelayedDescriptor( const long aDescriptor ) const;
+     // long  msgLength( void ) { return _msgIntLen*sizeof( fortint ); }
+
+ protected:
+       MvObsSet* _outSet;
+            int  _maxNrSubsets;
+	    int  _nextValue;
+	    int  _nextCharParamPos;
+  EBufrOutState  _outState;
+        fortint  _KDLEN;
+        fortint  _KDATA[ MAX_KDLEN ];
+   Section1Base* _currentSec1;
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+//--------------------------------------------------------------- MvBufrParam
+
+class MvBufrParam
+{
+ public:
+        MvBufrParam( const char *aParamName );
+        MvBufrParam( const long anIntAsDescriptor ) {fDescriptor = anIntAsDescriptor;}
+
+  long  Descriptor( void ) const { return fDescriptor; }
+  void  PrintAllKnownParameters( void ) const;
+
+  operator int ( void ) const { return fDescriptor; }
+
+ private:
+     long  fDescriptor;
+};
+// DOXYGEN_SHOULD_SKIP_THIS
+#endif
+
+#endif
+// MvBufr_DEFINED
diff --git a/src/eckit_readers/MvBufrObs.h b/src/eckit_readers/MvBufrObs.h
new file mode 100644
index 0000000..3e3307b
--- /dev/null
+++ b/src/eckit_readers/MvBufrObs.h
@@ -0,0 +1,599 @@
+/***************************** LICENSE START ***********************************
+
+ Copyright 2012 ECMWF and INPE. This software is distributed under the terms
+ of the Apache License version 2.0. In applying this license, ECMWF does not
+ waive the privileges and immunities granted to it by virtue of its status as
+ an Intergovernmental Organization or submit itself to any jurisdiction.
+
+ ***************************** LICENSE END *************************************/
+
+// MvObs.h,   vk july94
+//        rev vk 010724
+
+#ifndef MvBufrObs_DEFINED
+#define MvBufrObs_DEFINED
+
+#include <string>
+#include "inc_iostream.h"
+//#include <fstream.h>
+//#include <strstream.h>
+#include "MvBufr.h"
+#include "MvLocation.h"
+#include "fmettim.h"
+
+#ifdef METVIEW
+//#   include "Metview.h"
+#    include "MvDate.h"
+#    include "MvRequest.h"
+#endif
+
+//---------------------------------------------------
+// Function definitions for the FORTRAN BUFR routines
+//---------------------------------------------------
+
+#ifdef FORTRAN_NO_UNDERSCORE
+#define  BUS012   bus012
+#define  BUPRS0   buprs0
+#define  BUPRS1   buprs1
+#define  BUPRS2   buprs2
+#define  BUFREX   bufrex
+#define  BUFREN   bufren
+#define  BUSEL    busel
+#define  BUSEL2   busel2
+#define  BUUKEY   buukey
+#define  BUPRS3   buprs3
+#define  BUBOX    bubox
+#define  BUPRTBOX buprtbox
+#define  FT_OP6   ft_op6
+#define  FT_CLO   ft_clo
+#else
+#define  BUS012   bus012_
+#define  BUPRS0   buprs0_
+#define  BUPRS1   buprs1_
+#define  BUPRS2   buprs2_
+#define  BUFREX   bufrex_
+#define  BUFREN   bufren_
+#define  BUSEL    busel_
+#define  BUSEL2   busel2_
+#define  BUUKEY   buukey_
+#define  BUPRS3   buprs3_
+#define  BUBOX    bubox_
+#define  BUPRTBOX buprtbox_
+#define  FT_OP6   ft_op6_
+#define  FT_CLO   ft_clo_
+#endif
+
+//--------------------------------------------------------------- MvObs
+//! A class to handle one observation report stored in a BUFR message
+/*! This class is used to request data and metadata from a single
+ *  BUFR message (Observation Report). Access to BUFR messages in
+ *  files is done using classes MvObsSet and MvObsSetIterator. \n
+ *
+ * <B>Descriptors</B> \n
+ * Elements within the message body are referenced by BUFR descriptors.
+ * These descriptors are of the form 'ZXXYYY', where Z=0, XX defines
+ * an element class and YYY defines an element within a class.
+ * Descriptor values can be found in "BUFR, User Guide and Reference Manual"
+ * by Milan Dragosavac (ECMWF). \n
+ * A Word of Warning: leave out leading zeroes when writing constants
+ * (such as descriptors) into your code, unless you intend to use
+ * octal constants! \n
+ *
+ * <B>Current Descriptor</B> \n
+ * Some member functions need no descriptor, because they will use
+ * the internal Current Descriptor set by a previously called member
+ * function which had a descriptor parameter. \n
+ *
+ * <B>Missing Values</B> \n
+ * Functions returning values from the message will return const kBufrMissingValue
+ * if the requested value is not available. Another const, called
+ * kBufrMissingIntValue is used for missing integer values.
+ */
+class MvObs
+{
+ friend class MvBufrOut;
+ friend class MvObsSet;
+ friend class MvObsSetIterator;
+
+	void _copy( MvBufr* b );
+	void _copy( const MvObs& b );
+	void _clean();
+
+public:
+//! Constructor
+/*! Arguments are mainly used by MvObsSet and MvObsSetIterator.
+ *  Applications normally call this constructor without arguments.
+ */
+	MvObs( MvBufr* b = NULL, int i = 1 );
+
+//! Copy constructor
+	MvObs( const MvObs&  b );
+
+	~MvObs();
+
+//! Assignment operator
+	MvObs& operator= ( const MvObs& b );
+
+//! Operator to test the validity of a new MvObs
+/*! In this example operator void*() is used implicitly
+ *  in testing the validity of MvObs object returned by
+ *  MvObsSetIterator object:
+ * <PRE>
+ *      MvObsSet mySet("/path/to/my/file");
+ *      MvObsSetIterator myIter(mySet);
+ *      ...
+ *      while(myObs=myIter()) //-- void*() is called here
+ *      {
+ *         ... //-- do the stuff
+ *      }
+ * </PRE>
+ */
+    operator void*();
+
+//! Returns the number of subsets available in this BUFR message
+/*! Use method Advance() to get to the next subset (in a multisubset BUFR message).
+ */
+        int  msgSubsetCount(){ return _bufrIn->subsetCount(); }
+
+//! Returns the current subset number (in a multisubset BUFR message)
+        int  subsetNumber() const { return _subsetNr; }
+
+//! Advances to the next subset in a multisubset BUFR message
+/*! Returns 'false' if current subset is the last (or the only)
+ *  one. Returns 'true' on success.
+ */
+	bool   Advance();
+
+//! Checks whether this MvObs contains a BUFR message or is empty
+    bool  operator! ();
+
+//! Checks that this MvObs contains a valid decodable BUFR message
+    bool  msg_ok() const; // { return _bufr_id == _bufrIn->currentBufrId(); }
+
+    // ----  A P I   f u n c t i o n s :  ---- //
+
+    //-- APIs for requesting parameter values --//
+
+//! Returns the value of an element defined by 'aDescriptor'
+/*! Also sets Current Descriptor.
+ *  Missing value indicator is returned if the observation report
+ *  does not contain elements of type 'aDescriptor', or if the element
+ *  does not have value.
+ */
+      float  value( long aDescriptor );
+
+//! Returns the value of an element defined by 'aDescriptor' as 'long'
+/*! Also sets Current Descriptor.
+ */
+       long  intValue( long aDescriptor );
+
+//! Returns the value of an element defined by 'aDescriptor' as 'string'
+/*! Also sets Current Descriptor.
+ */
+      string stringValue( long aDescriptor );
+
+//! Returns the value of Current Descriptor as a string
+      string stringValue();
+
+//! Returns the value of the next element with the same descriptor
+/*! Uses Current Descriptor to start looking for the next occurrence
+ *  of the same descriptor later in the message.
+ *  Updates Current Descriptor.
+ *  Returns 'kFortranBufrMissingValue' if no such element is found
+ *  or if such an element has no value.
+ */
+      float  nextValue();
+
+//! Returns the value corresponding to the 'n'th occurrence of descriptor 'descr'
+/*! Method searches the current subset from the beginning looking
+ *  for descriptors 'descr'. If BUFR message contains 'n' (or more)
+ *  occurrences of descriptor 'descr', the corresponding data value
+ *  is returned, otherwise 'kFortranBufrMissingValue' is returned.
+ */
+      float  valueByOccurrence( int n, long descr );
+
+//! Index access operator returns the 'n'th data value
+/*! This operator treats BUFR message as an array (as 'bufrdc' does)
+ *  and returns the value of the 'n'th element as 'double'.
+ *  Index 'n' starts from '1', i.e. n=1,2,3,...
+ */
+     double  operator[] ( int n );  //-- n starts from 1: 1,2,...,n
+
+//! Returns the value from the 'col'th feedback column for Current Descriptor
+/*! Uses 'bufrdc' subroutine 'BUBOX()' to arrange feedback values into
+ *  a two dimensional array. Argument 'col' refers to a column in this array.
+ */
+     double  feedbackValue( int col ){ return _bufrIn->feedbackValue( col, _subsetNr ); }
+
+//! Returns the value of the 'row'th element in the 'col'th feedback column
+/*! Uses 'bufrdc' subroutine 'BUBOX()' to arrange feedback values into
+ *  a two dimensional array. Arguments 'row' and 'col' are indices into
+ *  this array.
+ */
+     double  feedbackValue( int row, int col ){ return _bufrIn->feedbackValue( row, col, _subsetNr ); }
+
+     string  feedbackItemName( int row){ return _bufrIn->feedbackItemName( row, _subsetNr ); }
+     string  feedbackItemUnit( int row){ return _bufrIn->feedbackItemUnit( row, _subsetNr ); }
+
+    //-- APIs for requesting parameter metadata --//
+
+//! Returns the name of the data referenced by 'aDescriptor' (from BUFR Table B)
+     string  name( long aDescriptor );
+
+//! Returns the name of the data referenced by Current Descriptor
+     string  name();
+
+//! Returns the unit of the data referenced by 'aDescriptor' (from BUFR Table B)
+     string  unit( long aDescriptor );
+
+//! Returns the unit of the data referenced by Current Descriptor
+     string  unit();
+
+    //-- APIs for iterating through all parameters --//
+
+//! Sets the first expanded descriptor in the message as Current Descriptor
+/*! In case of decoding problems, returns 'false'.
+ */
+       bool  setFirstDescriptor(){ return _bufrIn->SetFirstDescriptor(); }
+
+//! Advances Current Descriptor to the next expanded descriptor in the message
+/*! Returns 'false' if message contains no more data (no more descriptors).
+ */
+       bool  setNextDescriptor(){ return _bufrIn->SetNextDescriptor(); }
+
+//! Returns the data value related to Current Descriptor
+      float  currentValue(){ return _bufrIn->CurrentValue( _subsetNr ); }
+
+//! Returns Current Descriptor
+       long  currentDescriptor(){ return _bufrIn->CurrentDescriptor(); }
+
+    //-- APIs for requesting parameter types --//
+
+//! Returns the type of data related to descriptor 'aDescriptor'
+ EElementValueType  elementValueType( long aDescriptor );
+
+//! Returns the type of data related to Current Descriptor
+ EElementValueType  elementValueType();
+
+    //-- APIs for requesting time and location data --//
+
+//! Returns the time from the observation report (from the data: BUFR section 4)
+        TDynamicTime  obsTime(){ return _bufrIn->obsTime( _subsetNr ); }
+
+//! Returns the time from the message metadata (from BUFR section 1)
+        TDynamicTime  msgTime(){ return _bufrIn->msgTime(); }
+
+//! Returns the location from the observation report (from the data: BUFR section 4)
+      MvLocation  location();
+
+    //-- APIs for message type, subtype, originating centre, etc --//
+
+//! Returns the Message Type code from BUFR section 1
+        int  messageType();
+
+//! Returns the locally defined Message Subtype code from BUFR section 1
+        int  messageSubtypeLocal();
+
+//! Returns the international Message Subtype code (WMO defined) from BUFR section 1
+/*! Note that this code is available only in BUFR Edition 4 messages. For Edition 3
+ *  messages a value of 255 is returned (255 corresponds to an octet with all bits '1').
+ */
+        int  messageSubtypeInternational();
+
+//! Returns either the local or the international message subtype
+/*! In BUFR Edition 3 only the local subtype was available.
+ *  In BUFR Edition 4 the WMO defined international subtype was
+ *  added. Local subtype was left for backwards compatibility.
+ *
+ *  For BUFR Edition 3 messages this function always returns the local subtype.
+ *
+ *  For later Editions this function returns the international subtype if
+ *  it has been set. If not set (has a value 255) then the local subtype
+ *  is returned
+ */
+        int  messageSubtype();
+
+//! Returns the Originating Centre code from BUFR section 1
+        int  originatingCentre();
+
+//! Returns the Originating Subcentre code from BUFR section 1
+        int  originatingSubCentre();
+
+//! Returns the Edition number from BUFR section 0
+        int editionNumber();
+
+//! Returns the Master Table code from BUFR section 1
+/*! Master Table 0 is for Meteorology, 10 is for Oceanography
+ */
+	int masterTable();
+
+//! Returns the Master Table version from BUFR section 1
+	int masterTableVersion();
+
+//! Returns the Local Table version from BUFR section 1
+	int localTableVersion();
+
+    //-- APIs for  --//
+//! Returns the total length of the message from BUFR section 0
+	int messageTotalLen();
+
+    //-- APIs for requesting weather station values --//
+//! Returns the 5 digit WMO station identifier
+/*! Looks for WMO block number 'BB' and station identifier 'SSS'
+ *  and returns the value of 'BBSSS' if found. Returns zero if
+ * 'BB' or 'SSS' is not found.
+ */
+       long  WmoIdentNumber();
+
+//! Returns the 2 digit WMO block identifier 'BB'
+/*! Returns zero if 'BB' not found.
+ */
+        int  WmoBlockNumber();
+
+//! Returns the 3 digit WMO station identifier 'SSS'
+/*! Returns zero if 'SSS' not found.
+ */
+        int  WmoStationNumber();
+
+//! Looks for an ident from the BUFR message
+/*! Looks for the following message identifiers: \n
+ *  - WMO Station Identifier 'BBSSS' \n
+ *  - Ship or mobile land station identifier (001011) \n
+ *  - Buoy/platform identifier (001005) \n
+ *  - Aircraft flight number (001006) \n
+ *  - Satellite identifier (001007) \n
+ *  - Aircraft registration number (001008) \n
+ *  - Stationary buoy platform identifier (001010) \n
+ *  - Storm identifier (001025)
+ *  - WMO storm name (001026)
+ *  - WMO long storm name (001027)
+ *
+ *  and returns the first one found, as a string. If none
+ *  of the above is found, returns "id???".
+ */
+     string  findSomeIdent();
+
+    //-- APIs for accessing replicated parameters --//
+
+//! Returns the number of times level coordinator descriptor 'levelDescriptor' is found
+	int  numberOfLevels( long levelDescriptor );
+
+//! Returns the first value related to 'levelDescriptor', i.e. value of the first level
+      float  firstLevel( long levelDescriptor );
+
+//! Returns the value of the next level related to Current Level Descriptor
+      float  nextLevel();
+
+//! Returns the value of the specified data for the specified level
+/*! First looks for a data block related to level 'aLevel' as the
+ *  value of the data element related to level descriptor 'aLevelDescriptor',
+ *  and then looks for a data element related to descriptor 'aDescriptor'
+ *  within this level.
+ */
+      float  valueByLevel( long  aLevelDescriptor
+                         , float aLevel
+			 , long  aDescriptor );
+			 
+      float  valueByLevelRange( long  aLevelDescriptor
+                         , float firstLevel
+			 , float seconLevel	
+			 , long  aDescriptor );
+			 		 
+//! Returns the number of pressure levels found in the observation report
+/*! Pressure level descriptor is 007004, so this is an alias for member function
+ *  numberOfLevels(7004).
+ */
+	int  numberOfPressureLevels();
+
+//! Returns the value of the first pressure level in hPa
+/*! Original pressure values are stored in Pa, so this is
+ *  the same as 100.0*firstLevel(7004).
+ */
+      float  firstPressureLevel();
+
+//! Returns the value of the next pressure level in hPa
+/*! Original pressure values are stored in Pa, so this is
+ *  the same as 100.0*nextLevel(7004).
+ */
+      float  nextPressureLevel();
+
+//! Returns the value of the data corresponding to 'aDescriptor' on level 'aLevel'
+/*! Here 'aLevel' is given in hPa. Original pressure values are stored in Pa,
+ *  so this is the same as \n
+ * <PRE>
+ *      valueByLevel( 7004, 100.0*aLevel, aDescriptor )
+ * </PRE>
+ */
+      float  valueByPressureLevel( float aLevel, long aDescriptor );
+
+//! Returns the value of the data corresponding to 'aDescriptor' in a layer
+/*! Level values are for the top and the bottom pressure values of a layer
+ *  and they are given in hPa. \n \n
+ *  This method looks for two consecutive pressure coordinate descriptors
+ *  007004 with the given values (hPa is first converted to Pa). If such
+ *  a layer is found and the layer contains 'aDescriptor' then the corresponding
+ *  data value is returned, otherwise 'kBufrMissingValue' is returned.
+ */
+      float  valueByLayer( float firstLevel
+		         , float secondLevel
+		         , long aDescriptor );
+
+    //-- APIs for printing obs --//
+    // Section 0,1,2 and 3 just delegated to bufr class.
+
+//! Prints BUFR section 0 to output stream 'aStream'
+    bool  printSection0(ostream &aStream = cout)
+      { return _bufrIn->printSection_012(aStream,0); }
+
+//! Prints BUFR section 1 to output stream 'aStream'
+    bool  printSection1(ostream &aStream = cout)
+      { return _bufrIn->printSection_012(aStream,1); }
+
+//! Prints BUFR section 2 to output stream 'aStream'
+    bool  printSection2(ostream &aStream = cout)
+      { return _bufrIn->printSection_012(aStream,2); }
+
+//! Prints BUFR section 3 to output stream 'aStream'
+    bool  printSection3(ostream &aStream = cout)
+      { return _bufrIn->printSection(aStream,3); }
+
+//! Decode BUFR section 2 and place the result into an std::map
+    bool getDataFromSection2(map<string,string> &data)
+	{ return _bufrIn->getDataFromSection2(data); }
+
+//! Prints all data values into standard output
+/*! For output format see method 'writeAllValues' below
+ */
+    bool  printAllValues();
+
+//! Writes all data values into output stream 'aStream'
+/*! Writes the data, one data value per line. Each line consists of:
+ *  - index of the data
+ *  - data value
+ *  - name of the data
+ *  - unit of the data, in square brackets
+ *  - the corresponding BUFR descriptor, in parenthesis
+ *
+ *  Example output (an extract from a SYNOP report): \n
+ * <PRE>
+ *       1.      10 Wmo Block Number [NUMERIC] (01001)
+ *       2.     500 Wmo Station Number [NUMERIC] (01002)
+ *       3.       1 Type Of Station [CODE TABLE 002001] (02001)
+ *       4.    2007 Year [YEAR] (04001)
+ *       5.      11 Month [MONTH] (04002)
+ *       6.       6 Day [DAY] (04003)
+ *       7.      22 Hour [HOUR] (04004)
+ *       8.       0 Minute [MINUTE] (04005)
+ *       9.   50.97 Latitude (High Accuracy) [DEGREE] (05001)
+ *      10.    6.05 Longitude (High Accuracy) [DEGREE] (06001)
+ *      11.      98 Height Of Station [M] (07001)
+ *     ...
+ * </PRE>
+ */
+    bool  writeAllValues( ostream& aStream );
+
+//! Writes all data values into file 'aPathName'
+/*! For output format see the version of method 'writeAllValues' above
+ */
+    bool  writeAllValues( const char* aPathName );
+
+//! Calls 'bufren' routine BUPRTBOX to write feedback data into stream 'aStream'
+    bool  writeBufrBox( ostream& aStream = cout );
+
+    //-- APIs for accessing original section 1 and 2 headers --//
+
+//	const unsigned char*
+//	         section1Ptr(){ return (unsigned char*)(_bufrIn->Sec1->start()); }
+
+//! Returns 'true' if BUFR message contains local section 2, 'false' if not
+	bool     hasSection2(){ return _bufrIn->fSec2 != NULL; }
+
+//! Returns a pointer to the beginning of local section 2 in BUFR message
+/*! Returns 0 (NULL) if message has no local section 2
+ */
+	const unsigned char*
+	         section2Ptr(){ return _bufrIn->fTotalSec2; }
+
+    //-- APIs for accessing confidence values --//
+
+//! Checks whether the BUFR message contains confidence values or not
+/*! Returns 'true' if operator descriptor 222000 is found in the
+ *  message, otherwise 'false'.
+ */
+       bool  hasConfidences();
+
+//! Returns the confidence value for the current data, if exists
+/*! Otherwise returns -1.
+ */
+        int  confidence();
+
+//! Writes confidence values into stream 'aStream'
+       bool  writeConfidenceValues( ostream& aStream );
+
+ bool  getBufrBoxSize( int& rows, int& cols )
+                 { return _bufrIn->getBufrBoxSize( rows, cols, _subsetNr ); }
+
+     //-- Q&D: valueBySpecifier & specifierIndex made public
+     //--      so that ObsPicker can use them freely (vk/Jul)
+     double  valueBySpecifier( long   aSpecifierDescriptor
+			     , double aSpecifierValue
+		             , long   aDescriptor
+			     , int   firstIndexValue = 0 );
+     int     specifierIndex( long   aSpecifierDescriptor
+		           , double aSpecifierValue
+		           , int    firstIndexValue = 0 );
+
+#ifdef METVIEW
+//! Decodes OPERA BUFR radar data into unsigned char array
+   unsigned char* OperaRadarImage( /* <aki> add arguments? */ );
+//! Retrieves metadata for OPERA radar image
+   bool  OperaRadarMetadata( /* <aki> add arguments? */ );
+#endif
+
+ private:
+ //protected:
+    float  pressureLevel( int firstIndexValue );
+    float  level( long levelDescriptor, int firstIndexValue );
+    bool writeValues(ostream &aStream,int first, int last);
+
+ private:
+        int  subsetOffset() const;
+
+	const unsigned char*
+	         section1Ptr(){ return (unsigned char*)(_bufrIn->Sec1->start()); }
+
+ protected:
+ 	int     _subsetNr;
+	MvBufr* _bufrIn;
+	long    _bufr_id;
+ 	int     _lastSpecifierIndex; //required???? used by who?????
+	long    _currentLevelCoordinate;
+	int     _currentLevelIndex;
+	MvBufrConfidence* _confidence;
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+//--------------------------------------------------------------- MvBufrConfidence
+// Q&D hack for QC Feed Back using descr operator 222000; vk Apr-95
+
+//! \enum ESelectFilterState Used internally by MvBufrConfidence
+enum EBufrConfState
+{
+   kBCS_unknown
+  ,kBCS_missing
+  ,kBCS_exists
+};
+
+//------------------------------------------------------------------------------
+//! Auxiliary class to handle quality control feedback
+/*! Warning: This is Q&C ("quick&dirty") hack to access
+ *  QC FB data behind operator descriptor 222000.
+ */
+class MvBufrConfidence
+{
+ public:
+          MvBufrConfidence( MvBufr* aBufr, int aSubsetNr );
+          ~MvBufrConfidence();
+
+      bool  hasConfidences();
+       int  confidence( long aDescriptor );
+       int  confidenceByIndex( int anIndex );
+       int  lastDataIndex();
+
+ protected:
+       int  startOfDataPresent();
+       int  startOfConfidences();
+       int  delta( int anIndex );
+
+ private:
+   MvBufr*  _bufr;
+   int      _subsetNr;
+   int      _startOfDataPresent;
+   int      _startOfConfidences;
+   EBufrConfState _state;
+};
+#endif
+
+
+#endif
+// MvBufrObs_DEFINED
diff --git a/src/MvObs/MvLocation.cc b/src/eckit_readers/MvLocation.cc
similarity index 100%
rename from src/MvObs/MvLocation.cc
rename to src/eckit_readers/MvLocation.cc
diff --git a/src/MvObs/MvLocation.h b/src/eckit_readers/MvLocation.h
similarity index 100%
rename from src/MvObs/MvLocation.h
rename to src/eckit_readers/MvLocation.h
diff --git a/src/eckit_readers/MvObs.cc b/src/eckit_readers/MvObs.cc
new file mode 100644
index 0000000..d9783f5
--- /dev/null
+++ b/src/eckit_readers/MvObs.cc
@@ -0,0 +1,3297 @@
+/***************************** LICENSE START ***********************************
+
+ Copyright 2012 ECMWF and INPE. This software is distributed under the terms
+ of the Apache License version 2.0. In applying this license, ECMWF does not
+ waive the privileges and immunities granted to it by virtue of its status as
+ an Intergovernmental Organization or submit itself to any jurisdiction.
+
+ ***************************** LICENSE END *************************************/
+
+// MvObs.cc,     vk 940818...
+//           rev vk 980501
+
+//--------------------------------------------------------------------
+//  A class to hide the complexities of BUFR routines written in
+//  FORTRAN.  'MvObs' tries to wrap these routines into a nicer C++
+//  interface and hide the required data structures.
+//  Headers for the FORTRAN functions are defined in the file 'MvBufr.h'
+//--------------------------------------------------------------------
+//    FORTRAN routines and required data structures are described in:
+//
+//    "Decoding Data Represented in FM 94 BUFR"
+//         by J.K.Gibson and M.Dragosavac
+//
+//             published as PAPER 4 in
+//
+//    "BINARY
+//     UNIVERSAL FORM FOR
+//     DATA REPRESENTATION
+//     ----------------------------------
+//     FM 94 BUFR
+//     Collected papers and specification"
+//
+//            ECMWF February 1988.
+//
+//  and in:
+//
+//     "BUFR User Guide and Reference Manual"
+//         by Milan Dragosavac
+//     European Centre for Medium-Range Weather Forecasts
+//         preprint  12 October 1994
+//--------------------------------------------------------------------
+
+#include "inc_iostream.h"
+#include <sstream>  //-- requires new templated standard io headers!
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <assert.h>
+//F #include "Metview.h"
+#include "MvObs.h"
+#include "MvObsSet.h"
+
+#include <map>
+
+#ifdef METVIEW
+#  include "MvException.h"
+#else
+#  include <exception>
+#endif
+
+// Static int used to duplicate stdout and get it back.
+static int new_fd = -1;
+
+const int MAX_BUBOX_KELEM_LIMIT  = MAX_KELEM;
+
+static string MESSED_UP("[messed messages!]");
+
+static string BBOXNAME("prtbbox.txt"); //for BUPRTBOX output.
+static string redirect_dir(""); // For tmp files from print.
+
+//--------------------------------------------------------
+// Fortran routines expect previous values to be remained
+// (at least in some of the arrays) if new msg has same
+// descriptors as previous msg !!!
+// Thus static arrays, common to all bufr-objects...
+// Added lazy evaluation 980501/vk...
+//--------------------------------------------------------
+static char* In_CNAMES = 0;  //static char In_CNAMES[ MAX_KELEM ][ 64 ]; //- is not updated if same descriptors
+static char* In_CUNITS = 0;  //static char In_CUNITS[ MAX_KELEM ][ 24 ]; //- is not updated if same descriptors
+static char* In_CVALS  = 0;  //static char In_CVALS [ MAX_KVALS ][ 80 ]; //+ rest of the arrays always updated
+static char* Out_CVALS = 0;  //static char Out_CVALS [ MAX_KVALS ][ 80 ];
+
+static fortfloat* In_VALUES = 0;  //static fortfloat  In_VALUES[ MAX_KVALS ];
+static fortfloat* Out_VALUES = 0; //static fortfloat Out_VALUES[ MAX_KVALS ];
+
+static fortint  In_KELEM;
+static fortint  In_KVALS;
+static fortint  Out_KELEM = -1;
+	                                // for BUSEL
+static fortint  In_KTDEXL;
+static fortint* In_KTDEXP = 0;  //static fortint  In_KTDEXP[ MAX_KELEM ];
+static fortint  In_KTDLEN;
+static fortint* In_KTDLST = 0;  //static fortint  In_KTDLST[ MAX_KELEM ];
+static fortint  Out_KTDEXL;
+static fortint* Out_KTDEXP = 0; //static fortint Out_KTDEXP[ MAX_KELEM ];
+static fortint  Out_KTDLEN;
+static fortint* Out_KTDLST = 0; //static fortint Out_KTDLST[ MAX_KELEM ];
+
+static int arraySizeIndex = 0; // incremented each time we try to allocate a new size of arrays
+static int kVals;
+
+long MvBufr::_bufrIn_ref = 0;
+long MvBufrOut::_bufrOut_ref = 0; //not yet implemented...
+
+
+//-- Linux/g++ does not like hardcoded big? arrays (works ok in debugger,
+//-- but crashes inside Metview...) => create arrays dynamically, once!
+//-- These are for BUFR-BOX routines (accessing Feedback info)
+
+static fortint    myKSUB, myKBOX, myKAPP, myKLEN, myKERR;
+static fortint*   myKBOXR = 0;
+static fortfloat* myVALS  = 0;
+static char*      myCBOXN = 0;
+static char*      myCBOXU = 0;
+
+
+const long cPressureCoordinate = 7004L;  // pressure vertical coord. descriptor value
+
+//--------------------------------------------------------
+//  Descriptor mnemonics for class 'MvBufrParam'
+//--------------------------------------------------------
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+typedef struct
+{
+   const char *name;
+   long        descriptor;
+} descriptorStruct;
+
+static descriptorStruct knownParams[] =
+{
+   {"z", 10003}, {"p", 10004},
+   {"ddd", 11001}, {"ff", 11002}, {"u", 11003}, {"v", 11004}, {"w", 11006},
+   {"T", 12001}, {"Td",12003}, {"T(2m)",12004}, {"Td(2m)",12006},
+   {"END",0}
+};
+#endif
+
+//--------------------------------------------------------
+//  Function definitions for the FORTRAN & C BUFR routines
+//--------------------------------------------------------
+
+extern "C" {
+
+ void
+ BUS012( fortint *KBUFL, fortint *KBUFF, fortint *KSUP
+       , fortint *KSEC0, fortint *KSEC1, fortint *KSEC2, fortint *KERR );
+
+ void
+ BUPRS0( fortint *KSEC0 );
+ void
+ BUPRS1( fortint *KSEC1 );
+ void
+ BUPRS2( fortint *KSUP, fortint *KEY);
+
+ void
+ BUFREX( fortint *KBUFL, fortint *KBUFF, fortint *KSUP
+       , fortint *KSEC0, fortint *KSEC1, fortint *KSEC2, fortint *KSEC3, fortint *KSEC4
+       , fortint *KELEM, char *CNAMES,     char *CUNITS
+       , fortint *KVALS, fortfloat *VALUES,  char *CVALS, fortint *KERR );
+
+ void
+ BUFREN( fortint *KSEC0, fortint *KSEC1, fortint *KSEC2, fortint *KSEC3, fortint *KSEC4
+       , fortint *KTDLEN,fortint *KTDLST,fortint *KDLEN, fortint *KDATA
+       , fortint *KELEM, fortint *KVALS, fortfloat *VALUES, char *CVALS
+       , fortint *KBUFL, fortint *KBUFF, fortint *KERR );
+
+ void
+ BUSEL( fortint *KTDLEN, fortint *KTDLST, fortint *KTDEXL, fortint *KTDEXP, fortint *KERR );
+
+ void
+ BUSEL2( fortint *KSUBSET,fortint *KELEM,fortint *KTDLEN,fortint *KTDLST
+       , fortint *KTDEXL, fortint *KTDEXP, char *CUNITSCNAMES, char *CUNITSCUNITS
+       , fortint *KERR);
+
+ void
+ BUUKEY(fortint *KSEC1, fortint *KSEC2, fortint *KEY, fortint *KSUP,fortint *KERR);
+ void
+ BUPRS3( fortint *KSEC3, fortint *KTDLEN, fortint *KTDLST
+       , fortint *KTDEXL, fortint *KTDEXP, fortint *KELEM, char *CNAMES );
+
+ void
+ BUBOX( fortint *KSUB,   fortint *KSUP,      fortint *KELEM
+      , fortint *KWTR,   char *CNAMES, char *CUNITS
+      , fortint *KVALS,  fortfloat *VALUES,  fortint *KBOX
+      , fortint *KAPP,   fortint *KLEN,      fortint *KBOXR
+      , fortfloat *VALS, char* CBOXN,        char* CBOXU
+      , fortint *KERR );
+
+  void
+  BUPRTBOX( fortint *KBOX,   fortint *KAPP,   fortint *KLEN
+          , fortint *KBOXR,  fortfloat *VALS, char* CBOXN
+          , char* CBOXU );
+
+ // Helper functions
+ bool redirect_6(const char *);  //-- Trick to redirect Fortran unit 6.
+ bool reconnect_6();
+ bool file_to_stream(const char *,ostream&,int skip);
+ void delete_print_file(const char *);
+ void eraseWhiteSpaceFromStringEnd(string &str);
+ int CIND(int i) { return i-1;}
+}
+
+static string intToString(int);
+static string floatToString(float);
+static void keyToStringMap(map<string,string> &,string,fortint *,int);
+static void keyToStringMap(map<string,string> &,string,float);
+
+//______________________________________________________________________
+
+Section1Base::Section1Base( const unsigned char* octs )
+{
+   int slen = 65536*octs[0] + 256*octs[1] + octs[2];
+   octets_ = new unsigned char[slen];
+   memcpy( octets_, octs, slen );
+}
+
+Section1Base::Section1Base( const Section1Base* aSec1 )
+{
+   octets_ = new unsigned char[ aSec1->len() ];
+   memcpy( octets_, aSec1->start(), aSec1->len() );
+}
+
+bool
+Section1Base::isDifferent( const Section1Base* aSec1 ) const
+{
+   if( len() != aSec1->len() )
+      return true;
+
+   for( int i=0; i<len(); ++i )
+      if( octets_[i] != aSec1->octets_[i] )
+         return true;
+
+   return false;
+}
+
+bool
+Section1_preEd4::hasSection2()
+{
+   return octets_[7] > 127;   //-- octet 8
+}
+bool
+Section1_Ed4::hasSection2()
+{
+   return octets_[9] > 127;   //-- octet 10
+}
+
+TDynamicTime
+Section1_preEd4::date()
+{
+   //-- octet 13=year, 14=month, etc.
+   return TDynamicTime( octets_[12], octets_[13], octets_[14], octets_[15], octets_[16] );
+}
+TDynamicTime
+Section1_Ed4::date()
+{
+   //-- octet 13=year, 14=month, etc.
+   return TDynamicTime( 256*octets_[15]+octets_[16], octets_[17], octets_[18]
+                  , octets_[19], octets_[20], octets_[21] );
+}
+
+int
+Section1_preEd4::msgType()
+{
+   return octets_[8];         //-- octet 9 in ed.3
+}
+int
+Section1_Ed4::msgType()
+{
+   return octets_[10];         //-- octet 11 in ed.4
+}
+
+int
+Section1_preEd4::msgSubtypeWMO()
+{
+   return cOctetMissingIndicator; //-- not available in ed.3
+}
+int
+Section1_Ed4::msgSubtypeWMO()
+{
+   return octets_[11];         //-- octet 12 in ed.4
+}
+
+int
+Section1_preEd4::msgSubtypeLocal()
+{
+   return octets_[9];         //-- octet 10 in ed.3
+}
+int
+Section1_Ed4::msgSubtypeLocal()
+{
+   return octets_[12];         //-- octet 13 in ed.4
+}
+
+int
+Section1_preEd4::msgSubtype()
+{
+   return msgSubtypeLocal();  //-- only local available in ed.3
+}
+int
+Section1_Ed4::msgSubtype()
+{
+   //-- WMO subtype is the preferred one
+   return msgSubtypeWMO() != cOctetMissingIndicator ? msgSubtypeWMO() : msgSubtypeLocal();
+}
+
+int
+Section1_preEd4::origCentre()
+{
+  return octets_[5]; //-- octet 6
+}
+int
+Section1_Ed4::origCentre()
+{
+   return 256*octets_[4] + octets_[5]; //-- octets 5 and 6
+}
+
+int
+Section1_preEd4::origSubCentre()
+{
+  return octets_[4]; //-- octet 5
+}
+int
+Section1_Ed4::origSubCentre()
+{
+   return 256*octets_[6] + octets_[7]; //-- octets 7 and 8
+}
+
+int
+Section1_preEd4::masterTable()
+{
+   return octets_[3];         //-- octet 4
+}
+int
+Section1_Ed4::masterTable()
+{
+   return octets_[3]; //-- octet 4
+}
+
+int
+Section1_preEd4::masterTableVersion()
+{
+   return octets_[10];         //-- octet 11
+}
+int
+Section1_Ed4::masterTableVersion()
+{
+   return octets_[13]; //-- octet 14
+}
+
+int
+Section1_preEd4::localTableVersion()
+{
+   return octets_[11];         //-- octet 12
+}
+int
+Section1_Ed4::localTableVersion()
+{
+   return octets_[14]; //-- octet 15
+}
+
+
+
+//====================================================================== MvBufrBase
+//______________________________________________________________________
+
+MvBufrBase :: MvBufrBase( const long len ) : Sec1(NULL),fSec2(NULL),fTotalSec2(NULL),fSec3(NULL),fSec4(NULL)
+{
+  _refCount = 0;
+
+  // Make sure the data is correctly aligned.
+  longptr = new long[(len/sizeof(long)) + 1];
+  fMessage = (char *)longptr;
+  //fMessage = new char[ len  + 8 ];    // +8 for an extra "safety word"
+  fMessageLength = len;
+
+  fKSUP  = NULL;
+  fKSEC0 = NULL;
+  fKSEC1 = NULL;
+  fKSEC2 = NULL;
+  fKSEC3 = NULL;
+  fKSEC4 = NULL;
+
+      //-- lazy evaluation: create static arrays when first needed --
+  createDataArrays ();
+    }
+//___________________________________________________________
+
+MvBufrBase :: ~MvBufrBase( void )
+{
+//  delete [] fMessage;
+  delete [] longptr;
+
+  if( fSec2 )
+  {
+    delete fSec2;
+    delete [] fTotalSec2;
+  }
+  delete fSec3;
+  delete fSec4;
+
+  fSec2 = 0;
+  fSec3 = 0;
+  fSec4 = 0;
+  fTotalSec2 = 0;
+
+  if( fKSUP ) delete [] fKSUP;
+  if( fKSEC0 ) delete [] fKSEC0;
+  if( fKSEC1 ) delete [] fKSEC1;
+  if( fKSEC2 ) delete [] fKSEC2;
+  if( fKSEC3 ) delete [] fKSEC3;
+  if( fKSEC4 ) delete [] fKSEC4;
+
+  fKSUP = fKSEC0 = fKSEC1 = fKSEC2 = fKSEC3 = fKSEC4 = 0;
+}
+//___________________________________________________________
+void
+MvBufrBase :: attach( void )
+{
+   _refCount++;
+}
+void
+MvBufrBase :: detach( void )
+{
+   if( --_refCount == 0 )
+     delete this;
+}
+//_________________________________________________________ createFortranArrays
+void
+MvBufrBase :: createFortranArrays( void )
+{
+  fKSUP  = new fortint[  9 ];
+  fKSEC0 = new fortint[  3 ];
+  fKSEC1 = new fortint[ 40 ];
+  fKSEC2 = new fortint[ 4096 ]; //[ 128 ]; //[ 64 ];
+  fKSEC3 = new fortint[  4 ];
+  fKSEC4 = new fortint[  2 ];
+}
+//_________________________________________________________ createDataArrays
+void
+MvBufrBase :: createDataArrays( void )
+{
+    kVals    = aMAX_KVALS[arraySizeIndex];
+    In_KVALS = kVals;
+
+    try
+    {
+        if( In_VALUES == 0 )
+            In_VALUES = new fortfloat[ kVals ];
+
+        if( In_CVALS == 0 )
+            In_CVALS = new char[ kVals * 80 ];
+
+        if( In_CNAMES == 0 )
+            In_CNAMES = new char[ MAX_KELEM * 64 ];
+
+        if( In_CUNITS == 0 )
+            In_CUNITS = new char [ MAX_KELEM * 24 ];
+
+        if( In_KTDEXP == 0 )
+            In_KTDEXP = new fortint[ MAX_KELEM ];
+
+        if( In_KTDLST == 0 )
+            In_KTDLST = new fortint[ MAX_KELEM ];
+    }
+
+    catch(...)
+    {
+        deleteDataArrays ();
+
+#ifdef METVIEW
+        marslog( LOG_EROR, "MvBufrBase::MvBufrBase: out-of-memory!" );
+        throw MvException( "MvBufrBase::MvBufrBase: out-of-memory!" );
+#else
+        cerr << ">>>> MvBufrBase::MvBufrBase: out-of-memory => throw an exception <<<<" << endl;
+        throw std::bad_alloc();
+#endif
+    }
+}
+//_________________________________________________________ createDataArrays
+void
+MvBufrBase :: deleteDataArrays( void )
+{
+    if( In_VALUES != 0 )
+    {
+        delete [] In_VALUES; In_VALUES = 0;
+    }
+
+    if( In_CVALS != 0 )
+    {
+        delete [] In_CVALS;  In_CVALS  = 0;
+    }
+
+    if( In_CNAMES != 0 )
+    {
+        delete [] In_CNAMES; In_CNAMES = 0;
+    }
+
+    if( In_CUNITS != 0 )
+    {
+        delete [] In_CUNITS; In_CUNITS = 0;
+    }
+
+    if( In_KTDEXP != 0 )
+    {
+        delete [] In_KTDEXP; In_KTDEXP = 0;
+    }
+
+    if( In_KTDLST != 0 )
+    {
+        delete [] In_KTDLST; In_KTDLST = 0;
+    }
+}
+//___________________________________________________________
+unsigned int
+MvBufrBase :: unsignedInt( const unsigned char* firstOctet
+                         , int octetCount )
+{
+  unsigned int value = *firstOctet;
+  const unsigned char* anOctet = ++firstOctet;
+  for( int i=octetCount-1; i; --i )
+  {
+    value = 256*value + *anOctet++;
+  }
+  return value;
+}
+
+//______________________________________________________________________
+//====================================================================== MvBufr
+//______________________________________________________________________
+
+//______________________________________________________________________
+
+MvBufr :: MvBufr( char *msg, long len, long aMessageNumber )
+    : MvBufrBase( len )   //( msg, len )
+{
+  _lastKnownSubsetValue = 1; //-- Q&D
+
+  memcpy( fMessage, msg, (int)len );
+
+  const unsigned char* msgStart = (const unsigned char*)fMessage;
+
+  fSec0 = (TSection0 *)fMessage;
+  int offSet = fSec0->editionNr < 2 ? 4 : 8;
+                        // Section 0 was shorter in BUFR editions 0 and 1 !!!!
+                        //                                  rev vk 950802
+  if( fSec0->editionNr > 3 )
+    Sec1 = new Section1_Ed4( msgStart + offSet );
+  else
+    Sec1 = new Section1_preEd4( msgStart + offSet );
+  offSet += Sec1->len();
+
+  if( Sec1->hasSection2() )         // bit 0 <=> Optional Section 2 present?
+  {
+    fSec2 = new TSection2;
+    memcpy( (char *)fSec2, msgStart + offSet, sizeof(TSection2)  );
+
+    int sec2Len = unsignedInt( &(fSec2->len), 3 );
+    fTotalSec2 = new unsigned char[ sec2Len ];
+    memcpy( (char *)fTotalSec2, msgStart + offSet, sec2Len );
+
+    offSet += sec2Len;
+  }
+  else
+  {
+    fSec2 = NULL;
+    fTotalSec2 = NULL;
+  }
+
+  fSec3 = new TSection3;
+  memcpy( (char *)fSec3, msgStart + offSet, sizeof(TSection3)  );
+  offSet += unsignedInt( &(fSec3->len), 3 );
+
+  fSec4 = new TSection4;
+  memcpy( (char *)fSec4, msgStart + offSet, sizeof(TSection4)  );
+  offSet += unsignedInt( &(fSec4->len), 3 );
+
+  computeIn_KELEM ();
+
+  fMessageNumber = aMessageNumber;
+  _currentDescr = 0;
+  _currentDescrInd = -1;
+  _inState = kBufrIn_Coded;
+  _bufrIn_ref++;
+  _bufrBoxFilledSubset = 0;
+}
+//______________________________________________________________________
+
+MvBufr :: ~MvBufr( void ) { }
+
+//____________________________________________________________________ Decode
+void
+MvBufr :: Decode( void )
+{
+   if( _inState == kBufrIn_Error )
+      return;
+
+   if( _inState < kBufrIn_DataDecoded )
+   {
+      createFortranArrays();
+      fortint myKBUFL = fMessageLength / sizeof(fortint) + 1;  // +1 = Q&D
+        bool keepGoing = true;
+
+        // we will try to decode the BUFR a number of times, starting with
+        // relatively small data arrays, then building up to larger ones
+        // (so that we don't waste too much memory)
+
+        while (keepGoing)
+        {
+            keepGoing = false;
+
+      BUFREX(&myKBUFL
+	    , (fortint *)fMessage  // buffer for the BUFR message
+	    , fKSUP          // array for suplementary info
+	    , fKSEC0         // FORTRANized section 0
+	    , fKSEC1         // FORTRANized section 1
+	    , fKSEC2         // FORTRANized section 2 (site dependent)
+	    , fKSEC3         // FORTRANized section 3 (data descriptors)
+	    , fKSEC4         // FORTRANized section 4 (data values)
+	    ,&In_KELEM
+	    , In_CNAMES
+	    , In_CUNITS
+	    ,&In_KVALS
+	    , In_VALUES
+	    , In_CVALS
+	    ,&fKERR );
+
+
+            // if KELEM is not big enough, then we will
+            // try again with a bigger value
+
+            if( fKERR == 25 || fKERR == 14)
+            {
+                cout << "MvBufr :: Decode - kVals of " << kVals << " and In_KELEM of " << In_KELEM
+                     << " is not large enough." << endl;
+
+                if (++arraySizeIndex < NUM_MAX_KVALS)
+                {
+                    cout << "Trying kVals of " << aMAX_KVALS[arraySizeIndex] <<
+                         " (" << (aMAX_KVALS[arraySizeIndex] * 80) / (1024*1024) << "MB)" << endl;
+
+                    deleteDataArrays ();
+                    createDataArrays ();
+                    computeIn_KELEM ();
+
+                    keepGoing = true;
+                }
+                else
+                    arraySizeIndex = NUM_MAX_KVALS - 1; // should not be used, but just in case,
+                                                        // make sure the index is not out of bounds...
+            }
+        }
+
+
+      if( fKERR )
+      {
+	 cerr << "In_KELEM " << In_KELEM << " kvals " << In_KVALS << endl;
+	 cerr << " >>> MvBufr::Decode, bufrmsg " << fMessageNumber
+	      << ": fKERR = " << fKERR << endl;
+
+
+#ifdef METVIEW
+	 marslog(LOG_EROR, "BUFR decoding (BUFREX) failed, status = %d", fKERR );
+	 stringstream sst;
+	 sst << "Unable to decode BUFR message \nBUFR decoding (BUFREX) failed, status =" << fKERR;
+	 throw MvException(sst.str().c_str());
+
+#endif
+	 _inState = kBufrIn_Error;
+	 return;
+      }
+
+      _inState = kBufrIn_DataDecoded;
+   }
+}
+
+//____________________________________________________________________ Decode
+void
+MvBufr :: Decode_012( void )
+{
+   if( _inState == kBufrIn_Error )
+      return;
+
+   if( _inState < kBufrIn_Sections012Expanded)
+   {
+      createFortranArrays();
+      fortint myKBUFL = fMessageLength / sizeof(fortint) + 1;  // +1 = Q&D
+
+      BUS012(&myKBUFL
+	    , (fortint *)fMessage  // buffer for the BUFR message
+	    , fKSUP          // array for suplementary info
+	    , fKSEC0         // FORTRANized section 0
+	    , fKSEC1         // FORTRANized section 1
+	    , fKSEC2         // FORTRANized section 2 (site dependent)
+	    ,&fKERR );
+
+
+
+      if( fKERR )
+      {
+
+	 cerr << " >>> MvBufr::Decode_012, bufrmsg " << fMessageNumber
+	      << ": fKERR = " << fKERR << endl;
+
+#ifdef METVIEW
+	 marslog( LOG_EROR, "BUFR decoding (BUFREX) failed, status = %d", fKERR );
+	 stringstream sst;
+	 sst << "Unable to decode BUFR message \nBUFR decoding (BUFREX) failed, status =" << fKERR;
+	 throw MvException(sst.str().c_str());
+#endif
+	 _inState = kBufrIn_Error;
+	 return;
+      }
+
+      _inState = kBufrIn_Sections012Expanded;
+   }
+}
+
+//___________________________________________________________________ ExpandDescriptors
+void
+MvBufr :: ExpandDescriptors( int subsetNumber )
+{
+  static int mySubsetSavedValue = 0;
+
+   _lastKnownSubsetValue = subsetNumber;
+
+   if( _inState == kBufrIn_Error )
+      return;
+
+//   In_KTDLEN = -1;
+//   In_KTDEXL = -1;
+   fKERR     =  0;
+
+   if( _inState < kBufrIn_DataDecoded )
+      Decode();
+
+   if( ( fKSEC3[3-1] > 1  &&                           //-- if several subsets
+        _lastKnownSubsetValue != mySubsetSavedValue )  //-- AND subset number changed
+                      ||                               //-- OR
+        _inState == kBufrIn_DataDecoded  )             //-- descriptors not yet expanded
+   {
+//cout << "-----> MvBufr::ExpandDescriptors(" << _lastKnownSubsetValue << ") => BUSEL2..." << endl;
+//      CALL BUSEL2(KSUBSET,KELEM,KTDLEN,KTDLST,KTDEXL,KTDEXP,CNAMES,CUNITS,KERR)
+         BUSEL2( &_lastKnownSubsetValue  //-- Q&D variable...
+               , &In_KELEM
+               , &In_KTDLEN      // nr of original data descriptors in Section 3
+               ,  In_KTDLST      // original descriptors
+               , &In_KTDEXL      // nr of expanded data descriptors
+               ,  In_KTDEXP      // expanded descriptors
+               ,  In_CNAMES
+               ,  In_CUNITS
+               , &fKERR
+               );
+
+         mySubsetSavedValue = _lastKnownSubsetValue;
+   }
+   else
+   {
+      if( _inState == kBufrIn_DataDecoded )
+      {
+//cout << "-----> MvBufr::ExpandDescriptors(" << _lastKnownSubsetValue << ") => BUSEL..." << endl;
+         BUSEL( &In_KTDLEN      // nr of original data descriptors in Section 3
+	      ,  In_KTDLST      // original descriptors
+	      , &In_KTDEXL      // nr of expanded data descriptors
+	      ,  In_KTDEXP      // expanded descriptors
+	      , &fKERR
+              );
+      }
+   }
+
+   if( fKERR )
+   {
+      cerr << " >>> MvBufr::ExpandDescriptors: fKERR = " << fKERR << endl;
+
+#ifdef METVIEW
+      marslog( LOG_EROR, "BUFR expansion (BUSEL) failed, status = %d", fKERR );
+#endif
+
+      _inState = kBufrIn_Error;
+   }
+   else
+      _inState = kBufrIn_DataAndDescriptorsDecoded;
+}
+//__________________________________________________________ descriptorToFortranIndex
+int
+MvBufr :: descriptorToFortranIndex( const long aDescr, const int firstIndex )
+{
+   if( _inState == kBufrIn_Error )
+      return -1;
+
+   if( _inState != kBufrIn_DataAndDescriptorsDecoded )
+      ExpandDescriptors( _lastKnownSubsetValue ); //-- Q&D
+
+   if( _inState == kBufrIn_DataAndDescriptorsDecoded )
+   {
+      for( int i=firstIndex; i < In_KTDEXL; i++ )
+      {
+	 if( In_KTDEXP[ i ] == aDescr )
+         {
+	   return i;
+         }
+      }
+   }
+   return -1;
+}
+//__________________________________________________________ computeIn_KELEM
+void
+MvBufr :: computeIn_KELEM( void )
+{
+    if ( subsetCount() > 1 )
+        In_KELEM = kVals / subsetCount();
+    else
+        In_KELEM = MAX_KELEM;
+
+    if( In_KELEM > MAX_BUBOX_KELEM_LIMIT )
+        In_KELEM = MAX_BUBOX_KELEM_LIMIT;
+}
+//__________________________________________________________ DataValue
+//
+// Returns the requested parameter value (or missing value)
+// and updates _currentDescrInd.
+//
+
+fortfloat
+MvBufr :: DataValue( const int aDescrArrayInd, const long aSubsetNumber )
+{
+   _lastKnownSubsetValue = aSubsetNumber;
+
+   if( _inState < kBufrIn_DataDecoded )
+      Decode();
+
+   if( ( aSubsetNumber > subsetCount() ) || ( aDescrArrayInd < 0 ) )
+   {
+      _currentDescr = 0;
+      _currentDescrInd = -1;
+      return kFortranBufrMissingValue;
+   }
+
+   _currentDescrInd = aDescrArrayInd;
+   _currentDescr = In_KTDEXP[ _currentDescrInd ];
+
+   return PeekDataValue( _currentDescrInd, aSubsetNumber );
+}
+//__________________________________________________________ PeekDataValue
+//
+// Returns the requested parameter value (or missing value)
+// without updating _currentDescrInd.
+//
+
+fortfloat
+MvBufr :: PeekDataValue( const int aDescrArrayInd, const long aSubsetNumber )
+{
+   if( ( aSubsetNumber > subsetCount() ) || ( aDescrArrayInd < 0 ) )
+     return kFortranBufrMissingValue;
+   else
+     return In_VALUES[ aDescrArrayInd + ( aSubsetNumber - 1 ) * In_KELEM ];
+}
+//__________________________________________________________ Value
+bool
+MvBufr :: Value( const long aDescriptor
+	       , const long aSubsetNumber
+	       , fortfloat &aDataValue
+	       , int   firstInd )
+{
+  aDataValue = DataValue( descriptorToFortranIndex( aDescriptor, firstInd )
+			, aSubsetNumber );
+  return aDataValue != kFortranBufrMissingValue ? true : false;
+}
+//__________________________________________________________ intValue
+// returns 'kFortranBufrMissingIntValue' if not found!
+//----------------------------------------------------
+long
+MvBufr :: intValue( const long aDescriptor, const int subsetNr )
+{
+   fortfloat myValue;
+   Value( aDescriptor, subsetNr, myValue );
+
+   if( myValue != kFortranBufrMissingValue )
+     return (long)myValue;
+   else
+     return kFortranBufrMissingIntValue;
+}
+//____________________________________________________________________ feedbackValue
+double
+MvBufr::feedbackValue( int col, int subset )
+{
+   if( _currentDescrInd < 0 )
+      return kBufrMissingValue;
+   else
+      //-- first 6 rows is reserved info, obs report starts on row 7
+      return feedbackValue( _currentDescrInd + 6, col, subset );
+}
+
+double
+MvBufr::feedbackValue( int row, int col, int subset )
+{
+   int err = fillBufrBox( subset );
+
+   assert( row > 0 && row <= myKBOX );
+   assert( col > 0 && col <= myKAPP );
+
+   if( err == 0 )
+      return myVALS[ myKLEN*(col-1) + row - 1 ];
+   else
+      return kBufrMissingValue;
+}
+
+string
+MvBufr::feedbackItemName( int row, int subset )
+{
+   int err = fillBufrBox( subset );
+
+   assert( row > 0 && row <= myKBOX );
+
+   if( err == 0 )
+   {
+      char c[64];
+      strncpy(c,myCBOXN+(row-1)*64,63);
+      c[63]='\0';
+      string s(c);
+      eraseWhiteSpaceFromStringEnd(s);
+      return s;
+   }
+   else
+      return std::string();
+}
+
+string
+MvBufr::feedbackItemUnit( int row, int subset )
+{
+   int err = fillBufrBox( subset );
+
+   assert( row > 0 && row <= myKBOX );;
+
+   if( err == 0 )
+   {
+      char c[24];
+      strncpy(c,myCBOXU+(row-1)*24,23);
+      c[23]='\0';
+      string s(c);
+      eraseWhiteSpaceFromStringEnd(s);
+      return s;
+   }
+   else
+      return std::string();
+}
+
+//____________________________________________________________________ obsTime
+TDynamicTime
+MvBufr :: obsTime( const int subsetNr )
+{
+   fortint myYear  = intValue( 4001L, subsetNr );
+   fortint myMonth = intValue( 4002L, subsetNr );
+   fortint myDay   = intValue( 4003L, subsetNr );
+   fortint myHour  = intValue( 4004L, subsetNr );
+
+   short myMin, mySec;
+   fortfloat myValue;
+
+   if( Value( 4005L, subsetNr, myValue ) )
+      myMin = (short)myValue;
+   else
+      myMin = 0;
+
+   if( Value( 4006L, subsetNr, myValue ) )
+      mySec = (short)myValue;
+   else
+      mySec = 0;
+
+   //-- quirky NCEP PrepBUFR obs may not contain date/time infromation
+   if( myYear  == kBufrMissingIntValue &&   //-- date OK?
+       myMonth == kBufrMissingIntValue &&
+       myDay   == kBufrMissingIntValue  )
+   {                                        //-- if date missing from obs
+      return msgTime();                     //-- then take it from section 1
+   }
+   else                                     //-- OK, take from obs
+   {
+      return TDynamicTime( (short)myYear, (short)myMonth, (short)myDay
+                         , (short)myHour, myMin, mySec );
+   }
+}
+//____________________________________________________________________ msgTime
+TDynamicTime
+MvBufr :: msgTime( void )
+{
+#if 0
+   short myYear  = fSec1->yearYY ;
+   short myMonth = fSec1->month ;
+   short myDay   = fSec1->day ;
+   short myHour  = fSec1->hour ;
+   short myMin   = fSec1->minute ;
+
+   return TDynamicTime( myYear, myMonth, myDay, myHour, myMin, 0 );
+#endif
+
+   return Sec1->date();
+}
+//____________________________________________________________________ stringValue
+string
+MvBufr :: stringValue( const long aDescriptor, const int aSubsetNr )
+{
+   _currentDescrInd = descriptorToFortranIndex( aDescriptor );
+   return stringValueByIndex( _currentDescrInd, aSubsetNr );
+}
+//____________________________________________________________________ stringValue
+string
+MvBufr :: stringValue( const int aSubsetNr )
+{
+   return stringValueByIndex( _currentDescrInd, aSubsetNr );
+}
+//__________________________________________________________ stringValueByIndex
+string
+MvBufr :: stringValueByIndex( const int anIndex, const int aSubsetNr )
+{
+   if( ( anIndex < 0 ) || ( anIndex >= In_KTDEXL ) )
+     {
+       return string( "[string index error!]" );
+     }
+
+   //-- get coded float value --
+   fortfloat myValue = DataValue( anIndex, aSubsetNr );
+
+   //-- here we should be passing subset nr, not index!!! (020307/vk)
+   //-- thus always pass 1:
+
+   if( elementValueType( 1 ) == kEVT_missing )
+     {
+	   return string( "[Missing]" );
+     }
+   else if( elementValueType( 1 ) == kEVT_string )
+     {
+       //-- get pointer and length to In_CVALS array, In_CVALS starts from 0.. --
+       int myIndex = (int)myValue / 1000 - 1;
+       int myLength = (int)myValue % 1000;
+
+       //-- add C-terminator (sacrifice last character if necessary) --
+       int terminatorPos = myLength;
+       if( terminatorPos > 79 )
+	 terminatorPos = 79;
+       //In_CVALS[ myIndex ][ terminatorPos ] = '\0';
+       In_CVALS[ myIndex*80 + terminatorPos ] = '\0';
+
+       return string(In_CVALS + myIndex*80);
+     }
+   else if( elementValueType( 1 ) == kEVT_numeric )
+     {
+       ostringstream oss;
+       oss << myValue;
+
+       return oss.str();
+     }
+
+   return string( "[Internal error]" ); //-- we should never get here!
+}
+//____________________________________________________________________ unit
+string
+MvBufr :: unit( const long aDescriptor )
+{
+   return unitByIndex( descriptorToFortranIndex( aDescriptor ) );
+}
+//____________________________________________________________________ unit
+string
+MvBufr :: unit( void )
+{
+   return unitByIndex( _currentDescrInd );
+}
+//____________________________________________________________________ unitByIndex
+string
+MvBufr :: unitByIndex( const int anIndex )
+{
+   char strbuf[ 25 ];
+
+   if( ( anIndex >= 0 ) && ( anIndex < In_KTDEXL ) )
+   {
+      strbuf[ 24 ] = '\0';               //-- make a copy
+      int pos;
+      for( pos=23; pos>=0; --pos )
+         strbuf[ pos ] = In_CUNITS[ anIndex*24 + pos ];
+         //strbuf[ pos ] = In_CUNITS[ anIndex ][ pos ];
+
+      for( pos=23; pos > 0; pos-- )      //-- remove trailing blanks
+         if( strbuf[ pos ] == ' ' )
+            strbuf[ pos ] = '\0';
+         else
+            break;
+
+      return string( strbuf );
+   }
+   return string( "[Unit not found!]" );
+}
+//____________________________________________________________________ name
+string
+MvBufr :: name( const long aDescriptor )
+{
+   return nameByIndex( descriptorToFortranIndex( aDescriptor ) );
+}
+//____________________________________________________________________ name
+string
+MvBufr :: name( void )
+{
+   return nameByIndex( _currentDescrInd );
+}
+//____________________________________________________________________ nameByIndex
+string
+MvBufr :: nameByIndex( const int anIndex )
+{
+   char strbuf[ 65 ];
+
+   if( ( anIndex >= 0 ) && ( anIndex < In_KTDEXL ) )
+   {
+      strbuf[ 64 ] = '\0';               //-- make copy
+      int pos;
+      for( pos=63; pos>=0; --pos )
+         strbuf[ pos ] = In_CNAMES[ anIndex*64 + pos ];
+        // strbuf[ pos ] = In_CNAMES[ anIndex ][ pos ];
+
+      for( pos=63; pos > 0; pos-- )      //-- remove trailing blanks
+         if( strbuf[ pos ] == ' ' )
+            strbuf[ pos ] = '\0';
+         else
+            break;
+
+      bool retainCapital = true;      //-- change to lower case
+      for( pos = 0; pos < (int)(strlen( strbuf )); pos++ )
+      {
+         if( isupper( strbuf[ pos ] ) )
+         {
+            if( retainCapital )
+               retainCapital = false;
+            else
+               strbuf[ pos ] = tolower( strbuf[ pos ] );
+          }
+          else
+             retainCapital = true;
+      }
+      return string( strbuf );
+   }
+   else
+      return string( "[Name index error!]" );
+}
+//____________________________________________________________________ elementValueType
+EElementValueType
+MvBufr :: elementValueType( const int aSubsetNr )
+{
+  return elementValueTypeByIndex( _currentDescrInd, aSubsetNr );
+}
+//____________________________________________________________ elementValueType
+EElementValueType
+MvBufr :: elementValueType( const long aDescriptor, const int aSubsetNr )
+{
+  return elementValueTypeByIndex( descriptorToFortranIndex( aDescriptor ), aSubsetNr );
+}
+//_____________________________________________________ elementValueTypeByIndex
+EElementValueType
+MvBufr :: elementValueTypeByIndex( const int anIndex, const int aSubsetNr )
+{
+  fortfloat myValue = DataValue( anIndex, aSubsetNr );
+
+  if( myValue == kFortranBufrMissingValue )
+  {
+    return kEVT_missing;
+  }
+  else
+  {
+    bool isString = unitByIndex( anIndex ) == "CCITTIA5"   //-- ECMWF notation
+                 || unitByIndex( anIndex ) == "CCITT IA5"; //-- WMO & NCEP PrepBUFR notation
+    return isString ? kEVT_string : kEVT_numeric;
+  }
+}
+//______________________________________________________________________
+//
+// Reset descriptor iterator by pointing to the first descriptor.
+// Make sure msg has been expanded!
+//
+
+bool
+MvBufr :: SetFirstDescriptor( void )
+{
+   if( _inState == kBufrIn_Error )
+      return false;
+
+   if( _inState != kBufrIn_DataAndDescriptorsDecoded )
+      ExpandDescriptors( _lastKnownSubsetValue ); //-- Q&D
+
+   if( _inState == kBufrIn_DataAndDescriptorsDecoded )
+   {
+      _currentDescrInd = 0;
+      _currentDescr = In_KTDEXP[ _currentDescrInd ];
+      return true;
+   }
+   return false;
+}
+//______________________________________________________________________
+//
+// Advance descriptor iterator.
+// Check that it still points ok.
+//
+
+bool
+MvBufr :: SetNextDescriptor( void )
+{
+  if( _currentDescrInd < 0 )
+     return false;           // SetFirstDescriptor had not been called !
+
+  _currentDescrInd++;
+  if( _currentDescrInd == In_KTDEXL ) // or: fKSUP[ 5 - 1 ]
+  {
+     _currentDescrInd = -1;               //-- end-of-msg reached
+     _currentDescr = 0;                   //-- probably end-of-iteration => issue no msg
+     return false;
+  }
+  else if( _currentDescrInd > In_KTDEXL )
+  {
+     _currentDescrInd = -1;               //-- past end-of-msg
+     _currentDescr = 0;                   //-- must be an error => issue error msg
+
+    cerr << "MvBufr::SetNextDescriptor: _currentDescrInd=" << _currentDescrInd
+         << ", limiting In_KTDEXL=" << In_KTDEXL << endl;
+
+     return false;
+  }
+
+  _currentDescr = In_KTDEXP[ _currentDescrInd ];
+  return true;
+}
+//______________________________________________________________________
+//
+// calls Emoslib routines BUBOX and BUPRTBOX to produce "boxed" output
+//
+int
+MvBufr::fillBufrBox( int aSubsetNr )
+{
+#if 0
+  //-- Linux/g++ does not like hardcoded big? arrays (works ok in debugger,
+  //-- but crashes inside Metview...) => create arrays dynamically, once!
+
+  static fortint    myKSUB, myKBOX, myKAPP, myKLEN, myKERR;
+  static fortint*   myKBOXR = 0;
+  static fortfloat* myVALS  = 0;
+  static char*      myCBOXN = 0;
+  static char*      myCBOXU = 0;
+#endif
+
+  if( _bufrBoxFilledSubset == aSubsetNr )
+     return 0;                               //-- OK, already filled
+
+  if( ! myKBOXR )
+    {
+      try
+	{
+	  myKBOXR = new fortint[ kVals ];
+	  cout << " fillBufrBox: array myKBOXR created" << endl;
+
+	  myVALS  = new fortfloat[ kVals ];
+	  cout << " fillBufrBox: array myVALS  created" << endl;
+
+	  myCBOXN = new char[ kVals * 64 ];
+	  cout << " fillBufrBox: array myCBOXN created" << endl;
+
+	  myCBOXU = new char[ kVals * 24 ];
+	  cout << " fillBufrBox: array myCBOXU created" << endl;
+	}
+      catch(...)
+	{
+	  cout << " >>> fillBufrBox: problems in creating fort arrays <<<" << endl;
+	  delete myKBOXR;  myKBOXR = 0;
+	  delete myVALS;   myVALS  = 0;
+	  delete myCBOXN;  myCBOXN = 0;
+	  delete myCBOXU;  myCBOXU = 0;
+#ifdef METVIEW
+	  marslog( LOG_EROR, "MvBufr::fillBufrBox: out-of-memory?" );
+#endif
+	  return -13;
+	}
+    }
+
+
+  //-- Initialize array given to bubox. bubox will not initialize
+  //-- all values, and this will cause runtime error from buprtbox.
+  for (int i = 0; i < kVals; i++ )
+    myVALS[i] = kFortranBufrMissingValue;
+
+  if( _inState == kBufrIn_Error )
+    {
+      cout << " fillBufrBox: BUFR msg error state, return false" << endl;
+      return -1313;
+    }
+
+  if( _inState < kBufrIn_DataDecoded )
+    {
+      Decode();
+    }
+
+  if( _inState != kBufrIn_DataAndDescriptorsDecoded )
+    {
+      ExpandDescriptors( aSubsetNr );
+    }
+
+  myKSUB = (fortint)aSubsetNr;
+  myKBOX = 0;
+  myKAPP = 0;
+  myKLEN = 0;
+  myKERR = 0;
+
+  BUBOX( &myKSUB     //-- INPUT arguments
+       ,  fKSUP
+       , &In_KELEM
+       ,  In_KTDEXP
+       ,  In_CNAMES
+       ,  In_CUNITS
+       , &In_KVALS
+       ,  In_VALUES
+                      //-- OUTPUT arguments
+       , &myKBOX      //-- number of (valid) elements in 1st column
+       , &myKAPP      //-- number of columns (apps) in the box
+       , &myKLEN      //-- number of rows in the box
+       ,  myKBOXR     //-- Table B descriptors
+       ,  myVALS      //-- boxed values
+       ,  myCBOXN     //-- boxed element names
+       ,  myCBOXU     //-- boxed units
+       , &myKERR );
+
+  if( myKERR == 0 )
+      _bufrBoxFilledSubset = myKSUB;
+
+  return myKERR;
+}
+//______________________________________________________________________
+//
+bool
+MvBufr::writeBufrBox( int aSubsetNr )
+{
+  cout << " writeBufrBox: entering" << endl;
+
+  myKERR = fillBufrBox( aSubsetNr );
+
+  //-- forces Fortran unit 6 into a file
+  if( ! redirect_6(BBOXNAME.c_str()) )
+    {
+      cout << ">>> UNABLE TO REDIRECT stdout <<<" << endl;
+      return false;
+    }
+
+  if( myKERR == 0 )
+  {
+     BUPRTBOX(&myKBOX
+             ,&myKAPP
+             ,&myKLEN
+             , myKBOXR
+             , myVALS
+             , myCBOXN
+             , myCBOXU );
+  }
+
+  //-- closes "unit'ified" unit 6
+  if( ! reconnect_6() )
+    {
+      cerr << ">>> UNABLE TO RECONNECT TO stdout <<<" << endl;
+      cout << ">>> UNABLE TO RECONNECT TO stdout <<<" << endl;
+    }
+
+  return myKERR == 0;
+}
+
+bool
+MvBufr::getBufrBoxSize( int& rows, int& cols, int aSubsetNr )
+{
+  bool status = false;
+
+  myKERR = fillBufrBox( aSubsetNr );
+
+  if( myKERR == 0 )
+  {
+     rows = myKBOX;
+     cols = myKAPP;
+     status = true;
+  }
+  return status;
+}
+
+//------------- Printing functions -----------------
+bool
+MvBufr :: printSection( ostream& aStream,int which)
+{
+  bool return_val = true;
+  if( _inState == kBufrIn_Error )
+    {
+      aStream << "!!!!!!!!!!! Bad BUFR message " << endl;
+      return false;
+    }
+
+  if ( _inState < kBufrIn_Sections012Expanded )
+    Decode();
+
+  if ( which == 3 && _inState < kBufrIn_DataAndDescriptorsDecoded )
+    ExpandDescriptors( _lastKnownSubsetValue ); //-- Q&D
+
+
+  char sec_name[30];
+  sprintf(sec_name,"prtsec%d.txt",which);
+
+  redirect_6(sec_name);
+  if ( which == 0 )
+    BUPRS0(fKSEC0);
+  else if ( which == 1 )
+    BUPRS1(fKSEC1);
+  else if ( which == 2 )
+    {
+      fortint *fKEY = new fortint[60];
+      BUUKEY(fKSEC1,fKSEC2,fKEY,fKSUP,&fKERR);
+      if ( fKERR )
+	cout << "\nProblems getting key. Maybe non-existent? " << endl;
+      else
+	BUPRS2(fKSUP,fKEY);
+
+      delete [] fKEY;
+    }
+  else
+    BUPRS3(fKSEC3,&In_KTDLEN,In_KTDLST,&In_KTDEXL,In_KTDEXP,&In_KELEM,In_CNAMES);
+
+  reconnect_6();
+  return_val = file_to_stream(sec_name,aStream,1);
+  delete_print_file(sec_name);
+  return return_val;
+}
+
+//------------- Printing functions -----------------
+bool
+MvBufr::getDataFromSection2(map<string,string> &data)
+{
+    bool retval=false;
+
+    if( _inState == kBufrIn_Error )
+    {
+      cout << "!!!!!!!!!!! Bad BUFR message " << endl;
+      return false;
+    }
+
+    if ( _inState < kBufrIn_Sections012Expanded )
+         Decode_012();
+
+      fortint *fKEY = new fortint[60];
+      BUUKEY(fKSEC1,fKSEC2,fKEY,fKSUP,&fKERR);
+      if ( fKERR )
+      {
+		cout << "\nProblems getting key. Maybe non-existent? " << endl;
+		retval=false;
+      }
+      else
+      {
+		parseSection2(fKEY,data);
+		retval=true;
+      }
+
+      delete [] fKEY;
+
+      return retval;
+}
+
+void MvBufr::parseSection2(fortint *fKEY,map<string,string> &data)
+{
+	//fKSUP - global variable
+
+	if(fKSUP[CIND(2)] < 1)
+	{
+		return;
+	}
+
+	int type=0;
+	if(fKEY[CIND(2)] == 2)
+		type = 2;
+	else if(fKEY[CIND(2)] == 3)
+		type = 2;
+	else if(fKEY[CIND(2)] == 12)
+		type = 2;
+	else if(fKEY[CIND(2)] == 8)
+		type = 2;
+
+	if(type == 0 && fKSUP [CIND(6)] > 1)
+		type = 2;
+
+	if(type == 2)
+	{
+		keyToStringMap(data,"RDB DATA TYPE",fKEY,2);
+		keyToStringMap(data,"RDB DATA SUBTYPE",fKEY,3);
+		keyToStringMap(data,"YEAR",fKEY,4);
+		keyToStringMap(data,"MONTH",fKEY,5);
+		keyToStringMap(data,"DAY",fKEY,6);
+		keyToStringMap(data,"HOUR",fKEY,7);
+		keyToStringMap(data,"MINUTE",fKEY,8);
+		keyToStringMap(data,"SECOND",fKEY,9);
+
+		float RLAT1=(fKEY[CIND(11)]-9000000)/100000.;
+         	float RLON1=(fKEY[CIND(10)]-18000000)/100000.;
+		keyToStringMap(data,"LATITUDE 1",RLAT1);
+		keyToStringMap(data,"LONGITUDE 1",RLON1);
+
+		float RLAT2=(fKEY[CIND(13)]-9000000)/100000.;
+         	float RLON2=(fKEY[CIND(12)]-18000000)/100000.;
+		keyToStringMap(data,"LATITUDE 2",RLAT2);
+		keyToStringMap(data,"LONGITUDE 2",RLON2);
+
+		keyToStringMap(data,"NUMBER OF OBSERVATIONS",fKEY,14);
+
+		//char ident[9];
+		//memcpy(ident,&fKEY[CIND(15)],8);
+		//data["IDENTIFIER"]=string(ident);
+
+		keyToStringMap(data,"IDENTIFIER",fKEY,15);
+		keyToStringMap(data,"TOTAL BUFR MESSAGE LENGTH",fKEY,25);
+		keyToStringMap(data,"DAY (RDB INSERTION)",fKEY,26);
+		keyToStringMap(data,"HOUR (RDB INSERTION)",fKEY,27);
+		keyToStringMap(data,"MINUTE (RDB INSERTION)",fKEY,28);
+		keyToStringMap(data,"SECOND (RDB INSERTION)",fKEY,29);
+		keyToStringMap(data,"DAY (MDB ARRIVAL)",fKEY,30);
+		keyToStringMap(data,"HOUR (MDB ARRIVAL)",fKEY,31);
+		keyToStringMap(data,"MINUTE (MDB ARRIVAL",fKEY,32);
+		keyToStringMap(data,"SECOND (MDB ARRIVAL)",fKEY,33);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,34);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,35);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,37);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,38);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,40);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,41);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,43);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,44);
+		keyToStringMap(data,"QUALITY CONTROL % CONF",fKEY,46);
+	}
+	else
+	{
+		keyToStringMap(data,"RDB DATA TYPE",fKEY,2);
+		keyToStringMap(data,"RDB DATA SUBTYPE",fKEY,3);
+		keyToStringMap(data,"YEAR",fKEY,4);
+		keyToStringMap(data,"MONTH",fKEY,5);
+		keyToStringMap(data,"DAY",fKEY,6);
+		keyToStringMap(data,"HOUR",fKEY,7);
+		keyToStringMap(data,"MINUTE",fKEY,8);
+		keyToStringMap(data,"SECOND",fKEY,9);
+
+		float RLAT1=(fKEY[CIND(11)]-9000000)/100000.;
+         	float RLON1=(fKEY[CIND(10)]-18000000)/100000.;
+		keyToStringMap(data,"LATITUDE 1",RLAT1);
+		keyToStringMap(data,"LONGITUDE 1",RLON1);
+
+		//char ident[9];
+		//memcpy(ident,&fKEY[CIND(15)],8);
+		//data["IDENTIFIER"]=string(ident);
+
+		char ident[10];
+		for(int i=16; i <=24; i++ )
+		{
+			ident[i-16]=fKEY[CIND(i)];
+		}
+		ident[9]='\0';
+		data["IDENTIFIER"]=string(ident);
+
+		keyToStringMap(data,"TOTAL BUFR MESSAGE LENGTH",fKEY,25);
+		keyToStringMap(data,"DAY (RDB INSERTION)",fKEY,26);
+		keyToStringMap(data,"HOUR (RDB INSERTION)",fKEY,27);
+		keyToStringMap(data,"MINUTE (RDB INSERTION)",fKEY,28);
+		keyToStringMap(data,"SECOND (RDB INSERTION)",fKEY,29);
+		keyToStringMap(data,"DAY (MDB ARRIVAL)",fKEY,30);
+		keyToStringMap(data,"HOUR (MDB ARRIVAL)",fKEY,31);
+		keyToStringMap(data,"MINUTE (MDB ARRIVAL",fKEY,32);
+		keyToStringMap(data,"SECOND (MDB ARRIVAL)",fKEY,33);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,34);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,35);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,37);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,38);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,40);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,41);
+		keyToStringMap(data,"CORRECTION NUMBER",fKEY,43);
+		keyToStringMap(data,"PART OF MESSAGE",fKEY,44);
+		keyToStringMap(data,"QUALITY CONTROL % CONF",fKEY,46);
+	}
+}
+
+
+
+
+
+
+//------------- Printing functions -----------------
+bool
+MvBufr :: printSection_012( ostream& aStream,int which)
+{
+  if(which <0 || which > 2)
+	return false;
+
+  bool return_val = true;
+  if( _inState == kBufrIn_Error )
+    {
+      aStream << "!!!!!!!!!!! Bad BUFR message " << endl;
+      return false;
+    }
+
+  if ( _inState < kBufrIn_Sections012Expanded )
+    Decode_012();
+
+  char sec_name[30];
+  sprintf(sec_name,"prtsec%d.txt",which);
+
+  redirect_6(sec_name);
+  if ( which == 0 )
+    BUPRS0(fKSEC0);
+  else if ( which == 1 )
+    BUPRS1(fKSEC1);
+  else if ( which == 2 )
+    {
+      fortint *fKEY = new fortint[60];
+      BUUKEY(fKSEC1,fKSEC2,fKEY,fKSUP,&fKERR);
+      if ( fKERR )
+	cout << "\nProblems getting key. Maybe non-existent? " << endl;
+      else
+	BUPRS2(fKSUP,fKEY);
+
+      delete [] fKEY;
+    }
+
+  reconnect_6();
+  return_val = file_to_stream(sec_name,aStream,1);
+  delete_print_file(sec_name);
+  return return_val;
+}
+
+
+//______________________________________________________________________
+//====================================================================== MvBufrOut
+//______________________________________________________________________
+
+MvBufrOut::MvBufrOut( const long len, MvObsSet* aSet )  //( char *msg, long len, MvObsSet* aSet )
+    : MvBufrBase( len ), _currentSec1( 0 )
+{
+  _outSet = aSet;
+  _maxNrSubsets = 1;
+  Out_KELEM = -1;        // MAX_KELEM / _maxNrSubsets;
+
+  createFortranArrays();
+
+  _outState = kBufrOut_noBuffers;
+  resetBuffers();
+}
+//____________________________________________________________
+
+MvBufrOut :: ~MvBufrOut( void )
+{
+  if(   _outState == kBufrOut_dataInBuffers )
+  {
+    encode();
+  }
+  _outSet->close();
+  delete _currentSec1;
+}
+
+//____________________________________________________________________ createBuffers
+void
+MvBufrOut::createBuffers() // XXX still need more dynamic memory allocation
+{
+  Out_KTDEXL = -1;
+  Out_KELEM = -1;
+  _KDLEN = 0;
+  _nextValue = 0;
+  _nextCharParamPos = 0;
+
+  if( _outState == kBufrOut_noBuffers )
+    {
+      char cbuf[ 120 ];
+
+      try
+	{
+	  cout << "MvBufrOut::createBuffers, checking for memory..." << endl;
+
+	  sprintf( cbuf, "requesting %d new fortints", MAX_KELEM );
+	  cout << cbuf << endl;
+	  Out_KTDLST = new fortint[ MAX_KELEM ];
+
+	  sprintf( cbuf, "requesting %d new fortints", MAX_KELEM );
+	  cout << cbuf << endl;
+	  Out_KTDEXP = new fortint[ MAX_KELEM ];
+
+	  sprintf( cbuf, "requesting %d new fortfloats", MAX_KVALS );
+	  cout << cbuf << endl;
+	  Out_VALUES = new fortfloat[ MAX_KVALS ];
+
+	  sprintf( cbuf, "requesting %d new chars", 80*MAX_KVALS );
+	  cout << cbuf << endl;
+	  Out_CVALS = new char[ MAX_KVALS * 80 ];
+	}
+      catch(...)
+	{
+	  delete [] Out_VALUES; //-- (I)
+	  delete [] Out_CVALS;  //-- (II)
+	  delete [] Out_KTDEXP; //-- (III)
+
+	  Out_VALUES = 0;
+	  Out_CVALS  = 0;
+	  Out_KTDEXP = 0;
+	  Out_KTDLST = 0;
+
+	  _outState = kBufrOut_error;
+
+	  cout << ">>>\n>>> MvBufrOut::createBuffers failed in " << cbuf << "\n>>>" << endl;
+	  cout << "MvBufrOut::createBuffers: throw MvException..." << endl;
+#ifdef METVIEW
+	  marslog( LOG_EROR, "MvBufrOut::createBuffers failed in %s", cbuf );
+	  throw MvException( "MvBufrOut::createBuffers: out-of-memory!" );
+#else
+          throw std::bad_alloc();
+#endif
+	}
+    }
+
+  cout << "MvBufrOut::createBuffers memory ok" << endl;
+
+  _outState = kBufrOut_emptyBuffers;
+}
+//____________________________________________________________________ resetBuffers
+void
+MvBufrOut :: resetBuffers( void )
+{
+  Out_KTDEXL = -1;
+  Out_KELEM = -1;
+  _KDLEN = 0;
+  _nextValue = 0;
+  _nextCharParamPos = 0;
+
+  if( _outState > kBufrOut_emptyBuffers )
+    {
+      _outState = kBufrOut_emptyBuffers;
+    }
+}
+//____________________________________________________________________ write
+void
+MvBufrOut :: write( MvObs& anObs )
+{
+    //-- if no packing into subsets, copy message as is...
+    _outSet->write( anObs._bufrIn->fMessage, (int)anObs._bufrIn->fMessageLength );
+}
+
+//____________________________________________________________________ add
+void
+MvBufrOut :: add( MvObs& anObs )
+{
+  if( _maxNrSubsets == 1 && anObs._bufrIn->subsetCount() == 1 )
+    //-- if no packing into subsets, copy message as is...
+    write( anObs );
+  else
+    addIntoBuffers( anObs );
+}
+
+//____________________________________________________________________ addIntoBuffers
+void
+MvBufrOut::addIntoBuffers( MvObs& anObs )
+{
+  if( _outState <= kBufrOut_noBuffers )
+    {
+      createBuffers();
+    }
+
+  checkDescriptors( anObs );
+
+  if( MAX_KVALS < _nextValue + Out_KTDEXL )
+  {
+    encode();
+    formatBuffers( anObs );
+  }
+
+  //-- in case (non-compressed) multisubset msg, do expanded descriptors here
+  Out_KTDEXL = In_KTDEXL;             // expected nr of data values / expanded descriptors
+  for(int  i=0; i<In_KTDEXL; i++ )    // expanded descriptors
+    Out_KTDEXP[ i ] = In_KTDEXP[ i ]; // no offset
+
+  Out_KELEM = In_KTDEXL;  // In_KELEM;// expected nr of expanded elements (????)
+
+  int elemIndex = _nextValue;
+  for( int i = 0; i < Out_KTDEXL; i++, elemIndex++ )
+  {
+    Out_VALUES[ elemIndex ] = In_VALUES[ anObs.subsetOffset() + i ];
+
+    //-- character data..?
+    if( fKSUP[ 7-1 ] > 0  &&                                 //-- msg contains char data
+        ( strncmp( In_CUNITS + i*24, "CCITTIA5", 8 ) == 0 || //-- ECMWF notation
+          strncmp( In_CUNITS + i*24, "CCITT IA5", 9 ) == 0   //-- WMO & NCEP PrepBUFR notation
+        )
+       )
+    {
+      //-- copy character string value to next available slot --
+      int charInd = (int)Out_VALUES[ elemIndex ] / 1000 - 1;
+      int charLen = (int)Out_VALUES[ elemIndex ] % 1000;
+      strncpy( (Out_CVALS + _nextCharParamPos*80)
+	     , (In_CVALS + charInd*80)
+	     , charLen );
+
+      //-- set "pointer" to this slot --
+      Out_VALUES[ elemIndex ] = 1000*( _nextCharParamPos + 1 ) + charLen;
+      _nextCharParamPos++;
+    }
+    else  //-- if delayed replication factor...
+    {
+      if( isDelayedDescriptor( Out_KTDEXP[ i ] ) )
+      {
+//cerr << "isDelayedDescriptor( " << Out_KTDEXP[ i ] << "), _KDLEN=" << _KDLEN << endl;
+	if( _KDLEN < MAX_KDLEN )
+	{
+	  fortint delayedRepeat = (fortint)Out_VALUES[ elemIndex ];
+	  if( delayedRepeat < 0 )
+	  {
+	    cerr << ">>> MvBufrOut::add: data error - negative delayed repetition " << delayedRepeat
+	         << " (from element " << elemIndex << ")" << endl;
+#ifdef METVIEW
+	    marslog( LOG_EROR, "MvBufrOut::add: data error - negative delayed repetition!" );
+#endif
+	  }
+	  _KDATA[ _KDLEN ] = delayedRepeat;
+	  _KDLEN++;
+	}
+	else
+	  {
+	    cerr << ">>> MvBufrOut::add: array _KDATA overflow! _KDLEN=" << _KDLEN
+	         << ", MAX_KDLEN=" << MAX_KDLEN << endl;
+#ifdef METVIEW
+	    marslog( LOG_EROR, "MvBufrOut::add: array _KDATA overflow!" );
+#endif
+	  }
+      }
+    }
+  }
+  _nextValue += (int)Out_KELEM;
+
+  fKSEC3[ 2 ] += 1;  //-- Nr of Subsets
+  _outState = kBufrOut_dataInBuffers;
+
+  if( shouldBeWritten() )
+    encode();
+}
+//____________________________________________________________________ formatBuffers
+void
+MvBufrOut :: formatBuffers( const MvObs& anObs )
+{
+  delete _currentSec1;
+#if 0
+  _currentSec1 = new TSection1;
+  *_currentSec1 = *(anObs._bufrIn->Sec1);
+#endif
+  if( anObs._bufrIn->fSec0->editionNr > 3 )
+    _currentSec1 = new Section1_Ed4( anObs._bufrIn->Sec1 );
+  else
+    _currentSec1 = new Section1_preEd4( anObs._bufrIn->Sec1 );
+
+  int i;
+
+  fKSEC0[ 0 ] = 0;
+  for( i=1; i<3; i++)
+    fKSEC0[ i ] = anObs._bufrIn->fKSEC0[ i ];
+
+  // fKSEC1[ 0 ] = 0; // ??????????
+  for( i=0; i<40; i++)
+    fKSEC1[ i ] = anObs._bufrIn->fKSEC1[ i ];
+
+#if 0
+  int wmoi = BUFR_ORIGINATING_CENTER;
+  if( getenv( "WMO_SITE_NR" ) )
+    wmoi = atoi( getenv( "WMO_SITE_NR" ) );  //-- change WMO Centre Number if given
+
+  if( wmoi < 0 || wmoi > 255 )
+    wmoi = BUFR_ORIGINATING_CENTER;          //-- fall back to hard coded default
+
+  fKSEC1[ 2 ] = wmoi;                        //-- WMO Originating Centre
+#endif
+
+  fKSEC1[ 3 ] += 1;                          // increment Update Sequence Number!!
+  if( fKSEC1[ 4 ] > 127 )
+    fKSEC1[ 4 ] -= 128;                      // remove section 2 (which one to copy?)
+
+  fKSEC3[ 0 ] = 0;
+  for( i=1; i<4; i++)
+    fKSEC3[ i ] = anObs._bufrIn->fKSEC3[ i ];
+  fKSEC3[ 2 ] = 0;                           // reset nr of Subsets
+
+  fKSEC4[ 0 ] = 0;
+  for( i=1; i<2; i++)
+    fKSEC4[ i ] = anObs._bufrIn->fKSEC4[ i ];
+
+  Out_KTDLEN = In_KTDLEN;             // nr of original data descriptors in Sec 3
+  for( i=0; i<In_KTDLEN; i++ )        // packed descriptors
+    Out_KTDLST[ i ] = In_KTDLST[ i ];
+
+  //-- do this also later because with non-compressed multisubset msgs these vary
+  Out_KTDEXL = In_KTDEXL;             // expected nr of data values / expanded descriptors
+  for( i=0; i<In_KTDEXL; i++ )        // expanded descriptors
+    Out_KTDEXP[ i ] = In_KTDEXP[ i ]; // no offset
+
+  Out_KELEM = In_KTDEXL;  // In_KELEM;// expected nr of expanded elements (????)
+
+  _outState = kBufrOut_formatedBuffers;
+}
+//____________________________________________________________________ encode
+void
+MvBufrOut :: encode( void )
+{
+  if( _outState == kBufrOut_dataInBuffers )
+  {
+    fortint myKERR = 0;
+    fortint myKBUFL = 0;
+
+    BUFREN( fKSEC0, fKSEC1, fKSEC2, fKSEC3, fKSEC4
+	  , &Out_KTDLEN   // &fKTDEXL
+	  , Out_KTDLST    // fKTDEXP   // &fKTDLEN, fKTDLST
+	  , &_KDLEN
+	  , _KDATA
+	  , &Out_KELEM
+	  , &Out_KTDEXL   // was: fKVALS
+	  , Out_VALUES
+	  , Out_CVALS
+	  , &myKBUFL
+	  , (fortint *)fMessage
+	  , &myKERR );
+
+    if( myKERR == 0 )
+      _outSet->write( fMessage, (int)(myKBUFL*sizeof(fortint)) );
+    else
+      {
+	cerr << ">>> MvBufrOut::encode, KERR=" << myKERR << endl;
+#ifdef METVIEW
+	marslog( LOG_EROR, "BUFR encoding (BUFREN) failed, status = %d", myKERR );
+#endif
+      }
+
+    resetBuffers();
+  }
+}
+//_______________________________________________________________ checkDescriptors
+// checks descriptors and also header consistency i.e.
+// to make sure that the new obs fits into the current
+// multisubset message
+//---------------------------------------------------------------
+void
+MvBufrOut :: checkDescriptors( const MvObs& anObs )
+{
+//--  if( anObs._bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
+  //-- expand always, in case non-compressed multisubset msg where exaoanded descriptors vary
+  anObs._bufrIn->ExpandDescriptors( anObs.subsetNumber() );
+
+  if( _outState == kBufrOut_emptyBuffers )
+    formatBuffers( anObs );
+  else
+    if( differentDescriptors() || differentHeader( anObs ) )
+    {
+       encode();
+       formatBuffers( anObs );
+    }
+}
+
+//_______________________________________________________________ differentDescriptors
+// returns 1 if descriptors of the BUFR message in 'anObs' differs
+// from current descriptors.
+// returns 0 if they are equal
+//---------------------------------------------------------------
+int
+MvBufrOut :: differentDescriptors( void ) const
+{
+  if( _outState < kBufrOut_formatedBuffers )
+    return 1;
+
+  if( In_KTDLEN != Out_KTDLEN )
+    return 1;
+
+  for( int i = 0; i < In_KTDLEN; i++ )
+    if( In_KTDLST[ i ] != Out_KTDLST[ i ] )
+      return 1;
+
+  return 0;
+}
+//_______________________________________________________________ differentHeader
+// returns 1 if section 1 header of the BUFR message in 'anObs'
+// differs from current header 1.
+// returns 0 if they are equal
+//---------------------------------------------------------------
+int
+MvBufrOut :: differentHeader( const MvObs& anObs ) const
+{
+#if 0
+  int seclen = 17;  // = unsignedInt( &(_currentSec1->len), 3 );  //syntax error???
+
+  unsigned char* v1 = &(_currentSec1->len);	    //-- start of current section 1
+  unsigned char* v2 = &(anObs._bufrIn->fSec1->len); //-- start of sec 1 in other header
+
+  for( int i=seclen; i>0; --i )
+  {
+     if( *v1 != *v2 )
+        return 1;
+
+     ++v1;  ++v2;
+  }
+
+  return 0;
+#endif
+
+  return _currentSec1->isDifferent( anObs._bufrIn->Sec1 );
+}
+//______________________________________________________________ shouldBeWritten
+int
+MvBufrOut :: shouldBeWritten( void )
+{
+  if( _outState != kBufrOut_dataInBuffers )
+    return 0;
+
+  return fKSEC3[ 2 ] >= _maxNrSubsets;  // Nr of Subsets
+}
+//______________________________________________________________ setSubsetCount
+void
+MvBufrOut :: setSubsetCount( int maxNrSubsets )
+{
+  if( _outState == kBufrOut_dataInBuffers )
+    encode();
+  _maxNrSubsets = maxNrSubsets;
+}
+//______________________________________________________________ isDelayedDescriptor
+bool
+MvBufrOut :: isDelayedDescriptor( const long aDescr ) const
+{
+//  if( aDescr == 31001 || aDescr == 31002 || aDescr == 31011 || aDescr == 31012 )
+  if( aDescr >= 31000 && aDescr <= 31012 )
+    return true;
+  else
+    return false;
+}
+//______________________________________________________________________
+//====================================================================== MvObs
+//______________________________________________________________________
+
+MvObs :: MvObs( MvBufr *b, int i )
+{
+   _subsetNr = i;
+   _copy( b );
+}
+
+MvObs :: MvObs( const MvObs&  b )
+{
+   _copy( b );
+}
+//___________________________________________________________________
+MvObs :: ~MvObs()
+{
+   _clean();
+}
+//___________________________________________________________________ _copy
+void
+MvObs :: _copy( MvBufr *b )
+{
+   _bufrIn = b;
+   _bufr_id = 0;
+   if( _bufrIn )
+   {
+     _bufrIn->attach();
+     _bufr_id = _bufrIn->currentBufrRef();
+   }
+   _currentLevelCoordinate = cPressureCoordinate;
+   _currentLevelIndex = -1;
+   _confidence = new MvBufrConfidence( _bufrIn, _subsetNr );
+}
+//___________________________________________________________________ _copy
+void
+MvObs :: _copy( const MvObs& b )
+{
+  _subsetNr = b._subsetNr;
+  _copy( b._bufrIn );
+
+}
+//___________________________________________________________________ _clean
+void
+MvObs :: _clean()
+{
+   if( _bufrIn )
+     _bufrIn->detach();
+   _bufrIn = NULL;
+   _bufr_id = 0;
+   delete _confidence;
+   _confidence = 0;
+}
+//___________________________________________________________________ operator=
+
+MvObs&
+MvObs :: operator= ( const MvObs& b )
+{
+   _clean();
+   _copy( b );
+   return *this;
+}
+//___________________________________________________________________ operator void*
+
+MvObs :: operator void* ()
+{
+   return _bufrIn;
+}
+//___________________________________________________________________ operator!
+bool
+MvObs :: operator! ()
+{
+   return !_bufrIn;
+}
+//___________________________________________________________________ msg_ok
+//
+bool
+MvObs :: msg_ok() const
+{
+  if( _bufr_id != _bufrIn->currentBufrRef() )
+  {
+    //-- restriction due to static bufr arrays --
+    cerr << ">>> [MvObs::msg_ok] Static bufr arrays rewritten, not valid any more!" << endl;
+    return false;
+  }
+  return ( _bufrIn && ( _bufrIn->_inState != kBufrIn_Error ) ) ? true : false;
+}
+//___________________________________________________________________ Advance
+bool
+MvObs :: Advance()
+{
+   if( _bufrIn->subsetCount() > 1000 ||
+       _bufrIn->subsetCount() < 1 ) // DEBUG TEST ONLY
+   {
+      cerr << " >>> MvObs::Advance, unbelievable nr of fsubsets ("
+	   << _bufrIn->subsetCount() << ") in msg "
+       << _bufrIn->fMessageNumber << endl;
+   }
+   _subsetNr++;
+   _bufrIn->setSubset( _subsetNr );
+   return  _subsetNr <= _bufrIn->subsetCount();
+}
+
+//_________________________________________________________________ messageType
+int
+MvObs :: messageType()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->msgType();
+}
+//_________________________________________________ messageSubtypeInternational
+int
+MvObs :: messageSubtypeInternational()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->msgSubtypeWMO();
+}
+//_________________________________________________________ messageSubtypeLocal
+int
+MvObs :: messageSubtypeLocal()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->msgSubtypeLocal();
+}
+//______________________________________________________________ messageSubtype
+int
+MvObs :: messageSubtype()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->msgSubtype();
+}
+//___________________________________________________________ originatingCentre
+int
+MvObs::originatingCentre()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->origCentre();
+}
+int
+MvObs::originatingSubCentre()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->origSubCentre();
+}
+//___________________________________________________________ editionNumber
+int
+MvObs::editionNumber()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->fSec0->editionNr;
+}
+//___________________________________________________________ masterTable
+int
+MvObs::masterTable()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->masterTable();
+}
+//___________________________________________________________ masterTableVersion
+int
+MvObs::masterTableVersion()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->masterTableVersion();
+}
+//___________________________________________________________ localTableVersion
+int
+MvObs::localTableVersion()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->Sec1->localTableVersion();
+}
+//_________________________________________________  messageTotalLen()
+int
+MvObs :: messageTotalLen()
+{
+   if( ! msg_ok() )
+      return -1;
+
+   return _bufrIn->totalLen();
+}
+//____________________________________________________________________ operator[]
+double
+MvObs::operator[] ( int index )  //-- index starts from 1: 1,2,...,n
+{
+  return (double)(_bufrIn->DataValue( index-1, _subsetNr ));
+}
+//____________________________________________________________________ value
+// returns 'kBufrMissingValue' if not found!
+//-------------------------------------------------
+float
+MvObs :: value( long aDescriptor )
+{
+   if( ! msg_ok() )
+      return kBufrMissingValue;
+
+   fortfloat myValue;
+   _bufrIn->Value( aDescriptor, _subsetNr, myValue );
+   return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
+}
+//___________________________________________________________________ nextValue
+// returns 'kBufrMissingValue' if not found!
+//-------------------------------------------------
+float
+MvObs :: nextValue()
+{
+   if( ! msg_ok() )
+      return kBufrMissingValue;
+
+   fortfloat myValue;
+   _bufrIn->Value( _bufrIn->_currentDescr, _subsetNr, myValue, _bufrIn->_currentDescrInd + 1 );
+   return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
+}
+//___________________________________________________________ valueByOccurrence
+// returns 'kBufrMissingValue' if not found!
+//-------------------------------------------------
+float
+MvObs :: valueByOccurrence( int anOccurrenceIndex, long aDescriptor )
+{
+  fortfloat myValue = value( aDescriptor );
+  for( int myInd = 1; myInd < anOccurrenceIndex; myInd++ )
+    myValue = nextValue();
+  return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
+}
+//______________________________________________________________ hasConfidences
+bool
+MvObs :: hasConfidences()
+{
+  return  _confidence->hasConfidences();
+}
+//__________________________________________________________________ confidence
+int
+MvObs :: confidence()
+{
+  return _bufrIn->_currentDescrInd > -1 ?
+         _confidence->confidenceByIndex( _bufrIn->_currentDescrInd ) : -1;
+}
+//____________________________________________________________________ intValue
+// returns 'kFortranBufrMissingIntValue' if not found!
+//----------------------------------------------------
+long
+MvObs :: intValue( long aDescriptor )
+{
+  return msg_ok() ? _bufrIn->intValue( aDescriptor, _subsetNr ) : kFortranBufrMissingIntValue;
+}
+//____________________________________________________________________ elementValueType
+EElementValueType
+MvObs :: elementValueType()
+{
+  return _bufrIn->elementValueType( _subsetNr );
+}
+//____________________________________________________________________ elementValueType
+EElementValueType
+MvObs :: elementValueType( long aDescriptor )
+{
+  return _bufrIn->elementValueType( aDescriptor, _subsetNr );
+}
+//____________________________________________________________________ stringValue
+string
+MvObs :: stringValue()
+{
+  if( ! msg_ok() )
+    return MESSED_UP;
+  else
+    return _bufrIn->stringValue( _subsetNr );
+}
+//_________________________________________________________________ stringValue
+string
+MvObs :: stringValue( long aDescriptor )
+{
+  if( ! msg_ok() )
+    return MESSED_UP;
+  else
+    return _bufrIn->stringValue( aDescriptor, _subsetNr );
+}
+//______________________________________________________ numberOfPressureLevels
+int
+MvObs :: numberOfPressureLevels()
+{
+  return numberOfLevels( cPressureCoordinate );
+}
+//______________________________________________________ numberOfLevels
+int
+MvObs :: numberOfLevels( long levelDescriptor )
+{
+  int myCount = 0;
+
+  if( firstLevel( levelDescriptor ) != kBufrMissingValue )
+  {
+    myCount++;
+    while( nextLevel() != kBufrMissingValue )
+      myCount++;
+  }
+
+  _currentLevelIndex = -1;
+  return myCount;
+}
+//__________________________________________________________ firstPressureLevel
+float
+MvObs :: firstPressureLevel()
+{
+  _currentLevelCoordinate = cPressureCoordinate;
+  return pressureLevel( 0 );
+}
+//__________________________________________________________ firstLevel
+float
+MvObs :: firstLevel( long levelDescriptor )
+{
+  _currentLevelCoordinate = levelDescriptor;
+  return level( levelDescriptor, 0 );
+}
+//___________________________________________________________ nextPressureLevel
+float
+MvObs :: nextPressureLevel()
+{
+  return pressureLevel( _currentLevelIndex + 1 );
+}
+//___________________________________________________________ nextLevel
+float
+MvObs :: nextLevel()
+{
+  return level( _currentLevelCoordinate, _currentLevelIndex + 1 );
+}
+//______________________________________________________________ pressureLevel
+float
+MvObs :: pressureLevel( int firstIndexValue )
+{
+  float  myLevelValue = level( cPressureCoordinate, firstIndexValue );
+
+  return myLevelValue == kBufrMissingValue ? kBufrMissingValue : myLevelValue / 100.;
+}
+//______________________________________________________________ level
+float
+MvObs :: level( long levelDescriptor, int firstIndexValue )
+{
+  if( ! msg_ok() )
+     return kBufrMissingValue;
+
+  fortfloat myLevelValue = kFortranBufrMissingValue;
+
+  if( _bufrIn->Value( levelDescriptor, _subsetNr, myLevelValue, firstIndexValue ) )
+    _currentLevelIndex = _bufrIn->_currentDescrInd;
+  else
+    _currentLevelIndex = -1;
+
+  return myLevelValue == kFortranBufrMissingValue ? kBufrMissingValue : myLevelValue;
+}
+
+//______________________________________________________________ specifierIndex
+int
+MvObs :: specifierIndex( long   aSpecifierDescriptor
+		       , double aSpecifierValue
+		       , int    firstIndexValue )
+{
+   if( ! msg_ok() )
+      return -1;
+
+   if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
+      _bufrIn->ExpandDescriptors( _subsetNr );
+
+   if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
+   {
+      //-- search for a specifier data with specified value --
+      for( int index=firstIndexValue; index < In_KTDEXL; index++ )
+	 if( In_KTDEXP[ index ] == aSpecifierDescriptor
+	     && _bufrIn->DataValue( index, _subsetNr ) == aSpecifierValue )
+	 {
+	    _lastSpecifierIndex = index;
+	    return index;
+	 }
+   }
+   return -1;
+}
+//____________________________________________________________ valueBySpecifier
+// A generic function to retrieve repeating data
+// specified by some other data
+// (e.g.  temperature at a certain pressure level)
+//--------------------------------------------------------------------
+double
+MvObs :: valueBySpecifier( long   aSpecifierDescriptor
+			 , double aSpecifierValue
+			 , long   aDescriptor
+			 , int    firstIndexValue )
+{
+   int index = specifierIndex( aSpecifierDescriptor, aSpecifierValue, firstIndexValue );
+   if( index > 0 )
+   {
+     //-- if the coordinate value itself is requested
+     if( aSpecifierDescriptor == aDescriptor )
+     {
+         fortfloat myVal = _bufrIn->DataValue( index, _subsetNr );
+         return myVal == kFortranBufrMissingValue ? kBufrMissingValue : myVal;
+     }
+     //-- search real data before next specifier data --
+     for( int ind=index+1; ind < In_KTDEXL; ind++ )
+     {
+       if( In_KTDEXP[ ind ] == aDescriptor )
+       {
+         fortfloat myVal = _bufrIn->DataValue( ind, _subsetNr );
+         return myVal == kFortranBufrMissingValue ? kBufrMissingValue : myVal;
+       }
+
+       //-- not found if specifier data again --
+       if( In_KTDEXP[ ind ] == aSpecifierDescriptor )
+         break;
+     }
+   }
+   return kBufrMissingValue;   //-- Not Found or Troubled Msg --
+}
+//________________________________________________________ valueByPressureLevel
+float
+MvObs :: valueByPressureLevel( float aLevelValue        // in 'hPa'
+			     , long  aDescriptor )
+{
+   return valueBySpecifier( cPressureCoordinate, aLevelValue*100., aDescriptor );
+}
+//________________________________________________________ valueByLevel
+float
+MvObs :: valueByLevel( long  aLevelDescriptor
+                     , float aLevelValue
+		     , long  aDescriptor )
+{
+   return valueBySpecifier( aLevelDescriptor, aLevelValue, aDescriptor );
+}
+//________________________________________________________ valueByLevel
+float
+MvObs :: valueByLevelRange( long  aLevelDescriptor
+                     , float level1
+	             , float level2    
+		     , long  aDescriptor )
+{
+    
+  float levelVal=firstLevel(aLevelDescriptor);
+  
+  while(levelVal != kBufrMissingValue)
+  {  
+	if(levelVal >= level1 && levelVal <= level2)
+	{
+		for( int ind = _currentLevelIndex + 1; ind < In_KTDEXL; ind++ )
+  		{
+    			if( In_KTDEXP[ ind ] == aDescriptor )
+   			{
+      				fortfloat myValue = _bufrIn->DataValue( ind, _subsetNr );
+				if(myValue != kFortranBufrMissingValue)
+					return myValue;
+				
+      				//return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
+    			}
+    			
+    			else if(In_KTDEXP[ ind ] ==aLevelDescriptor)
+				break; 	
+		}
+	}
+	
+	levelVal=nextLevel();
+  }	
+	
+  return kBufrMissingValue;
+}  
+ 
+//________________________________________________________________ valueByLayer
+float
+MvObs :: valueByLayer( float firstLevel
+		     , float secondLevel
+		     , long aDescriptor )
+{
+  int firstLevelIndex = specifierIndex( cPressureCoordinate, firstLevel*100., 0 );
+  int secondLevelIndex = -1;
+
+  while( firstLevelIndex > 0 )          //-- loop candidates --
+  {
+    //-- try to find the second level next to the current first one --
+
+    if( In_KTDEXP[ firstLevelIndex - 1 ] == cPressureCoordinate &&
+        _bufrIn->DataValue( firstLevelIndex - 1, _subsetNr ) == secondLevel*100. )
+    {
+      secondLevelIndex = firstLevelIndex - 1;
+      break;
+    }
+    else
+      if( In_KTDEXP[ firstLevelIndex + 1 ] == cPressureCoordinate &&
+          _bufrIn->DataValue( firstLevelIndex + 1, _subsetNr ) == secondLevel*100. )
+      {
+        secondLevelIndex = firstLevelIndex + 1;
+        break;
+      }
+
+    //-- no match, let's find the next candidate --
+
+    firstLevelIndex = specifierIndex( cPressureCoordinate
+				    , firstLevel*100.
+				    , firstLevelIndex + 1 );
+  }
+
+  if( firstLevelIndex < 0 )
+    return kBufrMissingValue;  //-- levels were not found!!!
+
+  //-- search real data before next specifier data --
+
+  int maxim = firstLevelIndex > secondLevelIndex ? firstLevelIndex : secondLevelIndex;
+  for( int ind = maxim + 1; ind < In_KTDEXL; ind++ )
+  {
+    if( In_KTDEXP[ ind ] == aDescriptor )
+    {
+      fortfloat myValue = _bufrIn->DataValue( ind, _subsetNr );
+      return myValue == kFortranBufrMissingValue ? kBufrMissingValue : myValue;
+    }
+
+
+    //-- not found if specifier data again --
+
+    if( In_KTDEXP[ ind ] == cPressureCoordinate )
+      break;
+  }
+  return kBufrMissingValue;   //-- Not Found or Troubled Msg --
+}
+
+
+//______________________________________________________________ printAllValues
+bool
+MvObs :: printAllValues()
+{
+   ostream* myStream = &cout;
+   return writeAllValues( *myStream );
+}
+//_______________________________________________________________ writeAllValues
+bool
+MvObs :: writeAllValues( ostream& aStream )
+{
+  if( ! msg_ok() )
+    return false;
+
+  if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
+    _bufrIn->ExpandDescriptors( _subsetNr );
+
+  if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
+    {
+      long  myEndingIndex = _confidence->hasConfidences() ?
+	_confidence->lastDataIndex()+1 : In_KTDEXL;
+      writeValues(aStream,0, myEndingIndex);
+      return true;
+   }
+   return false;
+}
+
+bool
+MvObs::writeValues(ostream& aStream, int firstIndex, int lastIndex)
+{
+   if( ! msg_ok() )
+      return false;
+
+   if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
+      _bufrIn->ExpandDescriptors( _subsetNr );
+
+   if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
+   {
+      fortfloat myValue;
+      if ( firstIndex < 0 )
+	firstIndex = 0;
+      if (lastIndex > In_KTDEXL )
+	lastIndex = In_KTDEXL;
+
+      for( int i = firstIndex; i < lastIndex; i++ )
+      {
+	 aStream.width( 3 ); aStream.fill( ' ' );      // index
+	 aStream << i+1 << ".  ";
+
+	 myValue = _bufrIn->DataValue( i, _subsetNr ); // get parameter value
+	                                               // = set current parameter!
+	 switch( elementValueType() )                    // print parameter value
+	 {
+	   case kEVT_unknown:
+	      aStream << " ?????";
+	      break;
+
+	   case kEVT_missing:
+	      aStream << "   ~~~";
+	      break;
+
+	   case kEVT_numeric:
+	      aStream.width( 6 ); aStream.fill( ' ' );
+	      aStream << myValue;
+	      break;
+
+	   case kEVT_string:
+	      aStream.width( 6 ); aStream.fill( ' ' );
+	      aStream << stringValue( In_KTDEXP[ i ] );
+	      break;
+	 }
+
+	 aStream << " " << name( In_KTDEXP[ i ] );           // parameter name
+	 aStream << " [" << unit( In_KTDEXP[ i ] ) << "] ("; // parameter unit
+	 aStream.width( 5 ); aStream.fill( '0' );            // parameter descriptor
+	 aStream << In_KTDEXP[ i ] << ")";
+	 aStream << endl;
+      }
+      return true;
+   }
+   return false;
+}
+
+//_______________________________________________________________ writeAllValues
+bool
+MvObs :: writeAllValues( const char* aPathName )
+{
+  ofstream myStream( aPathName, ios::out );
+  if( ! myStream )
+  {
+    cerr << " >>> MvObs::writeAllValues(char*): error in creating file " << aPathName << endl;
+#ifdef METVIEW
+    marslog( LOG_EROR, "MvObs::writeAllValues: error in creating file %s", aPathName );
+#endif
+    return false;
+  }
+
+  return writeAllValues( myStream );
+}
+//_______________________________________________________________ writeBufrBox
+bool
+MvObs :: writeBufrBox( ostream& aStream )
+{
+   bool return_value = true;
+
+   bool b_ret = _bufrIn->writeBufrBox( _subsetNr );
+   if( ! b_ret )
+   {
+      aStream << "\n   >>> Problems encountered!!! <<<\n" << endl;
+      return_value = false;
+   }
+   else
+     {
+       return_value = file_to_stream(BBOXNAME.c_str(),aStream,0);
+       delete_print_file(BBOXNAME.c_str());
+     }
+   return return_value;
+}
+//______________________________________________________________ WmoIdentNumber
+long
+MvObs :: WmoIdentNumber()
+{
+  return msg_ok() ? WmoBlockNumber()*1000 + WmoStationNumber() : kBufrMissingIntValue;
+}
+//______________________________________________________________ WmoBlockNumber
+int
+MvObs :: WmoBlockNumber()
+{
+   fortfloat myValue;
+
+   if( msg_ok() && _bufrIn->Value( 1001L, _subsetNr, myValue ) )
+      return (long)myValue;
+   else
+      return 0;
+}
+//____________________________________________________________ WmoStationNumber
+int
+MvObs :: WmoStationNumber()
+{
+   fortfloat myValue;
+
+   if( msg_ok() && _bufrIn->Value( 1002L, _subsetNr, myValue ) )
+      return (long)myValue;
+   else
+      return 0;
+}
+//____________________________________________________________ findSomeIdent
+string
+MvObs::findSomeIdent()
+{
+  if( ! msg_ok() )
+    return string( "???" );
+
+                            //-- 5-digit WMO identifier available?
+  if( WmoIdentNumber() > 0 )
+    {
+      ostringstream oss;
+      oss << setw(5) << setfill('0') << WmoIdentNumber();
+      return oss.str();
+    }
+                            //-- No WMO id found, thus look for other candidates,
+                            //-- this is a list of known identifier candidates.
+  const long idList[] =
+    {
+      1011L,    //-- Ship or mobile land station identifier
+      1005L,    //-- Buoy/platform identifier
+      1006L,    //-- Aircraft flight number
+      1007L,    //-- Satellite identifier
+      1008L,    //-- Aircraft registration number
+      1010L,    //-- Stationary buoy platform identifier
+      1025L,    //-- Storm identifier
+      1026L,    //-- WMO storm name
+      1027L     //-- WMO long storm name
+    };
+
+  int idVals = sizeof(idList)/sizeof(idList[0]);
+
+  for( int i=0; i<idVals; ++i )
+    {
+      long descr = idList[i];
+      fortfloat myValue = value( descr );
+
+      if( myValue != kBufrMissingValue )
+	{
+	  return stringValue( descr );
+	}
+    }
+
+  return string( "id???" );
+}
+//____________________________________________________________________ location
+MvLocation
+MvObs :: location()
+{
+   MvLocation myLocation( value( 5001L ), value( 6001L ) ); //-- "high accuracy"
+
+   if( myLocation.latitude() == kBufrMissingValue ||
+       myLocation.longitude() == kBufrMissingValue )
+   {
+      myLocation.set( value( 5002L ), value( 6002L ) );     //-- "coarse accuracy"
+   }                                                        //-- hopefully not missing
+
+   //-- this one is for those quirky NCEP PrepBUFR msgs
+   if( myLocation.latitude() != kBufrMissingValue &&
+       myLocation.longitude() == kBufrMissingValue )
+   {
+      //-- lat OK, try NCEP PrepBUFR local descriptor 0'06'240 for lon
+      myLocation.set( myLocation.latitude(), value( 6240L ) );
+   }
+
+   return myLocation;
+}
+//____________________________________________________________________ unit
+string
+MvObs :: unit( long aDescriptor )
+{
+  return msg_ok() ? _bufrIn->unit( aDescriptor ) : MESSED_UP;
+}
+//____________________________________________________________________ unit
+string
+MvObs :: unit()
+{
+  return msg_ok() ? _bufrIn->unit() : MESSED_UP;
+}
+//____________________________________________________________________ name
+string
+MvObs :: name( long aDescriptor )
+{
+  return msg_ok() ? _bufrIn->name( aDescriptor ) : MESSED_UP;
+}
+//____________________________________________________________________ name
+string
+MvObs :: name()
+{
+  return msg_ok() ? _bufrIn->name() : MESSED_UP;
+}
+//________________________________________________________________ subsetOffset
+int
+MvObs :: subsetOffset() const
+{
+  return ( _subsetNr - 1 ) * In_KELEM;
+}
+//________________________________________________________________ writeConfidenceValues
+bool
+MvObs::writeConfidenceValues(ostream& aStream)
+{
+  if( ! msg_ok() || ! _confidence->hasConfidences() )
+    return false;
+
+  if( _bufrIn->_inState != kBufrIn_DataAndDescriptorsDecoded )
+    _bufrIn->ExpandDescriptors( _subsetNr );
+
+  if( _bufrIn->_inState == kBufrIn_DataAndDescriptorsDecoded )
+    {
+      long  myStartingIndex = _confidence->lastDataIndex()+1;
+      long  myEndingIndex =  In_KTDEXL;
+      writeValues(aStream,myStartingIndex, myEndingIndex);
+      return true;
+   }
+   return false;
+}
+
+#ifdef METVIEW
+//---
+//-- Extracts a 4 or 8 bit OPERA radar image
+//-- from a BUFR message into 'unsigned char' array
+//--
+//-- ( NOTE: U N F I N I S H E D ! ! ! )
+//____________________________________________________________________ OperaRadarImage
+unsigned char*
+MvObs::OperaRadarImage(  )
+{
+   const float cRadarMissingVal = 255;       //-- BUFR radar pixel with no data
+   const float cMyMissingValue = 0;          //-- output radar pixel with no data
+
+   //---
+   //-- Some checks to ensure that we can handle this data
+   //-
+
+   int msgType = messageType();
+   if( msgType != 6 )                        //-- 6 = Radar data
+   {
+      throw MvException( "MvObs::OperaRadarImage: not radar data!" );
+   }
+
+   float val = value( 30021 );               //-- 030021: Number of pixels per row
+   if( val == kBufrMissingValue )
+   {
+      throw MvException( "MvObs::OperaRadarImage: unable to get number-of-rows!" );
+   }
+   int n_rows = val;
+
+   val = value( 30022 );                     //-- 030022: Number of pixels per column
+   if( val == kBufrMissingValue )
+   {
+      throw MvException( "MvObs::OperaRadarImage: unable to get number-of-columns!" );
+   }
+   int n_cols = val;
+
+   //---
+   //-- So far so good, now let's try to locate the first data row
+   //-
+
+   int firstRowStartIndex = _bufrIn->descriptorToFortranIndex( 5031 );
+   if( firstRowStartIndex < 0 )
+   {
+      throw MvException( "MvObs::OperaRadarImage: unable to get Row Number element!" );
+   }
+                                                     //-- "FortranIndex": 0,1,2,...
+   int rowRepeatCount = (*this)[firstRowStartIndex]; //-- operator[i], i=1,2,3,...
+   long currentDescr = currentDescriptor();
+   if( currentDescr != 31002 )
+   {
+      throw MvException( "MvObs::OperaRadarImage: internal error - not 031002" );
+   }
+
+   //---
+   //-- Still OK, now create the pixel array and start decoding the BUFR msg
+   //-
+
+   unsigned char* radimg = new unsigned char[n_rows*n_cols];
+   cout << "radimg size: " << n_rows << "*" << n_cols << " = " << n_rows*n_cols << endl;
+
+   int startPos = firstRowStartIndex - 1;    //-- start of radimg pixels
+   int pixelPos = 0;
+
+   float imax = 0;
+   for( int msgPos = startPos; msgPos < In_KTDEXL; ++msgPos )
+   {
+      float currVal = (*this)[msgPos];       //-- get the value
+      long  currDescr = currentDescriptor(); //-- and it's descriptor
+
+      if( currDescr == 31012 || currDescr == 31011 ) //-- delayed descr & data repetition factor?
+      {
+         int repeatCount = currVal;
+         float repeatVal = (*this)[++msgPos]; //-- get next value (advances to next descriptor)
+
+         //-- Double check that the descriptor that follows is a pixel data descriptor
+         //-- NOTE: Descriptor 30004 (16 bit pixel value) is ignored by this code!
+         //--       We only check for 4 bit (30001) and 8 bit (30002) pixel descriptors
+         long nextCurrDescr = currentDescriptor();
+         if( nextCurrDescr != 30001 && nextCurrDescr != 30002 )
+         {
+            delete [] radimg;                //-- free memory before throwing
+            if( nextCurrDescr == 30004 )     //-- cannot process 16 bit pixels
+            {
+               throw MvException( "MvObs::OperaRadarImage: cannot process 16 bit radar images" );
+            }
+
+            cerr << "MvObs::OperaRadarImage: expected 30001 or 30002, found "
+                 << nextCurrDescr << endl;
+            throw MvException( "MvObs::OperaRadarImage: internal or data error => debug needed" );
+         }
+
+         //---
+         //-- OK, we are processing a repeated pixel value (run-length coding)
+         //-
+         if( repeatVal == cRadarMissingVal )
+            repeatVal = cMyMissingValue;
+         else if( repeatVal > imax )
+            imax = repeatVal;
+
+         for( int i=0; i < repeatCount; ++i )
+         {
+            radimg[pixelPos++] = (unsigned char)repeatVal; //-- repeated data value
+         }
+      }
+      else if( currDescr == 30002 || currDescr == 30001 )
+      {
+         //---
+         //-- this is not a repeated value, just a single value
+         //-
+         if( currVal == cRadarMissingVal )
+            currVal = cMyMissingValue;
+         else if( currVal > imax )
+            imax = currVal;
+
+         radimg[pixelPos++] = (unsigned char)currVal;      //-- individual data value
+      }
+   }
+   cout << "Last pixel pos: " << pixelPos << endl;
+   cout << "Max pixel value: " << imax << endl;
+
+   return radimg;
+}
+//---
+//-- Extracts OPERA radar image metadata that is required
+//-- for instance for geolocating the image
+//--
+//-- ( NOTE: U N F I N I S H E D ! ! ! )
+//____________________________________________________________________ OperaRadarMetadata
+bool
+MvObs::OperaRadarMetadata( /* <aki> arguments? */ )
+{
+   return false;
+}
+#endif
+
+//=============================================================================
+//                                                                 vk April -95
+// Quick&Dirty hack to access Feed Back Quality Control Confidence info:
+//  * works only for QC operator 222000
+//  * uses Data Present Descriptors (031031) and Confidence Descriptors (033007)
+//  * presumes following structure:
+//     - 222000 descriptor exists (and is followed by:)
+//     - 031031 descriptors are all in one group (only first one is used!)
+//     - 033007 descriptors are all in one group (only first one is used!)
+//     - Extended Delayed Descr Replication Factors (031002) are not checked!
+//  * Data Present group is used to define index into Confidence group
+//____________________________________________________________ MvBufrConfidence
+
+MvBufrConfidence :: MvBufrConfidence( MvBufr* aBufr, int aSubsetNr )
+{
+  _bufr = aBufr;
+  if( _bufr )
+    _bufr->attach();
+  _subsetNr = aSubsetNr;
+  _state = kBCS_unknown;
+  _startOfDataPresent = -2;
+  _startOfConfidences = -2;
+}
+//___________________________________________________________ ~MvBufrConfidence
+
+MvBufrConfidence :: ~MvBufrConfidence()
+{
+  if( _bufr )
+    _bufr->detach();
+}
+//______________________________________________________________ hasConfidences
+bool
+MvBufrConfidence :: hasConfidences()
+{
+  if( ! _bufr )
+    return false;
+
+  if( _state == kBCS_unknown )
+    _state = _bufr->descriptorToFortranIndex( 222000L ) > 0 ? kBCS_exists : kBCS_missing;
+
+  return _state == kBCS_exists ? true : false;
+}
+//_______________________________________________________________ confidence
+int
+MvBufrConfidence :: confidence( long aDescr )
+{
+  int myDataIndex = _bufr->descriptorToFortranIndex( aDescr );
+  return myDataIndex > -1 ? confidenceByIndex( myDataIndex ) : -1;
+}
+//___________________________________________________________ confidenceByIndex
+int
+MvBufrConfidence :: confidenceByIndex( int aDataInd )
+{
+  int myConfidenceInd = -1;
+
+  if( hasConfidences() )
+  {
+     //--    case a:        case b:
+     //--        . . .          . . .
+     //--       0xxyyy         0xxyyy    <- 0xxyyy: element descriptors
+     //--       0xxyyy         222000
+     //--       222000         03100x
+     //--       031031         031031    <- startOfDataPresent()
+     //--       031031         031031
+     //--        . . .          . . .
+     //--
+     if( aDataInd < ( startOfDataPresent() - 1 ) &&  //-- skip 222000
+         _bufr->CurrentDescriptor() != 222000L )     //-- if previous was 03100*
+     {
+        if( _bufr->DataValue( aDataInd, _subsetNr ) != kFortranBufrMissingValue )
+           myConfidenceInd = startOfConfidences() + delta( aDataInd );
+     }
+  }
+
+  return myConfidenceInd > -1 ?
+            (int)(_bufr->PeekDataValue( myConfidenceInd, _subsetNr )) : -1;
+}
+//_______________________________________________________________ lastDataIndex
+int
+MvBufrConfidence :: lastDataIndex()
+{
+  return hasConfidences() ? _bufr->descriptorToFortranIndex( 222000L ) - 1 : -1;
+}
+//__________________________________________________________ startOfDataPresent
+// Q&D hack !!!
+
+int
+MvBufrConfidence :: startOfDataPresent()
+{
+  if( _startOfDataPresent == -2 )
+  {
+    if( hasConfidences() )
+    {
+      _startOfDataPresent = _bufr->descriptorToFortranIndex( 31031L );
+      if( _startOfDataPresent < 1 )
+      {
+	cerr << "[MvBufrConfidence::startOfDataPresent] Q&D hack does not work!!" << endl;
+	_state = kBCS_missing;
+      }
+    }
+  }
+
+  return hasConfidences() ? _startOfDataPresent : -1;
+}
+//_______________________________________________________________ startOfConfidences
+// Q&D hack !!!
+
+int
+MvBufrConfidence :: startOfConfidences()
+{
+  if( _startOfConfidences == -2 )
+  {
+    if( hasConfidences() )
+    {
+      _startOfConfidences = _bufr->descriptorToFortranIndex( 33007L );
+      if( _startOfConfidences < 1 )
+      {
+	cerr << "[MvBufrConfidence::startOfConfidences] Q&D hack does not work!!" << endl;
+	_state = kBCS_missing;
+      }
+    }
+  }
+
+  return hasConfidences() ? _startOfConfidences : -1;
+}
+//_______________________________________________________________ delta
+int
+MvBufrConfidence :: delta( int anInd )
+{
+  if( hasConfidences() )
+  {
+    int myDelta = 0;
+
+    for( int i = 0; i < anInd; i++ )
+      if( _bufr->PeekDataValue( startOfDataPresent()+i, _subsetNr ) == 0 )
+	myDelta++;
+
+    return myDelta;
+  }
+  else
+    return -1;
+}
+
+//________________________________________________________________________
+//======================================================================== MvBufrParam
+//________________________________________________________________________
+
+MvBufrParam :: MvBufrParam( const char *aParamName )
+{
+   descriptorStruct *par = knownParams;
+   while( par->descriptor != 0 )
+   {
+      if( strcmp( aParamName, par->name ) == 0 )
+      {
+         fDescriptor = par->descriptor;
+	 return;
+      }
+      ++par;
+   }
+   cerr << " >>> MvBufrParam::MvBufrParam: param not defined: " << aParamName << endl;
+   fDescriptor = 0;
+}
+//_____________________________________________________________ PrintAllKnownParameters
+
+void
+MvBufrParam :: PrintAllKnownParameters() const
+{
+   descriptorStruct *par = knownParams;
+   cout << " The Known Parameters of class MvBufrParam and the corresponding Descriptors:\n";
+   while( par->descriptor != 0 )
+   {
+      cout << "\n";
+      cout.width( 16 );
+      cout.fill( ' ' );
+      cout << par->name << " = ";
+      cout.width( 6 );
+      cout.fill( '0' );
+      cout << par->descriptor;
+      ++par;
+   }
+   cout << endl;
+}
+
+//-------------------- Helper functions to redirect stdout ----------------
+// This function will duplicate the file descriptor for stdout, and keep
+// it for later. Then stdout is connected to the file given as arg.
+// The first time the function is run, it tries to find a temporary dir.
+// to use ( class could be used outside metview ).
+
+bool redirect_6(const char *fname)
+{
+  cout << " redirect_6: redirect stdout into file " << fname << endl;
+  char *tmp_dir;
+  // Set the output dir. if it's not set.
+  if ( redirect_dir == string("") )
+    {
+      tmp_dir = getenv("METVIEW_TMPDIR");
+      if ( !tmp_dir )
+	{
+	  tmp_dir = getenv("TMPDIR");
+	  if ( !tmp_dir )
+	    redirect_dir = "/usr/tmp";
+	  else
+	    redirect_dir = tmp_dir;
+	}
+      else
+	redirect_dir = tmp_dir;
+    }
+
+  // Flush stdout before redirecting, to get rid of any pending output.
+  fflush(stdout);
+
+  new_fd = dup(STDOUT_FILENO);
+
+  cout << "new_fd: " << new_fd << endl;
+
+  close(STDOUT_FILENO);
+
+  string tmp_name;
+  tmp_name = redirect_dir + "/" + fname;
+  // As 1 is just closed, it will be the fd used.
+  // Will fail if stdin is explicitly closed and no fopens are done
+  if ( ! (fopen(tmp_name.c_str(),"w")) )
+    {
+	    cerr << "Problems opening file " << (const char*)tmp_name.c_str() << " for writing" << endl;
+      return false;
+    }
+
+  else
+    return true;
+}
+
+//
+// Will reconnect stdout by using a file descriptor saved from earlier.
+//
+bool reconnect_6()
+{
+  // Make sure we get everything before closing.
+  fflush(NULL);
+  close(STDOUT_FILENO);
+
+  int ret = dup2( new_fd, STDOUT_FILENO );
+  close(new_fd);
+  if( ret < 0 )
+    {
+      cerr << " reconnect_6: reconnecting into stdout FAILED!" << endl;
+      cout << " reconnect_6: reconnecting into stdout FAILED!" << endl;
+      return false;
+    }
+  cout << " reconnect_6: reconnected into stdout!" << endl;
+  return ret > 0 ;
+}
+
+//
+// Read a file and write the contents to given stream
+//
+bool file_to_stream(const char *fname,ostream &aStream,int skip)
+{
+  const int MAX_LINE_LEN = 512;
+  char      supposedToBeANewLine;
+  string    myTmpFileName;
+
+  myTmpFileName = redirect_dir + "/" + fname;
+
+  ifstream myTmpFile( myTmpFileName.c_str() );
+
+  if ( ! myTmpFile )
+    {
+	    aStream << "Can not read file " << (const char*)myTmpFileName.c_str() << endl;
+      return false;
+    }
+
+  char     myLine[ MAX_LINE_LEN ];
+
+  myTmpFile.get( myLine, MAX_LINE_LEN, '\n' );
+  myTmpFile.get( supposedToBeANewLine );
+  int i = 0;
+  while( myTmpFile && !myTmpFile.eof() )
+    {
+      if ( i++ >= skip )
+	aStream << myLine << endl;
+
+      myTmpFile.get( myLine, MAX_LINE_LEN, '\n' );
+      myTmpFile.get( supposedToBeANewLine );
+    }
+
+  myTmpFile.close();
+
+  return true;
+}
+
+void delete_print_file(const char *name)
+{
+  string fname = redirect_dir + "/" + name;
+  unlink(fname.c_str());
+}
+
+void eraseWhiteSpaceFromStringEnd(string &str)
+{
+   static string whitespaces (" \t\f\v\n\r");
+   size_t found=str.find_last_not_of(whitespaces);
+   if (found!=string::npos)
+       str.erase(found+1);
+   else
+       str.clear();
+}
+
+string intToString(int i)
+{
+	stringstream out;
+	out << i;
+	return out.str();
+}
+
+string floatToString(float f)
+{
+	stringstream out;
+	out << f;
+	return out.str();
+}
+
+void keyToStringMap(map<string,string> &data,string keyName,fortint *keyArray,int fortIndex)
+{
+	data[keyName]=intToString(keyArray[fortIndex-1]);
+}
+
+void keyToStringMap(map<string,string> &data,string keyName,float keyValue)
+{
+	data[keyName]=floatToString(keyValue);
+}
diff --git a/src/MvObs/MvObs.h b/src/eckit_readers/MvObs.h
similarity index 100%
rename from src/MvObs/MvObs.h
rename to src/eckit_readers/MvObs.h
diff --git a/src/eckit_readers/MvObsSet.cc b/src/eckit_readers/MvObsSet.cc
new file mode 100644
index 0000000..5a3138e
--- /dev/null
+++ b/src/eckit_readers/MvObsSet.cc
@@ -0,0 +1,1011 @@
+/***************************** LICENSE START ***********************************
+
+ Copyright 2012 ECMWF and INPE. This software is distributed under the terms
+ of the Apache License version 2.0. In applying this license, ECMWF does not
+ waive the privileges and immunities granted to it by virtue of its status as
+ an Intergovernmental Organization or submit itself to any jurisdiction.
+
+ ***************************** LICENSE END *************************************/
+
+// MvObsSet.cc,   vk July94
+//            rev vk 980306
+
+//--------------------------------------------------------------------
+//  MvObsSet hides the data structures and parameter driven subroutines
+//  needed to access BUFR files by wrapping them to a nicer C++ cover.
+//--------------------------------------------------------------------
+//  Routines and required data structures are described in
+//  ECMWF Meteorological Bulletin:
+//
+//  "Accessing GRIB and BUFR data."
+//       by J.D.Chambers
+//
+//  May 1994 Original version.
+//--------------------------------------------------------------------
+
+#include "inc_iostream.h"
+#include "MvObsSet.h"
+
+#ifdef METVIEW_PREPBUFR
+# include "MvPrepBufrPrep.h"
+#endif
+
+#ifndef METVIEW
+#include "grib_api.h"
+long _readbufr(FILE *f, char *b, long *l)  // from mars/tools.c
+{
+	size_t len = *l;
+	long e =  wmo_read_any_from_file(f,(unsigned char*)b,&len);
+	*l = len;
+	return e;
+}
+#endif
+
+int MAX_MESSAGE_LENGTH = 32000;
+
+const int    cMSG_TYPE_BUFR_TABLES = 11;
+
+static string WRITE("w");  // i/o mode
+
+//____________________________________________________________________
+//==================================================================== MvObsSet
+//____________________________________________________________________
+
+MvObsSet :: MvObsSet( const char *aName )
+ : _minTime( 2247, 6, 20 )
+ , _maxTime( 1799, 12, 31 )
+{
+   _IO_mode = "r";
+   _init( aName );
+}
+//____________________________________________________________________
+
+MvObsSet :: MvObsSet( const char *aName, const char *aMode )
+ : _minTime( 2247, 6, 20 )
+ , _maxTime( 1799, 12, 31 )
+{
+   _IO_mode = aMode;
+   _init( aName );
+}
+//____________________________________________________________________
+#ifdef METVIEW
+MvObsSet :: MvObsSet( MvRequest &aRequest, const char *aMode )
+ : _minTime( 2247, 6, 20 )
+ , _maxTime( 1799, 12, 31 )
+{
+   _IO_mode = aMode;
+   const char *aName = 0;
+   aRequest.getValue( aName, "PATH" );
+   _init( aName );
+}
+#endif
+//____________________________________________________________________
+
+MvObsSet :: ~MvObsSet()
+{
+   close();
+   delete [] _message;    // added 950201/vk
+   if( _bufrOut )
+     delete _bufrOut;
+#ifdef METVIEW_PREPBUFR
+   if( prepBufr_  )
+     delete prepBufr_;
+#endif
+
+}
+//____________________________________________________________________
+void
+MvObsSet :: _init( const  char *aName )
+{
+   _bufrFile = 0;
+   _msgCount = -1;
+   _obsCount = -1;
+   _msgNumber = -1;
+   _msgLen = 0;
+   _minMaxDone = false;
+  // _message = new char[ MAX_MESSAGE_LENGTH ];
+   _IO_buffer_OK = false;
+#ifdef METVIEW_PREPBUFR
+   isPrepBufrFile_ = false;
+   prepBufr_ = 0;
+#endif
+
+   Open( aName );
+
+   if( _IO_mode == WRITE )  //should be two classes!!!!!!! (but this a working one...)
+   {
+     _message = 0;
+     _bufrOut = new MvBufrOut( MAX_MESSAGE_LENGTH, this );  //( _message, MAX_MESSAGE_LENGTH, this );
+   }
+   else
+   {
+     _message = new char[ MAX_MESSAGE_LENGTH ];
+     _bufrOut = 0;
+
+#ifdef METVIEW_PREPBUFR
+#ifdef METVIEW
+     cout << "MvObsSet::_init - PrepBUFR support available, testing if PrepBUFR file..." << endl;
+#endif
+     firstObs_ = next();                    //-- check if PrepBUFR file (contains BUFR tables)
+     isPrepBufrFile_ = ( firstObs_.messageType() == cMSG_TYPE_BUFR_TABLES );
+     rewind();
+
+//aki:
+//  1) test if PrepBUFR tables have already been extracted: MV_PREPBUFR_TABLES_EXTRACTED
+//  2) extract only if not yet extracted
+     if( isPrepBufrFile_ && ! getenv("MV_PREPBUFR_TABLES_EXTRACTED") )
+     {
+        prepBufrFile();
+        putenv("MV_PREPBUFR_TABLES_EXTRACTED=YES");
+     }
+#else
+     cout << "MvObsSet::_init - PrepBUFR support NOT available!!!!" << endl;
+#endif
+   }
+   //cout << "in MvObsSet::_init(" << aName << ")" << endl;
+}
+//____________________________________________________________________ setSubsetMax
+void
+MvObsSet :: setSubsetMax( int subsetMax )
+{
+  //_bufrOut->_maxNrSubsets = subsetMax; //replaced vk 941219
+  _bufrOut->setSubsetCount( subsetMax );
+}
+//____________________________________________________________________ Open
+bool
+MvObsSet :: Open( const char* aFileName )
+{
+   _msgCount = -1;
+   _msgNumber = 0;
+
+   _bufrFile = fopen( aFileName, _IO_mode.c_str() );
+
+   if( _bufrFile )
+      return true;
+   else
+   {
+      cerr << " >>> MvObsSet::Open: file \'" << aFileName << "\', not opened!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "Unable to open file %s", aFileName );
+#endif
+      return false;
+   }
+}
+//____________________________________________________________________ close
+bool
+MvObsSet :: close()
+{
+   long myReturnValue = -1;
+   if( _bufrFile )
+   {
+     if( _IO_mode == WRITE && _bufrOut->_outState == kBufrOut_dataInBuffers )
+     {
+       _bufrOut->encode();
+     }
+
+     myReturnValue = fclose( _bufrFile);
+     _bufrFile = 0;
+   }
+   _IO_buffer_OK = false;
+   return myReturnValue ? false : true;
+}
+//____________________________________________________________________ rewind
+void
+MvObsSet :: rewind()
+{
+   _msgNumber = 0;
+   if( _bufrFile )
+     ::rewind( _bufrFile );  // execute C command 'rewind'!
+   else
+     cerr << " >>> MvObsSet::rewind: File Unit not valid!" << endl;
+}
+
+//____________________________________________________________________ next
+// Reads next BUFR message and returns an MvObs constructed with it.
+// An MvObs without a message is returned at EOF.
+//------------------------------------------------
+MvObs
+MvObsSet::next()
+{
+   const int EOF_STATUS = -1;
+
+   if( ! _bufrFile )
+     return MvObs( NULL );  // nothing if file not ok
+
+   if( _IO_mode == WRITE )
+     return MvObs( NULL );  // no next when writing !
+
+   _msgLen = MAX_MESSAGE_LENGTH;
+
+   _msgNumber++;
+
+   long lastPos = ftell(_bufrFile);
+   long myError = _readbufr( _bufrFile, _message, &_msgLen );
+
+   if ( myError == -3 )  // Bufr too small
+     {
+
+       // Go back to previous and allocate memory
+       fseek(_bufrFile,lastPos,SEEK_SET);
+       delete [] _message;
+       MAX_MESSAGE_LENGTH = _msgLen + 8;
+       _message = new char[ MAX_MESSAGE_LENGTH ];
+       _msgLen = MAX_MESSAGE_LENGTH;
+
+       if ( ! _message )
+	 {
+	   cerr << "MvObsSet::next: Cannot allocate memory for next BUFR message" << endl;
+#ifdef METVIEW
+	   marslog( LOG_EROR, "Cannot allocate memory for next BUFR message" );
+#endif
+	   _msgLen = MAX_MESSAGE_LENGTH  = 0;
+	   _IO_buffer_OK = false;
+	   return MvObs( NULL );
+	 }
+       else
+	 {
+	   cout << "MvObsSet::next: Allocated more memory for BUFR msg" << endl;
+	   myError = _readbufr( _bufrFile, _message, &_msgLen );
+	 }
+     }
+
+   if( myError )
+     {
+       if( myError != EOF_STATUS )
+	 {
+	   cerr << "MvObsSet::next: Failed reading next BUFR msg, returned status=" << myError << endl;
+#ifdef METVIEW
+	   marslog( LOG_EROR, "Failed reading next BUFR msg, status = %ld", myError );
+#endif
+	 }
+       _IO_buffer_OK = false;
+       return MvObs( NULL );
+     }
+
+#ifdef METVIEW_PREPBUFR
+   //--
+   //-- NCEP PrepBUFR files may contain msgs with ZERO subsets!!!
+   //-- 'bufrex' cannot handle such illegal msgs, if so we must skip it
+   //--
+   MvBufr tmpBufr( _message, _msgLen, _msgNumber  ); //-- make BUFR octets into an object
+   if( tmpBufr.subsetCount() == 0 )
+     {
+       ostringstream os;
+       os << "Original BUFR msg " << _msgNumber
+          << " has ZERO subsets - ignoring (not counting) this illegal msg!"
+          << ends;
+
+       cout << os.str() << endl;
+
+#ifdef METVIEW
+       //-- why this marslog crashes ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+//       marslog( LOG_WARN, "%s", os.str().c_str() );
+       //-- why this marslog crashes ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
+#endif
+
+       //-- get next msg and cross your fingers it fits into current _message array
+       _msgLen = MAX_MESSAGE_LENGTH;
+       myError = _readbufr( _bufrFile, _message, &_msgLen );
+
+       //_msgNumber++;
+     }
+#endif
+
+     _IO_buffer_OK = true;
+     return MvObs( new MvBufr( _message, _msgLen, _msgNumber ) );
+}
+
+//____________________________________________________________________ add
+void
+MvObsSet::add( MvObs& anObs )
+{
+   if( _IO_mode != WRITE )
+     return;  // no add when reading !
+
+   _bufrOut->add( anObs );
+   _msgCount++; //??
+}
+//____________________________________________________________________ write
+void
+MvObsSet::write( const char* aMsg, int aMsgLen )
+{
+  if( _IO_mode != WRITE )
+    return;  // no write when reading !
+
+  fwrite( aMsg, sizeof( char ), aMsgLen, _bufrFile );
+  _msgNumber++;
+}
+
+//____________________________________________________________________ messageCount
+// Returns the number of BUFR messages found in the file.
+// WARNING: a packed BUFR message may contain several observations
+//          i.e. the nr of BUFR msgs found <= nr of observation msgs
+//          i.e. messageCount() <= obsCount()
+//------------------------------------------------------------------
+int
+MvObsSet :: messageCount()
+{
+   if( _msgCount < 1 )
+   {
+      if( _bufrFile )
+      {
+         long myOriginalFilePos = ftell( _bufrFile );
+	 rewind();
+
+         _msgCount = 0;
+         while( next() )
+	    _msgCount++;
+
+	 fseek( _bufrFile, myOriginalFilePos, SEEK_SET );
+      }
+   }
+   return _msgCount;
+}
+//____________________________________________________________________ obsCount
+int
+MvObsSet :: obsCount()
+{
+   if( _obsCount < 1 )
+   {
+      if( _bufrFile )
+      {
+         long myOriginalFilePos = ftell( _bufrFile );
+	 rewind();
+
+         _obsCount = 0;
+	 MvObs oneBufrMsg;
+         while( ( oneBufrMsg = next() ) )
+	    _obsCount += oneBufrMsg._bufrIn->subsetCount();
+
+	 fseek( _bufrFile, myOriginalFilePos, SEEK_SET );
+      }
+   }
+   return _obsCount;
+}
+//_________________________________________________________ searchMinMaxTime
+void
+MvObsSet :: searchMinMaxTime()
+{
+   if( ! _minMaxDone )
+   {
+      if( _bufrFile )
+      {
+         long myOriginalFilePos = ftell( _bufrFile );   rewind();
+
+         TDynamicTime msgTime;
+         MvObs myObs;
+         while( ( myObs = next() ) )
+         {
+            msgTime = myObs.msgTime();
+            if( msgTime > _maxTime )
+                _maxTime = msgTime;
+            if( msgTime < _minTime )
+                _minTime = msgTime;
+         }
+
+         fseek( _bufrFile, myOriginalFilePos, SEEK_SET );
+
+      }
+      _minMaxDone = true;
+   }
+}
+#ifdef METVIEW_PREPBUFR
+//____________________________________________________________________ prepBufrFile
+bool
+MvObsSet::prepBufrFile()
+{
+   if( isPrepBufrFile_ )
+   {
+#ifdef METVIEW
+      cout << "in MvObsSet::prepBufrFile()" << endl;
+      marslog( LOG_INFO, "BUFR file contains BUFR tables, processing..." );
+#endif
+                                            //-- create new PrepBUFR table files etc...
+      prepBufr_ = new MvPrepBufrPrep( *this );
+      bool ok = prepBufr_->prepareAll();
+      if( !ok )
+      {
+#ifdef METVIEW
+         marslog( LOG_EROR, "Unable to process PrepBUFR file" );
+#endif
+         cerr << "Errors: unable to process the PrepBUFR file" << endl;
+         return false;
+      }
+   }
+   return isPrepBufrFile_;
+}
+#endif
+
+//____________________________________________________________________ minDate
+#ifdef METVIEW
+MvDate
+MvObsSet :: minDate()
+{
+   searchMinMaxTime();
+   double timfloat = 10000.0L*(double)_minTime.GetYear()
+                     + 100.0L*(double)_minTime.GetMonth()
+                     +        (double)_minTime.GetDay()
+                     +        (double)_minTime.GetHour()/24.0L
+                     +        ((double)_minTime.GetMin()+0.5L)/60.0L/24.0L; //rounded
+   return MvDate( timfloat );
+}
+//____________________________________________________________________ maxDate
+MvDate
+MvObsSet :: maxDate()
+{
+   searchMinMaxTime();
+   double timfloat = 10000.0L*(double)_maxTime.GetYear()
+                     + 100.0L*(double)_maxTime.GetMonth()
+                     +        (double)_maxTime.GetDay()
+                     +        (double)_maxTime.GetHour()/24.0L
+                     +        ((double)_maxTime.GetMin()+0.5L)/60.0L/24.0L; //rounded
+   return MvDate( timfloat );
+}
+#endif
+
+/*-------
+//____________________________________________________________________ operator +=
+// use 'add' member function instead!
+void
+MvObsSet :: operator += ( MvObs anObs )
+{
+   if( _IO_mode == "r" )
+     return;  // no writing for read files !
+
+   cout << "MvObsSet::operator+= not yet implemented..." << endl;
+}
+-------*/
+//___________________________________________________________________
+//=================================================================== MvObsSetIterator
+//___________________________________________________________________
+
+MvObsSetIterator :: MvObsSetIterator( MvObsSet& s)
+{
+   ObsSet = &s;
+
+   _NoFiltersSet = true;
+   _TimeFilterState = kTFS_notSet;
+   _WmoBlockCount = 0;
+   _WmoStationCount = 0;
+   _MsgTypeCount = 0;
+   _MsgSubtypeCount = 0;
+   _SelectState = SF_notSet;
+   _SelectValueCount = 0;
+   useObsTime_ = false;
+}
+//___________________________________________________________________
+
+MvObsSetIterator :: ~MvObsSetIterator()
+{
+}
+//___________________________________________________________________ operator()
+
+
+MvObs MvObsSetIterator :: operator() ( ENextReturn returnType )
+{
+  if( ! current || ( returnType == NR_returnMsg ) || ! current.Advance() )
+    next();
+
+  while( current && ! AcceptedObs( current ) )
+  {
+    if( ! current || ( returnType == NR_returnMsg ) || ! current.Advance() )
+      next();
+  }
+  return current;
+}
+//____________________________________________________________________ next
+
+void
+MvObsSetIterator :: next()
+{
+  static int change_me_with_debugger = 0;
+
+  current = ObsSet->next();
+
+#ifdef METVIEW
+  if( mars.debug && ( ( ObsSet->messageNumber() == 1 ) || change_me_with_debugger ) )
+    current.printAllValues();
+#endif
+}
+//____________________________________________________________________ setTime
+
+void
+MvObsSetIterator :: setTime( const TDynamicTime& anObsTime )
+{
+   setTimeRange( anObsTime, anObsTime );
+}
+//____________________________________________________________________
+
+void
+MvObsSetIterator :: setTimeRange( const TDynamicTime& anObsTime, short deltaInMinutes )
+{
+   fBeginTime = fEndTime = anObsTime;
+   fBeginTime.ChangeByMinutes( -deltaInMinutes );
+   fEndTime.ChangeByMinutes( deltaInMinutes );
+   _TimeFilterState = kTFS_bothSet;
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setTimeRange( const TDynamicTime& aBeginTime, const TDynamicTime& anEndTime )
+{
+   fBeginTime = aBeginTime;
+   fEndTime = anEndTime;
+   _TimeFilterState = kTFS_bothSet;
+   _NoFiltersSet = false;
+}
+//_____________________________________________________________ setTimeRangeWithoutDate
+// add 941229/vk
+//
+// parameters: in format HHMM, i.e. 1200 == 12.00, 15 == 0.15, i.e. 100*hour+min!!!
+//             values are normalized into range [0000..2400)
+//_________________________________________
+void
+MvObsSetIterator :: setTimeRangeWithoutDate( int aBegin, int anEnd )
+{
+   TDynamicTime aTime;  // date part is not used, so let's use today..
+   int myBegin = aBegin;
+   int myEnd   = anEnd;
+
+   while( myBegin < 0 ) myBegin += 2400;
+   aTime.SetTime( myBegin / 100, myBegin % 100, 0 );
+   fBeginTime = aTime;
+
+   while( myEnd >= 2400 ) myEnd -= 2400;
+   aTime.SetTime( myEnd / 100, myEnd % 100, 0 );
+   fEndTime = aTime;
+
+   _TimeFilterState = kTFS_clockSet;
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setWmoBlock( int aWmoBlockNumber )
+{
+   if( _WmoBlockCount >= MAX_FILTER_LIST_ARRAY_SIZE )
+   {
+      cerr << ">>> MvObsIterator::setWmoBlock: array overflow!!!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "MvObsIterator::setWmoBlock: array overflow!" );
+#endif
+      return;
+   }
+   _WmoBlockNumber[ _WmoBlockCount++ ] = aWmoBlockNumber;
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setWmoStation( long aWmoStation )
+{
+   if( _WmoStationCount >= MAX_FILTER_LIST_ARRAY_SIZE )
+   {
+      cerr << ">>> MvObsIterator::setWmoStation: array overflow!!!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "MvObsIterator::setWmoStation: array overflow!" );
+#endif
+      return;
+   }
+   _WmoStation[ _WmoStationCount++ ] = aWmoStation;
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: select( long aDescriptor
+			  , float aValue )
+{
+   if( _SelectValueCount >= MAX_FILTER_LIST_ARRAY_SIZE )
+   {
+      cerr << ">>> MvObsIterator::select: array overflow!!!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "MvObsIterator::select: array overflow!" );
+#endif
+      return;
+   }
+   if( _SelectValueCount > 0 && aDescriptor != _SelectDescriptor )
+   {
+      cerr << ">>> MvObsIterator::select: changing the descriptor while building the list!!!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "MvObsIterator::select: changing the descriptor while building the list!" );
+#endif
+   }
+  _SelectDescriptor = aDescriptor;
+  _SelectValue[ _SelectValueCount++ ] = aValue;
+  _SelectState = SF_listSet;
+  _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: selectRange( long aDescriptor
+			       , float firstValue
+			       , float secondValue )
+{
+  _SelectDescriptor = aDescriptor;
+  _SelectValue[ 0 ] = firstValue < secondValue ? firstValue : secondValue;
+  _SelectValue[ 1 ] = secondValue > firstValue ? secondValue : firstValue;
+  _SelectValueCount = 2;
+  _SelectState = SF_rangeSet;
+  _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: excludeRange( long aDescriptor
+			        , float firstValue
+			        , float secondValue )
+{
+  _SelectDescriptor = aDescriptor;
+  _SelectValue[ 0 ] = firstValue < secondValue ? firstValue : secondValue;
+  _SelectValue[ 1 ] = secondValue > firstValue ? secondValue : firstValue;
+  _SelectValueCount = 2;
+  _SelectState = SF_excludeRangeSet;
+  _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setXSectionLine( const MvLocation& aStartPoint
+			      , const MvLocation& anEndPoint
+			      , float aDeltaInMeters )
+{
+   fXSectionLine.setLine( aStartPoint, anEndPoint );
+   fXSectionLine.setMaxDelta( aDeltaInMeters );
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setArea( const MvLocation& aCorner1, const MvLocation& aCorner2 )
+{
+   fArea.set( aCorner1, aCorner2 );
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setMessageType( int aMsgType )
+{
+   if( _MsgTypeCount >= MAX_FILTER_LIST_ARRAY_SIZE )
+   {
+      cerr << ">>> MvObsIterator::setMessageType: array overflow!!!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "MvObsIterator::setMessageType: array overflow!" );
+#endif
+      return;
+   }
+   _MsgType[ _MsgTypeCount++ ] = aMsgType;
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+void
+MvObsSetIterator :: setMessageSubtype( int aMsgSubtype )
+{
+   if( _MsgSubtypeCount >= MAX_FILTER_LIST_ARRAY_SIZE )
+   {
+      cerr << ">>> MvObsIterator::setMessageSubtype: array overflow!!!" << endl;
+#ifdef METVIEW
+      marslog( LOG_EROR, "MvObsIterator::setMessageSubtype: array overflow!" );
+#endif
+      return;
+   }
+   _MsgSubtype[ _MsgSubtypeCount++ ] = aMsgSubtype;
+   _NoFiltersSet = false;
+}
+//____________________________________________________________________
+float
+MvObsSetIterator :: distanceFromXSectionLine( const MvLocation& aPoint )
+{
+   if( fXSectionLine.startPoint().latitude() == MISSING_LOC_VALUE )
+   {
+      return MISSING_LOC_VALUE;
+   }
+   return fXSectionLine.deltaInMeters( aPoint );
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: TimeOk( MvObs *anObs ) const
+{
+   switch( _TimeFilterState )
+   {
+   case kTFS_notSet:
+     break;   //return true;
+
+   case kTFS_clockSet:
+     {
+       long obsTime;
+       if( useObsTime_ )
+	 obsTime = anObs->obsTime().ClockInSeconds();  //-- need to decode => slow
+       else
+	 obsTime = anObs->msgTime().ClockInSeconds();  //-- use metadata => fast
+
+       long time1 = fBeginTime.ClockInSeconds();
+       long time2 = fEndTime.ClockInSeconds();
+
+       if( time1 <= time2 )        // e.g.  12-18
+       {
+         if( obsTime < time1 || obsTime > time2 )
+	   return false;
+       }
+       else    // time1 > time2       e.g.  21-03
+       {
+          if( obsTime < time1 && obsTime > time2 )
+	    return false;
+       }
+     }
+     break;
+
+   case kTFS_bothSet:
+     {
+       TDynamicTime myTime;
+       if( useObsTime_ )
+	 myTime = anObs->obsTime();  //-- time from obs => decode first => slow
+       else
+	 myTime = anObs->msgTime();  //-- time from sec1 => no decode => fast
+
+       if( myTime < fBeginTime || myTime > fEndTime )
+          return false;
+     }
+     break;
+   }
+
+   return true;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: WmoBlockOk( MvObs *anObs ) const
+{
+  if( _WmoBlockCount < 1 )
+    return true;
+
+  for( int i = 0; i < _WmoBlockCount; i++ )
+    if( anObs->WmoBlockNumber() == _WmoBlockNumber[ i ] )
+      return true;
+
+  return false;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: WmoStationOk( MvObs *anObs ) const
+{
+   if( _WmoStationCount < 1 )
+      return true;
+
+  for( int i = 0; i < _WmoStationCount; i++ )
+    if( anObs->WmoIdentNumber() == _WmoStation[ i ] )
+      return true;
+
+  return false;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: WithinXSectionLine( MvObs *anObs ) const
+{
+   if( fXSectionLine.maxDelta() < 0 )    // not set ?
+      return true;
+
+   if( fXSectionLine.withinDelta( anObs->location() ) )
+     return true;
+   else
+     return false;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: InsideArea( MvObs *anObs ) const
+{
+   if( fArea.lowerLeft().latitude() == MISSING_LOC_VALUE )
+     return true;
+   else
+     return fArea.inside( anObs->location() );
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: msgTypeOk( MvObs *anObs ) const
+{
+   if( _MsgTypeCount < 1 )
+      return true;
+
+  for( int i = 0; i < _MsgTypeCount; i++ )
+    if( anObs->messageType() == _MsgType[ i ] )
+      return true;
+
+  return false;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: msgSubtypeOk( MvObs *anObs ) const
+{
+   if( _MsgSubtypeCount < 1 )
+      return true;
+
+  for( int i = 0; i < _MsgSubtypeCount; i++ )
+    if( anObs->messageSubtype() == _MsgSubtype[ i ] )
+      return true;
+
+  return false;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: selectOk( MvObs *anObs ) const
+{
+  if( _SelectState == SF_notSet )
+    return true;
+
+  float myValue = anObs->value( _SelectDescriptor );
+  if( myValue == kBufrMissingValue )
+    return false;
+
+  switch( _SelectState )
+  {
+    case SF_notSet:
+
+        break;
+
+    case SF_listSet:
+
+        {
+          for( int i = 0; i < _SelectValueCount; i++ )
+            if( myValue == _SelectValue[ i ] )
+              return true;
+        }
+        return false;
+
+    case SF_rangeSet:
+
+        if( myValue < _SelectValue[ 0 ] || myValue > _SelectValue[ 1 ] )
+          return false;
+        break;
+
+    case SF_excludeRangeSet:
+
+        if( myValue >= _SelectValue[ 0 ] && myValue <= _SelectValue[ 1 ] )
+          return false;
+        break;
+
+  }
+  return true;
+}
+//____________________________________________________________________
+bool
+MvObsSetIterator :: AcceptedObs( MvObs& anObs ) const
+{
+   if( _NoFiltersSet )
+      return true;
+
+   if( ! msgTypeOk( &anObs ) )         // from Section 1: no decoding required
+      return false;
+   if( ! msgSubtypeOk( &anObs ) )      // from Section 1: no decoding required
+      return false;
+
+   if( ! TimeOk( &anObs ) )            // from Section 1: no decoding required
+      return false;
+
+   if( ! WmoBlockOk( &anObs ) )        // others require decoding of the msg
+      return false;
+   if( ! WmoStationOk( &anObs ) )
+      return false;
+
+   if( ! selectOk( &anObs ) )
+      return false;
+
+   if( ! WithinXSectionLine( &anObs ) )
+      return false;
+
+   if( ! InsideArea( &anObs ) )
+      return false;
+
+   return true;
+}
+//_____________________________________________________________ operator<<
+
+ostream& operator<< ( ostream& aStream, const MvObsSetIterator& aFilter )
+{
+ int i;
+
+  aStream << "Observation Filter values set:\n";
+  if( aFilter._NoFiltersSet )
+  {
+    aStream << "   No filter values set!";
+    aStream << endl;
+  }
+  else
+  {
+    if( aFilter._TimeFilterState != kTFS_notSet )
+    {
+      aStream << "   Timerange: ";
+      switch( aFilter._TimeFilterState )
+      {
+      case kTFS_notSet:
+        aStream << "[not set!]";
+        break;
+
+      case kTFS_clockSet:
+        aStream << aFilter.fBeginTime.GetHour() << ".";
+        aStream.width(2); aStream.fill('0');
+        aStream << aFilter.fBeginTime.GetMin();
+        if( aFilter.fBeginTime != aFilter.fEndTime )
+        {
+          aStream << " - " << aFilter.fEndTime.GetHour() << ".";
+          aStream.width(2); aStream.fill('0');
+          aStream << aFilter.fEndTime.GetMin();
+        }
+        break;
+
+      case kTFS_bothSet:
+        aStream << aFilter.fBeginTime;
+        if( aFilter.fBeginTime != aFilter.fEndTime )
+          aStream << " - " << aFilter.fEndTime;
+        break;
+      }
+      aStream << endl;
+    }
+
+    if( aFilter._MsgTypeCount > 0 )
+    {
+      aStream << "   Message types: ";
+      for( i=0; i < aFilter._MsgTypeCount; i++ )
+        aStream << " " << aFilter._MsgType[ i ];
+      aStream << endl;
+    }
+
+    if( aFilter._MsgSubtypeCount > 0 )
+    {
+      aStream << "   Message subtypes: ";
+      for( i=0; i < aFilter._MsgSubtypeCount; i++ )
+        aStream << " " << aFilter._MsgSubtype[ i ];
+      aStream << endl;
+    }
+
+    if( aFilter._WmoBlockCount > 0 )
+    {
+      aStream << "   WMO Blocks:";
+      for( i=0; i < aFilter._WmoBlockCount; i++ )
+        aStream << " " << aFilter._WmoBlockNumber[ i ];
+      aStream << endl;
+    }
+
+    if( aFilter._WmoStationCount > 0 )
+    {
+      aStream << "   WMO Stations:";
+      for( i=0; i < aFilter._WmoStationCount; i++ )
+        aStream << " " << aFilter._WmoStation[ i ];
+      aStream << endl;
+    }
+
+    if( aFilter._SelectState != SF_notSet )
+    {
+      aStream << "   Select ";
+      switch( aFilter._SelectState )
+      {
+       case SF_notSet:
+         aStream << "by values/range: [not set!]";
+         break;
+
+       case SF_listSet:
+         aStream << "by values: ";
+         break;
+
+       case SF_rangeSet:
+         aStream << "by range: ";
+         break;
+
+       case SF_excludeRangeSet:
+         aStream << "by excluding range: ";
+         break;
+      }
+
+      for( i=0; i < aFilter._SelectValueCount; i++ )
+        aStream << aFilter._SelectValue[ i ] << " ";
+      aStream << "(descr. " << aFilter._SelectDescriptor << ")";
+      aStream << endl;
+    }
+
+    if( aFilter.fXSectionLine.startPoint().latitude() != MISSING_LOC_VALUE )
+    {
+      aStream << "   Cross Section Line: " << aFilter.fXSectionLine;
+      aStream << endl;
+    }
+
+    if( aFilter.fArea.lowerLeft().latitude() != MISSING_LOC_VALUE )
+    {
+      aStream << "   Area: " << aFilter.fArea;
+      aStream << endl;
+    }
+   // aStream << endl;  // calling method should add the final 'endl'!
+  }
+  return aStream;
+}
diff --git a/src/eckit_readers/MvObsSet.h b/src/eckit_readers/MvObsSet.h
new file mode 100644
index 0000000..3ecea72
--- /dev/null
+++ b/src/eckit_readers/MvObsSet.h
@@ -0,0 +1,337 @@
+/***************************** LICENSE START ***********************************
+
+ Copyright 2012 ECMWF and INPE. This software is distributed under the terms
+ of the Apache License version 2.0. In applying this license, ECMWF does not
+ waive the privileges and immunities granted to it by virtue of its status as
+ an Intergovernmental Organization or submit itself to any jurisdiction.
+
+ ***************************** LICENSE END *************************************/
+
+// MvObsSet.h
+
+
+#ifndef MvObsSet_DEFINED
+#define MvObsSet_DEFINED
+
+//-- <aki> temporarily for testing only; should be done via 'configure'
+#define METVIEW_PREPBUFR
+
+#include "MvBufrObs.h"
+
+class MvPrepBufrPrep;
+
+//--------------------------------------------------------------- MvObsSet
+//! A class to access a file containing observation reports
+/*! This class is used to handle a file containing several
+ *  observation reports stored as BUFR messages.
+ */
+class MvObsSet
+{
+ friend class MvObsSetIterator;
+ friend class MvBufrOut;
+
+	// prevent copy
+
+	MvObsSet( const MvObsSet& );
+	void operator= ( const MvObsSet& );
+	void _init( const char* aFile );
+
+ public:
+
+//! Constructor with the input BUFR file name as an argument
+   MvObsSet( const char* fileName );
+
+//! Constructor with a BUFR file name and access mode as arguments
+/*! This constructor can be used for writing to a file, use
+ *  access mode "w" or "a".
+ */
+   MvObsSet( const char* fileName, const char* accessMode );
+
+#ifdef METVIEW
+//! Constructor with a BUFR request and access mode as arguments
+    MvObsSet( MvRequest&, const char* aMode = "r" );
+
+//! Returns the minimum (earliest) date found in MvObsSet
+    MvDate  minDate();
+
+//! Returns the maximum (latest) date found in MvObsSet
+    MvDate  maxDate();
+#endif
+
+//! Destructor
+   ~MvObsSet();
+
+//! Set max subset count for a new file
+      void  setSubsetMax( int subsetMax );
+
+//! Add one observation report to output file
+      void  add( MvObs& anObs );
+
+//! Rewind the input file
+      void  rewind();
+
+//! Returns the number of BUFR messages in the input file
+/*! This number is smaller than returned by method obsCount()
+ *  if the input file contains multisubset BUFR messages.
+ */
+       int  messageCount(); // nr of BUFR-messages in a file
+
+//! Returns the number of observation reports in the input file
+/*! This number is bigger than returned by method messageCount()
+ *  if the input file contains multisubset BUFR messages.
+ */
+       int  obsCount();     // nr of observation messages in a BUFR-file
+
+//! Returns the (running) number of the current BUFR message
+       int  messageNumber(){ return (int)_msgNumber; }
+
+//! Closes the input/output file
+   bool  close();
+
+//! Prepares 'PrepBUFR' tables if the input file contains BUFR tables
+      bool  prepBufrFile();
+
+            //-- hack for ObsFilter (vk 970729) --
+      void  write( MvObs& anObs ){ if(_bufrOut) _bufrOut->write( anObs ); }
+
+     MvObs& firstObs(){ return firstObs_; }
+
+ protected:
+     MvObs  next();
+   bool  Open( const char* fileName );  //, char* aMode = "r" );
+      void  write( const char* aMsg, int aMsgLen );
+      void  searchMinMaxTime();
+ //Logical  currentInputBufferOK() {return _IO_buffer_OK;}
+
+ protected:
+     string  _IO_mode;
+       FILE* _bufrFile;
+       long  _msgNumber;
+       long  _msgCount;
+       long  _obsCount;
+   TDynamicTime  _minTime;
+   TDynamicTime  _maxTime;
+    bool  _minMaxDone;
+       long  _msgLen;
+       char* _message;
+       bool  _IO_buffer_OK;
+
+  MvPrepBufrPrep* prepBufr_;
+       bool  isPrepBufrFile_;
+      MvObs  firstObs_;
+
+  MvBufrOut* _bufrOut;
+};
+
+//------------------------------------------------------------------------------
+
+const int MAX_FILTER_LIST_ARRAY_SIZE = 100;
+
+//! \enum ENextReturn Mnemonic names to define subset access
+/*! Used in MvObsSetIterator::operator() to tell which
+ *  observation report to return. \n \n
+ *  Use NR_returnMsg to skip the remaining observation reports
+ *  in a multisubset BUFR message that does not contain<aki>
+ *  These mnemonics have an effect only on multisubset
+ *  BUFR messages. For single subset BUFR messages both
+ *  mnemonics function the same.
+ */
+enum ENextReturn
+{
+   NR_returnObs  /**< - return the next available subset (from this or the next BUFR msg */
+  ,NR_returnMsg  /**< - return the first subset from the next BUFR message */
+};
+
+//! \enum ESelectFilterState Used internally by MvObsSetIterator
+enum ESelectFilterState
+{
+   SF_notSet
+  ,SF_listSet
+  ,SF_rangeSet
+  ,SF_excludeRangeSet
+};
+
+//! \enum ETimeFilterState Used internally by MvObsSetIterator
+enum ETimeFilterState
+{
+   kTFS_notSet
+  ,kTFS_clockSet
+  ,kTFS_bothSet
+};
+
+//------------------------------------------------------------ MvObsSetIterator
+//! A class to filter a set of observation reports
+/*! This class is used to filter a file containing several
+ *  observation reports stored in BUFR messages. Several
+ *  different filtering criteria are available. When several
+ *  filtering criteria are set the resulting filter will use
+ *  logical AND to combine different criteria.
+ */
+class MvObsSetIterator
+{
+//! Writes the current filtering options of 'anIter' into stream 'aStream'
+ friend ostream& operator<< ( ostream& aStream, const MvObsSetIterator& anIter );
+
+	MvObs     current;
+	MvObsSet* ObsSet;
+
+ public:
+//! Constructor with a MvObset as an argument
+	MvObsSetIterator( MvObsSet& );
+//! Destructor
+	~MvObsSetIterator();
+
+//! Operator that returns the next available valid observation report
+/*! Subset structure is hidden from the calling application.
+ */
+	MvObs operator() () { return operator()( NR_returnObs ); }
+
+//! Operator that returns the next valid observation report
+/*! Using mnemonic argument 'NR_returnMsg' accesses only first
+ *  subsets in multisubset BUFR messages. See enum ENextReturn.
+ */
+	MvObs operator() ( ENextReturn returnType );
+
+//! Returns the sequence number of the current BUFR message
+     int   msgNumber() { return (ObsSet ? (int)ObsSet->_msgNumber : -1); }
+
+//! Returns the subset number of the current observation report in the BUFR message
+     int   subsetNumber() { return current.subsetNumber(); }
+
+//! Defines where the date/time for filtering should be taken from
+/*! Date and time information is always available as metadata in
+ *  BUFR section 1, and normally also in the data (observation report)
+ *  itself. In single subset messages these times should be the same,
+ *  but for some multisubset messages observation reports may come from
+ *  different times. \n \n
+ *  The default is to use date/time from the metadata in section 1 (faster),
+ *  but by calling this method it is possible to change to use date/time
+ *  from the data.
+ */
+     void  useObsTime( bool b = true ){ useObsTime_ = b; }
+
+//! Set the filtering criteria for a single date/time
+     void  setTime( const TDynamicTime& anObsTime );
+
+//! Set the filtering criteria for a date/time range
+/*! Observation reports that have their data/time within the range
+ *  'anObsTime'-'deltaInMinutes' and 'anObsTime'+'deltaInMinutes'
+ *  will be selected.
+ */
+     void  setTimeRange( const TDynamicTime& anObsTime, short deltaInMinutes );
+
+//! Set the filtering criteria for a date/time range
+     void  setTimeRange( const TDynamicTime& aBeginTime, const TDynamicTime& anEndTime );
+
+//! Set the filtering criteria for time range only (date ignored)
+/*! Observation reports that have their time stamp between 'aBeginTime'
+ *  and 'anEndTime' will be selected. \n \n
+ *  Time format is HHMM, i.e. 100*hours+minutes. Thus the value 1500
+ *  signifies 3PM, and the value 15 signifies 15 mins past midnight.
+ */
+     void  setTimeRangeWithoutDate( int aBegin, int anEnd );
+
+//! Set the filtering criteria for accepted WMO block numbers
+/*! This method can be called several times in order to set
+ *  more than one accepted WMO block, i.e. WMO blocks are
+ *  combined with logical OR operator.
+ */
+     void  setWmoBlock( int aWmoBlock );
+
+//! Set the filtering criteria for accepted WMO station numbers
+/*! This method can be called several times in order to set
+ *  more than one accepted WMO station, i.e. WMO stations are
+ *  combined with logical OR operator.
+ */
+     void  setWmoStation( long aWmoStation );
+
+//! Set the filtering criteria for an accepted area
+/*! Observation report locations must be within the given area.
+ */
+     void  setArea( const MvLocation& aCorner1, const MvLocation& aCorner2 );
+
+//! Set filtering criteria for a proximity of a cross section line
+     void  setXSectionLine( const MvLocation& aStartPoint
+			  , const MvLocation& anEndPoint
+			  , float aDeltaInMeters );
+
+//! Set the filtering criteria for accepted BUFR message types
+/*! This method can be called several times in order to set
+ *  more than one accepted BUFR message type, i.e. message types are
+ *  combined with logical OR operator.
+ */
+     void  setMessageType( int aMsgType );
+
+//! Set the filtering criteria for accepted BUFR message local subtypes
+/*! This method can be called several times in order to set
+ *  more than one accepted BUFR message local subtype, i.e. message subtypes
+ *  are combined with logical OR operator.
+ */
+     void  setMessageSubtype( int aMsgSubtype );
+
+//! Set the filtering criteria for data 'aDescriptor' having value 'aValue'
+/*! Observation reports where the data corresponding to descriptor 'aDescriptor'
+ *  has value 'aValue' will be selected.\n \n
+ *  This method can be called several times in order to set more than one
+ *  accepted value for the same 'aDescriptor', i.e. values are
+ *  combined with logical OR operator.
+
+ */
+     void  select( long aDescriptor
+		 , float aValue );
+
+
+//! Set the filtering criteria for the given data having its value within a range
+/*! Observation reports where the data corresponding to descriptor 'aDescriptor'
+ *  has its value in the range 'firstValue'...'secondValue' will be selected.
+ */
+     void  selectRange( long aDescriptor
+		      , float firstValue
+		      , float secondValue );
+
+//! Set the filtering criteria for the given data having its value outside a range
+/*! Observation reports where the data corresponding to descriptor 'aDescriptor'
+ *  has its value outside the range 'firstValue'...'secondValue' will be selected.
+ */
+     void  excludeRange( long aDescriptor
+		       , float firstValue
+		       , float secondValue );
+
+ protected:
+
+     void  next();
+  bool  AcceptedObs( MvObs& anObs ) const;
+  bool  TimeOk( MvObs* anObs ) const;
+  bool  WmoBlockOk( MvObs* anObs ) const;
+  bool  WmoStationOk( MvObs* anObs ) const;
+  bool  WithinXSectionLine( MvObs* anObs ) const;
+  bool  msgTypeOk( MvObs* anObs ) const;
+  bool  msgSubtypeOk( MvObs* anObs ) const;
+  bool  InsideArea( MvObs* anObs ) const;
+  bool  selectOk( MvObs* anObs ) const;
+    float  distanceFromXSectionLine( const MvLocation& aPoint ); //-- used anywhere?
+
+ protected:
+         bool  _NoFiltersSet;
+	    bool  useObsTime_;
+        TDynamicTime  fBeginTime, fEndTime;
+      // bool  fTimeFilterSet;
+ETimeFilterState  _TimeFilterState;
+	     int  _WmoBlockCount;
+             int  _WmoBlockNumber[ MAX_FILTER_LIST_ARRAY_SIZE ];
+	     int  _WmoStationCount;
+            long  _WmoStation[ MAX_FILTER_LIST_ARRAY_SIZE ];
+  MvXSectionLine  fXSectionLine;
+          MvArea  fArea;
+	     int  _MsgTypeCount;
+	     int  _MsgType[ MAX_FILTER_LIST_ARRAY_SIZE ];
+	     int  _MsgSubtypeCount;
+	     int  _MsgSubtype[ MAX_FILTER_LIST_ARRAY_SIZE ];
+ ESelectFilterState _SelectState;
+	    long  _SelectDescriptor;
+	   float  _SelectValue[ MAX_FILTER_LIST_ARRAY_SIZE ];
+	     int  _SelectValueCount;
+};
+
+#endif
+// MvObsSet_DEFINED
diff --git a/src/MvObs/MvPrepBufrPrep.cc b/src/eckit_readers/MvPrepBufrPrep.cc
similarity index 100%
rename from src/MvObs/MvPrepBufrPrep.cc
rename to src/eckit_readers/MvPrepBufrPrep.cc
diff --git a/src/MvObs/MvPrepBufrPrep.h b/src/eckit_readers/MvPrepBufrPrep.h
similarity index 100%
rename from src/MvObs/MvPrepBufrPrep.h
rename to src/eckit_readers/MvPrepBufrPrep.h
diff --git a/src/libTable/TableReader.cc b/src/eckit_readers/TableReader.cc
similarity index 100%
rename from src/libTable/TableReader.cc
rename to src/eckit_readers/TableReader.cc
diff --git a/src/libTable/TableReader.h b/src/eckit_readers/TableReader.h
similarity index 100%
rename from src/libTable/TableReader.h
rename to src/eckit_readers/TableReader.h
diff --git a/src/MvObs/fdyntime.cc b/src/eckit_readers/fdyntime.cc
similarity index 100%
rename from src/MvObs/fdyntime.cc
rename to src/eckit_readers/fdyntime.cc
diff --git a/src/MvObs/fdyntime.h b/src/eckit_readers/fdyntime.h
similarity index 100%
rename from src/MvObs/fdyntime.h
rename to src/eckit_readers/fdyntime.h
diff --git a/src/MvObs/fmettim.cc b/src/eckit_readers/fmettim.cc
similarity index 100%
rename from src/MvObs/fmettim.cc
rename to src/eckit_readers/fmettim.cc
diff --git a/src/MvObs/fmettim.h b/src/eckit_readers/fmettim.h
similarity index 100%
rename from src/MvObs/fmettim.h
rename to src/eckit_readers/fmettim.h
diff --git a/src/MvObs/fobject.cc b/src/eckit_readers/fobject.cc
similarity index 100%
rename from src/MvObs/fobject.cc
rename to src/eckit_readers/fobject.cc
diff --git a/src/MvObs/fobject.h b/src/eckit_readers/fobject.h
similarity index 100%
rename from src/MvObs/fobject.h
rename to src/eckit_readers/fobject.h
diff --git a/src/MvObs/fsortabl.cc b/src/eckit_readers/fsortabl.cc
similarity index 100%
rename from src/MvObs/fsortabl.cc
rename to src/eckit_readers/fsortabl.cc
diff --git a/src/MvObs/fsortabl.h b/src/eckit_readers/fsortabl.h
similarity index 100%
rename from src/MvObs/fsortabl.h
rename to src/eckit_readers/fsortabl.h
diff --git a/src/MvObs/fstatime.cc b/src/eckit_readers/fstatime.cc
similarity index 100%
rename from src/MvObs/fstatime.cc
rename to src/eckit_readers/fstatime.cc
diff --git a/src/MvObs/fstatime.h b/src/eckit_readers/fstatime.h
similarity index 100%
rename from src/MvObs/fstatime.h
rename to src/eckit_readers/fstatime.h
diff --git a/src/MvObs/inc_iostream.h b/src/eckit_readers/inc_iostream.h
similarity index 100%
rename from src/MvObs/inc_iostream.h
rename to src/eckit_readers/inc_iostream.h
diff --git a/src/libMagWrapper/CMakeLists.txt b/src/libMagWrapper/CMakeLists.txt
new file mode 100644
index 0000000..21e623a
--- /dev/null
+++ b/src/libMagWrapper/CMakeLists.txt
@@ -0,0 +1,14 @@
+set( _metview_srcs
+MagPlus.h
+MagRequest.h
+MagPlus.cc
+)
+
+foreach( file ${_metview_srcs} )
+  list( APPEND metview_srcs libMagWrapper/${file} )
+endforeach()
+
+list (APPEND metview_include libMagWrapper/MagPlus.h libMagWrapper/MagRequest.h)
+set( metview_include ${metview_include} PARENT_SCOPE )
+
+set( metview_srcs ${metview_srcs} PARENT_SCOPE )
diff --git a/src/libMagWrapper/MagPlus.cc b/src/libMagWrapper/MagPlus.cc
index 240920b..b099221 100644
--- a/src/libMagWrapper/MagPlus.cc
+++ b/src/libMagWrapper/MagPlus.cc
@@ -5,25 +5,30 @@
 #include <FortranSceneNodeWrapper.h>
 #include <FortranViewNodeWrapper.h>
 #include <CoastlinesWrapper.h>
+#include <TephiGridWrapper.h>
+#include <TaylorGridWrapper.h>
 #include <AxisWrapper.h>
 #include <VisualAction.h>
 #include "MetaDataWrapper.h"
 
-#if MAGICS_GRIB
+#ifdef MAGICS_GRIB
 #include <GribDecoderWrapper.h>
 #include <GribLoopWrapper.h>
 #endif
 
-#include <GeoPointsDecoderWrapper.h>
+#ifdef MAGICS_NETCDF
 #include <NetcdfDecoderWrapper.h>
+#endif
+
+#include <GeoPointsDecoderWrapper.h>
 #include <BinningObjectWrapper.h>
 
-#if MAGICS_ODB
+#ifdef MAGICS_ODB
 #include <OdaGeoDecoderWrapper.h>
 #include <OdaXYDecoderWrapper.h>
 #endif
 
-#if MAGICS_BUFR
+#ifdef MAGICS_BUFR
 #include <ObsDecoderWrapper.h>
 #include <ObsPlottingWrapper.h>
 #endif
@@ -57,7 +62,7 @@
 #include <SVGDriverWrapper.h>
 #include <KMLDriverWrapper.h>
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 #include <QtDriver.h>
 #endif
 
@@ -118,22 +123,41 @@ using namespace magics;
 map<string,  MagPlus::ObjectCreator > MagPlus::sceneCreators_;
 map<string,  MagPlus::ObjectCreator > MagPlus::driverCreators_;
 map<string,  MagPlus::ObjectCreator > MagPlus::sceneUpdators_;
-
+map<string,  MagPlus::DataCreator > MagPlus::dataCreators_;
 
 
 
 MagPlus::MagPlus() : root_(0), superpage_(-1), geographical_(true), mode_(interactif), currentMulti_(0)
 {
-#if MAGICS_QT
+#ifdef MAGICS_QT
 	qtDriver_ = 0;
+    qtScene_ = 0;
 #endif
 	if ( sceneUpdators_.empty()) {
 		sceneUpdators_["PAGE"] = &MagPlus::page_update;
 	}
+	if ( dataCreators_.empty()) {
+		dataCreators_["GEOPOINTS"] = &MagPlus::createGeopoints;
+#ifdef MAGICS_NETCDF
+		dataCreators_["NETCDF_GEOPOINTS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_GEOVECTORS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_GEOMATRIX"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_GEO_POINTS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_GEO_VECTORS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_GEO_MATRIX"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_POINTS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_VECTORS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_MATRIX"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_XY_POINTS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_XY_VECTORS"] = &MagPlus::createnetcdf;
+		dataCreators_["NETCDF_XY_MATRIX"] = &MagPlus::createnetcdf;
+#endif
+	}
  	if ( sceneCreators_.empty()) { 		
  		sceneCreators_["PAGE"] = &MagPlus::page;
  		sceneCreators_["NEWPAGE"] = &MagPlus::newpage;
  		sceneCreators_["MCOAST"] = &MagPlus::coastlines;
+ 		sceneCreators_["MTEPHI"] = &MagPlus::tephigrid;
  		sceneCreators_["PCOAST"] = &MagPlus::oldcoastlines;
 
 
@@ -141,19 +165,22 @@ MagPlus::MagPlus() : root_(0), superpage_(-1), geographical_(true), mode_(intera
  		sceneCreators_["CARTESIANVIEW"] = &MagPlus::cartesian;
  		sceneCreators_["PGRIB"] = &MagPlus::gribloop;
         sceneCreators_["GRIBLOOP"] = &MagPlus::gribloop;
+        sceneCreators_["DATALOOP"] = &MagPlus::dataloop;
         sceneCreators_["GEOPOINTS"] = &MagPlus::geopoints;
- 		sceneCreators_["NETCDF_GEOPOINTS"] = &MagPlus::geonetcdf;
-        sceneCreators_["NETCDF_GEOVECTORS"] = &MagPlus::geonetcdf;
-        sceneCreators_["NETCDF_GEOMATRIX"] = &MagPlus::geonetcdf;
-        sceneCreators_["NETCDF_GEO_POINTS"] = &MagPlus::geonetcdf;
-        sceneCreators_["NETCDF_GEO_VECTORS"] = &MagPlus::geonetcdf;
-        sceneCreators_["NETCDF_GEO_MATRIX"] = &MagPlus::geonetcdf;
-        sceneCreators_["NETCDF_POINTS"] = &MagPlus::xynetcdf;
-        sceneCreators_["NETCDF_VECTORS"] = &MagPlus::xynetcdf;
-        sceneCreators_["NETCDF_MATRIX"] = &MagPlus::xynetcdf;
-        sceneCreators_["NETCDF_XY_POINTS"] = &MagPlus::xynetcdf;
-        sceneCreators_["NETCDF_XY_VECTORS"] = &MagPlus::xynetcdf;
-        sceneCreators_["NETCDF_XY_MATRIX"] = &MagPlus::xynetcdf;
+#ifdef MAGICS_NETCDF
+        sceneCreators_["NETCDF_GEOPOINTS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_GEOVECTORS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_GEOMATRIX"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_GEO_POINTS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_GEO_VECTORS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_GEO_MATRIX"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_POINTS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_VECTORS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_MATRIX"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_XY_POINTS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_XY_VECTORS"] = &MagPlus::netcdf;
+        sceneCreators_["NETCDF_XY_MATRIX"] = &MagPlus::netcdf;
+#endif
         sceneCreators_["BUFR"] = &MagPlus::bufr;
         sceneCreators_["INPUT_XY_POINTS"] = &MagPlus::input;
         sceneCreators_["INPUT_GEO_POINTS"] = &MagPlus::input;
@@ -168,8 +195,10 @@ MagPlus::MagPlus() : root_(0), superpage_(-1), geographical_(true), mode_(intera
         sceneCreators_["TABLE_GEO_VECTORS"] = &MagPlus::table;
         sceneCreators_["TABLE_XY_BINNING"] = &MagPlus::table;
         sceneCreators_["TABLE_GEO_BINNING"] = &MagPlus::table;
-
-#if MAGICS_ODB	
+        sceneCreators_["cartesian"] = &MagPlus::cartesianGrid;
+        sceneCreators_["tephigram"] = &MagPlus::tephiGrid;
+        sceneCreators_["taylor"] = &MagPlus::taylorGrid;
+#ifdef MAGICS_ODB	
 	sceneCreators_["ODB_GEO_POINTS"] = &MagPlus::geoodb;
 	sceneCreators_["ODB_GEO_VECTORS"] = &MagPlus::geoodb;
 	sceneCreators_["ODB_XY_POINTS"] = &MagPlus::xyodb;
@@ -181,6 +210,7 @@ MagPlus::MagPlus() : root_(0), superpage_(-1), geographical_(true), mode_(intera
  		sceneCreators_["PCONT"] = &MagPlus::contour;
  		sceneCreators_["MCONT"] = &MagPlus::contour;
  		sceneCreators_["POBS"] = &MagPlus::obs;
+ 		sceneCreators_["MOBS"] = &MagPlus::obs;
  		sceneCreators_["PSYMB"] = &MagPlus::symbol;
  		sceneCreators_["MSYMB"] = &MagPlus::symbol;
         sceneCreators_["PSYMBPLUS"] = &MagPlus::symbol;
@@ -200,7 +230,7 @@ MagPlus::MagPlus() : root_(0), superpage_(-1), geographical_(true), mode_(intera
     
     if ( driverCreators_.empty())
     {
-#if MAGICS_QT
+#ifdef MAGICS_QT
 	driverCreators_["QTOUTPUT"] = &MagPlus::qtdriver;
 #endif
  	driverCreators_["PSOUTPUT"] = &MagPlus::psdriver;
@@ -241,7 +271,7 @@ bool MagPlus::superpage(magics::MagRequest& in)
 
 bool MagPlus::newpage(magics::MagRequest& in)
 {
-	cout << "NEW PAGE " << endl;
+
 
 	root_->newpage();
 
@@ -294,18 +324,19 @@ bool MagPlus::pdfdriver(magics::MagRequest& in)
        return false;
 }
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 void MagPlus::setQtScene(QGraphicsScene *scene)
 {
-	ParameterManager::set("output_qt_scene", scene);;
+	qtScene_ =  scene;
 }
 
 bool MagPlus::qtdriver(magics::MagRequest& /*in*/)
 {
 	if ( !qtDriver_)
 	{
-		//ParameterManager::set("ouptup_qt_scene", widget);
+		assert(qtScene_);
 		qtDriver_ = new magics::QtDriver();
+        qtDriver_->scene_= qtScene_;
 
 	}
 #ifndef MAG_NEXT
@@ -343,7 +374,7 @@ bool MagPlus::kmldriver(magics::MagRequest& in)
 
 bool MagPlus::page_update(magics::MagRequest& in)
 {
-	cout << "YOUPY! INEED TO UPDATE the PAGE!!!" << endl;
+
 	// get the Metview ID;
 	// reset the page!!!
 	int id = in("METVIEW_ID");
@@ -425,21 +456,9 @@ bool MagPlus::page(magics::MagRequest& in)
 
 bool MagPlus::cartesian(magics::MagRequest& in) {
 
-	in("SUBPAGE_MAP_PROJECTION") = "cartesian";
-	string xtype = lowerCase(in("X_AXIS_TYPE"));
-	string ytype = lowerCase(in("Y_AXIS_TYPE"));
+	string projection = get(in, "MAP_PROJECTION", "cartesian");
+	 in("SUBPAGE_MAP_PROJECTION") = projection;
 
-	replace_string(in, "X_AXIS_TYPE", "", "regular");
-	replace_string(in, "Y_AXIS_TYPE", "", "regular");
-	replace_string(in, "X_AXIS_TYPE", "longitude", "regular");
-	replace_string(in, "X_AXIS_TYPE", "LONGITUDE", "regular");
-	replace_string(in, "X_AXIS_TYPE", "latitude", "regular");
-	replace_string(in, "X_AXIS_TYPE", "LATITUDE", "regular");
-	replace_string(in, "Y_AXIS_TYPE", "", "regular");
-	replace_string(in, "Y_AXIS_TYPE", "longitude", "regular");
-	replace_string(in, "Y_AXIS_TYPE", "latitude", "regular");
-	replace_string(in, "Y_AXIS_TYPE", "LONGITUDE", "regular");
-	replace_string(in, "Y_AXIS_TYPE", "LATITUDE", "regular");
 
 			if ( !page_ ) page_ = new FortranViewNodeWrapper();
 			page_->set(in);
@@ -454,83 +473,150 @@ bool MagPlus::cartesian(magics::MagRequest& in) {
 			}
 			top()->insert(view);
 			push(view);	
-			cout << "cartesian-->! " << endl;
+
 			in.print();
-			cout << "<--cartesian! " << endl;
-			magics::MagRequest& haxis = in.getSubRequest("HORIZONTAL_AXIS");
-
-			if ( haxis ) {
-
-				// use the user defined one
-				    HorizontalAxis*	 axis = new HorizontalAxis();
-				    haxis.print();
-				    replace_string(haxis, "_NAME", "", "Horizontal Axis");
-					replace_string(haxis, "_CLASS", "", "MAXIS");
-
-					setIconInfo(haxis, *axis);
-					AxisWrapper helper(axis);
-					string type = haxis("AXIS_TYPE");
-					if ( type != "POSITION_LIST" ) {
-						haxis("AXIS_TYPE") = xtype;
-						if ( xtype == "latitude" || xtype == "longitude") {
-							haxis("AXIS_TYPE") = "regular";
-							haxis("AXIS_TICK_LABEL_TYPE") = xtype;
-						}
-					}
 
-					haxis.print();
-					helper.set(haxis);
+			 map<string,  ObjectCreator >::iterator creator = sceneCreators_.find(projection);
+			   	    if ( creator != sceneCreators_.end() ) {
 
-					axis->orientation_ = "HORIZONTAL";
-					axis->position_ = ("bottom");
-					top()->push_back(axis);
-			}
-			else {
-				HorizontalAxis* haxis = new HorizontalAxis();
-				haxis->icon("Horizontal Axis", "MAXIS");
-				haxis->label_type_ = xtype;
+			   	    	  (this->*creator->second)(in) ;
+			   	    }
+
+            geographical_ = false;
+			return false; // do not exit
+}
+
+bool MagPlus::cartesianGrid(magics::MagRequest& in) {
+	string xtype = lowerCase(in("X_AXIS_TYPE"));
+	string ytype = lowerCase(in("Y_AXIS_TYPE"));
 
-				haxis->method_ = auto_ptr<AxisMethod>(MagTranslator<string, AxisMethod>()(in("X_AXIS_TYPE")));
-				top()->push_back(haxis);
+	replace_string(in, "X_AXIS_TYPE", "", "regular");
+	replace_string(in, "Y_AXIS_TYPE", "", "regular");
+	replace_string(in, "X_AXIS_TYPE", "longitude", "regular");
+	replace_string(in, "X_AXIS_TYPE", "LONGITUDE", "regular");
+	replace_string(in, "X_AXIS_TYPE", "latitude", "regular");
+	replace_string(in, "X_AXIS_TYPE", "LATITUDE", "regular");
+	replace_string(in, "Y_AXIS_TYPE", "", "regular");
+	replace_string(in, "Y_AXIS_TYPE", "longitude", "regular");
+	replace_string(in, "Y_AXIS_TYPE", "latitude", "regular");
+	replace_string(in, "Y_AXIS_TYPE", "LONGITUDE", "regular");
+	replace_string(in, "Y_AXIS_TYPE", "LATITUDE", "regular");
+	magics::MagRequest& haxis = in.getSubRequest("HORIZONTAL_AXIS");
+
+	if ( haxis ) {
+
+		// use the user defined one
+		HorizontalAxis*	 axis = new HorizontalAxis();
+		haxis.print();
+		replace_string(haxis, "_NAME", "", "Horizontal Axis");
+		replace_string(haxis, "_CLASS", "", "MAXIS");
+
+		setIconInfo(haxis, *axis);
+		AxisWrapper helper(axis);
+		string type = haxis("AXIS_TYPE");
+		if ( type != "POSITION_LIST" ) {
+			haxis("AXIS_TYPE") = xtype;
+			if ( xtype == "latitude" || xtype == "longitude") {
+				haxis("AXIS_TYPE") = "regular";
+				haxis("AXIS_TICK_LABEL_TYPE") = xtype;
 			}
-			magics::MagRequest& vaxis = in.getSubRequest("VERTICAL_AXIS");
+		}
+
+		haxis.print();
+		helper.set(haxis);
+
+		axis->orientation_ = "HORIZONTAL";
+		axis->position_ = ("bottom");
+		top()->push_back(axis);
+	}
+	else {
+		HorizontalAxis* haxis = new HorizontalAxis();
+		haxis->icon("Horizontal Axis", "MAXIS");
+		haxis->label_type_ = xtype;
 
+		haxis->method_ = auto_ptr<AxisMethod>(MagTranslator<string, AxisMethod>()(in("X_AXIS_TYPE")));
+		top()->push_back(haxis);
+	}
 
-			if (  vaxis ) {
 
-				// use the user defined one
-				vaxis.print();
-				VerticalAxis*	 axis = new VerticalAxis();
-				replace_string(vaxis, "_NAME", "", "Vertical Axis");
-				replace_string(vaxis, "_CLASS", "", "MAXIS");
+	magics::MagRequest& vaxis = in.getSubRequest("VERTICAL_AXIS");
 
 
-				setIconInfo(vaxis, *axis);
-				AxisWrapper helper(axis);
-				string type = vaxis("AXIS_TYPE");
-				if ( type != "POSITION_LIST" ) {
-					vaxis("AXIS_TYPE") = ytype;
-					if ( ytype == "latitude" || ytype == "longitude") {
-						vaxis("AXIS_TYPE") = "regular";
-						vaxis("AXIS_TICK_LABEL_TYPE") = ytype;
-					}
-				}
+	if (  vaxis ) {
+
+		// use the user defined one
+		vaxis.print();
+		VerticalAxis*	 axis = new VerticalAxis();
+		replace_string(vaxis, "_NAME", "", "Vertical Axis");
+		replace_string(vaxis, "_CLASS", "", "MAXIS");
 
-				helper.set(vaxis);
-				axis->orientation_ = "VERTICAL";
-				top()->push_back(axis);
-			}
-			else {
-				VerticalAxis* vaxis = new VerticalAxis();
-				vaxis->icon("Vertical Axis", "MAXIS");
-				vaxis->label_type_ = ytype;
-				vaxis->method_ = auto_ptr<AxisMethod>(MagTranslator<string, AxisMethod>()(in("Y_AXIS_TYPE")));
-				top()->push_back(vaxis);
 
+		setIconInfo(vaxis, *axis);
+		AxisWrapper helper(axis);
+		string type = vaxis("AXIS_TYPE");
+		if ( type != "POSITION_LIST" ) {
+			vaxis("AXIS_TYPE") = ytype;
+			if ( ytype == "latitude" || ytype == "longitude") {
+				vaxis("AXIS_TYPE") = "regular";
+				vaxis("AXIS_TICK_LABEL_TYPE") = ytype;
 			}
+		}
 
-            geographical_ = false;
-			return false; // do not exit
+		helper.set(vaxis);
+		axis->orientation_ = "VERTICAL";
+		top()->push_back(axis);
+	}
+	else {
+		VerticalAxis* vaxis = new VerticalAxis();
+		vaxis->icon("Vertical Axis", "MAXIS");
+		vaxis->label_type_ = ytype;
+		vaxis->method_ = auto_ptr<AxisMethod>(MagTranslator<string, AxisMethod>()(in("Y_AXIS_TYPE")));
+		top()->push_back(vaxis);
+
+	}
+}
+bool MagPlus::tephiGrid(magics::MagRequest& in)
+{
+	magics::MagRequest& tephi = in.getSubRequest("TEPHIGRAM_GRID");
+	if ( tephi ) {
+
+		// use the user defined one
+		tephi.print();
+		TephiGridWrapper helper;
+		setIconInfo(tephi,*helper.object());
+		helper.set(tephi);
+
+		top()->push_back(helper.object());
+		setIconInfo(in,*helper.object());
+
+	}
+	else {
+		TephiGrid* grid = new TephiGrid();
+		grid->icon("Tephigram Grid", "MTEPHI");
+		top()->push_back(grid);
+
+	}
+}
+bool MagPlus::taylorGrid(magics::MagRequest& in)
+{
+	magics::MagRequest& taylor = in.getSubRequest("TAYLOR_GRID");
+	if ( taylor ) {
+
+		// use the user defined one
+		taylor.print();
+		TaylorGridWrapper helper;
+		setIconInfo(taylor,*helper.object());
+		helper.set(taylor);
+
+		top()->push_back(helper.object());
+		setIconInfo(in,*helper.object());
+
+	}
+	else {
+		TaylorGrid* grid = new TaylorGrid();
+		grid->icon("Taylor Grid", "MTAYLOR");
+		top()->push_back(grid);
+	}
 }
 bool MagPlus::oldcoastlines(magics::MagRequest& in)
 {
@@ -555,7 +641,24 @@ bool MagPlus::coastlines(magics::MagRequest& in)
 	
 	return false; // do not exit
 }
+bool MagPlus::tephigrid(magics::MagRequest& in)
+{
+	MagLog::dev()<< "add Tephi Grid" << endl;
+
+
+	replace_string(in, "_NAME", "", "Tephigram");
+	replace_string(in, "_CLASS", "", "MTEPHI");
+	TephiGridWrapper helper;
+
+	helper.set(in);
+
+	top()->push_back(helper.object());
+	setIconInfo(in,*helper.object());
+	MagLog::dev()<< top() << endl;
+	MagLog::dev()<< *helper.object() << endl;
 
+	return false; // do not exit
+}
 bool MagPlus::axis(magics::MagRequest& in)
 {
 	return false; // do not exit
@@ -650,7 +753,7 @@ bool MagPlus::table(magics::MagRequest& in)
 	magics::MagRequest&  data = in.getSubRequest("TABLE_DATA");
 	if(data)
 	{	
-	  	if(data.getVerb() == "TABLE")
+	  	if(data.getVerb() == "TABLE" || data.getVerb() == "NOTE" || data.getVerb() == "GEOPOINTS")
 		{
 	  		string x = data("PATH");
 			in("TABLE_FILENAME") = x;
@@ -988,13 +1091,7 @@ bool MagPlus::rasterloop(magics::MagRequest& in)
 
 		}
 
-		/*ImportActionWrapper object;
-		object.set(rasters);
-
-		visdef.set(rasters);
-		object.object()->icon(name, format);*/
 		
-			//object.object()->setInfo("date",title);
 
 		loop->add(object.object());
 		
@@ -1007,7 +1104,7 @@ bool MagPlus::rasterloop(magics::MagRequest& in)
 }
 
 
-#if MAGICS_ODB	
+#ifdef MAGICS_ODB
 bool MagPlus::geoodb(magics::MagRequest& in)
 {
 	MagLog::dev()<< "add geo odb" << endl;
@@ -1092,30 +1189,43 @@ bool MagPlus::xyodb(magics::MagRequest& in)
 }
 #endif
 
-bool MagPlus::geonetcdf(magics::MagRequest& in)
+#ifdef MAGICS_NETCDF
+static map<string, string> nctypes;
+
+void checknctypes() {
+	   if ( nctypes.empty() ) {
+	        nctypes["NETCDF_POINTS"] = "xypoint";
+	        nctypes["NETCDF_VECTORS"] = "vector";
+	        nctypes["NETCDF_MATRIX"] = "matrix";
+	        nctypes["NETCDF_XY_POINTS"] = "xypoint";
+	        nctypes["NETCDF_XY_VECTORS"] = "vector";
+	        nctypes["NETCDF_XY_MATRIX"] = "matrix";
+
+	        nctypes["NETCDF_GEOPOINTS"] = "geopoint";
+	        nctypes["NETCDF_GEOVECTORS"] = "geovector";
+	        nctypes["NETCDF_GEOMATRIX"] = "geomatrix";
+	        nctypes["NETCDF_GEO_POINTS"] = "geopoint";
+	        nctypes["NETCDF_GEO_VECTORS"] = "geovector";
+	        nctypes["NETCDF_GEO_MATRIX"] = "geomatrix";
+	    }
+}
+
+bool MagPlus::netcdf(magics::MagRequest& in)
 {
-	MagLog::dev()<< "add geo netcdf" << endl;
+	MagLog::dev()<< "add netcdf" << endl;
 	in.print();
+	checknctypes();
 	string path = get(in, "NETCDF_FILENAME", "OFF");
 	if (path == "OFF") {
 		magics::MagRequest& netcdf = in.getSubRequest("NETCDF_DATA");
 		path = string(netcdf("PATH"));
 	}
+
 	in("NETCDF_FILENAME") = path.c_str();
-    static map<string, string> types;
-    if ( types.empty() ) {
-        types["NETCDF_GEOPOINTS"] = "geopoint";
-        types["NETCDF_GEOVECTORS"] = "geovector";
-        types["NETCDF_GEOMATRIX"] = "geomatrix";
-        types["NETCDF_GEO_POINTS"] = "geopoint";
-        types["NETCDF_GEO_VECTORS"] = "geovector";
-        types["NETCDF_GEO_MATRIX"] = "geomatrix";
-        types["ARRAY"] = "geomatrix";
-        types["MATRIX"] = "complex_matrix";
-    }
+	    static map<string, string> types;
 
-    string type = get(in, "NETCDF_POSITION_TYPE", in.getVerb());
-   	in("NETCDF_TYPE") = types[type].c_str();
+	string type = get(in, "NETCDF_PLOT_TYPE", in.getVerb());
+	in("NETCDF_TYPE") = nctypes[type].c_str();
 
 	VisualAnimation* action = new VisualAnimation();
 	top()->push_back(action);
@@ -1133,49 +1243,59 @@ bool MagPlus::geonetcdf(magics::MagRequest& in)
 }
 
 
-bool MagPlus::xynetcdf(magics::MagRequest& in)
+Data* MagPlus::createnetcdf(magics::MagRequest& in)
 {
+	// Extract the path ..
 	MagLog::dev()<< "add xy netcdf" << endl;
 	in.print();
+	checknctypes();
 	string path = get(in, "NETCDF_FILENAME", "OFF");
 	if (path == "OFF") {
 		magics::MagRequest& netcdf = in.getSubRequest("NETCDF_DATA");
 		path = string(netcdf("PATH"));
 	}
 	in("NETCDF_FILENAME") = path.c_str();
-    static map<string, string> types;
-    if ( types.empty() ) {
-        types["NETCDF_POINTS"] = "xypoint";
-        types["NETCDF_VECTORS"] = "vector";
-        types["NETCDF_MATRIX"] = "matrix";
-        types["NETCDF_XY_POINTS"] = "xypoint";
-        types["NETCDF_XY_VECTORS"] = "vector";
-        types["NETCDF_XY_MATRIX"] = "matrix";
-        types["ARRAY"] = "matrix";
-        types["MATRIX"] = "complex_matrix";
-    }
-    string type = get(in, "NETCDF_POSITION_TYPE", in.getVerb());
 
-	in("NETCDF_TYPE") = types[type].c_str();
-	VisualAnimation* action = new VisualAnimation();
-	top()->push_back(action);
-	push(action);	
-  
-	NetcdfDecoderWrapper xynet;
-	xynet.set(in);
-	
-	NetcdfLoop* loop = new NetcdfLoop(xynet.object());
-	setIconInfo(in, *xynet.object());
-	geographical_ = false;
-	setIconInfo(in, *loop);
-	action->loop(loop);
-	
-	return false; // do not exit
+	string type = get(in, "NETCDF_POSITION_TYPE", in.getVerb());
+
+	in("NETCDF_TYPE") = nctypes[type].c_str();
+
+	NetcdfDecoderWrapper netcdf;
+	netcdf.set(in);
+	netcdf.object()->initInfo();
+
+	return  netcdf.object();
+}
+#endif    // NetCDF
+
+Data* MagPlus::createGeopoints(magics::MagRequest& in)
+{
+	// Extract the path ..
+	magics::MagRequest& record = in.getSubRequest("RECORD");
+
+	string path =  record("PATH");
+	in("GEO_INPUT_FILE_NAME") = path;
+
+
+	GeoPointsDecoderWrapper geopoints;
+	geopoints.set(in);
+
+
+	//Meta-data
+	geopoints.object()->initInfo();
+	return  geopoints.object();
 }
 
 
 bool MagPlus::geopoints(magics::MagRequest& in)
 {
+
+#ifdef test_dataloop
+	in.read("/tmp/cgs/jira/MAGP-268/dataloop");
+	dataloop(in);
+	return false;
+#endif
+
 	// Extract the path ..
 	magics::MagRequest& record = in.getSubRequest("RECORD");
 	
@@ -1288,6 +1408,49 @@ bool MagPlus::obs(magics::MagRequest& in)
 #endif
 	return false; // do not exit
 }
+bool MagPlus::dataloop(magics::MagRequest& in)
+{
+	MagLog::dev()<< "add generic dataloop" << endl;
+	in.print();
+
+	VisualAnimation* loop = new VisualAnimation();
+	top()->push_back(loop);
+	push(loop);
+
+
+
+	DataList* data = new DataList();
+	setIconInfo(in, *data);
+	loop->loop(data);
+
+
+	magics::MagRequest& entries = in.getSubRequest("ENTRIES");
+
+
+	//At this point we do not know the exact type,
+	//later we refine it
+	loop->setInfo("_datatype","DATALOOP");
+
+
+
+	while ( entries ) {
+		string verb = entries.getVerb();
+
+		map<string,  DataCreator >::iterator creator = dataCreators_.find(verb);
+		if ( creator != dataCreators_.end() ) {
+			magics::MagRequest& entry = entries.justOneRequest();
+			Data* x = (this->*creator->second)(entry);
+			data->add(x);
+
+		}
+		MagLog::warning() << "Ignore entry " << verb << endl;
+		entries.advance();
+
+
+	}
+
+	return false; // do not exit
+}
 
 bool MagPlus::wind(magics::MagRequest& in)
 {
@@ -1493,16 +1656,7 @@ bool MagPlus::device(magics::MagRequest& in)
 	return false; // do not exit
 }
 
-/*
- 
-void MagPlus::serve( magics::MagRequest& in, magics::MagRequest& out)
-{
-   magin = magics::MagRequest(in);
-   magout = magics::MagRequest(in);
-   //execute(in, out);
-}
 
-*/
 void MagPlus::execute( magics::MagRequest& in)
 {
 	cout << "MagPlus::execute-->" << endl;
diff --git a/src/libMagWrapper/MagPlus.h b/src/libMagWrapper/MagPlus.h
index c504159..2461ecd 100644
--- a/src/libMagWrapper/MagPlus.h
+++ b/src/libMagWrapper/MagPlus.h
@@ -17,13 +17,13 @@
 
 
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 class QGraphicsScene;
 #endif
 
 namespace magics {
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 class QtDriver;
 #endif
 
@@ -46,7 +46,7 @@ public:
 	//! Notify the magicsobservers about an event in the QtDriverObserver (Qt -> GUI)
 	void notify(MagicsEvent&);
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 	//! Set the QGraphicsScene for the Qt driver
 	void setQtScene(QGraphicsScene*);
 #endif
@@ -57,8 +57,9 @@ protected:
 	vector<BasicSceneObject*> foreground_;
 	
 	typedef bool (MagPlus::*ObjectCreator)(magics::MagRequest&);
- 
+	typedef Data* (MagPlus::*DataCreator)(magics::MagRequest&);
 	static map<string,  ObjectCreator > driverCreators_;
+	static map<string,  DataCreator > dataCreators_;
 	static map<string,  ObjectCreator > sceneCreators_;
 	static map<string,  ObjectCreator > sceneUpdators_;
 	map<string,  ObjectCreator >* sceneHandler_;
@@ -71,22 +72,33 @@ protected:
 	bool page_update(magics::MagRequest&);
 	bool superpage(magics::MagRequest&);
 	bool cartesian(magics::MagRequest&);
+
 	bool coastlines(magics::MagRequest&);
+
+	bool cartesianGrid(magics::MagRequest&);
+	bool tephiGrid(magics::MagRequest&);
+	bool taylorGrid(magics::MagRequest&);
+	bool tephigrid(magics::MagRequest&);
 	bool oldcoastlines(magics::MagRequest&);
 	bool axis(magics::MagRequest&);
 	bool grib(magics::MagRequest&);
 	bool gribloop(magics::MagRequest&);
 	bool rasterloop(magics::MagRequest&);
+	bool dataloop(magics::MagRequest&);
 	bool bufr(magics::MagRequest&);
 	bool visdef(magics::MagRequest&);
 	
-#if MAGICS_ODB	
+#ifdef MAGICS_ODB	
 	bool geoodb(magics::MagRequest&);
 	bool xyodb(magics::MagRequest&);
 #endif
-	bool geonetcdf(magics::MagRequest&);
-	bool xynetcdf(magics::MagRequest&);
+	bool netcdf(magics::MagRequest&);
+	Data* createnetcdf(magics::MagRequest&);
+
+
 	bool geopoints(magics::MagRequest&);
+	Data* createGeopoints(magics::MagRequest&);
+
 	bool raster(magics::MagRequest&);
 	bool input(magics::MagRequest&);
 	bool table(magics::MagRequest&);
@@ -125,9 +137,10 @@ protected:
 	FortranViewNodeWrapper* page_;
 	vector<Visdef*>* currentMulti_;
 
-#if MAGICS_QT
+#ifdef MAGICS_QT
 	//! Keep the instance of the QtDrver!
 	QtDriver* qtDriver_;
+    QGraphicsScene * qtScene_;
 #endif
 };
 
diff --git a/src/libMagWrapper/MagRequest.h b/src/libMagWrapper/MagRequest.h
index 428078b..98c6f09 100644
--- a/src/libMagWrapper/MagRequest.h
+++ b/src/libMagWrapper/MagRequest.h
@@ -55,6 +55,7 @@ public:
 	virtual int countValues(const string&) =0;
 	virtual string getParameter(int) =0;
 	virtual void print() =0;
+	virtual void read(const string&) =0;
 	virtual MagRequest& justOneRequest() =0;
 	
 protected:
diff --git a/src/libMagWrapper/Makefile.am b/src/libMagWrapper/Makefile.am
deleted file mode 100644
index f41ab88..0000000
--- a/src/libMagWrapper/Makefile.am
+++ /dev/null
@@ -1,132 +0,0 @@
-AUTOMAKE_OPTIONS	= foreign
-
-include_HEADERS = MagPlus.h MagRequest.h 
-MY_SOURCES	= MagPlus.cc
-MY_SOURCES_NODIST	= MvRootSceneNodeWrapper.cc \
-	FortranSceneNodeWrapper.cc \
-	PageIDWrapper.cc NoPageIDWrapper.cc\
-	LogoPlottingWrapper.cc \
-	LegendVisitorWrapper.cc\
-	ContinuousLegendMethodWrapper.cc\
-	HistogramLegendMethodWrapper.cc\
-	LegendMethodWrapper.cc\
-	NoLogoPlottingWrapper.cc UserLogoPlottingWrapper.cc \
-	FortranViewNodeWrapper.cc \
-	TransformationWrapper.cc GeoRectangularProjectionWrapper.cc \
-        MercatorProjectionWrapper.cc \
-        PolarStereographicProjectionWrapper.cc \
-        ImportActionWrapper.cc \
-        ImportPlotWrapper.cc \
-        TableDecoderWrapper.cc\
-        InputDataWrapper.cc\
-        NetcdfDecoderWrapper.cc\
-        SymbolPlottingWrapper.cc\
-        WindWrapper.cc\
-        ContourWrapper.cc\
-        NoIsoPlotWrapper.cc IsoPlotWrapper.cc \
-        ContourMethodWrapper.cc\
-        Akima474MethodWrapper.cc Akima760MethodWrapper.cc\
-        HiLoBaseWrapper.cc\
-        NoIsoShadingWrapper.cc IsoShadingWrapper.cc\
-        PolyShadingTechniqueWrapper.cc ShadingTechniqueWrapper.cc \
-        MarkerShadingTechniqueWrapper.cc GridShadingWrapper.cc PolyShadingMethodWrapper.cc\
-        AutomaticContourMethodWrapper.cc HighHiLoWrapper.cc LowHiLoWrapper.cc \
-        CellShadingWrapper.cc ValuePlotWrapper.cc \
-        HatchPolyShadingMethodWrapper.cc DotPolyShadingMethodWrapper.cc \
-        SampleContourMethodWrapper.cc ValuePlotMethodWrapper.cc\
-        ValuePlotBaseWrapper.cc NoHiLoWrapper.cc\
-        MarkerValuePlotMethodWrapper.cc BothValuePlotMethodWrapper.cc \
-	CartesianTransformationWrapper.cc  HiLoWrapper.cc\
-	NoValuePlotWrapper.cc \
-	NoHiLoMarkerWrapper.cc HiLoMarkerWrapper.cc \
-	HiLoBothWrapper.cc HiLoNumberWrapper.cc HiLoTextWrapper.cc HiLoTechniqueWrapper.cc \
-	YCoordinateWrapper.cc YRegularCoordinateWrapper.cc HiLoMarkerBaseWrapper.cc\
-	YDateCoordinateWrapper.cc YLogarithmicCoordinateWrapper.cc \
-	XHyperCoordinateWrapper.cc YHyperCoordinateWrapper.cc \
-	XCoordinateWrapper.cc XRegularCoordinateWrapper.cc XDateCoordinateWrapper.cc XLogarithmicCoordinateWrapper.cc \
-	CoastlinesWrapper.cc \
-	CoastPlottingWrapper.cc NoCoastPlottingWrapper.cc \
-	BoundariesWrapper.cc NoBoundariesWrapper.cc \
-	GridPlottingWrapper.cc NoGridPlottingWrapper.cc \
-	LabelPlottingWrapper.cc NoLabelPlottingWrapper.cc \
-	GeoPointsDecoderWrapper.cc \
-	WindModeWrapper.cc SDWindModeWrapper.cc VDWindModeWrapper.cc UVWindModeWrapper.cc \
-	ColourTechniqueWrapper.cc \
-	CountSelectionTypeWrapper.cc IntervalSelectionTypeWrapper.cc LevelListSelectionTypeWrapper.cc\
-	LevelSelectionWrapper.cc CalculateColourTechniqueWrapper.cc ListColourTechniqueWrapper.cc \
-	IsoLabelWrapper.cc NoIsoLabelWrapper.cc \
-	TextVisitorWrapper.cc  \
-	SymbolModeWrapper.cc SymbolTableModeWrapper.cc SymbolAdvancedTableModeWrapper.cc SymbolIndividualModeWrapper.cc \
-	BaseDriverWrapper.cc\
-	NoOutLayerTechniqueWrapper.cc SimpleOutLayerTechniqueWrapper.cc HeightTechniqueWrapper.cc\
-	CalculateHeightTechniqueWrapper.cc ListHeightTechniqueWrapper.cc \
-	IsoHighlightWrapper.cc NoIsoHighlightWrapper.cc \
-        PreviewVisitorWrapper.cc NoPreviewVisitorWrapper.cc\
-        MagnifierVisitorWrapper.cc NoMagnifierVisitorWrapper.cc \
-        AxisWrapper.cc \
-	OriginMarkerWrapper.cc NoOriginMarkerWrapper.cc DotOriginMarkerWrapper.cc CircleOriginMarkerWrapper.cc  \
-	CalmIndicatorWrapper.cc NoCalmIndicatorWrapper.cc \
-	PostScriptDriverWrapper.cc BaseDriverWrapper.cc KMLDriverWrapper.cc SVGDriverWrapper.cc \
-	WindPlottingWrapper.cc FlagPlottingWrapper.cc ArrowPlottingWrapper.cc \
-	CitiesWrapper.cc NoCitiesWrapper.cc  NoBinningObjectWrapper.cc BinningObjectWrapper.cc GraphPlottingWrapper.cc \
-	CurveWrapper.cc CurveAreaWrapper.cc GraphWrapper.cc GraphArrowWrapper.cc GraphFlagWrapper.cc\
-	GraphShadeWrapper.cc NoGraphShadeWrapper.cc \
-	GraphShadeStyleWrapper.cc DotGraphShadeStyleWrapper.cc HatchGraphShadeStyleWrapper.cc\
-	BarWrapper.cc   MetaDataWrapper.cc  AxisMethodWrapper.cc PositionListAxisMethodWrapper.cc \
-	DateAxisMethodWrapper.cc LogarithmicAxisMethodWrapper.cc HyperAxisMethodWrapper.cc
-	
-if MAGICS_PROJ4
-MY_SOURCES_NODIST += Proj4ProjectionWrapper.cc \
-  				Proj4PolarNorthWrapper.cc \
-  				Proj4GeosWrapper.cc \
-  				Proj4GoodeWrapper.cc \
-  				Proj4LambertWrapper.cc \
-  				Proj4BonneWrapper.cc \
-  				Proj4CollignonWrapper.cc \
-  				Proj4MollweideWrapper.cc \
-  				Proj4EPSG4326Wrapper.cc \
-  				Proj4EPSG32661Wrapper.cc \
-                Proj4EPSG3857Wrapper.cc
-endif
-
-if MAGICS_CAIRO
-MY_SOURCES_NODIST += CairoDriverWrapper.cc 
-endif
-
-if MAGICS_ODB
-MY_SOURCES_NODIST += OdaGeoDecoderWrapper.cc OdaXYDecoderWrapper.cc
-endif
-
-if MAGICS_GRIB
-MY_SOURCES_NODIST += 	GribDecoderWrapper.cc GribAddressModeWrapper.cc GribAddressByteModeWrapper.cc GribAddressRecordModeWrapper.cc \
-			GribLoopWrapper.cc GribLoopStepWrapper.cc \
-			ParamGribLoopStepWrapper.cc DateGribLoopStepWrapper.cc
-endif
-
-if MAGICS_BUFR
-MY_SOURCES_NODIST += ObsDecoderWrapper.cc ObsPlottingWrapper.cc
-endif
-
-if MAGICS_NETCDF
-MY_SOURCES_NODIST += NetcdfInterpretorWrapper.cc NetcdfGeopointsInterpretorWrapper.cc NetcdfXYpointsInterpretorWrapper.cc NetcdfGeoPolarMatrixInterpretorWrapper.cc \
-	NetcdfMatrixInterpretorWrapper.cc NetcdfOrcaInterpretorWrapper.cc NetcdfGeoMatrixInterpretorWrapper.cc\
-	NetcdfVectorInterpretorWrapper.cc NetcdfGeoVectorInterpretorWrapper.cc
-endif
-
-later= TaylorProjectionWrapper.cc TaylorGridWrapper.cc PostScriptDriverWrapper.cc GDDriverWrapper.cc 
-
-#lib_LTLIBRARIES	= libMagWrapper.la
-lib_LIBRARIES		= libMagWrapper.a
-libMagWrapper_a_SOURCES	= $(MY_SOURCES)
-nodist_libMagWrapper_a_SOURCES = $(MY_SOURCES_NODIST)
-
-AM_CPPFLAGS		= -DUSE_NEW_IO ${GRIBAPI_CXXFLAGS} -DMETVIEW -DH_INCLUDES_CC -DGLX_PROBLEMS -DMAGINT_IS_INT -DREAL_IS_DOUBLE $(PLATFORM_DEFINES_MARS) \
-			 -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/libTable -I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers -I$(top_srcdir)/src/terralib/kernel \
-			 -I$(top_srcdir)/src -I$(METVIEW_HOME)/src/libMetview -I$(METVIEW_HOME)/src/libMars -I$(METVIEW_HOME)/src/libUtil
-if MAGICS_ODB
-AM_CPPFLAGS += -I$(top_srcdir)/src/oda
-endif
-
-if MAGICS_QT
-AM_CPPFLAGS += -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-endif
diff --git a/src/libMagWrapper/Makefile.in b/src/libMagWrapper/Makefile.in
deleted file mode 100644
index 0e30d9b..0000000
--- a/src/libMagWrapper/Makefile.in
+++ /dev/null
@@ -1,1082 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_PROJ4_TRUE@am__append_1 = Proj4ProjectionWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4PolarNorthWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4GeosWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4GoodeWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4LambertWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4BonneWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4CollignonWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4MollweideWrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4EPSG4326Wrapper.cc \
- at MAGICS_PROJ4_TRUE@  				Proj4EPSG32661Wrapper.cc \
- at MAGICS_PROJ4_TRUE@                Proj4EPSG3857Wrapper.cc
-
- at MAGICS_CAIRO_TRUE@am__append_2 = CairoDriverWrapper.cc 
- at MAGICS_ODB_TRUE@am__append_3 = OdaGeoDecoderWrapper.cc OdaXYDecoderWrapper.cc
- at MAGICS_GRIB_TRUE@am__append_4 = GribDecoderWrapper.cc GribAddressModeWrapper.cc GribAddressByteModeWrapper.cc GribAddressRecordModeWrapper.cc \
- at MAGICS_GRIB_TRUE@			GribLoopWrapper.cc GribLoopStepWrapper.cc \
- at MAGICS_GRIB_TRUE@			ParamGribLoopStepWrapper.cc DateGribLoopStepWrapper.cc
-
- at MAGICS_BUFR_TRUE@am__append_5 = ObsDecoderWrapper.cc ObsPlottingWrapper.cc
- at MAGICS_NETCDF_TRUE@am__append_6 = NetcdfInterpretorWrapper.cc NetcdfGeopointsInterpretorWrapper.cc NetcdfXYpointsInterpretorWrapper.cc NetcdfGeoPolarMatrixInterpretorWrapper.cc \
- at MAGICS_NETCDF_TRUE@	NetcdfMatrixInterpretorWrapper.cc NetcdfOrcaInterpretorWrapper.cc NetcdfGeoMatrixInterpretorWrapper.cc\
- at MAGICS_NETCDF_TRUE@	NetcdfVectorInterpretorWrapper.cc NetcdfGeoVectorInterpretorWrapper.cc
-
- at MAGICS_ODB_TRUE@am__append_7 = -I$(top_srcdir)/src/oda
- at MAGICS_QT_TRUE@am__append_8 = -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-subdir = src/libMagWrapper
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_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__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
-LIBRARIES = $(lib_LIBRARIES)
-ARFLAGS = cru
-AM_V_AR = $(am__v_AR_$(V))
-am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
-am__v_AR_0 = @echo "  AR    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-libMagWrapper_a_AR = $(AR) $(ARFLAGS)
-libMagWrapper_a_LIBADD =
-am__objects_1 = MagPlus.$(OBJEXT)
-am_libMagWrapper_a_OBJECTS = $(am__objects_1)
- at MAGICS_PROJ4_TRUE@am__objects_2 = Proj4ProjectionWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4PolarNorthWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4GeosWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4GoodeWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4LambertWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4BonneWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4CollignonWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4MollweideWrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4EPSG4326Wrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4EPSG32661Wrapper.$(OBJEXT) \
- at MAGICS_PROJ4_TRUE@	Proj4EPSG3857Wrapper.$(OBJEXT)
- at MAGICS_CAIRO_TRUE@am__objects_3 = CairoDriverWrapper.$(OBJEXT)
- at MAGICS_ODB_TRUE@am__objects_4 = OdaGeoDecoderWrapper.$(OBJEXT) \
- at MAGICS_ODB_TRUE@	OdaXYDecoderWrapper.$(OBJEXT)
- at MAGICS_GRIB_TRUE@am__objects_5 = GribDecoderWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	GribAddressModeWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	GribAddressByteModeWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	GribAddressRecordModeWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	GribLoopWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	GribLoopStepWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	ParamGribLoopStepWrapper.$(OBJEXT) \
- at MAGICS_GRIB_TRUE@	DateGribLoopStepWrapper.$(OBJEXT)
- at MAGICS_BUFR_TRUE@am__objects_6 = ObsDecoderWrapper.$(OBJEXT) \
- at MAGICS_BUFR_TRUE@	ObsPlottingWrapper.$(OBJEXT)
- at MAGICS_NETCDF_TRUE@am__objects_7 =  \
- at MAGICS_NETCDF_TRUE@	NetcdfInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfGeopointsInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfXYpointsInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoPolarMatrixInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfMatrixInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfOrcaInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoMatrixInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfVectorInterpretorWrapper.$(OBJEXT) \
- at MAGICS_NETCDF_TRUE@	NetcdfGeoVectorInterpretorWrapper.$(OBJEXT)
-am__objects_8 = MvRootSceneNodeWrapper.$(OBJEXT) \
-	FortranSceneNodeWrapper.$(OBJEXT) PageIDWrapper.$(OBJEXT) \
-	NoPageIDWrapper.$(OBJEXT) LogoPlottingWrapper.$(OBJEXT) \
-	LegendVisitorWrapper.$(OBJEXT) \
-	ContinuousLegendMethodWrapper.$(OBJEXT) \
-	HistogramLegendMethodWrapper.$(OBJEXT) \
-	LegendMethodWrapper.$(OBJEXT) NoLogoPlottingWrapper.$(OBJEXT) \
-	UserLogoPlottingWrapper.$(OBJEXT) \
-	FortranViewNodeWrapper.$(OBJEXT) \
-	TransformationWrapper.$(OBJEXT) \
-	GeoRectangularProjectionWrapper.$(OBJEXT) \
-	MercatorProjectionWrapper.$(OBJEXT) \
-	PolarStereographicProjectionWrapper.$(OBJEXT) \
-	ImportActionWrapper.$(OBJEXT) ImportPlotWrapper.$(OBJEXT) \
-	TableDecoderWrapper.$(OBJEXT) InputDataWrapper.$(OBJEXT) \
-	NetcdfDecoderWrapper.$(OBJEXT) SymbolPlottingWrapper.$(OBJEXT) \
-	WindWrapper.$(OBJEXT) ContourWrapper.$(OBJEXT) \
-	NoIsoPlotWrapper.$(OBJEXT) IsoPlotWrapper.$(OBJEXT) \
-	ContourMethodWrapper.$(OBJEXT) Akima474MethodWrapper.$(OBJEXT) \
-	Akima760MethodWrapper.$(OBJEXT) HiLoBaseWrapper.$(OBJEXT) \
-	NoIsoShadingWrapper.$(OBJEXT) IsoShadingWrapper.$(OBJEXT) \
-	PolyShadingTechniqueWrapper.$(OBJEXT) \
-	ShadingTechniqueWrapper.$(OBJEXT) \
-	MarkerShadingTechniqueWrapper.$(OBJEXT) \
-	GridShadingWrapper.$(OBJEXT) \
-	PolyShadingMethodWrapper.$(OBJEXT) \
-	AutomaticContourMethodWrapper.$(OBJEXT) \
-	HighHiLoWrapper.$(OBJEXT) LowHiLoWrapper.$(OBJEXT) \
-	CellShadingWrapper.$(OBJEXT) ValuePlotWrapper.$(OBJEXT) \
-	HatchPolyShadingMethodWrapper.$(OBJEXT) \
-	DotPolyShadingMethodWrapper.$(OBJEXT) \
-	SampleContourMethodWrapper.$(OBJEXT) \
-	ValuePlotMethodWrapper.$(OBJEXT) \
-	ValuePlotBaseWrapper.$(OBJEXT) NoHiLoWrapper.$(OBJEXT) \
-	MarkerValuePlotMethodWrapper.$(OBJEXT) \
-	BothValuePlotMethodWrapper.$(OBJEXT) \
-	CartesianTransformationWrapper.$(OBJEXT) HiLoWrapper.$(OBJEXT) \
-	NoValuePlotWrapper.$(OBJEXT) NoHiLoMarkerWrapper.$(OBJEXT) \
-	HiLoMarkerWrapper.$(OBJEXT) HiLoBothWrapper.$(OBJEXT) \
-	HiLoNumberWrapper.$(OBJEXT) HiLoTextWrapper.$(OBJEXT) \
-	HiLoTechniqueWrapper.$(OBJEXT) YCoordinateWrapper.$(OBJEXT) \
-	YRegularCoordinateWrapper.$(OBJEXT) \
-	HiLoMarkerBaseWrapper.$(OBJEXT) \
-	YDateCoordinateWrapper.$(OBJEXT) \
-	YLogarithmicCoordinateWrapper.$(OBJEXT) \
-	XHyperCoordinateWrapper.$(OBJEXT) \
-	YHyperCoordinateWrapper.$(OBJEXT) XCoordinateWrapper.$(OBJEXT) \
-	XRegularCoordinateWrapper.$(OBJEXT) \
-	XDateCoordinateWrapper.$(OBJEXT) \
-	XLogarithmicCoordinateWrapper.$(OBJEXT) \
-	CoastlinesWrapper.$(OBJEXT) CoastPlottingWrapper.$(OBJEXT) \
-	NoCoastPlottingWrapper.$(OBJEXT) BoundariesWrapper.$(OBJEXT) \
-	NoBoundariesWrapper.$(OBJEXT) GridPlottingWrapper.$(OBJEXT) \
-	NoGridPlottingWrapper.$(OBJEXT) LabelPlottingWrapper.$(OBJEXT) \
-	NoLabelPlottingWrapper.$(OBJEXT) \
-	GeoPointsDecoderWrapper.$(OBJEXT) WindModeWrapper.$(OBJEXT) \
-	SDWindModeWrapper.$(OBJEXT) VDWindModeWrapper.$(OBJEXT) \
-	UVWindModeWrapper.$(OBJEXT) ColourTechniqueWrapper.$(OBJEXT) \
-	CountSelectionTypeWrapper.$(OBJEXT) \
-	IntervalSelectionTypeWrapper.$(OBJEXT) \
-	LevelListSelectionTypeWrapper.$(OBJEXT) \
-	LevelSelectionWrapper.$(OBJEXT) \
-	CalculateColourTechniqueWrapper.$(OBJEXT) \
-	ListColourTechniqueWrapper.$(OBJEXT) IsoLabelWrapper.$(OBJEXT) \
-	NoIsoLabelWrapper.$(OBJEXT) TextVisitorWrapper.$(OBJEXT) \
-	SymbolModeWrapper.$(OBJEXT) SymbolTableModeWrapper.$(OBJEXT) \
-	SymbolAdvancedTableModeWrapper.$(OBJEXT) \
-	SymbolIndividualModeWrapper.$(OBJEXT) \
-	BaseDriverWrapper.$(OBJEXT) \
-	NoOutLayerTechniqueWrapper.$(OBJEXT) \
-	SimpleOutLayerTechniqueWrapper.$(OBJEXT) \
-	HeightTechniqueWrapper.$(OBJEXT) \
-	CalculateHeightTechniqueWrapper.$(OBJEXT) \
-	ListHeightTechniqueWrapper.$(OBJEXT) \
-	IsoHighlightWrapper.$(OBJEXT) NoIsoHighlightWrapper.$(OBJEXT) \
-	PreviewVisitorWrapper.$(OBJEXT) \
-	NoPreviewVisitorWrapper.$(OBJEXT) \
-	MagnifierVisitorWrapper.$(OBJEXT) \
-	NoMagnifierVisitorWrapper.$(OBJEXT) AxisWrapper.$(OBJEXT) \
-	OriginMarkerWrapper.$(OBJEXT) NoOriginMarkerWrapper.$(OBJEXT) \
-	DotOriginMarkerWrapper.$(OBJEXT) \
-	CircleOriginMarkerWrapper.$(OBJEXT) \
-	CalmIndicatorWrapper.$(OBJEXT) \
-	NoCalmIndicatorWrapper.$(OBJEXT) \
-	PostScriptDriverWrapper.$(OBJEXT) BaseDriverWrapper.$(OBJEXT) \
-	KMLDriverWrapper.$(OBJEXT) SVGDriverWrapper.$(OBJEXT) \
-	WindPlottingWrapper.$(OBJEXT) FlagPlottingWrapper.$(OBJEXT) \
-	ArrowPlottingWrapper.$(OBJEXT) CitiesWrapper.$(OBJEXT) \
-	NoCitiesWrapper.$(OBJEXT) NoBinningObjectWrapper.$(OBJEXT) \
-	BinningObjectWrapper.$(OBJEXT) GraphPlottingWrapper.$(OBJEXT) \
-	CurveWrapper.$(OBJEXT) CurveAreaWrapper.$(OBJEXT) \
-	GraphWrapper.$(OBJEXT) GraphArrowWrapper.$(OBJEXT) \
-	GraphFlagWrapper.$(OBJEXT) GraphShadeWrapper.$(OBJEXT) \
-	NoGraphShadeWrapper.$(OBJEXT) GraphShadeStyleWrapper.$(OBJEXT) \
-	DotGraphShadeStyleWrapper.$(OBJEXT) \
-	HatchGraphShadeStyleWrapper.$(OBJEXT) BarWrapper.$(OBJEXT) \
-	MetaDataWrapper.$(OBJEXT) AxisMethodWrapper.$(OBJEXT) \
-	PositionListAxisMethodWrapper.$(OBJEXT) \
-	DateAxisMethodWrapper.$(OBJEXT) \
-	LogarithmicAxisMethodWrapper.$(OBJEXT) \
-	HyperAxisMethodWrapper.$(OBJEXT) $(am__objects_2) \
-	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
-	$(am__objects_6) $(am__objects_7)
-nodist_libMagWrapper_a_OBJECTS = $(am__objects_8)
-libMagWrapper_a_OBJECTS = $(am_libMagWrapper_a_OBJECTS) \
-	$(nodist_libMagWrapper_a_OBJECTS)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libMagWrapper_a_SOURCES) $(nodist_libMagWrapper_a_SOURCES)
-DIST_SOURCES = $(libMagWrapper_a_SOURCES)
-HEADERS = $(include_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-include_HEADERS = MagPlus.h MagRequest.h 
-MY_SOURCES = MagPlus.cc
-MY_SOURCES_NODIST = MvRootSceneNodeWrapper.cc \
-	FortranSceneNodeWrapper.cc PageIDWrapper.cc NoPageIDWrapper.cc \
-	LogoPlottingWrapper.cc LegendVisitorWrapper.cc \
-	ContinuousLegendMethodWrapper.cc \
-	HistogramLegendMethodWrapper.cc LegendMethodWrapper.cc \
-	NoLogoPlottingWrapper.cc UserLogoPlottingWrapper.cc \
-	FortranViewNodeWrapper.cc TransformationWrapper.cc \
-	GeoRectangularProjectionWrapper.cc \
-	MercatorProjectionWrapper.cc \
-	PolarStereographicProjectionWrapper.cc ImportActionWrapper.cc \
-	ImportPlotWrapper.cc TableDecoderWrapper.cc \
-	InputDataWrapper.cc NetcdfDecoderWrapper.cc \
-	SymbolPlottingWrapper.cc WindWrapper.cc ContourWrapper.cc \
-	NoIsoPlotWrapper.cc IsoPlotWrapper.cc ContourMethodWrapper.cc \
-	Akima474MethodWrapper.cc Akima760MethodWrapper.cc \
-	HiLoBaseWrapper.cc NoIsoShadingWrapper.cc IsoShadingWrapper.cc \
-	PolyShadingTechniqueWrapper.cc ShadingTechniqueWrapper.cc \
-	MarkerShadingTechniqueWrapper.cc GridShadingWrapper.cc \
-	PolyShadingMethodWrapper.cc AutomaticContourMethodWrapper.cc \
-	HighHiLoWrapper.cc LowHiLoWrapper.cc CellShadingWrapper.cc \
-	ValuePlotWrapper.cc HatchPolyShadingMethodWrapper.cc \
-	DotPolyShadingMethodWrapper.cc SampleContourMethodWrapper.cc \
-	ValuePlotMethodWrapper.cc ValuePlotBaseWrapper.cc \
-	NoHiLoWrapper.cc MarkerValuePlotMethodWrapper.cc \
-	BothValuePlotMethodWrapper.cc \
-	CartesianTransformationWrapper.cc HiLoWrapper.cc \
-	NoValuePlotWrapper.cc NoHiLoMarkerWrapper.cc \
-	HiLoMarkerWrapper.cc HiLoBothWrapper.cc HiLoNumberWrapper.cc \
-	HiLoTextWrapper.cc HiLoTechniqueWrapper.cc \
-	YCoordinateWrapper.cc YRegularCoordinateWrapper.cc \
-	HiLoMarkerBaseWrapper.cc YDateCoordinateWrapper.cc \
-	YLogarithmicCoordinateWrapper.cc XHyperCoordinateWrapper.cc \
-	YHyperCoordinateWrapper.cc XCoordinateWrapper.cc \
-	XRegularCoordinateWrapper.cc XDateCoordinateWrapper.cc \
-	XLogarithmicCoordinateWrapper.cc CoastlinesWrapper.cc \
-	CoastPlottingWrapper.cc NoCoastPlottingWrapper.cc \
-	BoundariesWrapper.cc NoBoundariesWrapper.cc \
-	GridPlottingWrapper.cc NoGridPlottingWrapper.cc \
-	LabelPlottingWrapper.cc NoLabelPlottingWrapper.cc \
-	GeoPointsDecoderWrapper.cc WindModeWrapper.cc \
-	SDWindModeWrapper.cc VDWindModeWrapper.cc UVWindModeWrapper.cc \
-	ColourTechniqueWrapper.cc CountSelectionTypeWrapper.cc \
-	IntervalSelectionTypeWrapper.cc \
-	LevelListSelectionTypeWrapper.cc LevelSelectionWrapper.cc \
-	CalculateColourTechniqueWrapper.cc \
-	ListColourTechniqueWrapper.cc IsoLabelWrapper.cc \
-	NoIsoLabelWrapper.cc TextVisitorWrapper.cc \
-	SymbolModeWrapper.cc SymbolTableModeWrapper.cc \
-	SymbolAdvancedTableModeWrapper.cc \
-	SymbolIndividualModeWrapper.cc BaseDriverWrapper.cc \
-	NoOutLayerTechniqueWrapper.cc \
-	SimpleOutLayerTechniqueWrapper.cc HeightTechniqueWrapper.cc \
-	CalculateHeightTechniqueWrapper.cc \
-	ListHeightTechniqueWrapper.cc IsoHighlightWrapper.cc \
-	NoIsoHighlightWrapper.cc PreviewVisitorWrapper.cc \
-	NoPreviewVisitorWrapper.cc MagnifierVisitorWrapper.cc \
-	NoMagnifierVisitorWrapper.cc AxisWrapper.cc \
-	OriginMarkerWrapper.cc NoOriginMarkerWrapper.cc \
-	DotOriginMarkerWrapper.cc CircleOriginMarkerWrapper.cc \
-	CalmIndicatorWrapper.cc NoCalmIndicatorWrapper.cc \
-	PostScriptDriverWrapper.cc BaseDriverWrapper.cc \
-	KMLDriverWrapper.cc SVGDriverWrapper.cc WindPlottingWrapper.cc \
-	FlagPlottingWrapper.cc ArrowPlottingWrapper.cc \
-	CitiesWrapper.cc NoCitiesWrapper.cc NoBinningObjectWrapper.cc \
-	BinningObjectWrapper.cc GraphPlottingWrapper.cc \
-	CurveWrapper.cc CurveAreaWrapper.cc GraphWrapper.cc \
-	GraphArrowWrapper.cc GraphFlagWrapper.cc GraphShadeWrapper.cc \
-	NoGraphShadeWrapper.cc GraphShadeStyleWrapper.cc \
-	DotGraphShadeStyleWrapper.cc HatchGraphShadeStyleWrapper.cc \
-	BarWrapper.cc MetaDataWrapper.cc AxisMethodWrapper.cc \
-	PositionListAxisMethodWrapper.cc DateAxisMethodWrapper.cc \
-	LogarithmicAxisMethodWrapper.cc HyperAxisMethodWrapper.cc \
-	$(am__append_1) $(am__append_2) $(am__append_3) \
-	$(am__append_4) $(am__append_5) $(am__append_6)
-later = TaylorProjectionWrapper.cc TaylorGridWrapper.cc PostScriptDriverWrapper.cc GDDriverWrapper.cc 
-
-#lib_LTLIBRARIES	= libMagWrapper.la
-lib_LIBRARIES = libMagWrapper.a
-libMagWrapper_a_SOURCES = $(MY_SOURCES)
-nodist_libMagWrapper_a_SOURCES = $(MY_SOURCES_NODIST)
-AM_CPPFLAGS = -DUSE_NEW_IO ${GRIBAPI_CXXFLAGS} -DMETVIEW \
-	-DH_INCLUDES_CC -DGLX_PROBLEMS -DMAGINT_IS_INT \
-	-DREAL_IS_DOUBLE $(PLATFORM_DEFINES_MARS) \
-	-I$(top_srcdir)/src/basic -I$(top_srcdir)/src/libTable \
-	-I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers \
-	-I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/visualisers \
-	-I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src \
-	-I$(METVIEW_HOME)/src/libMetview -I$(METVIEW_HOME)/src/libMars \
-	-I$(METVIEW_HOME)/src/libUtil $(am__append_7) $(am__append_8)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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) --foreign src/libMagWrapper/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/libMagWrapper/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-libLIBRARIES: $(lib_LIBRARIES)
-	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
-	@list='$(lib_LIBRARIES)'; 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 " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \
-	  $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; }
-	@$(POST_INSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	for p in $$list; do \
-	  if test -f $$p; then \
-	    $(am__strip_dir) \
-	    echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \
-	    ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \
-	  else :; fi; \
-	done
-
-uninstall-libLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(libdir)' && rm -f "$$files" )"; \
-	cd "$(DESTDIR)$(libdir)" && rm -f $$files
-
-clean-libLIBRARIES:
-	-test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
-libMagWrapper.a: $(libMagWrapper_a_OBJECTS) $(libMagWrapper_a_DEPENDENCIES) 
-	$(AM_V_at)-rm -f libMagWrapper.a
-	$(AM_V_AR)$(libMagWrapper_a_AR) libMagWrapper.a $(libMagWrapper_a_OBJECTS) $(libMagWrapper_a_LIBADD)
-	$(AM_V_at)$(RANLIB) libMagWrapper.a
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima474MethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima760MethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ArrowPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AutomaticContourMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AxisMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AxisWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BarWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BaseDriverWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BinningObjectWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BothValuePlotMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoundariesWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CairoDriverWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CalculateColourTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CalculateHeightTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CalmIndicatorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CartesianTransformationWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CellShadingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CircleOriginMarkerWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CitiesWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CoastPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CoastlinesWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ColourTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ContinuousLegendMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ContourMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ContourWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CountSelectionTypeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CurveAreaWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CurveWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DateAxisMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DateGribLoopStepWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DotGraphShadeStyleWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DotOriginMarkerWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DotPolyShadingMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FlagPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FortranSceneNodeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FortranViewNodeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GeoPointsDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GeoRectangularProjectionWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphArrowWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphFlagWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphShadeStyleWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphShadeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribAddressByteModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribAddressModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribAddressRecordModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribLoopStepWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GribLoopWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GridPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GridShadingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HatchGraphShadeStyleWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HatchPolyShadingMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HeightTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoBaseWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoBothWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoMarkerBaseWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoMarkerWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoNumberWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoTextWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HighHiLoWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HistogramLegendMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HyperAxisMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImportActionWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImportPlotWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/InputDataWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IntervalSelectionTypeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoHighlightWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoLabelWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoPlotWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoShadingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/KMLDriverWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LabelPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LegendMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LegendVisitorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LevelListSelectionTypeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LevelSelectionWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ListColourTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ListHeightTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LogarithmicAxisMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LogoPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LowHiLoWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagPlus.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagnifierVisitorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MarkerShadingTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MarkerValuePlotMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MercatorProjectionWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetaDataWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MvRootSceneNodeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoMatrixInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoPolarMatrixInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeoVectorInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfGeopointsInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfMatrixInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfOrcaInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfVectorInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NetcdfXYpointsInterpretorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoBinningObjectWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoBoundariesWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoCalmIndicatorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoCitiesWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoCoastPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoGraphShadeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoGridPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoHiLoMarkerWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoHiLoWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoIsoHighlightWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoIsoLabelWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoIsoPlotWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoIsoShadingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoLabelPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoLogoPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoMagnifierVisitorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoOriginMarkerWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoOutLayerTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoPageIDWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoPreviewVisitorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoValuePlotWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OdaGeoDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OdaXYDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OriginMarkerWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PageIDWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ParamGribLoopStepWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolarStereographicProjectionWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolyShadingMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolyShadingTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PositionListAxisMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PostScriptDriverWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PreviewVisitorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4BonneWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4CollignonWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4EPSG32661Wrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4EPSG3857Wrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4EPSG4326Wrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4GeosWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4GoodeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4LambertWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4MollweideWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4PolarNorthWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Proj4ProjectionWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SDWindModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SVGDriverWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SampleContourMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ShadingTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimpleOutLayerTechniqueWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolAdvancedTableModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolIndividualModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolTableModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TableDecoderWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TextVisitorWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TransformationWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/UVWindModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/UserLogoPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/VDWindModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValuePlotBaseWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValuePlotMethodWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValuePlotWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindModeWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindPlottingWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XDateCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XHyperCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XLogarithmicCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/XRegularCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YDateCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YHyperCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YLogarithmicCoordinateWrapper.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/YRegularCoordinateWrapper.Po at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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 $(LIBRARIES) $(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-libLIBRARIES 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-includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLIBRARIES
-
-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-libLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libLIBRARIES clean-libtool ctags 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-includeHEADERS install-info \
-	install-info-am install-libLIBRARIES 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 uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-libLIBRARIES
-
-
-# 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/libTable/Makefile.am b/src/libTable/Makefile.am
deleted file mode 100755
index 72a98c1..0000000
--- a/src/libTable/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-noinst_LTLIBRARIES	= libTable.la
-
-include_H	= TableReader.h
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	=
-else
-include_HEADERS =
-noinst_HEADERS	= $(include_H)
-endif
-
-libTable_la_SOURCES	= TableReader.cc
-
-libTable_la_LDFLAGS	= -no-undefined -no-install
-AM_CPPFLAGS		= -I$(top_srcdir)/src/libTable
-EXTRA_DIST		=
diff --git a/src/libTable/Makefile.in b/src/libTable/Makefile.in
deleted file mode 100644
index 1e34bcd..0000000
--- a/src/libTable/Makefile.in
+++ /dev/null
@@ -1,631 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = src/libTable
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libTable_la_LIBADD =
-am_libTable_la_OBJECTS = TableReader.lo
-libTable_la_OBJECTS = $(am_libTable_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libTable_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(libTable_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libTable_la_SOURCES)
-DIST_SOURCES = $(libTable_la_SOURCES)
-am__include_HEADERS_DIST = TableReader.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = TableReader.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libTable.la
-include_H = TableReader.h
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = 
-libTable_la_SOURCES = TableReader.cc
-libTable_la_LDFLAGS = -no-undefined -no-install
-AM_CPPFLAGS = -I$(top_srcdir)/src/libTable
-EXTRA_DIST = 
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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/libTable/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/libTable/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libTable.la: $(libTable_la_OBJECTS) $(libTable_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libTable_la_LINK)  $(libTable_la_OBJECTS) $(libTable_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TableReader.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/magics.h b/src/magics.h
index 58db795..c462c1b 100644
--- a/src/magics.h
+++ b/src/magics.h
@@ -116,15 +116,12 @@ using std::set;
 using std::auto_ptr;
 
 #include <exception>
+
 using std::exception;
 
 #include <cassert>
 #include <cmath>
 
-#if defined(MAGICS_AIX_XLC) || defined(MAGICS_WINDOWS_CYGWIN) || defined(MAGICS_MAC_GCC)
-inline double exp10(const double r) { return exp(r*2.302585093);} // exp(r*ln(10))
-#endif
-
 /*! \namespace magics
 
  The <I>magics</I> namespace encapsulates all elements of Magics++.
@@ -182,6 +179,7 @@ typedef magvector<double>	floatarray;
 enum LineStyle { M_SOLID , M_DASH , M_DOT , M_CHAIN_DASH , M_CHAIN_DOT };
 enum Hemisphere { NORTH , SOUTH };
 enum Justification { MLEFT, MCENTRE, MRIGHT };
+enum Position { M_AUTOMATIC, M_TOP , M_BOTTOM , M_LEFT, M_RIGHT};
 enum VerticalAlign { MNORMAL, MTOP, MCAP, MHALF, MBASE, MBOTTOM };
 //enum VerticalAlign { MBASE, MTOP, MHALF, MBOTTOM };   // if change you need to change also share/magics/PostScriptMacros2.dat
 enum Shading { M_SH_NONE, M_SH_SOLID, M_SH_HATCH, M_SH_DOT };
@@ -211,6 +209,8 @@ inline MAGICS_NO_EXPORT double RAD(const double r) { return r*PI/180.;}
 inline MAGICS_NO_EXPORT double DEG(const double d) { return d*180./PI;}
 inline MAGICS_NO_EXPORT bool zero(const double v) { return abs(v) < epsilon; }
 inline MAGICS_NO_EXPORT bool same(const double a, const double b) { return zero(a-b); }
+inline MAGICS_NO_EXPORT bool zero(const double v, double epsilon) { return abs(v) < epsilon; }
+inline MAGICS_NO_EXPORT bool same(const double a, const double b, double epsilon) { return zero(a-b, epsilon); }
 
 //! Global function to read env variables
 inline MAGICS_NO_EXPORT string getEnvVariable(const string var)
@@ -227,9 +227,10 @@ inline MAGICS_NO_EXPORT string getEnvVariable(const string var)
 inline string getMagicsVersionString()
 {
 	const string magics  = MAGICS_NAME;
-	string version = MAGICS_VERSION;
-	if(sizeof(long)==8) version=MAGICS_VERSION+string(" (64 bit)");
-	return magics+string(" ")+version;
+	string version = MAGICS_VERSION_STR;
+	if ( sizeof(long)==8) 
+            version += string(" (64 bit)");
+	return magics + string(" ") + version;
 }
 
 // inline MAGICS_NO_EXPORT int upper_case(const int c) { return toupper(c);}
diff --git a/src/magics.pc.in b/src/magics.pc.in
index 2911dc9..a1c5619 100644
--- a/src/magics.pc.in
+++ b/src/magics.pc.in
@@ -1,13 +1,13 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
+prefix=@CMAKE_INSTALL_PREFIX@
+exec_prefix=${prefix}
+libdir=@CMAKE_INSTALL_PREFIX@/lib
+includedir=@CMAKE_INSTALL_PREFIX@/include
 
 Name: Magics
 Description: Multi-platform meteorological graphics library
-Version: @VERSION@
+Version: @MAGICS_VERSION@
 
 # @PKGCONFIG_REQUIRES@: @MAGICS_REQUIRES@
 Libs: -L${libdir} -lMagPlus
-Libs.private: @MAGICS_3RDPARTY_LIBS@
-Cflags: -I${includedir}/magics @MAGICS_3RDPARTY_INCLUDE@
+Libs.private: @MAGICS_EXTRA_LIBS@
+Cflags: -I${includedir} @MAGICS_EXTRA_INCLUDES@
diff --git a/src/magics_config.h b/src/magics_config.h
deleted file mode 100644
index ad474dc..0000000
--- a/src/magics_config.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/* src/magics_config.h.  Generated from magics_config.h.in by configure.  */
-/* src/magics_config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* define if the Boost library is available */
-#define HAVE_BOOST /**/
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `expat' library (-lexpat). */
-#define HAVE_LIBEXPAT 1
-
-/* Define to 1 if you have the `gd' library (-lgd). */
-#define HAVE_LIBGD 1
-
-/* Define to 1 if you have the `grib_api' library (-lgrib_api). */
-#define HAVE_LIBGRIB_API 1
-
-/* Define to 1 if you have the `proj' library (-lproj). */
-#define HAVE_LIBPROJ 1
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#define HAVE_LIBPTHREAD 1
-
-/* Define to 1 if you have the `spot_database' library (-lspot_database). */
-#define HAVE_LIBSPOT_DATABASE 1
-
-/* Define to 1 if you have the `z' library (-lz). */
-#define HAVE_LIBZ 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_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/stat.h> header file. */
-#define HAVE_SYS_STAT_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 the sub-directory in which libtool stores uninstalled libraries.
-   */
-#define LT_OBJDIR ".libs/"
-
-/* Turn on 32 bit addressing */
-/* #undef MAGICS_32BIT */
-
-/* Install all header files. */
-#define MAGICS_ALLHEADERS 1
-
-/* Turn off the BUFR support */
-#define MAGICS_BUFR 1
-
-/* Turn on the Cairo output support */
-#define MAGICS_CAIRO 1
-
-/* Period of Copyright. */
-#define MAGICS_COPYRIGHT_PERIOD "2007-2013"
-
-/* Turn on the use of Exceptions (not recommended used by Static library!) */
-#define MAGICS_EXCEPTION 1
-
-/* Defines GIF output is supported. */
-#define MAGICS_GIF 1
-
-/* Defines animated GIF output is supported. */
-#define MAGICS_GIF_ANIMATED 1
-
-/* Turn off the GRIB 1/2 support */
-#define MAGICS_GRIB 1
-
-/* Install path. */
-#define MAGICS_INSTALL_PATH "/usr/local/apps/Magics/2.18.15"
-
-/* Turn on the JSON support */
-#define MAGICS_JSON 1
-
-/* LIB_AGE of Magics. */
-/* #undef MAGICS_LIBRARY_AGE */
-
-/* LIB_CURRENT of Magics. */
-/* #undef MAGICS_LIBRARY_CURRENT */
-
-/* LIB_REVISION of Magics. */
-/* #undef MAGICS_LIBRARY_REVISION */
-
-/* Indicate if Mac is used. */
-/* #undef MAGICS_MAC */
-
-/* Turn on metgram script support */
-#define MAGICS_METGRAM 1
-
-/* Installation used by metview */
-#define MAGICS_METVIEW 1
-
-/* Name of this package. */
-#define MAGICS_NAME "Magics"
-
-/* Turn off the netCDF support */
-#define MAGICS_NETCDF 1
-
-/* Turn off the ODB support */
-#define MAGICS_ODB 1
-
-/* Gives the list of output formats */
-#define MAGICS_OUTPUTS "PS_EPS_PDF_SVG_KML_GIF_AGIF_PNG_CPS_CSVG_X"
-
-/* Turn on/off Proj4 support. */
-#define MAGICS_PROJ4 1
-
-/* Enable Python interface (based on swik). */
-#define MAGICS_PYTHON 1
-
-/* Turn on Qt related modules. */
-#define MAGICS_QT 1
-
-/* Turn on raster file format support (GIF&PNG) */
-#define MAGICS_RASTER 1
-
-/* Release date of this version. */
-#define MAGICS_RELEASE_DATE "15-April-2013"
-
-/* Name of installation site. */
-#define MAGICS_SITE "ecmwf"
-
-/* Turn off the SPOT support */
-#define MAGICS_SPOT 1
-
-/* Turn on/off thread support. */
-#define MAGICS_THREADS 1
-
-/* Turn on TIFF file format support */
-/* #undef MAGICS_TIFF */
-
-/* Turn on the TTF support */
-#define MAGICS_TTF 1
-
-/* Path to TTF font files. */
-#define MAGICS_TTF_PATH "share/magics/ttf/"
-
-/* Version of Magics. */
-#define MAGICS_VERSION "2.18.15"
-
-/* Sets visibility flags. */
-/* #undef MAGICS_VISIBILITY */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT ""
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "MagPlus"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "MagPlus 2"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "magplus"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "2"
-
-/* Paths to PS fonts. */
-#define POSTSCRIPT_FONT_PATH "/usr/share/ghostscript/fonts/"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# define _ALL_SOURCE 1
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
-#endif
-
-
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
diff --git a/src/magics_config.h.in b/src/magics_config.h.in
index 1bfea4a..b6642d9 100644
--- a/src/magics_config.h.in
+++ b/src/magics_config.h.in
@@ -1,217 +1,188 @@
-/* src/magics_config.h.in.  Generated from configure.ac by autoheader.  */
+#ifndef magics_config_h
+#define magics_config_h
+
+/*#include "eckit_config.h"*/
 
 /* define if the Boost library is available */
-#undef HAVE_BOOST
+#cmakedefine HAVE_BOOST
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
+#cmakedefine HAVE_DLFCN_H
 
 /* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
+#cmakedefine HAVE_INTTYPES_H
 
 /* Define to 1 if you have the `expat' library (-lexpat). */
-#undef HAVE_LIBEXPAT
+#cmakedefine HAVE_LIBEXPAT
 
 /* Define to 1 if you have the `gd' library (-lgd). */
-#undef HAVE_LIBGD
+#cmakedefine HAVE_LIBGD
 
 /* Define to 1 if you have the `grib_api' library (-lgrib_api). */
-#undef HAVE_LIBGRIB_API
+#cmakedefine HAVE_LIBGRIB_API
 
 /* Define to 1 if you have the `proj' library (-lproj). */
-#undef HAVE_LIBPROJ
+#cmakedefine HAVE_LIBPROJ
 
 /* Define to 1 if you have the `pthread' library (-lpthread). */
-#undef HAVE_LIBPTHREAD
+#cmakedefine HAVE_LIBPTHREAD
 
 /* Define to 1 if you have the `spot_database' library (-lspot_database). */
-#undef HAVE_LIBSPOT_DATABASE
+#cmakedefine HAVE_LIBSPOT_DATABASE
 
 /* Define to 1 if you have the `z' library (-lz). */
-#undef HAVE_LIBZ
+#cmakedefine HAVE_LIBZ
 
 /* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
+#cmakedefine HAVE_MEMORY_H
+
+/* If available, contains the Python version number currently in use. */
+#cmakedefine HAVE_PYTHON
 
 /* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
+#cmakedefine HAVE_STDINT_H
 
 /* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
+#cmakedefine HAVE_STDLIB_H
 
 /* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
+#cmakedefine HAVE_STRINGS_H
 
 /* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
+#cmakedefine HAVE_STRING_H
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
+#cmakedefine HAVE_SYS_STAT_H
 
 /* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
+#cmakedefine HAVE_SYS_TYPES_H
 
 /* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
+#cmakedefine HAVE_UNISTD_H
 
 /* Define to the sub-directory in which libtool stores uninstalled libraries.
    */
-#undef LT_OBJDIR
+#cmakedefine LT_OBJDIR
 
 /* Turn on 32 bit addressing */
-#undef MAGICS_32BIT
+#cmakedefine MAGICS_32BIT
 
 /* Install all header files. */
-#undef MAGICS_ALLHEADERS
+#cmakedefine MAGICS_ALLHEADERS
 
 /* Turn off the BUFR support */
-#undef MAGICS_BUFR
+#cmakedefine MAGICS_BUFR
 
 /* Turn on the Cairo output support */
-#undef MAGICS_CAIRO
+#cmakedefine MAGICS_CAIRO
 
 /* Period of Copyright. */
-#undef MAGICS_COPYRIGHT_PERIOD
+#cmakedefine MAGICS_COPYRIGHT_PERIOD
 
-/* Turn on the use of Exceptions (not recommended used by Static library!) */
-#undef MAGICS_EXCEPTION
 
 /* Defines GIF output is supported. */
-#undef MAGICS_GIF
+#cmakedefine MAGICS_GIF
 
 /* Defines animated GIF output is supported. */
-#undef MAGICS_GIF_ANIMATED
+#cmakedefine MAGICS_GIF_ANIMATED
 
 /* Turn off the GRIB 1/2 support */
-#undef MAGICS_GRIB
+#cmakedefine MAGICS_GRIB
 
 /* Install path. */
-#undef MAGICS_INSTALL_PATH
+#define MAGICS_INSTALL_PATH "@CMAKE_INSTALL_PREFIX@"
 
 /* Turn on the JSON support */
-#undef MAGICS_JSON
+#cmakedefine MAGICS_JSON
 
 /* LIB_AGE of Magics. */
-#undef MAGICS_LIBRARY_AGE
+#cmakedefine MAGICS_LIBRARY_AGE
 
 /* LIB_CURRENT of Magics. */
-#undef MAGICS_LIBRARY_CURRENT
+#cmakedefine MAGICS_LIBRARY_CURRENT
 
 /* LIB_REVISION of Magics. */
-#undef MAGICS_LIBRARY_REVISION
+#cmakedefine MAGICS_LIBRARY_REVISION
 
 /* Indicate if Mac is used. */
-#undef MAGICS_MAC
+#cmakedefine MAGICS_MAC
 
 /* Turn on metgram script support */
-#undef MAGICS_METGRAM
+#cmakedefine MAGICS_METGRAM
 
 /* Installation used by metview */
-#undef MAGICS_METVIEW
+#cmakedefine MAGICS_METVIEW
 
 /* Name of this package. */
-#undef MAGICS_NAME
+#define MAGICS_NAME "@MAGICS_NAME@"
 
 /* Turn off the netCDF support */
-#undef MAGICS_NETCDF
+#cmakedefine MAGICS_NETCDF
 
 /* Turn off the ODB support */
-#undef MAGICS_ODB
+#cmakedefine MAGICS_ODB
 
 /* Gives the list of output formats */
-#undef MAGICS_OUTPUTS
-
-/* Turn on/off Proj4 support. */
-#undef MAGICS_PROJ4
+#cmakedefine MAGICS_OUTPUTS
 
 /* Enable Python interface (based on swik). */
-#undef MAGICS_PYTHON
+#cmakedefine MAGICS_PYTHON
 
 /* Turn on Qt related modules. */
-#undef MAGICS_QT
+#cmakedefine MAGICS_QT
 
 /* Turn on raster file format support (GIF&PNG) */
-#undef MAGICS_RASTER
+#cmakedefine MAGICS_RASTER
 
 /* Release date of this version. */
-#undef MAGICS_RELEASE_DATE
+#cmakedefine MAGICS_RELEASE_DATE
 
 /* Name of installation site. */
-#undef MAGICS_SITE
+#define MAGICS_SITE "@MAGICS_SITE@"
 
 /* Turn off the SPOT support */
-#undef MAGICS_SPOT
+#cmakedefine MAGICS_SPOT
 
 /* Turn on/off thread support. */
-#undef MAGICS_THREADS
+#cmakedefine MAGICS_THREADS
 
 /* Turn on TIFF file format support */
-#undef MAGICS_TIFF
+#cmakedefine MAGICS_TIFF
 
 /* Turn on the TTF support */
-#undef MAGICS_TTF
+#cmakedefine MAGICS_TTF
 
 /* Path to TTF font files. */
-#undef MAGICS_TTF_PATH
+#cmakedefine MAGICS_TTF_PATH
 
 /* Version of Magics. */
-#undef MAGICS_VERSION
+#define MAGICS_VERSION "@MAGICS_VERSION@"
+
+/* Full Version Name of Magics. */
+#define MAGICS_VERSION_STR "@MAGICS_VERSION_STR@"
 
 /* Sets visibility flags. */
-#undef MAGICS_VISIBILITY
+#cmakedefine MAGICS_VISIBILITY
 
 /* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
+#cmakedefine PACKAGE_BUGREPORT
 
 /* Define to the full name of this package. */
-#undef PACKAGE_NAME
+#cmakedefine PACKAGE_NAME
 
 /* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
+#cmakedefine PACKAGE_STRING
 
 /* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
+#cmakedefine PACKAGE_TARNAME
 
 /* Define to the home page for this package. */
-#undef PACKAGE_URL
+#cmakedefine PACKAGE_URL
 
 /* Define to the version of this package. */
-#undef PACKAGE_VERSION
+#cmakedefine PACKAGE_VERSION
 
 /* Paths to PS fonts. */
-#undef POSTSCRIPT_FONT_PATH
+#cmakedefine POSTSCRIPT_FONT_PATH
 
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
 #endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
diff --git a/src/magics_ecmwf_log.h b/src/magics_ecmwf_log.h
index c6df40f..88df0be 100644
--- a/src/magics_ecmwf_log.h
+++ b/src/magics_ecmwf_log.h
@@ -69,8 +69,9 @@ inline MAGICS_NO_EXPORT void writeMagLog(const std::string &interface)
 		fprintf(filePtr_,"%s\n",logline.c_str());
 
 		fflush(filePtr_);
-		fclose(filePtr_);
+
 	}//endif NOT cgm or cgs
+	fclose(filePtr_);
    }
   }
 }
diff --git a/src/oda/CMakeLists.txt b/src/oda/CMakeLists.txt
new file mode 100644
index 0000000..04fbdbc
--- /dev/null
+++ b/src/oda/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+
+set( _odb_srcs
+	OdaDecoder.h
+	ODACalls.cc
+	OdaDecoder.cc
+)
+
+foreach( file ${_odb_srcs} )
+	list( APPEND odb_srcs oda/${file} )
+endforeach()
+
+set( odb_srcs ${odb_srcs} PARENT_SCOPE )
+
+
diff --git a/src/oda/Makefile.am b/src/oda/Makefile.am
deleted file mode 100644
index 5fecdf1..0000000
--- a/src/oda/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-AUTOMAKE_OPTIONS= foreign
-
-noinst_LTLIBRARIES = liboda.la
-
-include_H	= OdaDecoder.h
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= 
-else
-include_HEADERS = 
-noinst_HEADERS	= $(include_H)
-endif
-
-ATTRIBUTES		= OdaGeoDecoderAttributes.cc OdaXYDecoderAttributes.cc
-#lib_LIBRARIES		= libMagPlusODA.a
-
-nodist_liboda_la_SOURCES	= ${ATTRIBUTES}
-liboda_la_SOURCES 	= ODACalls.cc OdaDecoder.cc
-#libMagPlusODA_a_CPPFLAGS	= -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/visualisers -I$(ODB_PATH)/include
-liboda_la_CPPFLAGS	= -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src -I$(top_srcdir)/src/visualisers
-#liboda_la_LIBADD	= $(ODB_PATH)/lib/libEc.a $(ODB_PATH)/lib/libOda.a
-liboda_la_LDFLAGS	= -no-undefined -no-install
-
diff --git a/src/oda/Makefile.in b/src/oda/Makefile.in
deleted file mode 100644
index b7beada..0000000
--- a/src/oda/Makefile.in
+++ /dev/null
@@ -1,675 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = src/oda
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-liboda_la_LIBADD =
-am_liboda_la_OBJECTS = liboda_la-ODACalls.lo liboda_la-OdaDecoder.lo
-am__objects_1 = liboda_la-OdaGeoDecoderAttributes.lo \
-	liboda_la-OdaXYDecoderAttributes.lo
-nodist_liboda_la_OBJECTS = $(am__objects_1)
-liboda_la_OBJECTS = $(am_liboda_la_OBJECTS) \
-	$(nodist_liboda_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-liboda_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(liboda_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(liboda_la_SOURCES) $(nodist_liboda_la_SOURCES)
-DIST_SOURCES = $(liboda_la_SOURCES)
-am__include_HEADERS_DIST = OdaDecoder.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = OdaDecoder.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-noinst_LTLIBRARIES = liboda.la
-include_H = OdaDecoder.h
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = 
-ATTRIBUTES = OdaGeoDecoderAttributes.cc OdaXYDecoderAttributes.cc
-#lib_LIBRARIES		= libMagPlusODA.a
-nodist_liboda_la_SOURCES = ${ATTRIBUTES}
-liboda_la_SOURCES = ODACalls.cc OdaDecoder.cc
-#libMagPlusODA_a_CPPFLAGS	= -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/visualisers -I$(ODB_PATH)/include
-liboda_la_CPPFLAGS = -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src -I$(top_srcdir)/src/visualisers
-#liboda_la_LIBADD	= $(ODB_PATH)/lib/libEc.a $(ODB_PATH)/lib/libOda.a
-liboda_la_LDFLAGS = -no-undefined -no-install
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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) --foreign src/oda/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/oda/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-liboda.la: $(liboda_la_OBJECTS) $(liboda_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(liboda_la_LINK)  $(liboda_la_OBJECTS) $(liboda_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboda_la-ODACalls.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboda_la-OdaDecoder.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboda_la-OdaGeoDecoderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liboda_la-OdaXYDecoderAttributes.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-liboda_la-ODACalls.lo: ODACalls.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboda_la-ODACalls.lo -MD -MP -MF $(DEPDIR)/liboda_la-ODACalls.Tpo -c -o liboda_la-ODACalls.lo `test -f 'ODACalls.cc' || echo '$(srcdir)/'`ODACalls.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/liboda_la-ODACalls.Tpo $(DEPDIR)/liboda_la-ODACalls.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='ODACalls.cc' object='liboda_la-ODACalls.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboda_la-ODACalls.lo `test -f 'ODACalls.cc' || echo '$(srcdir)/'`ODACalls.cc
-
-liboda_la-OdaDecoder.lo: OdaDecoder.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboda_la-OdaDecoder.lo -MD -MP -MF $(DEPDIR)/liboda_la-OdaDecoder.Tpo -c -o liboda_la-OdaDecoder.lo `test -f 'OdaDecoder.cc' || echo '$(srcdir)/'`OdaDecoder.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/liboda_la-OdaDecoder.Tpo $(DEPDIR)/liboda_la-OdaDecoder.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='OdaDecoder.cc' object='liboda_la-OdaDecoder.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboda_la-OdaDecoder.lo `test -f 'OdaDecoder.cc' || echo '$(srcdir)/'`OdaDecoder.cc
-
-liboda_la-OdaGeoDecoderAttributes.lo: OdaGeoDecoderAttributes.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboda_la-OdaGeoDecoderAttributes.lo -MD -MP -MF $(DEPDIR)/liboda_la-OdaGeoDecoderAttributes.Tpo -c -o liboda_la-OdaGeoDecoderAttributes.lo `test -f 'OdaGeoDecoderAttributes.cc' || echo '$(srcdir)/'`OdaGeoDecoderAttributes.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/liboda_la-OdaGeoDecoderAttributes.Tpo $(DEPDIR)/liboda_la-OdaGeoDecoderAttributes.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='OdaGeoDecoderAttributes.cc' object='liboda_la-OdaGeoDecoderAttributes.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboda_la-OdaGeoDecoderAttributes.lo `test -f 'OdaGeoDecoderAttributes.cc' || echo '$(srcdir)/'`OdaGeoDecoderAttributes.cc
-
-liboda_la-OdaXYDecoderAttributes.lo: OdaXYDecoderAttributes.cc
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT liboda_la-OdaXYDecoderAttributes.lo -MD -MP -MF $(DEPDIR)/liboda_la-OdaXYDecoderAttributes.Tpo -c -o liboda_la-OdaXYDecoderAttributes.lo `test -f 'OdaXYDecoderAttributes.cc' || echo '$(srcdir)/'`OdaXYDecoderAttributes.cc
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/liboda_la-OdaXYDecoderAttributes.Tpo $(DEPDIR)/liboda_la-OdaXYDecoderAttributes.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='OdaXYDecoderAttributes.cc' object='liboda_la-OdaXYDecoderAttributes.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liboda_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o liboda_la-OdaXYDecoderAttributes.lo `test -f 'OdaXYDecoderAttributes.cc' || echo '$(srcdir)/'`OdaXYDecoderAttributes.cc
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/oda/OdaDecoder.cc b/src/oda/OdaDecoder.cc
index fde64ba..f3b4c7d 100644
--- a/src/oda/OdaDecoder.cc
+++ b/src/oda/OdaDecoder.cc
@@ -31,7 +31,7 @@
 #include <map>
 #include <set>
 
-#include "odblib/oda.h"
+#include "odblib/odb_api.h"
 extern "C" {
 #include "odblib/odbcapi.h"
 }
@@ -43,6 +43,8 @@ extern "C" {
 #include "SciMethods.h"
 #include "TextVisitor.h"
 
+#include "odblib/Reader.h"
+
 static int getOdbColumnIndex(odb::Reader::iterator &,const string&);
 
 int getOdbColumnIndex(odb::Reader::iterator &firstRowIt,const string& colName)
@@ -161,7 +163,6 @@ void OdaGeoDecoder::decode(const Transformation& transformation)
 				}	
 				
 				dataIndex_.push_back(dataCnt);
-				dataCnt++;
 				
 				row++;
 				if (nb_rows_ != -1 && row >= nb_rows_)
@@ -169,6 +170,8 @@ void OdaGeoDecoder::decode(const Transformation& transformation)
 					break;
 				}
 			}
+			dataCnt++;
+			
 		}
 
 		MagLog::info() <<  "Number of rows: " << row << endl;
@@ -203,10 +206,9 @@ void OdaGeoDecoder::visit(Transformation& transformation) {MagLog::info() <<  "N
 		if ( maxy < (*point)->y_ ) maxy = (*point)->y_;
 	}
 
-	transformation.setDataMinX(minx);
-	transformation.setDataMinY(miny);
-	transformation.setDataMaxX(maxx);
-	transformation.setDataMaxY(maxy);
+	transformation.setDataMinMaxX(minx, maxx);
+	transformation.setDataMinMaxY(miny, maxy);
+
 }
 void OdaGeoDecoder::decode()
 {    
@@ -773,7 +775,6 @@ void OdaXYDecoder::customisedPoints(const Transformation& transformation, const
 				stats_["y"].push_back((*it)[yIndex]);
 		
 				dataIndex_.push_back(dataCnt);
-				dataCnt++;
 				
 				row++;
 				if(nb_rows_ != -1 && row >= nb_rows_)
@@ -781,6 +782,7 @@ void OdaXYDecoder::customisedPoints(const Transformation& transformation, const
 					break;
 				}
 			}
+			dataCnt++;			
 		}
 
 		computeStats();
@@ -943,8 +945,7 @@ void OdaXYDecoder::decode(const Transformation& transformation)
 			      stats_["x"].push_back(x);
 			      stats_["y"].push_back(y);
 
-			      dataIndex_.push_back(dataCnt);
-			      dataCnt++;
+			      dataIndex_.push_back(dataCnt);			
 			      
 			      row++;
 			      if (nb_rows_ != -1 && row >= nb_rows_)
@@ -952,6 +953,7 @@ void OdaXYDecoder::decode(const Transformation& transformation)
 				      break;
 			      }
 		      }
+		      dataCnt++;
 	      }
       
 	      computeStats();
@@ -1046,10 +1048,9 @@ void OdaXYDecoder::visit(Transformation& transformation) {
 		if ( maxy < (*point)->y_ ) maxy = (*point)->y_;
 	}
 
-	transformation.setDataMinX(minx);
-		transformation.setDataMinY(miny);
-		transformation.setDataMaxX(maxx);
-		transformation.setDataMaxY(maxy);
+	transformation.setDataMinMaxX(minx, maxx);
+		transformation.setDataMinMaxY(miny, maxy);
+
 
 }
 
diff --git a/src/params/Akima474Method.xml b/src/params/Akima474Method.xml
new file mode 100644
index 0000000..e6d1e7e
--- /dev/null
+++ b/src/params/Akima474Method.xml
@@ -0,0 +1,19 @@
+<magics>
+<class inherits="ContourMethod" xmltag="akima474" name="Akima474Method" used_by="ContourTechnique" directory="visualisers" prefix="akima" action="pcont" doc_inherits="no">
+  	<documentation>
+  Generates contour lines from a regular/irregular grid of data points.
+  First a denser regular grid is created based on the original grid and then
+  the isolines are produced by applying a simple linear contouring algorithm.
+  The user may, by calling the parameter setting routines, 
+  select the interpolation level which defines the density of the output  
+  grid, which then determines the smoothness of the isolines.
+  	</documentation>
+  	<parameter xml="x_resolution" from="float" name="contour_akima_x_resolution" default="1.5" member="resolutionX" to="float">
+         		<documentation> X Resolution 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  	<parameter xml="y_resolution" from="float" name="contour_akima_y_resolution" default="1.5" member="resolutionY" to="float">
+         		<documentation> Y Resolution 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Akima760Method.xml b/src/params/Akima760Method.xml
new file mode 100644
index 0000000..d2bc814
--- /dev/null
+++ b/src/params/Akima760Method.xml
@@ -0,0 +1,23 @@
+<magics>
+<class inherits="ContourMethod" name="Akima760Method" used_by="ContourTechnique" directory="visualisers" action="pcont" doc_inherits="no">
+  	<documentation>
+  Generates contour lines from a regular/irregular grid of data points.
+  First a denser regular grid is created based on the original grid and then
+  the isolines are produced by applying a simple linear contouring algorithm.
+  The user may, by calling the parameter setting routines, 
+  select the interpolation level which defines the density of the output 
+  grid, which then determines the smoothness of the isolines.
+  	</documentation>
+  	<parameter xml="x_resolution" from="float" name="contour_akima_x_resolution" default="1.5" member="resolutionX" to="float">
+         		<documentation>X resolution of Akima interpolation		</documentation>
+         		<migration> New Magics: Parameter resolutionX sent to new Magics[AKIMA760].  		</migration>
+         		<release>Magics++0.1		</release>
+         		<related_info> url_path 		</related_info>
+  	</parameter>
+  	<parameter xml="y_resolution" from="float" name="contour_akima_y_resolution" default="1.5" member="resolutionY" to="float">
+         		<documentation>Y resolution of Akima interpolation		</documentation>
+         		<migration> New Magics: Parameter resolutionY sent to new Magics[AKIMA760].  		</migration>
+         		<release>Magics++0.1		</release>
+         		<related_info> url_path 		</related_info>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Akima761Method.xml b/src/params/Akima761Method.xml
new file mode 100644
index 0000000..569751b
--- /dev/null
+++ b/src/params/Akima761Method.xml
@@ -0,0 +1,20 @@
+<magics>
+<class inherits="ContourMethod" name="Akima761Method" used_by="ContourTechnique" directory="visualisers" action="pcont" doc_inherits="no">
+  	<documentation>
+  Generates contour lines from an irregularly-distributed set of points.
+  	</documentation>
+  
+  	<parameter xml="x_resolution" from="float" name="contour_akima_x_resolution" default="1.5" member="resolutionX" to="float">
+         		<documentation> X Resolution of the Akima output matrix 		</documentation>
+         		<migration> New Magics: Parameter resolutionX sent to new Magics[AKIMA760].  		</migration>
+         		<release>Magics++0.1		</release>
+         		<related_info> url_path 		</related_info>
+  	</parameter>
+  
+  	<parameter xml="y_resolution" from="float" name="contour_akima_y_resolution" default="1.5" member="resolutionY" to="float">
+         		<documentation> Y Resolution of the Akima output matrix 		</documentation>
+         		<migration> New Magics: Parameter resolutionY sent to new Magics[AKIMA760].  		</migration>
+         		<release>Magics++0.1		</release>
+         		<related_info> url_path 		</related_info>
+  	</parameter>
+</class></magics>
diff --git a/src/params/ArrowPlotting.xml b/src/params/ArrowPlotting.xml
new file mode 100644
index 0000000..7a9385a
--- /dev/null
+++ b/src/params/ArrowPlotting.xml
@@ -0,0 +1,84 @@
+<magics>
+<class inherits="WindPlotting" xmltag="arrow" name="ArrowPlotting" directory="visualisers" prefix="wind/wind_arrow" action="pwind" doc_inherits="no">
+  	<documentation>	</documentation>
+
+  	<parameter from="string" name="wind_arrow_calm_indicator" default="off" member="calm" to="CalmIndicator" values="on/off">
+			<release>Basic implementation in 0.6		</release>
+	  		<option xml="calm" fortran="on" include="CalmIndicator.h" name="CalmIndicator">		</option>
+      		<option xml="nocalm" fortran="off" include="CalmIndicator.h" name="NoCalmIndicator">		</option>
+      		<set name="wind_arrow_calm_indicator_size" value="on">		</set>
+      		<set name="wind_arrow_calm_below" value="on">		</set>
+			<documentation>Plot calm indicator circle if wind speed is less than or equal to the value in WIND_ARROW_CALM_BELOW (ON / OFF)		</documentation>
+  	</parameter>
+
+  	<parameter member="calm_indicator_size" to="float" default="0.3" from="float" name="wind_arrow_calm_indicator_size">
+			<release>Basic implementation in 0.6		</release>
+			<documentation> The radius of the circle which indicates calm 		</documentation>
+  	</parameter>
+
+  	<parameter member="calm_below" to="float" default="0.5" from="float" name="wind_arrow_calm_below">
+			<release>Basic implementation in 0.6		</release>
+			<documentation> Winds less than or equal to this value will be drawn as calm. 		</documentation>
+  	</parameter>
+
+  	<parameter member="colour" to="Colour" default="blue" from="string" name="wind_arrow_colour">
+			<release>Basic implementation in 0.6		</release>
+			<documentation> Colour of wind arrow  		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="wind_arrow_cross_boundary" default="on" member="cross_boundary" to="bool" implemented="no">
+			<release>Basic implementation in 0.6		</release>
+        		<documentation> If set to 'ON', wind arrows are truncated if they cross the subpage border (ON / OFF). 		</documentation>
+  	</parameter>
+
+  	<parameter member="head" to="int" default="0" from="int" name="wind_arrow_head_shape">
+			<release>Basic implementation in  1.3.		</release>
+			<documentation>Table number, XY, indicating shape of arrowhead X		</documentation>
+  	</parameter>
+  
+  	<parameter member="ratio" to="float" default="0.3" from="float" name="wind_arrow_head_ratio">
+			<release>Basic implementation in 0.6		</release>
+			<documentation> Table number, XY, indicating style and shape of arrowhead X 		</documentation>
+  	</parameter>
+  
+ 
+
+  
+
+ 
+
+  	<parameter member="max_speed" to="float" default="1.0e+21" from="float" name="wind_arrow_max_speed">
+	 		<release>Basic implementation in 0.6		</release>
+         		<documentation> Highest value of wind speed to be plotted 		</documentation>
+  	</parameter>
+
+  	<parameter member="min_speed" to="float" default="-1.0e+21" from="float" name="wind_arrow_min_speed">
+			<release>Basic implementation in 0.6		</release>
+        		<documentation> Lowest value of wind speed to be plotted 		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="wind_arrow_origin_position" default="tail" member="origin_position" to="ArrowPosition" values="centre/tail">
+			<release>Basic implementation in 0.6		</release>
+        		<documentation> The position of the wind arrow relative to the wind origin  		</documentation>
+  	</parameter>
+
+  	<parameter member="thickness" to="int" default="1" from="int" name="wind_arrow_thickness">
+	 		<release>Basic implementation in 0.8		</release>
+         		<documentation> Thickness of wind arrow shaft 		</documentation>
+  	</parameter>
+  
+  	<parameter member="style" to="LineStyle" default="solid" from="string" name="wind_arrow_style">
+         		<documentation>Controls the line style of the arrow flag shaft.		</documentation>
+         		<release>Basic implementation in 0.8.		</release>
+  	</parameter>
+   	<parameter from="string" name="wind_arrow_unit_system" visible="false" default="paper" member="unit_system" to="string" values="paper/user">
+        		<documentation>Coordinates sysem used to sacle the arrow : paper -->1cm, user-->1 user unit		</documentation>
+  	</parameter>
+
+  	<parameter member="unit_velocity" to="float" default="25.0" from="float" name="wind_arrow_unit_velocity">
+        		<documentation>Wind speed in m/s represented by a unit vector (1.0 cm or 1.0 user unit depending on the value of wind_arrow_unit_system ).		</documentation>
+  	</parameter>  
+  	<parameter member="legend_unit" to="string" default="m/s" from="string" name="wind_arrow_legend_text">
+        		<documentation> Text to be used as units in the legend text 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/AutomaticContourMethod.xml b/src/params/AutomaticContourMethod.xml
new file mode 100644
index 0000000..379a24a
--- /dev/null
+++ b/src/params/AutomaticContourMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="ContourMethod" directory="visualisers" include="AutomaticContourMethod.h" name="AutomaticContourMethod"/></magics>
diff --git a/src/params/AutomaticPlotManager.xml b/src/params/AutomaticPlotManager.xml
new file mode 100644
index 0000000..4b41a45
--- /dev/null
+++ b/src/params/AutomaticPlotManager.xml
@@ -0,0 +1,29 @@
+<magics>
+<class action="popen/pnew" directory="common" name="AutomaticPlotManager">
+  	<documentation> Object used to handle the call to the Pseudo action routine PNEW 	</documentation>
+  	<parameter xml="plot_start" from="string" name="plot_start" default="bottom" member="plot_start" to="string">
+         		<documentation> Position of first page plotted (BOTTOM/TOP) 		</documentation>
+         		<migration> New Magics: Parameter plot_start sent to new Magics[Page].  		</migration>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+  	<parameter xml="plot_direction" from="string" name="plot_direction" default="vertical" member="plot_direction" to="string">
+         		<documentation> Direction of plotting (HORIZONTAL/VERTICAL) 		</documentation>
+         		<migration> New Magics: Parameter plot_direction sent to new Magics[Page].  		</migration>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+  	<parameter xml="page_x_gap" from="float" name="page_x_gap" default="0.0cm" member="page_x_gap" to="float" implemented="no">
+         		<documentation> Gap between pages in X direction 		</documentation>
+         		<migration> New Magics: Parameter page_x_gap sent to new Magics[Page].  		</migration>
+         		<release>Magics++0.2		</release>
+         		<release_info>Not fully implemented		</release_info>
+  	</parameter>
+
+  	<parameter xml="page_y_gap" from="float" name="page_y_gap" default="0.0cm" member="page_y_gap" to="float" implemented="no">
+         		<documentation> Gap between pages in Y direction 		</documentation>
+         		<migration> New Magics: Parameter page_y_gap sent to new Magics[Page].  		</migration>
+         		<release>Magics++0.2		</release>
+          		<release_info>Not fully implemented		</release_info>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Axis.xml b/src/params/Axis.xml
new file mode 100644
index 0000000..c6f279f
--- /dev/null
+++ b/src/params/Axis.xml
@@ -0,0 +1,248 @@
+<magics>
+<class directory="visualisers" metview="maxis" xmltag="axis" name="Axis">
+  	<documentation> This object creates an axis for non-geographical plots. 	</documentation>
+ 	<parameter from="string" name="axis_orientation" default="horizontal" member="orientation" to="string" values="horizontal/vertical">
+         		<documentation> Orientation of axis  		</documentation>
+  	</parameter>
+ 	<parameter from="string" name="axis_position" default="automatic" member="position" to="string" values="bottom/top/left/right/automatic">
+         		<documentation> Position of the axes  		</documentation>
+        
+  	</parameter>
+
+  	<parameter member="method" to="AxisMethod" default="regular" from="string" name="axis_type">
+         		<documentation> Method to position ticks on an axis  		</documentation>
+         		<option xml="regular" fortran="regular" include="AxisMethod.h" name="AxisMethod">		</option>
+         		<option xml="position_list" fortran="position_list" include="AxisMethod.h" name="PositionListAxisMethod">		</option>
+         		<option xml="logarithmic" fortran="logarithmic" include="AxisMethod.h" name="LogarithmicAxisMethod">		</option>
+         		<option xml="date" fortran="date" include="DateAxis.h" name="DateAxisMethod">		</option> 
+         		<option xml="geoline" fortran="geoline" include="AxisMethod.h" name="HyperAxisMethod">		</option>
+         		<set name="axis_tick_position_list" value="position_list">		</set>
+         		<set name="axis_tick_interval" value="regular/geoline/date">		</set> 
+  	</parameter>
+  
+  	<parameter member="line" to="bool" default="on" from="string" name="axis_line">
+         		<documentation> Plot the axis line 		</documentation>  
+         		<set name="axis_line_colour" value="on">		</set>
+         		<set name="axis_line_style" value="on">		</set>
+         		<set name="axis_line_thickness" value="on">		</set>
+             
+  	</parameter>
+   	<parameter member="line_colour" to="Colour" default="automatic" from="string" name="axis_line_colour">
+         		<documentation> Colour of axis line		</documentation>
+  	</parameter>
+
+  	<parameter member="line_style" to="LineStyle" default="solid" from="string" name="axis_line_style">
+         		<documentation> Line Style of axis line 		</documentation>
+  	</parameter>
+
+  	<parameter member="line_thickness" to="int" default="2" from="int" name="axis_line_thickness">
+         		<documentation>Thickness of axis line 		</documentation>
+  	</parameter>
+
+
+  	<parameter member="grid" to="bool" default="off" from="string" name="axis_grid">
+         		<documentation> Plot axis grid lines 		</documentation>
+         		<set name="axis_grid_colour" value="on">		</set>
+         		<set name="axis_grid_line_style" value="on">		</set>
+         		<set name="axis_grid_thickness" value="on">		</set>
+         		<set name="axis_grid_reference_level" value="on">		</set>
+         		<set name="axis_grid_reference_colour" value="on">		</set>
+         		<set name="axis_grid_reference_line_style" value="on">		</set>  
+         		<set name="axis_grid_reference_thickness" value="on">		</set>
+  	</parameter>
+ 	<parameter member="grid_colour" to="Colour" default="yellow" from="string" name="axis_grid_colour">
+         		<documentation>Colour of grid lines		</documentation>
+         		<migration>2.13.5 - Default changed fronm YELLOW to BLACK		</migration>
+  	</parameter>
+ 	<parameter member="grid_style" to="LineStyle" default="solid" from="string" name="axis_grid_line_style">
+         		<documentation> Line style of grid  		</documentation>
+  	</parameter>
+  
+  	<parameter member="grid_thickness" to="int" default="1" from="int" name="axis_grid_thickness">
+         		<documentation> Thickness of grid lines 		</documentation>
+  	</parameter>
+  	<parameter member="grid_reference_level" to="float" default="INT_MAX" from="float" name="axis_grid_reference_level">
+         		<documentation> value to be used as reference for the grid		</documentation> 
+  	</parameter>
+ 	<parameter member="grid_reference_colour" to="Colour" default="automatic" from="string" name="axis_grid_reference_colour">
+         		<documentation> Colour of the reference  grid line		</documentation>
+  	</parameter>
+  	<parameter member="grid_reference_style" to="LineStyle" default="solid" from="string" name="axis_grid_reference_line_style">
+         		<documentation> Line style of the reference  grid line  		</documentation>
+  	</parameter>
+  	<parameter member="grid_reference_thickness" to="int" default="2" from="int" name="axis_grid_reference_thickness">
+         		<documentation> Thickness of the reference grid line 		</documentation>
+  	</parameter>
+
+  	<parameter member="title" to="bool" default="on" from="string" name="axis_title">
+         		<documentation> Plot axis title  		</documentation>
+				<set name="axis_title_text" value="on">		</set>   
+				<set name="axis_title_orientation" value="on">		</set>   
+				<set name="axis_title_colour" value="on">		</set> 
+				<set name="axis_title_height" value="on">		</set> 
+				<set name="axis_title_font" value="on">		</set> 
+				<set name="axis_title_font_style" value="on">		</set>          
+  	</parameter>
+  
+  	<parameter xml="text" from="string" name="axis_title_text" default="" member="title_text" to="string">
+         		<documentation> The axis title text 		</documentation>
+  	</parameter>
+  	<parameter xml="title_orientation" from="string" name="axis_title_orientation" default="parallel" member="title_orientation" to="string" values="horizontal/vertical/parallel">
+         		<documentation> Orientation of the axis title  		</documentation>
+  	</parameter>
+  
+ 	<parameter member="title_colour" to="Colour" default="automatic" from="string" name="axis_title_colour">
+         		<documentation> Colour of axis title		</documentation>
+  	</parameter>
+
+  	<parameter member="title_height" to="float" default="0.4" from="float" name="axis_title_height">
+         		<documentation> Height of axis title		</documentation>
+  	</parameter>
+
+
+  	<parameter member="title_font" to="string" default="sansserif" from="string" name="axis_title_font">
+         		<documentation>Font of axis title 		</documentation>
+  	</parameter>
+
+  	<parameter member="title_font_style" to="string" default="normal" from="string" name="axis_title_font_style">
+         		<documentation>Font style of axis title 		</documentation>
+  	</parameter>
+  
+ 
+  	<parameter member="tick" to="bool" default="on" from="string" name="axis_tick">
+         		<documentation> Plot ticks 		</documentation>
+          		<set name="axis_tick_interval" value="on">		</set>  
+          		<set name="axis_tick_position" value="on">		</set>
+  		  		<set name="axis_tick_colour" value="on">		</set>
+  		  		<set name="axis_tick_size" value="on">		</set>
+  		  		<set name="axis_tick_thickness" value="on">		</set>  
+  	</parameter>
+
+   	<parameter xml="interval" from="float" name="axis_tick_interval" default="INT_MAX" member="interval" to="float">
+         		<documentation> Interval between ticks in user units 		</documentation>
+         		<migration>Default changed from '1/7 of axis length' to'INT_MAX' 		</migration>
+  	</parameter>
+  
+   	<parameter xml="position_list" from="floatarray" name="axis_tick_position_list" default="floatarray()" member="positions" to="floatarray">
+         		<documentation> Array specifying the positions of ticks (in user coordinates!)		</documentation>    
+         		<migration>Units have changed from 'cm' to user coordinates		</migration>
+  	</parameter>
+
+ 	<parameter from="string" name="axis_tick_position" default="out" member="tick_position" to="string" values="out/in">
+         		<documentation> Tick position, if in the ticks will positioned inside the frame.		</documentation>
+  	</parameter>
+ 
+  	<parameter member="tick_colour" to="Colour" default="automatic" from="string" name="axis_tick_colour">
+         		<documentation> Colour of ticks		</documentation>
+  	</parameter>
+
+  	<parameter member="tick_length" to="float" default="0.175" from="float" name="axis_tick_size">
+         		<documentation> Size of ticks 		</documentation>
+  	</parameter>
+
+  	<parameter xml="thickness" from="int" name="axis_tick_thickness" default="2" member="tick_thickness" to="int">
+         		<documentation> Thickness of tick marks 		</documentation>
+  	</parameter>
+   	<parameter member="label" to="bool" default="on" from="string" name="axis_tick_label">
+         		<documentation> Plot tick labels (ON/OFF) 		</documentation>
+  		  		<set name="axis_tick_label_type" value="on">		</set>
+  		  		<set name="axis_tick_label_frequency" value="on">		</set>
+  		  		<set name="axis_tick_label_first" value="on">		</set>
+  		  		<set name="axis_tick_label_last" value="on">		</set>   		 
+  		  		<set name="axis_tick_label_position" value="on">		</set>
+  		  		<set name="axis_tick_label_orientation" value="on">		</set> 
+  		  		<set name="axis_tick_label_font" value="on">		</set>
+  		  		<set name="axis_tick_label_font_style" value="on">		</set> 
+  		  		<set name="axis_tick_label_colour" value="on">		</set>
+  		  		<set name="axis_tick_label_height" value="on">		</set> 
+  		  
+  	</parameter> 
+
+  
+  	<parameter from="string" name="axis_tick_label_type" default="number" member="label_type" to="string" values="number/label_list/latitude/longitude">
+        		<documentation> Type of tick labels required  		</documentation>
+        		<set name="axis_tick_label_list" value="label_list">		</set>
+        		<set name="axis_tick_label_format" value="number">		</set>
+  	</parameter>
+  
+  	<parameter member="label_frequency" to="int" default="1" from="int" name="axis_tick_label_frequency">
+         		<documentation> Label every nth tick mark 		</documentation>
+  	</parameter>
+  
+  	<parameter xml="first_label" from="string" name="axis_tick_label_first" default="on" member="label_first" to="bool">
+         		<documentation> Turn off first (left or bottom) tick label  		</documentation>
+  	</parameter>
+
+  	<parameter xml="last_label" from="string" name="axis_tick_label_last" default="on" member="label_last" to="bool">
+         		<documentation> Turn off last (right or top) tick label  		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="axis_tick_label_position" default="on_tick" member="label_position" to="string" values="on_tick/inter_tick">
+         		<documentation> Position labels on or between ticks 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="axis_tick_label_orientation" default="horizontal" member="label_orientation" to="string" values="horizontal/vertical/parallel">
+         		<documentation> Orientation of the tick labels		</documentation>
+  	</parameter>
+  
+  	<parameter xml="font" from="string" name="axis_tick_label_font" default="sansserif" member="label_font" to="string">
+			<documentation>Font name - please make sure this font is installed!		</documentation>
+  	</parameter> 
+  
+  	<parameter member="label_font_style" to="string" default="normal" from="string" name="axis_tick_label_font_style">
+			<documentation>Font style. Set this to an empty string in order to remove all styling.		</documentation>
+  	</parameter>
+   	<parameter xml="colour" from="string" name="axis_tick_label_colour" default="automatic" member="label_colour" to="Colour">
+         		<documentation> Colour of tick labels		</documentation>
+  	</parameter>
+  	<parameter xml="height" from="float" name="axis_tick_label_height" default="0.3" member="label_height" to="float">
+         		<documentation> Height of tick labels 		</documentation>
+  	</parameter>
+  	<parameter xml="list" from="stringarray" name="axis_tick_label_list" default="stringarray()" member="label_labels" to="stringarray">
+         		<documentation> Array for passing user defined tick labels 		</documentation>
+  	</parameter>
+  	<parameter xml="format" from="string" name="axis_tick_label_format" default="(automatic)" member="label_format" to="string">
+         		<documentation> Format of tick label values  		</documentation>
+  	</parameter>
+  	<parameter member="minor_tick" to="bool" default="off" from="string" name="axis_minor_tick">
+         		<documentation> Plot minor ticks (ON/OFF) 		</documentation>
+        		<set name="axis_minor_tick_count" value="on">		</set>
+        		<set name="axis_minor_tick_colour" value="on">		</set>
+        		<set name="axis_minor_tick_thickness" value="on">		</set>
+  	</parameter>
+  
+  	<parameter member="minor_tick_count" to="int" default="2" from="int" name="axis_minor_tick_count">
+         		<documentation> Number of minor tick marks between two ticks 		</documentation>
+  	</parameter>
+  
+  	<parameter member="minor_tick_colour" to="Colour" default="automatic" from="string" name="axis_minor_tick_colour">
+         		<documentation> Colour of minor ticks		</documentation>
+  	</parameter>
+  	<parameter xml="thickness" from="int" name="axis_minor_tick_thickness" default="1" member="minor_tick_thickness" to="int">
+         		<documentation> Thickness of minor ticks		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="axis_tip_title" default="off" member="tip" to="bool" include="AxisTip.h">
+         		<documentation> Plot ticks (ON/OFF) 		</documentation>
+         		<set name="axis_tip_title_text" value="on">		</set>
+         		<set name="axis_tip_title_colour" value="on">		</set>
+         		<set name="axis_tip_title_height" value="on">		</set>
+         		<set name="axis_tip_title_quality" value="on">		</set>
+          
+  	</parameter>
+   	<parameter member="tip_text" to="string" default="" from="string" name="axis_tip_title_text">
+         		<documentation>Text to show in the tip		</documentation>
+  	</parameter>
+ 	<parameter member="tip_colour" to="Colour" default="automatic" from="string" name="axis_tip_title_colour">
+   		<documentation>Coloour of the tip		</documentation>      
+  	</parameter>
+
+  	<parameter member="tip_height" to="float" default="0.4" from="float" name="axis_tip_title_height">
+         		<documentation>font size of the tip		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="axis_tip_title_quality" default="medium" member="tip_quality" to="string" values="high/medium/low">
+         		<documentation>Quality of the font 		</documentation>
+  	</parameter>
+
+ 
+</class></magics>
diff --git a/src/params/AxisMethod.xml b/src/params/AxisMethod.xml
new file mode 100644
index 0000000..7e3a835
--- /dev/null
+++ b/src/params/AxisMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="AxisMethod.h" name="AxisMethod"/></magics>
diff --git a/src/params/Bar.xml b/src/params/Bar.xml
new file mode 100644
index 0000000..28186f7
--- /dev/null
+++ b/src/params/Bar.xml
@@ -0,0 +1,52 @@
+<magics>
+<class directory="visualisers" inherits="Graph" xmltag="bar" name="Bar">
+  	<parameter xml="width" from="float" name="graph_bar_width" default="INT_MAX" member="width" to="float">
+         		<documentation> The width of a bar in a bar chart 		</documentation>
+  	</parameter>
+  	<parameter member="justification" to="Justification" default="centre" from="string" name="graph_bar_justification">
+         		<documentation> the bar will be centered on the value, or left, right justify : useful for plotting any accumulated fields		</documentation>
+  	</parameter>
+  	<parameter from="string" name="graph_bar_style" default="bar" value="bar/linebar" member="bar_style" to="string">
+         		<documentation> If candlestick, a line will be drawn at the position with 2 small perpendicular lines at top and bottom  		</documentation>
+  	</parameter>
+  
+
+  	<parameter xml="line_style" from="string" name="graph_bar_line_style" default="solid" member="style" to="LineStyle">
+         		<documentation> Line Style of the Bar Border 		</documentation>
+  	</parameter>
+
+  	<parameter xml="line_thickness" from="int" name="graph_bar_line_thickness" default="1" member="thickness" to="int">
+         		<documentation> Thickness of the Bar Border 		</documentation>
+  	</parameter>
+  
+  	<parameter xml="line_colour" from="string" name="graph_bar_line_colour" default="black" member="line_colour" to="Colour">
+         		<documentation> The colour of the  the Bar Border		</documentation>
+  	</parameter>
+
+  	<parameter xml="colour" from="string" name="graph_bar_colour" default="blue" member="colour" to="Colour">
+         		<documentation> The colour of the interiors of bars 		</documentation>
+  	</parameter>
+
+  	<parameter xml="clipping" from="string" name="graph_bar_clipping" default="on" member="clipping" to="bool">
+         		<documentation> whether or not to clip the bar if they go outside the view area. 		</documentation>
+  	</parameter>
+		<parameter member="shade" to="GraphShade" default="on" from="string" name="graph_shade">
+         		<option xml="shading" fortran="on" include="GraphShade.h" name="GraphShade">		</option>
+         		<option xml="noshading" fortran="off" include="GraphShade.h" name="NoGraphShade">		</option>
+         		<documentation>Turn the shading on 		</documentation>
+   	</parameter>
+  	<parameter member="annotation" to="stringarray" default="stringarray()" from="stringarray" name="graph_bar_annotation">
+         		<documentation> add annotation on the top box : List of strings to use 		</documentation>
+  	</parameter>
+
+  	<parameter member="annotation_size" to="float" default="0.25" from="float" name="graph_bar_annotation_font_size">
+         		<documentation> Font size for annotation 		</documentation>
+  	</parameter>
+
+  	<parameter member="annotation_colour" to="Colour" default="red" from="string" name="graph_bar_annotation_font_colour">
+         		<documentation> Font size for annotation 		</documentation>
+  	</parameter>
+  	<parameter member="min_value" to="float" default="INT_MAX" from="float" name="graph_bar_minimum_value">
+         		<documentation> If set, defines the bottom of the bar 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/BaseDriver.xml b/src/params/BaseDriver.xml
new file mode 100644
index 0000000..1f2d8ae
--- /dev/null
+++ b/src/params/BaseDriver.xml
@@ -0,0 +1,73 @@
+<magics>
+<class directory="drivers" prefix="output" xmltag="driver" name="BaseDriver" abstract="yes">
+	<documentation for_docs="no">
+  These parameters are common to all the output drivers and can be used whichever output format is selected.
+	</documentation>
+
+	<parameter member="title" to="string" default="Magics++ plot" from="string" name="output_title">
+    		<documentation>Defines a title for the output which gets displayed if the format supports it.		</documentation>
+	</parameter>
+
+
+
+
+
+
+	<parameter member="name" to="string" default="" from="string" name="output_name">
+    		<documentation>Defines the root of output filename.		</documentation>
+	</parameter>
+
+	<parameter member="firstnumber" to="bool" default="on" from="string" name="output_name_first_page_number">
+  		<documentation>Determines whether, for the first page of multipage output, the number is included in the filename. 		</documentation>
+	</parameter>
+
+	<parameter member="firstvalue" to="int" default="1" from="int" name="output_name_first_page_number_value">
+  		<documentation>Sets the number of the first page. All other pages are number from this value onwards.		</documentation>
+	</parameter>
+
+	<parameter member="fullname" to="string" default="" from="string" name="output_fullname">
+  		<documentation>Alternative way of specifying the output filename. Will be overwritten by output_name if defined.		</documentation>
+	</parameter>
+
+	<parameter from="string" name="output_legacy_name" visible="no" default="" member="legacyname" to="string">
+  		<documentation>Alternative way of specifying the output filename. Will be overwritten by output_name if defined.		</documentation>
+	</parameter>
+
+	<parameter member="numberingwidth" to="int" default="1" from="int" name="output_file_minimal_width">
+  		<documentation>Width of numbering of multi-file outputs (eg, 'plot.1.png' or 'plot.001.png').		</documentation>
+	</parameter>
+
+	<parameter member="separator" to="string" default="." from="string" name="output_file_separator">
+  		<documentation>Defines the separator between root name and the page number. Default is a dot.		</documentation>
+	</parameter>
+
+	<parameter from="string" name="output_mgb_template" visible="no" default="" member="mgb_template" to="string">
+  		<documentation for_docs="no">Path to the magics binary file to be used as a template 		</documentation>
+	</parameter>
+
+	<parameter member="debug" to="bool" default="off" from="string" name="output_debug">
+  		<documentation>Defines if extra debug information are written in the output file (PS, EPS, SVG) or console (GIF/PNG).		</documentation>
+  		<release>2.1		</release>        
+	</parameter>
+	<parameter member="width" to="int" default="800" from="int" name="output_width">
+  		<documentation>Defines the width of the image in pixels.(For GD and SVG)		</documentation>
+	</parameter>
+	<parameter member="resolution" to="int" default="300" from="int" name="output_resolution">
+  		<documentation>Defines the resolution of the (graphical) output in dpi (72 - screen, 300 - print).		</documentation>
+	</parameter>
+
+	<parameter member="filelist" to="bool" default="off" from="string" name="output_filelist">
+ 		<documentation>Defines if a list of all generated files should be written.		</documentation>
+ 		<set name="output_filelist_name" value="on">		</set>
+ 		<release>2.7.10		</release>
+	</parameter>   
+
+	<parameter member="filelist_name" to="string" default="magics_outputs.lst" from="string" name="output_filelist_name">
+ 		<documentation>Defines the name of the file containing the list of generated files.		</documentation>
+ 		<release>2.7.10		</release>
+	</parameter>
+ 
+ 	<parameter from="intarray" name="output_frame_list" visible="no" default="intarray()" member="frame_list" to="intarray">
+ 		<documentation for_docs="no">Defines the list of frames to plot ( if empty, all the frames will be plotted!).		</documentation>
+ 	</parameter>
+</class></magics>
diff --git a/src/params/BinaryDriver.xml b/src/params/BinaryDriver.xml
new file mode 100644
index 0000000..e6c1bae
--- /dev/null
+++ b/src/params/BinaryDriver.xml
@@ -0,0 +1,7 @@
+<magics>
+<class action="Binary" directory="drivers" inherits="BaseDriver" name="BinaryDriver">
+		<documentation>
+		These are the attributes of the Binary output driver. This driver is still in the developing stage! 
+		</documentation>
+
+</class></magics>
diff --git a/src/params/BinaryObject.xml b/src/params/BinaryObject.xml
new file mode 100644
index 0000000..64a7ca2
--- /dev/null
+++ b/src/params/BinaryObject.xml
@@ -0,0 +1,30 @@
+<magics>
+<class directory="common" prefix="mgb" xmltag="mgb" name="BinaryObject">
+
+	<parameter member="path" to="string" default="" from="string" name="mgb_filename">
+  		<release>Magics++2.9		</release>
+  		<documentation for_docs="no">Path to the binary file.		</documentation>
+	</parameter>
+
+	<parameter member="transparency" to="float" default="1.0" from="float" name="mgb_transparency">
+  		<release>Magics++2.12.3		</release>
+  		<documentation for_docs="no">Transpernecy scaling factor for binary layer.		</documentation>
+	</parameter>
+
+	<parameter from="float" name="mgb_x" visible="no" default="0" member="mgb_x" to="float">
+  		<documentation for_docs="no">X offset in percentage		</documentation>
+	</parameter>
+
+	<parameter from="float" name="mgb_y" visible="no" default="0" member="mgb_y" to="float">
+  		<documentation for_docs="no">Y offset in percentage		</documentation>
+	</parameter>
+
+	<parameter from="float" name="mgb_width" visible="no" default="100" member="mgb_width" to="float">
+  		<documentation for_docs="no">Width in percentage		</documentation>
+	</parameter>
+
+	<parameter from="float" name="mgb_height" visible="no" default="100" member="mgb_height" to="float">
+  		<documentation for_docs="no">Height in percentage		</documentation>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/BinningObject.xml b/src/params/BinningObject.xml
new file mode 100644
index 0000000..c86eee1
--- /dev/null
+++ b/src/params/BinningObject.xml
@@ -0,0 +1,65 @@
+<magics>
+<class action="pbinning" directory="decoders" prefix="binning" xmltag="binning" name="BinningObject">
+		<documentation>
+		This is responsible for accessing biining data .. scattered data can displayed as matrix! 
+		</documentation>
+     
+	    	<parameter from="string" name="binning_x_method" default="count" member="x" to="string" values="count/list/interval">
+	    		<documentation>Method to compute binns : count/list/interval 		</documentation>
+				<set name="binning_x_count" value="count">		</set>
+				<set name="binning_x_interval" value="interval">		</set>
+				<set name="binning_x_reference" value="interval">		</set>
+				<set name="binning_x_list" value="list">		</set>
+    	</parameter>
+    	<parameter member="x_min" to="float" default="-1.0e+21" from="float" name="binning_x_min_value">
+	    		<documentation>Min value used to compute the binns  		</documentation>
+    	</parameter>
+     	<parameter member="x_max" to="float" default="1.0e+21" from="float" name="binning_x_max_value">
+	    		<documentation>Max value used to compute the binns  		</documentation>
+    	</parameter>
+    
+    	<parameter member="x_count" to="int" default="10" from="int" name="binning_x_count">
+	    		<documentation>Aprroximate number on binns when using the count method  		</documentation>
+    	</parameter> 
+    
+    	<parameter member="x_list" to="floatarray" default="floatarray()" from="floatarray" name="binning_x_list">
+	    		<documentation>list of binns when using the list method 		</documentation>
+    	</parameter>
+    
+     	<parameter member="x_interval" to="float" default="10" from="float" name="binning_x_interval">
+	    		<documentation>list of binns when using the interval method 		</documentation>
+    	</parameter>
+	
+		<parameter member="x_reference" to="float" default="0" from="float" name="binning_x_reference">
+	    		<documentation> list of binns when using the interval method 		</documentation>
+    	</parameter>
+	    	<parameter from="string" name="binning_y_method" default="count" member="y" to="string" values="count/list/interval">
+	    		<documentation>Method to compute binns : count/list/interval 		</documentation>
+				<set name="binning_y_count" value="count">		</set>
+				<set name="binning_y_interval" value="interval">		</set>
+				<set name="binning_y_reference" value="interval">		</set>
+				<set name="binning_y_list" value="list">		</set>
+    	</parameter>
+    	<parameter member="y_min" to="float" default="-1.0e+21" from="float" name="binning_y_min_value">
+	    		<documentation>Min value used to compute the binns  		</documentation>
+    	</parameter>
+     	<parameter member="y_max" to="float" default="1.0e+21" from="float" name="binning_y_max_value">
+	    		<documentation>Max value used to compute the binns  		</documentation>
+    	</parameter>
+    
+    	<parameter member="y_count" to="int" default="10" from="int" name="binning_y_count">
+	    		<documentation>Aprroximate number on binns when using the count method  		</documentation>
+    	</parameter> 
+    
+    	<parameter member="y_list" to="floatarray" default="floatarray()" from="floatarray" name="binning_y_list">
+	    		<documentation>list of binns when using the list method 		</documentation>
+    	</parameter>
+    
+     	<parameter member="y_interval" to="float" default="10" from="float" name="binning_y_interval">
+	    		<documentation>list of binns when using the interval method 		</documentation>
+    	</parameter>
+	
+		<parameter member="y_reference" to="float" default="0" from="float" name="binning_y_reference">
+	    		<documentation> list of binns when using the interval method 		</documentation>
+    	</parameter>
+</class></magics>
diff --git a/src/params/BothValuePlotMethod.xml b/src/params/BothValuePlotMethod.xml
new file mode 100644
index 0000000..95beef7
--- /dev/null
+++ b/src/params/BothValuePlotMethod.xml
@@ -0,0 +1,25 @@
+<magics>
+<class inherits="ValuePlotMethod" xmltag="both" name="BothValuePlotMethod" directory="visualisers" prefix="contour/contour_grid_value/contour_grid_value" action="pcont">
+  	<documentation>This object is reponsible for plotting both values and markers on grid points.	</documentation>
+
+	<parameter member="markerHeight" to="float" default="0.25" from="float" name="contour_grid_value_marker_height">
+         		<documentation> Height of grid point markers 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="markerColour" to="Colour" default="red" from="string" name="contour_grid_value_marker_colour">
+         		<documentation> Colour of grid point markers (Full choice of colours) 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="markerQuality" to="string" default="low" from="string" name="contour_grid_value_marker_qual">
+         		<documentation> (LOW/MEDIUM/HIGH) 		</documentation>
+         		<release>0.2		</release>
+         		<release>Quality is not yet implemented. Expected Magics++0.3		</release>
+	</parameter>
+
+	<parameter member="markerIndex" to="int" default="3" from="int" name="contour_grid_value_marker_index">
+         		<documentation> Table number of marker index. See Appendix for Plotting Attributes 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Boundaries.xml b/src/params/Boundaries.xml
new file mode 100644
index 0000000..45e19a1
--- /dev/null
+++ b/src/params/Boundaries.xml
@@ -0,0 +1,70 @@
+<magics>
+<class inherits="NoBoundaries" xmltag="boundaries" name="Boundaries" directory="visualisers" prefix="map/map_boundaries/map_boundaries" action="pcoast" include="Boundaries.h" doc_inherits="no">
+ 	<documentation>This object sets the properties of the political boundaries.	</documentation>
+   
+
+	<parameter xml="style" from="string" name="map_boundaries_style" default="solid" member="style" to="LineStyle">
+  		<documentation>Line style of boundaries		</documentation>
+  		<release>1.3		</release>
+	</parameter>
+
+	<parameter xml="colour" from="string" name="map_boundaries_colour" default="grey" member="colour" to="Colour">
+ 		<documentation>Colour of boundaries		</documentation>
+ 		<release>1.3		</release>
+	</parameter>
+
+	<parameter xml="thickness" from="int" name="map_boundaries_thickness" default="1" member="thickness" to="int">
+ 		<documentation>Line thickness of boundaries		</documentation>
+ 		<release>2.11		</release>
+	</parameter>
+
+	<parameter member="disputed" to="bool" default="on" from="string" name="map_disputed_boundaries">
+ 		<documentation>Display the disputed boundaries (on/off)		</documentation>
+    		<set name="map_disputed_boundaries_style" value="on">		</set>
+    		<set name="map_disputed_boundaries_colour" value="on">		</set>
+    		<set name="map_disputed_boundaries_thickness" value="on">		</set>           
+ 		<release>2.11		</release>
+	</parameter>
+
+	<parameter member="disputed_style" to="LineStyle" default="dash" from="string" name="map_disputed_boundaries_style">
+ 		<documentation>Line style of disputed boundaries		</documentation>
+ 		<release>2.11		</release>
+	</parameter>       
+
+	<parameter member="disputed_colour" to="Colour" default="automatic" from="string" name="map_disputed_boundaries_colour">
+ 		<documentation>Colour of disputed boundaries		</documentation>
+ 		<release>2.11		</release>
+	</parameter>
+
+	<parameter xml="thickness" from="int" name="map_disputed_boundaries_thickness" default="1" member="disputed_thickness" to="int">
+ 		<documentation>Line thickness of disputed boundaries		</documentation>
+ 		<release>2.11		</release>
+	</parameter>
+
+	<parameter member="admistrative" to="bool" default="off" from="string" name="map_administrative_boundaries">
+ 		<documentation>Display second level administrative boundaries (on/off)		</documentation>
+    		<set name="map_administrative_boundaries_countries_list" value="on">		</set>
+    		<set name="map_administrative_boundaries_style" value="on">		</set>
+    		<set name="map_administrative_boundaries_colour" value="on">		</set>
+    		<set name="map_administrative_boundaries_thickness" value="on">		</set>
+	</parameter>
+
+	<parameter from="stringarray" name="map_administrative_boundaries_countries_list" default="stringarray()" member="administrative_list" to="stringarray" values="AGO:Angola/DZA:Algeria/EGY:Egypt/BGD:Bangladesh/NAM:Namibia/BOL:Bolivia/GHA:Ghana/CCK:Australia CCK/PAK:Pakistan/LBY:Libya/MYS:Malaysia/PRK:Korea, North/TZA:Tanzania/BWA:Botswana/PRY:Paraguay/SAU:Saudi Arabia/MRT:Mauritania/CHL:Chile/CHN:China/LAO:Laos/GIB:United Kingdom GIB/GIN:Guinea/FIN:Finland/URY:Uruguay/NPL:Nepal/CXR:Austra [...]
+  		<documentation>List of countries for which to show second level administrative borders. The convention used is the 3 Letters ISO Codes 3166 for countries 		</documentation>
+	</parameter> 
+
+	<parameter member="administrative_style" to="LineStyle" default="dash" from="string" name="map_administrative_boundaries_style">
+  		<documentation>Line style of second level administrative boundaries		</documentation>
+  		<release>2.11		</release>
+	</parameter>       
+
+	<parameter member="administrative_colour" to="Colour" default="automatic" from="string" name="map_administrative_boundaries_colour">
+ 		<documentation>Colour of administrative boundaries		</documentation>
+ 		<release>2.11		</release>
+	</parameter>
+
+	<parameter xml="thickness" from="int" name="map_administrative_boundaries_thickness" default="1" member="administrative_thickness" to="int">
+ 		<documentation>Line thickness of boundaries		</documentation>
+ 		<release>2.11		</release>
+	</parameter>
+</class></magics>
diff --git a/src/params/BoxPlotBox.xml b/src/params/BoxPlotBox.xml
new file mode 100644
index 0000000..6f96f6e
--- /dev/null
+++ b/src/params/BoxPlotBox.xml
@@ -0,0 +1,24 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_box" xmltag="box" name="BoxPlotBox" include='BoxPlotItem.h'>
+	   	<parameter member="colour" to="Colour" default="sky" from="string" name="boxplot_box_colour">
+	         		<documentation>Colour of the box		</documentation>
+	  	</parameter>
+	  
+	  	<parameter member="width" to="float" default="1.0" from="float" name="boxplot_box_width">
+	         		<documentation>Width of the box in centimeters		</documentation>
+	  	</parameter>
+	  
+	  	<parameter from="string" name="boxplot_box_border" default="on" member="border" to="NoBoxPlotBoxBorder" include="BoxPlotBasicItem.h">
+	         		<documentation>Determines whether the box border is drawn or not		</documentation>
+	         		<option xml="border" fortran="on" include="BoxPlotItem.h" name="BoxPlotBoxBorder">		</option>
+             		<option xml="noborder" fortran="off" include="BoxPlotBasicItem.h" name="NoBoxPlotBoxBorder">		</option>
+	  	</parameter>
+	  
+	   	<parameter from="string" name="boxplot_median" default="on" member="median" to="NoBoxPlotMedian" include="BoxPlotBasicItem.h">
+         		<documentation>Determines whether the median line is drawn or not		</documentation>
+          		<option xml="median" fortran="on" include="BoxPlotItem.h" name="BoxPlotMedian">		</option>
+          		<option xml="nomedian" fortran="off" include="BoxPlotBasicItem.h" name="NoBoxPlotMedian">		</option>
+          		<release>Magics++1.3		</release>
+       	</parameter>
+  
+  </class></magics>
diff --git a/src/params/BoxPlotBoxBorder.xml b/src/params/BoxPlotBoxBorder.xml
new file mode 100644
index 0000000..b60c38a
--- /dev/null
+++ b/src/params/BoxPlotBoxBorder.xml
@@ -0,0 +1,15 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_box_border" xmltag="box_border" name="BoxPlotBoxBorder" include='BoxPlotItem.h' inherits='NoBoxPlotBoxBorder'>
+	  	<parameter member="colour" to="Colour" default="navy" from="string" name="boxplot_box_border_colour">
+	         		<documentation>Colour of the box border		</documentation>
+	  	</parameter>
+	  
+	   	<parameter member="thickness" to="int" default="1" from="int" name="boxplot_box_border_thickness">
+	         		<documentation>Thickness of the box border		</documentation>
+	  	</parameter>
+	  
+	   	<parameter member="style" to="LineStyle" default="solid" from="string" name="boxplot_box_border_line_style">
+	         		<documentation>Line style of the box border		</documentation>
+	  	</parameter>
+  
+  </class></magics>
diff --git a/src/params/BoxPlotDecoder.xml b/src/params/BoxPlotDecoder.xml
new file mode 100644
index 0000000..6cbd081
--- /dev/null
+++ b/src/params/BoxPlotDecoder.xml
@@ -0,0 +1,33 @@
+<magics>
+<class directory="decoders" prefix="boxplot" xmltag="boxplot_input" name="BoxPlotDecoder">
+  	<documentation>The following parameters allow the user to define both the data
+  and the plotting attributes of boxplots.	</documentation>
+
+  	<parameter member="x" to="floatarray" default="floatarray()" from="floatarray" name="boxplot_positions">
+         		<documentation> Array containing the x-values		</documentation>
+  	</parameter>
+  
+  	<parameter member="date_x" to="stringarray" default="stringarray()" from="stringarray" name="boxplot_date_positions">
+         		<documentation> Array containing the dates X-values		</documentation>
+  	</parameter>
+  	<parameter member="min" to="floatarray" default="floatarray()" from="floatarray" name="boxplot_minimum_values">
+         		<documentation> Array containing minimum values		</documentation>
+  	</parameter>
+  
+  	<parameter member="max" to="floatarray" default="floatarray()" from="floatarray" name="boxplot_maximum_values">
+         		<documentation> Array containing maximum values		</documentation>
+  	</parameter>
+  
+  	<parameter member="upper" to="floatarray" default="floatarray()" from="floatarray" name="boxplot_box_upper_values">
+         		<documentation> Array containing the upper box values		</documentation>
+  	</parameter>
+  
+  	<parameter member="lower" to="floatarray" default="floatarray()" from="floatarray" name="boxplot_box_lower_values">
+         		<documentation> Array containing the lower box values		</documentation>
+  	</parameter>
+  
+  	<parameter member="median" to="floatarray" default="floatarray()" from="floatarray" name="boxplot_median_values">
+         		<documentation> Array containing the median values		</documentation>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/BoxPlotMedian.xml b/src/params/BoxPlotMedian.xml
new file mode 100644
index 0000000..1999a6a
--- /dev/null
+++ b/src/params/BoxPlotMedian.xml
@@ -0,0 +1,17 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_median" xmltag="median" name="BoxPlotMedian" include='BoxPlotItem.h' inherits='NoBoxPlotMedian'>
+   	<parameter member="colour" to="Colour" default="navy" from="string" name="boxplot_median_colour">
+         		<documentation>Colour of the median line		</documentation>
+  	</parameter>
+  
+   	<parameter member="thickness" to="int" default="3" from="int" name="boxplot_median_thickness">
+         		<documentation>Thickness of the median line		</documentation>
+  	</parameter>
+  
+   	<parameter member="style" to="LineStyle" default="solid" from="string" name="boxplot_median_line_style">
+         		<documentation>Line style of the median line		</documentation>
+  	</parameter>
+  
+  
+   
+  </class></magics>
diff --git a/src/params/BoxPlotVisualiser.xml b/src/params/BoxPlotVisualiser.xml
new file mode 100644
index 0000000..f9fad7c
--- /dev/null
+++ b/src/params/BoxPlotVisualiser.xml
@@ -0,0 +1,22 @@
+<magics>
+<class perfix="boxplot" directory="visualisers" inherits="BoxPlotDecoder" xmltag="boxplot" name="BoxPlotVisualiser">
+  	<documentation>The following parameters allow the user to define both the data
+  and the plotting attributes of boxplots.	</documentation>
+
+  	<parameter from="string" name="boxplot_box" default="on" member="box" to="NoBoxPlotBox" include="BoxPlotBasicItem.h">
+         		<documentation> Turns the plotting of the box on or off		</documentation>
+          		<option xml="box" fortran="on" include="BoxPlotItem.h" name="BoxPlotBox">		</option>
+          		<option xml="noBox" fortran="off" include="BoxPlotBasicItem.h" name="NoBoxPlotBox">		</option>
+           		<release>Magics++1.3		</release>
+  	</parameter>
+  
+  	<parameter from="string" name="boxplot_whisker" default="line" member="whisker" to="NoBoxPlotWhisker" include="BoxPlotBasicItem.h">
+         		<documentation> Determines whether the whiskers are shown as lines, boxes or not at all		</documentation>
+          		<option xml="whiskerbox" fortran="box" include="BoxPlotItem.h" name="BoxPlotWhiskerBox">		</option>
+          		<option xml="nowhisker" fortran="off" include="BoxPlotBasicItem.h" name="NoBoxPlotWhisker">		</option>
+          		<option xml="whiskerline" fortran="line" include="BoxPlotItem.h" name="BoxPlotWhiskerLine">		</option>
+          		<release>Magics++1.3		</release>
+  	</parameter>
+  
+ 
+  </class></magics>
diff --git a/src/params/BoxPlotWhiskerBorder.xml b/src/params/BoxPlotWhiskerBorder.xml
new file mode 100644
index 0000000..ab5fec8
--- /dev/null
+++ b/src/params/BoxPlotWhiskerBorder.xml
@@ -0,0 +1,15 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_whisker/boxplot_whisker_box/boxplot_whisker_box_border" xmltag="whisker_border" name="BoxPlotWhiskerBorder">
+  	<parameter member="colour" to="Colour" default="navy" from="string" name="boxplot_whisker_box_border_colour">
+         		<documentation>Colour of the whisker box border		</documentation>
+  	</parameter>
+  
+   	<parameter member="thickness" to="int" default="1" from="int" name="boxplot_whisker_box_border_thickness">
+         		<documentation>Thickness of the whisker box border		</documentation>
+  	</parameter>
+  
+   	<parameter member="style" to="LineStyle" default="solid" from="string" name="boxplot_whisker_box_border_line_style">
+         		<documentation>Line style of the whisker box border		</documentation>
+  	</parameter>
+  
+  </class></magics>
diff --git a/src/params/BoxPlotWhiskerBox.xml b/src/params/BoxPlotWhiskerBox.xml
new file mode 100644
index 0000000..bc83a04
--- /dev/null
+++ b/src/params/BoxPlotWhiskerBox.xml
@@ -0,0 +1,16 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_whisker/boxplot_whisker_box" xmltag="whisker_box" name="BoxPlotWhiskerBox">
+   	<parameter member="colour" to="Colour" default="sky" from="string" name="boxplot_whisker_box_colour">
+         		<documentation>Colour of the whisker box		</documentation>
+  	</parameter>
+  
+  	<parameter member="width" to="float" default="0.25" from="float" name="boxplot_whisker_box_width">
+         		<documentation>Width of the whisker box in centimeters		</documentation>
+  	</parameter>
+  
+    	<parameter from="string" name="boxplot_whisker_box_border" default="on" member="border" to="NoBoxPlotWhiskerBorder" include="BoxPlotBasicItem.h">
+	         		<documentation>Determines whether the whisker box border is drawn or not		</documentation>
+	         		<option xml="border" fortran="on" include="BoxPlotItem.h" name="BoxPlotWhiskerBorder">		</option>
+             		<option xml="noborder" fortran="off" include="BoxPlotBasicItem.h" name="NoBoxPlotWhiskerBorder">		</option>
+	  	</parameter>
+</class></magics>
diff --git a/src/params/BoxPlotWhiskerLine.xml b/src/params/BoxPlotWhiskerLine.xml
new file mode 100644
index 0000000..c0f9dda
--- /dev/null
+++ b/src/params/BoxPlotWhiskerLine.xml
@@ -0,0 +1,14 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_whisker/boxplot_whisker_line" xmltag="whisker_line" name="BoxPlotWhiskerLine">
+  		<parameter member="colour" to="Colour" default="navy" from="string" name="boxplot_whisker_line_colour">
+         		<documentation>Colour of the whisker line		</documentation>
+  	</parameter>
+  
+   	<parameter member="thickness" to="int" default="3" from="int" name="boxplot_whisker_line_thickness">
+         		<documentation>Thickness of the whisker line		</documentation>
+  	</parameter>
+  
+   	<parameter member="style" to="LineStyle" default="solid" from="string" name="boxplot_whisker_line_style">
+         		<documentation>Line style of the whisker line		</documentation>
+  	</parameter>
+  </class></magics>
diff --git a/src/params/CMakeLists.txt b/src/params/CMakeLists.txt
new file mode 100644
index 0000000..afb97d1
--- /dev/null
+++ b/src/params/CMakeLists.txt
@@ -0,0 +1,321 @@
+list( APPEND _common_xmls
+Akima474Method.xml
+Akima760Method.xml
+ArrowPlotting.xml
+AutomaticContourMethod.xml
+Axis.xml
+AxisMethod.xml
+Bar.xml
+BaseDriver.xml
+BinaryDriver.xml
+BinaryObject.xml
+BinningObject.xml
+BothValuePlotMethod.xml
+Boundaries.xml
+CalculateColourTechnique.xml
+CalculateHeightTechnique.xml
+CalmIndicator.xml
+CartesianTransformation.xml
+CellShading.xml
+CircleOriginMarker.xml
+Cities.xml
+ClassicMtgDecoder.xml
+CoastPlotting.xml
+Coastlines.xml
+ColourTechnique.xml
+ContinuousLegendMethod.xml
+Contour.xml
+ContourMethod.xml
+CountSelectionType.xml
+Curve.xml
+CurveArea.xml
+DateAxisMethod.xml
+DateGribLoopStep.xml
+DotGraphShadeStyle.xml
+DotOriginMarker.xml
+DotPolyShadingMethod.xml
+DumpShading.xml
+FlagPlotting.xml
+FortranRootSceneNode.xml
+FortranSceneNode.xml
+FortranViewNode.xml
+GeoPointsDecoder.xml
+GeoRectangularProjection.xml
+Graph.xml
+GraphArrow.xml
+GraphFlag.xml
+GraphPlotting.xml
+GraphShade.xml
+GraphShadeStyle.xml
+GridPlotting.xml
+GridShading.xml
+HatchGraphShadeStyle.xml
+HatchPolyShadingMethod.xml
+HeightTechnique.xml
+HiLo.xml
+HiLoBase.xml
+HiLoBoth.xml
+HiLoMarker.xml
+HiLoMarkerBase.xml
+HiLoNumber.xml
+HiLoTechnique.xml
+HiLoText.xml
+HighHiLo.xml
+Histogram.xml
+HistogramLegendMethod.xml
+HyperAxisMethod.xml
+
+ImportAction.xml
+
+ImportPlot.xml
+InputData.xml
+LogoPlotting.xml
+NoLogoPlotting.xml
+IntervalSelectionType.xml
+IsoHighlight.xml
+IsoLabel.xml
+IsoPlot.xml
+IsoShading.xml
+KMLDriver.xml
+LabelPlotting.xml
+
+ObsPlotting.xml
+
+LegendMethod.xml
+LegendVisitor.xml
+
+LevelListSelectionType.xml
+LevelSelection.xml
+ListColourTechnique.xml
+ListHeightTechnique.xml
+LogarithmicAxisMethod.xml
+
+LookupTableMode.xml
+LowHiLo.xml
+MagnifierVisitor.xml
+MapGenDecoder.xml
+MarkerShadingTechnique.xml
+MarkerValuePlotMethod.xml
+MercatorProjection.xml
+MetaData.xml
+
+MvRootSceneNode.xml
+NoBinningObject.xml
+NoBoundaries.xml
+NoCalmIndicator.xml
+NoCities.xml
+NoCoastPlotting.xml
+NoGraphShade.xml
+NoGridPlotting.xml
+NoHiLo.xml
+NoHiLoMarker.xml
+NoIsoHighlight.xml
+NoIsoLabel.xml
+NoIsoPlot.xml
+NoIsoShading.xml
+NoLabelPlotting.xml
+#NoLegendVisitor.xml
+NoLogoPlotting.xml
+NoMagnifierVisitor.xml
+NoOriginMarker.xml
+NoOutLayerTechnique.xml
+NoPageID.xml
+NoPreviewVisitor.xml
+NoValuePlot.xml
+
+OriginMarker.xml
+OutputHandler.xml
+PageID.xml
+ParamGribLoopStep.xml
+PolarStereographicProjection.xml
+PolyShadingMethod.xml
+PolyShadingTechnique.xml
+PositionListAxisMethod.xml
+PostScriptDriver.xml
+PreviewVisitor.xml
+
+Proj4Bonne.xml
+Proj4Collignon.xml
+Proj4EPSG32661.xml
+Proj4EPSG4326.xml
+Proj4EPSG3857.xml
+Proj4Geos.xml
+Proj4Goode.xml
+Proj4Lambert.xml
+Proj4Mollweide.xml
+Proj4PolarNorth.xml
+Proj4Projection.xml
+Proj4Robinson.xml
+Proj4Google.xml
+Proj4Efas.xml
+Proj4LambertNorthAtlantic.xml
+Proj4Meteosat0.xml
+Proj4Meteosat145.xml
+Proj4Meteosat57.xml
+Proj4Geosw.xml
+Proj4Geose.xml
+
+SDWindMode.xml
+SVGDriver.xml
+SampleContourMethod.xml
+
+SelectionMode.xml
+ShadingTechnique.xml
+ShapeDecoder.xml
+SimpleOutLayerTechnique.xml
+
+SymbolAdvancedTableMode.xml
+SymbolIndividualMode.xml
+SymbolInput.xml
+SymbolMode.xml
+SymbolPlotting.xml
+SymbolTableMode.xml
+Streamlines.xml
+TableDecoder.xml
+TaylorGrid.xml
+TaylorProjection.xml
+TextVisitor.xml
+Tephigram.xml
+TephiGrid.xml
+TephiInfo.xml
+TitleTemplate.xml
+Transformation.xml
+UVWindMode.xml
+UserLogoPlotting.xml
+VDWindMode.xml
+ValuePlot.xml
+ValuePlotBase.xml
+ValuePlotMethod.xml
+Wind.xml
+WindMode.xml
+WindPlotting.xml
+ObsDecoder.xml
+XCoordinate.xml
+XDateCoordinate.xml
+XHyperCoordinate.xml
+XLogarithmicCoordinate.xml
+XRegularCoordinate.xml
+XYList.xml
+
+YCoordinate.xml
+YDateCoordinate.xml
+YHyperCoordinate.xml
+YLogarithmicCoordinate.xml
+YRegularCoordinate.xml
+
+
+)
+
+
+	list( APPEND _magics_xmls BoxPlotBox.xml
+		BoxPlotBoxBorder.xml
+		BoxPlotDecoder.xml
+		BoxPlotMedian.xml
+		BoxPlotVisualiser.xml
+		BoxPlotWhiskerBorder.xml
+		BoxPlotWhiskerBox.xml
+		BoxPlotWhiskerLine.xml
+		CdfGraph.xml
+		EpsCloud.xml
+		EpsDirection.xml
+		EpsGraph.xml
+		EpsPlume.xml
+		EpsShade.xml
+		EpsWave.xml
+		EpsWind.xml
+		EpsXmlInput.xml
+		EpsgramDecoder.xml
+		EquidistantTableMode.xml
+		FixedTableMode.xml
+		ImportObjectHandler.xml
+		EfiDataDecoder.xml
+		EfiGraph.xml
+		EfiJSon.xml
+		EfigramDecoder.xml
+		EpsBufr.xml
+		ImageCalculateColourTechnique.xml
+ImageListColourTechnique.xml
+ImagePlotting.xml
+InputMatrix.xml
+InputMatrixIrregularInterpretor.xml
+InputMatrixRegularInterpretor.xml
+LandgramBox.xml
+LandgramDecoder.xml
+MetgramCurve.xml
+MetgramFlags.xml
+MetgramGraph.xml
+
+
+ObsTable.xml
+ObsJSon.xml
+
+ObsStatDecoder.xml
+
+SimplePolyline.xml
+SimplePolylineInput.xml
+WrepJSon.xml
+WrepRootNode.xml
+XmlBasicNode.xml
+XmlRootNode.xml
+XmlSceneNode.xml
+XmlViewNode.xml
+		)
+	
+
+if( MAGICS_GRIB )
+	list( APPEND _common_xmls GribAddressByteMode.xml
+		GribAddressMode.xml
+		GribAddressRecordMode.xml
+		GribLoop.xml
+		GribLoopStep.xml 
+		GribDecoder.xml
+		
+		)		
+endif()
+
+if( MAGICS_NETCDF )
+	list( APPEND _common_xmls 
+		NetcdfDecoder.xml
+		NetcdfGeoMatrixInterpretor.xml
+		NetcdfGeoPolarMatrixInterpretor.xml
+		NetcdfGeoVectorInterpretor.xml
+		NetcdfGeopointsInterpretor.xml
+		NetcdfInterpretor.xml
+		NetcdfMatrixInterpretor.xml
+		NetcdfOrcaInterpretor.xml
+		NetcdfVectorInterpretor.xml
+		NetcdfXYpointsInterpretor.xml )
+endif()
+
+if ( MAGICS_ODB ) 
+	list ( APPEND _common_xmls 
+		OdaGeoDecoder.xml
+		OdaXYDecoder.xml )
+endif()
+
+if( MAGICS_CAIRO )
+    list( APPEND _common_xmls CairoDriver.xml )
+endif()
+
+if( MAGICS_RASTER )
+  list( APPEND _common_xmls GDDriver.xml )
+endif()
+
+if( MAGICS_QT )
+  list( APPEND  _magics_xmls QtDriver.xml )
+endif()
+
+foreach( file ${_common_xmls} )
+  list( APPEND metview_xmls params/${file} )
+  list( APPEND magics_xmls params/${file} )
+endforeach()
+
+foreach( file ${_magics_xmls} )
+  list( APPEND magics_xmls params/${file} )
+endforeach()
+
+
+set( magics_xmls ${magics_xmls} PARENT_SCOPE )
+set( metview_xmls ${metview_xmls} PARENT_SCOPE )
+
+
diff --git a/src/params/CairoDriver.xml b/src/params/CairoDriver.xml
new file mode 100644
index 0000000..192c026
--- /dev/null
+++ b/src/params/CairoDriver.xml
@@ -0,0 +1,19 @@
+<magics>
+<class inherits="BaseDriver" xmltag="cairo" name="CairoDriver" directory="drivers" prefix="output/output_cairo" action="Cairo" include="CairoDriver.h">
+  	<documentation for_docs="no">
+   Output driver using the Cairo graphics library. This driver is still in the development stage!
+  	</documentation>
+
+ 	<parameter from="cairo_t*" name="output_cairo_drawing_context" visible="no" default="0" metview="no" member="context" to="cairo_t*">
+   		<documentation> Programs can pass their own Cairo context for Magics to draw into it.		</documentation>
+ 	</parameter> 
+
+ 	<parameter xml="transparent" from="string" name="output_cairo_transparent_background" default="off" member="transparent" to="string" values="on/off">
+   		<documentation>Defines the background to be transparent (only for PNG).		</documentation>
+ 	</parameter>
+
+ 	<parameter xml="antialias" from="string" name="output_cairo_antialias" default="on" member="antialias" to="string" values="on/off">
+   		<documentation>Defines if lines are antialiased (only for PNG).		</documentation>
+ 	</parameter>
+
+</class></magics>
diff --git a/src/params/CalculateColourTechnique.xml b/src/params/CalculateColourTechnique.xml
new file mode 100644
index 0000000..6b46ab7
--- /dev/null
+++ b/src/params/CalculateColourTechnique.xml
@@ -0,0 +1,19 @@
+<magics>
+<class inherits="ColourTechnique" implements="ColourTableDefinitionComputeInterface" xmltag="calculate" name="CalculateColourTechnique" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade" action="pcont">
+	
+  	<parameter member="max" to="Colour" default="blue" from="string" name="contour_shade_max_level_colour">
+         		<documentation> Highest shading band colour 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+
+  	<parameter member="min" to="Colour" default="red" from="string" name="contour_shade_min_level_colour">
+         		<documentation> Lowest shading band colour 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+  
+  	<parameter from="string" name="contour_shade_colour_direction" default="anti_clockwise" member="direction" to="string" values="clockwise/anti_clockwise">
+         		<documentation> Direction of colour sequencing for shading (CLOCKWISE/ ANTI_CLOCKWISE) 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/CalculateHeightTechnique.xml b/src/params/CalculateHeightTechnique.xml
new file mode 100644
index 0000000..ae7b47a
--- /dev/null
+++ b/src/params/CalculateHeightTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="HeightTechnique" include="HeightTechnique.h" name="CalculateHeightTechnique"/></magics>
diff --git a/src/params/CalmIndicator.xml b/src/params/CalmIndicator.xml
new file mode 100644
index 0000000..2521273
--- /dev/null
+++ b/src/params/CalmIndicator.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" name="CalmIndicator"/></magics>
diff --git a/src/params/CartesianTransformation.xml b/src/params/CartesianTransformation.xml
new file mode 100644
index 0000000..6342020
--- /dev/null
+++ b/src/params/CartesianTransformation.xml
@@ -0,0 +1,22 @@
+<magics>
+<class inherits="Transformation" metview_prefix="subpage_" xmltag="cartesian" name="CartesianTransformation" directory="common" prefix="subpage" action="pnew">
+  	This object contains the attributes to the cartesian Projection 
+
+	<parameter member="x" to="XCoordinate" default="regular" from="string" name="subpage_x_axis_type">
+    		<option xml="x_regular" fortran="regular" include="Coordinate.h" name="XRegularCoordinate">		</option>
+    		<option xml="x_date" fortran="date" include="Coordinate.h" name="XDateCoordinate">		</option>
+    		<option xml="x_hyper" fortran="geoline" include="Coordinate.h" name="XHyperCoordinate">		</option>
+    		<option xml="x_logarithmic" fortran="logarithmic" include="Coordinate.h" name="XLogarithmicCoordinate">		</option>
+    		<release>Magics++1.3		</release>         
+	</parameter>    
+ 
+	<parameter member="y" to="YCoordinate" default="regular" from="string" name="subpage_y_axis_type">
+          
+           		<option xml="y_regular" fortran="regular" include="Coordinate.h" name="YRegularCoordinate">		</option>
+           		<option xml="y_date" fortran="date" include="Coordinate.h" name="YDateCoordinate">		</option>
+            		<option xml="y_hyper" fortran="geoline" include="Coordinate.h" name="YHyperCoordinate">		</option>
+           		<option xml="y_logarithmic" fortran="logarithmic" include="Coordinate.h" name="YLogarithmicCoordinate">		</option>
+           		<release>Magics++1.3		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/CdfGraph.xml b/src/params/CdfGraph.xml
new file mode 100644
index 0000000..c6c2cd3
--- /dev/null
+++ b/src/params/CdfGraph.xml
@@ -0,0 +1,27 @@
+<magics>
+<class action="pcdfgram" directory="visualisers" prefix="cdf" xmltag="cdfgraph" name="CdfGraph">
+		<documentation>
+		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
+		</documentation>
+        	<parameter member="colour" to="stringarray" default="stringarray()" from="stringarray" name="cdf_lines_colour_array">           
+            		<documentation> Colour of the curve  		</documentation>
+        	</parameter>
+        
+        
+        	<parameter member="style" to="stringarray" default="stringarray()" from="stringarray" name="cdf_lines_style_array">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+        	<parameter member="thickness" to="intarray" default="intarray()" from="intarray" name="cdf_lines_thickness_array">           
+            		<documentation> Thickness of the curve  		</documentation>
+        	</parameter>
+        
+        	<parameter member="clim_colour" to="Colour" default="black" from="string" name="cdf_clim_line_colour">           
+            		<documentation> Colour of the clim curve  		</documentation>
+        	</parameter>
+        	<parameter member="clim_thickness" to="int" default="4" from="int" name="cdf_clim_line_thickness">           
+            		<documentation> Thickness of the clim curve  		</documentation>
+        	</parameter>
+        	<parameter member="clim_style" to="LineStyle" default="solid" from="string" name="cdf_clim_line_style">           
+            		<documentation> Style of the clim curve  		</documentation>
+        	</parameter>         
+</class></magics>
diff --git a/src/params/CellShading.xml b/src/params/CellShading.xml
new file mode 100644
index 0000000..26ab63a
--- /dev/null
+++ b/src/params/CellShading.xml
@@ -0,0 +1,13 @@
+<magics>
+<class inherits="ShadingTechnique" xmltag="cell_shading" name="CellShading" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade_cell" action="pcont">
+	
+  	<parameter member="resolution" to="float" default="10" from="float" name="contour_shade_cell_resolution">
+         		<documentation> Number of cells per cm for CELL shading 		</documentation> 
+         		<release>0.8		</release>
+  	</parameter>
+  
+  	<parameter from="string" name="contour_shade_cell_method" default="nearest" member="method" to="string" values="nearest/interpolate">
+         		<documentation> NMethod of determining the colour of a cell (INTERPOLATE/ NEAREST) 		</documentation>
+         		<release>0.8		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/CircleOriginMarker.xml b/src/params/CircleOriginMarker.xml
new file mode 100644
index 0000000..8b3c50a
--- /dev/null
+++ b/src/params/CircleOriginMarker.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="OriginMarker" directory="visualisers" include="OriginMarker.h" name="CircleOriginMarker"/></magics>
diff --git a/src/params/Cities.xml b/src/params/Cities.xml
new file mode 100644
index 0000000..9500d4f
--- /dev/null
+++ b/src/params/Cities.xml
@@ -0,0 +1,41 @@
+<magics>
+<class inherits="NoCities" name="Cities" directory="visualisers" action="pcoast" include="Cities.h" doc_inherits="no">
+
+	<parameter from="string" name="map_cities_unit_system" default="percent" member="unit" to="string" values="percent/cm">
+  		<documentation>Unit for city name sizes.		</documentation>
+	</parameter>
+ 
+	<parameter member="font_name" to="string" default="sansserif" from="string" name="map_cities_font_name">
+   		<documentation>Font used to display the city names.		</documentation>
+	</parameter>
+ 
+	<parameter member="font_style" to="string" default="normal" from="string" name="map_cities_font_style">
+  		<release>Work in progress		</release>
+ 		<documentation>Font style used for city names.		</documentation>
+	</parameter>
+
+	<parameter member="font_size" to="float" default="2.5" from="float" name="map_cities_font_size">
+ 		<documentation>Font size of city names.		</documentation>
+	</parameter>
+
+	<parameter member="font_colour" to="Colour" default="navy" from="string" name="map_cities_font_colour">
+ 		<documentation>Colour used for city names.		</documentation>
+	</parameter>
+
+	<parameter from="string" name="map_cities_name_position" default="above" member="position" to="string" values="above/below/left/right">
+ 		<documentation>Position where to display the city names.		</documentation>
+	</parameter>
+
+	<parameter from="string" name="map_cities_marker" default="plus" member="marker" to="string" values="circle/box/snowflake/plus">
+  		<documentation>Marker for cities.		</documentation>
+	</parameter>
+
+	<parameter member="marker_height" to="float" default="0.7" from="float" name="map_cities_marker_height">
+  		<documentation>Height of city markers.		</documentation>
+ 	</parameter>
+
+	<parameter member="marker_colour" to="Colour" default="evergreen" from="string" name="map_cities_marker_colour">
+  		<documentation>Colour for city markers.		</documentation>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/ClassicMtgDecoder.xml b/src/params/ClassicMtgDecoder.xml
new file mode 100644
index 0000000..5aad02d
--- /dev/null
+++ b/src/params/ClassicMtgDecoder.xml
@@ -0,0 +1,75 @@
+<magics>
+<class action="pmetgram" directory="decoders" prefix="metgram" xmltag="metgram" name="ClassicMtgDecoder">
+		<documentation>
+		The Classic Metgram  is responsible for accessing the classic metgram database and prepare the data to plotting.
+		</documentation>
+		
+	   
+        	<parameter xml="database" from="string" name="metgram_database" default="/vol/epsgram/data/spotbase/epsdb" member="database" to="string">
+           
+            		<documentation> Classic Metgram Database Path 		</documentation>
+            		<migration> New Magics: Parameter eps_database sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+          	<parameter xml="parameter" from="string" name="metgram_parameter" default="" member="param" to="string">
+            		<metview default="" class="">  
+            		</metview>
+            		<documentation> Classic Metgram Parameter 		</documentation>
+            		<migration> New Magics: Parameter eps_parameter sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="latitude" from="float" name="metgram_latitude" default="0" member="latitude" to="float">
+           
+            		<documentation> Classic Metgram  latitude 		</documentation>
+           
+        	</parameter>
+        
+         	<parameter xml="parameter_scaling_factor" from="float" name="metgram_parameter_scaling_factor" default="1" member="param_scaling" to="float">
+           
+            		<documentation> metgram scaling factor : used only in case of an unknow parameter  		</documentation>
+        	</parameter>
+        
+          	<parameter xml="parameter_offset" from="float" name="metgram_parameter_offset" default="0" member="param_offset" to="float">
+           
+            		<documentation> metgram offset : used only in case of an unknow parameter  		</documentation>
+        	</parameter>
+        
+         	<parameter xml="parameter_title" from="string" name="metgram_parameter_title" default="" member="param_title" to="string">
+           
+            		<documentation> metgram parameter title : used only in case of an unknow parameter  		</documentation>
+            		<migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+       	<parameter xml="longitude" from="float" name="metgram_longitude" default="0" member="longitude" to="float">
+            		<metview default="0" class="">  
+            		</metview>
+            		<documentation> Classic Metgram  longitude		</documentation>
+            
+        	</parameter>
+        	<parameter xml="date" from="string" name="metgram_date" default="-1" member="date" to="string">
+            		<metview default="-1" class="">  
+            		</metview>
+            		<documentation>Classic Metgram  date		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="time" from="string" name="metgram_time" default="0000" member="time" to="string">
+            		<metview default="0000" class="">  
+            		</metview>
+            		<documentation> Classic Metgram  time		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+		 	<parameter xml="long_title" from="string" name="metgram_long_title" default="off" member="long_title" to="bool">
+            		<documentation> epsgram long title 		</documentation>
+        	</parameter>
+         	<parameter xml="station" from="string" name="metgram_station_name" default="" member="station" to="string">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="height" from="float" name="metgram_station_height" default="-1." member="height" to="float">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter member="correction" to="bool" default="yes" from="string" name="metgram_temperature_correction">           
+            		<documentation> Temperature correction  		</documentation>
+            
+            		<migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  		</migration>
+        	</parameter>
+        
+</class></magics>
diff --git a/src/params/CoastPlotting.xml b/src/params/CoastPlotting.xml
new file mode 100644
index 0000000..145f48a
--- /dev/null
+++ b/src/params/CoastPlotting.xml
@@ -0,0 +1,17 @@
+<magics>
+<class inherits="NoCoastPlotting" xmltag="coast" name="CoastPlotting" used_by="Coastlines" directory="visualisers" prefix="map/map_coastline" action="pcoast" doc_inherits="no">
+
+    	<parameter member="colour" to="Colour" default="black" from="string" name="map_coastline_colour">
+        		<documentation>Colour of coastlines		</documentation>
+        		<release>0.1		</release>
+        		<migration>Default changed from YELLOW to BLACK		</migration>
+    	</parameter>
+
+    	<parameter member="style" to="LineStyle" default="solid" from="string" name="map_coastline_style">
+        		<documentation>Line style of coastlines		</documentation>
+    	</parameter> 
+
+    	<parameter member="thickness" to="int" default="1" from="int" name="map_coastline_thickness">
+        		<documentation>Line thickness of coastlines		</documentation>
+    	</parameter>	
+</class></magics>
diff --git a/src/params/Coastlines.xml b/src/params/Coastlines.xml
new file mode 100644
index 0000000..7734b05
--- /dev/null
+++ b/src/params/Coastlines.xml
@@ -0,0 +1,35 @@
+<magics>
+<class xmltag="coastlines" name="Coastlines" metview="MCOAST" directory="visualisers" prefix="map" action="pcoast">
+    	<documentation> 
+		The parameters relating to action routine PCOAST (C++ class Coastlines) enable
+        users to control the plotting of coastlines and grid lines. 
+    	</documentation>
+
+    	<parameter from="string" name="map_coastline" default="on" member="coastlines" to="NoCoastPlotting" include="CoastPlotting.h"> 
+        		<documentation> 
+            Plot coastlines on map (ON/OFF)
+            		</documentation>
+        		<option xml="coast" fortran="on" include="CoastPlotting.h" name="CoastPlotting" description="CoastPlotting.xml">		</option>
+        		<option xml="nocoast" fortran="off" include="CoastPlotting.h" name="NoCoastPlotting" description="CoastPlotting.xml">		</option>
+        		<release>Magics++0.1		</release>
+    	</parameter> 
+
+    	<parameter from="string" name="map_grid" default="on" member="grid" to="NoGridPlotting" include="GridPlotting.h"> 
+        		<documentation>
+            Plot grid lines on map (On/OFF)
+        		</documentation>
+        		<option xml="grid" fortran="on" include="GridPlotting.h" name="GridPlotting" description="GridPlotting.xml">		</option>
+        		<option xml="nogrid" fortran="off" include="GridPlotting.h" name="NoGridPlotting" description="GridPlotting.xml">		</option>
+        		<release>Magics++0.1		</release>
+    	</parameter>
+
+    	<parameter from="string" name="map_label" default="on" member="label" to="NoLabelPlotting" include="LabelPlotting.h">
+        		<documentation>
+            Plot label  on map grid lines (On/OFF)
+        		</documentation>
+        		<option xml="label" fortran="on" include="LabelPlotting.h" name="LabelPlotting" description="LabelPlotting.xml">		</option>
+        		<option xml="nolabel" fortran="off" include="LabelPlotting.h" name="NoLabelPlotting" description="LabelPlotting.xml">		</option>
+        		<release>Magics++0.1		</release>
+    	</parameter>
+
+</class></magics>
diff --git a/src/params/ColourTechnique.xml b/src/params/ColourTechnique.xml
new file mode 100644
index 0000000..a366076
--- /dev/null
+++ b/src/params/ColourTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" name="ColourTechnique"/></magics>
diff --git a/src/params/ContinuousLegendMethod.xml b/src/params/ContinuousLegendMethod.xml
new file mode 100644
index 0000000..f7e9599
--- /dev/null
+++ b/src/params/ContinuousLegendMethod.xml
@@ -0,0 +1,8 @@
+<magics>
+<class inherits="LegendMethod" name="ContinuousLegendMethod" used_by="Legend" directory="visualisers" action="legend" include="LegendMethod.h" doc_inherits="no">
+
+	<parameter member="label_frequency" to="int" default="1" from="int" name="legend_label_frequency">
+         			<documentation>Frequency of the labels. 		</documentation>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/Contour.xml b/src/params/Contour.xml
new file mode 100644
index 0000000..66b7f72
--- /dev/null
+++ b/src/params/Contour.xml
@@ -0,0 +1,110 @@
+<magics>
+<class xmltag="contour" name="Contour" metview="MCONT" action="pcont" prefix="contour" directory="visualisers" fortan="pcont" root="contour">
+  	<documentation>
+    This controls the plotting of isolines, contour bands and grid points.
+  	</documentation>
+
+  	<parameter member="legend" to="bool" default="off" from="string" name="legend"> 
+				<documentation> Turn legend on or off 		</documentation> 
+				<release>2.12		</release>
+        		<set name="contour_special_legend" value="on">		</set>
+        		<set name="contour_legend_text" value="on">		</set>
+  	</parameter>
+
+  	<parameter member="contour" to="IsoPlot" default="on" from="string" name="contour"> 
+         		<documentation> Turn contouring on or off  		</documentation>
+          		<option xml="isoline" fortran="on" include="IsoPlot.h" name="IsoPlot">		</option>
+          		<option xml="noisoline" fortran="off" include="IsoPlot.h" name="NoIsoPlot">		</option>
+		 		<unset name="contour_line_style" value="off">		</unset>
+		 		<unset name="contour_line_thickness" value="off">		</unset>
+		 		<unset name="contour_line_colour" value="off">		</unset>
+  	</parameter> 
+      
+  	<parameter member="method" to="ContourMethod" default="automatic" from="string" name="contour_method">
+         		<documentation> Contouring method  		</documentation>
+         		<option xml="automatic" fortran="automatic" xmlfile="Akima" include="AutomaticContourMethod.h" name="AutomaticContourMethod">		</option>
+         		<option xml="sample" fortran="sample" include="AutomaticContourMethod.h" name="SampleContourMethod">		</option>		
+         		<option xml="linear" fortran="linear" include="ContourMethod.h" name="ContourMethod">		</option>
+         		<option xml="akima760" fortran="akima760" include="Akima760Method.h" name="Akima760Method">		</option>
+         		<option xml="akima474" fortran="akima474" include="Akima474Method.h" name="Akima474Method">		</option>
+         		<release>0.1		</release>
+         		<release>Two akima algorithms have been implemented akima760/akima474 		</release>
+	</parameter>
+
+	<parameter member="floor" to="float" default="-INT_MAX" from="float" name="contour_interpolation_floor">
+         		<documentation>Any value below this floor will be forced  to the floor value.
+		avoid the bubbles artificially created by the interpolation method		</documentation>
+         		<release_info>2.8		</release_info>
+	</parameter>
+
+	<parameter member="ceiling" to="float" default="INT_MAX" from="float" name="contour_interpolation_ceiling">
+         		<documentation> any value above this ceiling will be forced  to the ceiling value.
+		avoid the bubbles artificially created by the interpolation method 		</documentation>
+         		<release_info>2.8		</release_info>
+	</parameter>
+
+	<parameter from="string" name="contour_automatic_setting" default="off" member="setting" to="string" values="on/off/ecchart"> 
+    		<documentation> Turn the automatic setting of contouring attributes  		</documentation>
+    		<unset name="contour_automatic_library_path" value="off">		</unset>
+    		<set name="contour_automatic_library_path" value="on">		</set>
+	</parameter>
+
+	<parameter from="string" name="contour_automatic_library_path" visible="off" default="" member="library_path" to="string"> 
+         		<documentation> Users can give their own file to setup the automatic library of contours 		</documentation>
+	</parameter>
+
+
+	<parameter member="hilo" to="HiLoBase" default="off" from="string" name="contour_hilo">
+    		<documentation> Plot local maxima/minima  		</documentation>
+    		<option xml="hilo" fortran="on" include="HiLo.h" name="HiLo">		</option>
+    		<option xml="nohilo" fortran="off" include="HiLo.h" name="NoHiLo">		</option>
+    		<option xml="high" fortran="hi" include="HiLo.h" name="HighHiLo">		</option>
+    		<option xml="low" fortran="lo" include="HiLo.h" name="LowHiLo">		</option>
+
+
+    		<set name="contour_hilo_type" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_blanking" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_format" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_window_size" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_reduction_radius" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_suppress_radius" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_max_value" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_min_value" value="on/hi/lo">		</set>
+    		<set name="contour_hi_text" value="on/hi">		</set>
+    		<set name="contour_lo_text" value="on/lo">		</set>
+    		<set name="contour_hi_max_value" value="on/hi">		</set>
+    		<set name="contour_hi_min_value" value="on/hi">		</set>
+    		<set name="contour_lo_max_value" value="on/lo">		</set>
+    		<set name="contour_lo_min_value" value="on/lo">		</set>
+    		<set name="contour_hilo_marker" value="on/hi/lo">		</set>
+    		<set name="contour_lo_colour" value="on/lo">		</set>
+    		<set name="contour_hi_colour" value="on/hi">		</set>
+    		<set name="contour_hilo_marker_height" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_marker_index" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_marker_colour" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_position_file_name" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_height" value="on/hi/lo">		</set>
+    		<set name="contour_hilo_quality" value="on/hi/lo">		</set>
+
+
+	</parameter>
+  
+
+	<parameter member="grid" to="ValuePlotBase" default="off" from="string" name="contour_grid_value_plot">
+         		<documentation> Plot Grid point values 		</documentation>
+         		<option xml="gridvalues" fortran="on" include="ValuePlot.h" name="ValuePlot">		</option>
+         		<option xml="nogridvalues" fortran="off" include="ValuePlot.h" name="NoValuePlot">		</option>
+         		<release>Magics++0.3		</release>
+	</parameter>
+
+
+    
+    	<metview_parameter default="on" to="bool" from="string" name="grib_scaling_of_retrieved_fields">
+        		<documentation>Certain parameters will be scaled into more user-friendly units if the data has not been manipulated		</documentation>
+    	</metview_parameter>
+
+    	<metview_parameter default="off" to="bool" from="string" name="grib_scaling_of_derived_fields">
+        		<documentation>Certain parameters will be scaled into more user-friendly units if the data has been manipulated		</documentation>
+    	</metview_parameter>
+
+</class></magics>
diff --git a/src/params/ContourMethod.xml b/src/params/ContourMethod.xml
new file mode 100644
index 0000000..6242320
--- /dev/null
+++ b/src/params/ContourMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="ContourMethod.h" name="ContourMethod"/></magics>
diff --git a/src/params/CountSelectionType.xml b/src/params/CountSelectionType.xml
new file mode 100644
index 0000000..a607296
--- /dev/null
+++ b/src/params/CountSelectionType.xml
@@ -0,0 +1,28 @@
+<magics>
+<class inherits="LevelSelection" xmltag="count" name="CountSelectionType" directory="visualisers" prefix="contour/contour/contour_level" action="pcont">
+  	<documentation>
+  The number of contour levels may be set by the user by setting 
+  the parameter CONTOUR_LEVEL_SELECTION_TYPE to 'COUNT' (default)
+  and CONTOUR_LEVEL_COUNT to the number of levels to be plotted. 
+  MAGICS will then calculate the contour interval
+  and the user's plot will consist of the number of levels specified
+  with a regular contour interval.
+  This is the default method and the default number of levels is 10. 
+  The exact number of contour levels plotted may not be CONTOUR_LEVEL_COUNT as
+  PCONT will always use the value stored in CONTOUR_REFERENCE_LEVEL as a starting point
+  and will pick reasonable values for the contour interval.
+  	</documentation>
+  	<parameter member="levelCount" to="int" default="10" from="int" name="contour_level_count">
+         		<documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
+         this means that the number of levels could be slightly different from the asked number of levels		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  	<parameter member="tolerance" to="int" default="2" from="int" name="contour_level_tolerance">
+         		<documentation> Tolerance: Do not use nice levels if the number of levels is really to different [count +/- tolerance] 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  	<parameter member="reference" to="float" default="0.0" from="float" name="contour_reference_level">
+         		<documentation> Contour level from which contour interval is calculated 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Curve.xml b/src/params/Curve.xml
new file mode 100644
index 0000000..5baf1d2
--- /dev/null
+++ b/src/params/Curve.xml
@@ -0,0 +1,101 @@
+<magics>
+<class directory="visualisers" inherits="Graph" name="Curve">
+  	<documentation> Here comes the documentation of the Curve object 	</documentation>
+
+  	<parameter xml="line" from="string" name="graph_line" default="on" member="line" to="bool">
+         		<documentation> Plot the curve line  		</documentation>
+         		<set name="graph_line_style" value="on">		</set>
+         		<set name="graph_line_colour" value="on">		</set>
+         		<set name="graph_line_thickness" value="on">		</set>
+  	</parameter>
+
+  	<parameter xml="line_style" from="string" name="graph_line_style" default="solid" member="style" to="LineStyle">
+         		<documentation> Line style of the curve 		</documentation>
+  	</parameter>
+
+  	<parameter xml="line_colour" from="string" name="graph_line_colour" default="blue" member="colour" to="Colour">
+         		<documentation> Colour of the curve		</documentation>
+  	</parameter>
+
+  	<parameter xml="line_thickness" from="int" name="graph_line_thickness" default="1" member="thickness" to="int">
+         		<documentation> Thickness of the curve  		</documentation>
+  	</parameter>
+
+  	<parameter member="symbol" to="bool" default="off" from="string" name="graph_symbol">
+         		<documentation> If symbols are to be drawn on the curves  		</documentation>
+         		<set name="graph_symbol_marker_index" value="on">		</set>
+         		<set name="graph_symbol_height" value="on">		</set>
+         		<set name="graph_symbol_colour" value="on">		</set>
+         		<set name="graph_symbol_outline" value="on">		</set>
+  	</parameter>
+  
+  	<parameter xml="marker" from="int" name="graph_symbol_marker_index" default="3" member="symbol_marker" to="int">
+         		<documentation> The marker symbol to be used. 		</documentation>
+  	</parameter>
+ 
+
+  	<parameter xml="height" from="float" name="graph_symbol_height" default="0.2" member="symbol_height" to="float">
+         		<documentation> Height of  symbol 		</documentation>
+  	</parameter>
+
+  	<parameter member="symbol_colour" to="Colour" default="red" from="string" name="graph_symbol_colour">
+         		<documentation> Colour of graph symbol 		</documentation>
+  	</parameter>
+  	<parameter member="outline" to="bool" default="off" from="string" name="graph_symbol_outline"> 
+            		<set name="graph_symbol_outline_colour" value="on">		</set> 
+            		<set name="graph_symbol_outline_thickness" value="on">		</set>
+            		<set name="graph_symbol_outline_style" value="on">		</set>
+            		<documentation> Add an outline to each symbol 		</documentation>
+        	</parameter>
+         	<parameter member="outline_colour" to="Colour" default="black" from="string" name="graph_symbol_outline_colour">
+            		<documentation> Colour of the outline 		</documentation>
+        	</parameter>  
+         	<parameter member="outline_thickness" to="int" default="1" from="int" name="graph_symbol_outline_thickness">
+            		<documentation> thickness of the outline 		</documentation>
+        	</parameter>
+       	<parameter member="outline_style" to="LineStyle" default="solid" from="string" name="graph_symbol_outline_style">
+         		<documentation> Line Style of outline 		</documentation>
+  		</parameter>
+  
+ 	<parameter member="x_below" to="float" default="LLONG_MIN" from="float" name="graph_x_suppress_below">
+         		<documentation> Value on the x  below which a point is considered missing 		</documentation>
+  	</parameter>
+   	<parameter member="x_above" to="float" default="LLONG_MAX" from="float" name="graph_x_suppress_above">
+         		<documentation> Value on the x  above which a point is considered missing 		</documentation>
+  	</parameter>
+
+  	<parameter member="y_below" to="float" default="LLONG_MIN" from="float" name="graph_y_suppress_below">
+         		<documentation> Value on the y  below which a point is considered missing 		</documentation>
+  	</parameter>
+
+  	<parameter member="y_above" to="float" default="LLONG_MAX" from="float" name="graph_y_suppress_above">
+         		<documentation> Value on the y  above which a point is considered missing 		</documentation>
+  	</parameter>
+
+  
+  	<parameter from="string" name="graph_missing_data_mode" default="ignore" member="missing_mode" to="string" values="ignore/join/drop"> 
+   		<documentation> How to handle missing data  		</documentation>
+   		<set name="graph_missing_data_style" value="join">		</set>
+   		<set name="graph_missing_data_colour" value="join">		</set>
+   		<set name="graph_missing_data_thickness" value="join">		</set>
+    		<set name="graph_missing_data_style" value="drop">		</set>
+   		<set name="graph_missing_data_colour" value="drop">		</set>
+   		<set name="graph_missing_data_thickness" value="drop">		</set>
+ 	</parameter>
+  	<parameter xml="style" from="string" name="graph_missing_data_style" default="dash" member="missing_style" to="LineStyle">
+         		<documentation> Line style of the missing data part of curve  		</documentation>
+  	</parameter>
+
+  	<parameter xml="colour" from="string" name="graph_missing_data_colour" default="red" member="missing_colour" to="Colour">
+         		<documentation> Colour of the missing data part of curve 		</documentation>
+  	</parameter>
+
+  	<parameter xml="thickness" from="int" name="graph_missing_data_thickness" default="1" member="missing_thickness" to="int">
+         		<documentation> Thickness of the missing data part of curve  		</documentation>
+  	</parameter>
+  	<parameter from="string" name="graph_curve_method" default="straight" member="plot_method" to="string" values="straight/stepped">
+         		<documentation> If stepped, use an histogram style 		</documentation>
+         		
+  	</parameter>
+  	
+</class></magics>
diff --git a/src/params/CurveArea.xml b/src/params/CurveArea.xml
new file mode 100644
index 0000000..33c32fd
--- /dev/null
+++ b/src/params/CurveArea.xml
@@ -0,0 +1,8 @@
+<magics>
+<class directory="visualisers" inherits="Curve" include="Curve.h" name="CurveArea">
+ 		<parameter member="shade" to="GraphShade" default="on" from="string" name="graph_shade">
+         		<option xml="shading" fortran="on" include="GraphShade.h" name="GraphShade">		</option>
+         		<option xml="noshading" fortran="off" include="GraphShade.h" name="NoGraphShade">		</option>
+         		<documentation>Turn the shading on 		</documentation>
+   	</parameter>
+</class></magics>
diff --git a/src/params/DateAxisMethod.xml b/src/params/DateAxisMethod.xml
new file mode 100644
index 0000000..905717c
--- /dev/null
+++ b/src/params/DateAxisMethod.xml
@@ -0,0 +1,116 @@
+<magics>
+<class inherits="AxisMethod" xmltag="date" name="DateAxisMethod" prefix="axis/axis_date" directory="visualisers" include="DateAxis.h" doc_inherits="no">
+
+  	<parameter from="string" name="axis_date_type" default="days" member="method" to="string" values="automatic/years/months/days/hours">
+         		<documentation> Select the type of date axis. 		</documentation>
+       
+  	</parameter>
+
+ 	<parameter member="years" to="bool" default="on" from="string" name="axis_years_label">
+         		<documentation> controls the labeling of the years 		</documentation>   
+         		<set name="axis_years_label_colour" value="on">		</set>
+         		<set name="axis_years_label_font" value="on">		</set>
+              		<set name="axis_years_label_font_style" value="on">		</set>
+         		<set name="axis_years_label_height" value="on">		</set>         
+  	</parameter> 
+  
+  	<parameter xml="colour" from="string" name="axis_years_label_colour" default="automatic" member="year_colour" to="Colour">
+         		<documentation> Label colour for 'YEARS' 		</documentation> 
+  	</parameter>
+
+  	<parameter member="year_font" to="string" default="sanserif" from="string" name="axis_years_label_font">
+         		<documentation> Font to use for the label  		</documentation>
+  	</parameter>
+   	<parameter member="year_font_style" to="string" default="normal" from="string" name="axis_years_label_font_style">
+         		<documentation> Font Style to use for the label  		</documentation>
+  	</parameter>
+  	<parameter xml="height" from="float" name="axis_years_label_height" default="0.2" member="year_height" to="float">
+         		<documentation> Label height for 'YEARS'  		</documentation>
+  	</parameter>
+  
+ 	<parameter from="string" name="axis_months_label" default="on" member="months" to="bool" include="MonthDateAxis.h">
+         		<documentation> controls the labeling of the months 		</documentation>      
+         		<set name="axis_months_label_composition" value="on">		</set>
+         		<set name="axis_months_label_colour" value="on">		</set>
+         		<set name="axis_months_label_font" value="on">		</set>
+         		<set name="axis_months_label_font_style" value="on">		</set>
+         		<set name="axis_months_label_height" value="on">		</set>   
+  	</parameter> 
+  	<parameter from="string" name="axis_months_label_composition" default="three" member="month_composition" to="string" values="one/two/three">
+          		<documentation> Number of letters per month to plot  		</documentation>
+  	</parameter>
+  
+  	<parameter xml="colour" from="string" name="axis_months_label_colour" default="automatic" member="month_colour" to="Colour">
+         		<documentation> Label colour for months 		</documentation>
+  	</parameter>
+
+   	<parameter member="month_font" to="string" default="sanserif" from="string" name="axis_months_label_font">
+         		<documentation> Font to use for the label  		</documentation>
+  	</parameter>
+   	<parameter member="month_font_style" to="string" default="normal" from="string" name="axis_months_label_font_style">
+         		<documentation> Font Style to use for the label  		</documentation>
+  	</parameter>
+
+  	<parameter xml="height" from="float" name="axis_months_label_height" default="0.2" member="month_height" to="float">
+         		<documentation> Label height for months  		</documentation>
+  	</parameter>
+
+  
+  
+  	<parameter from="string" name="axis_days_label" default="both" member="days" to="string" values="day/number/both/off">
+         		<documentation> controls the labeling of the hours 		</documentation>
+         		<set name="axis_days_label_composition" value="day/number/both">		</set>
+         		<set name="axis_days_label_colour" value="day/number/both">		</set> 
+         		<set name="axis_days_label_position" value="day/number/both">		</set> 
+         		<set name="axis_days_sunday_label_colour" value="day/number/both">		</set>
+         		<set name="axis_days_label_font" value="day/number/both">		</set>
+         		<set name="axis_days_label_font_style" value="day/number/both">		</set>
+         		<set name="axis_days_label_height" value="day/number/both">		</set> 
+  	</parameter>
+  
+  	<parameter from="string" name="axis_days_label_composition" default="three" member="day_composition" to="string" values="one/three/full">
+      		<documentation>  Number of letters per days to plot 		</documentation>   
+  	</parameter>
+   	<parameter from="int" name="axis_days_label_position" default="12" member="day_position" to="int" values="0/12">
+      		<documentation> for short time series : if 12 the label will be at 12h .  		</documentation>   
+  	</parameter>
+  	<parameter member="day_colour" to="Colour" default="black" from="string" name="axis_days_label_colour">
+         		<documentation> Label colour for days 		</documentation>
+  	</parameter>
+  
+  	<parameter member="sunday_colour" to="Colour" default="red" from="string" name="axis_days_sunday_label_colour">
+         		<documentation> Label colour for sundays 		</documentation>
+  	</parameter>
+  	<parameter member="day_font" to="string" default="sanserif" from="string" name="axis_days_label_font">
+         		<documentation> Font to use for the label  		</documentation>
+  	</parameter>
+   	<parameter member="day_font_style" to="string" default="normal" from="string" name="axis_days_label_font_style">
+         		<documentation> Font Style to use for the label  		</documentation>
+  	</parameter>
+  
+  	<parameter member="day_height" to="float" default="0.2" from="float" name="axis_days_label_height">
+         		<documentation> Label height for  days 		</documentation>
+  	</parameter>
+
+  	<parameter member="hours" to="bool" default="off" from="string" name="axis_hours_label">
+         		<documentation> controls the labeling of the hours 		</documentation>    
+		 		<set name="axis_hours_label_colour" value="on">		</set>
+         		<set name="axis_hours_label_font" value="on">		</set>   
+         		<set name="axis_hours_label_font_style" value="on">		</set>    
+         		<set name="axis_hours_label_height" value="on">		</set>    
+  	</parameter>  
+   	<parameter member="hour_colour" to="Colour" default="black" from="string" name="axis_hours_label_colour">
+         		<documentation> Label quality for hours 		</documentation>
+  	</parameter>
+   	<parameter member="hour_font" to="string" default="sanserif" from="string" name="axis_hours_label_font">
+         		<documentation> Font to use for the label  		</documentation>
+  	</parameter>
+   	<parameter member="hour_font_style" to="string" default="normal" from="string" name="axis_hours_label_font_style">
+         		<documentation> Font Style to use for the label  		</documentation>
+  	</parameter>
+  
+  	<parameter member="hour_height" to="float" default="0.2" from="float" name="axis_hours_label_height">
+         		<documentation> Label height for  hours 		</documentation>
+  	</parameter>
+ 
+</class></magics>
diff --git a/src/params/DateGribLoopStep.xml b/src/params/DateGribLoopStep.xml
new file mode 100644
index 0000000..cec5565
--- /dev/null
+++ b/src/params/DateGribLoopStep.xml
@@ -0,0 +1,23 @@
+<magics>
+<class inherits="GribLoopStep" xmltag="loopondate" name="DateGribLoopStep" directory="decoders" prefix="grib/grib_loop_step" action="pgrib" include="GribLoopStep.h">
+		<documentation> 
+		Sets the parameters related to looping on dates in a GRIB loop. 
+		</documentation>
+		<parameter xml="loop_step_span" from="float" name="grib_loop_step_span" default="3" member="span" to="float">
+         		<documentation> Time interval  		</documentation>
+    	</parameter>
+    
+    	<parameter member="address_mode" to="GribAddressMode" default="record" from="string" name="grib_file_address_mode">
+	     		<option xml="record" fortran="record" include="GribAddressMode.h" name="GribAddressRecordMode">		</option>
+	     		<option xml="byte_offset" fortran="byte_offset" include="GribAddressMode.h" name="GribAddressByteMode">		</option>
+         		<documentation> Normally GRIB fields are stored as records on a file. If the BYTE offset method is being used, the parameter GRIB_FILE_ADDRESS_MODE should be set to 'BYTE_OFFSET'.(RECORD_NUMBER/BYTE_OFFSET) 		</documentation>
+  	</parameter>
+
+  
+
+  
+    
+  
+    
+  
+</class></magics>
diff --git a/src/params/DotGraphShadeStyle.xml b/src/params/DotGraphShadeStyle.xml
new file mode 100644
index 0000000..b0c7298
--- /dev/null
+++ b/src/params/DotGraphShadeStyle.xml
@@ -0,0 +1,10 @@
+<magics>
+<class directory="visualisers" inherits="GraphShadeStyle" include="GraphShadeStyle.h" name="DotGraphShadeStyle">
+   	<parameter xml="dot_density" from="int" name="graph_shade_dot_density" default="20" member="density" to="int">
+         		<documentation> Density per square cm. of shading dots 		</documentation>
+  	</parameter>
+
+  	<parameter xml="dot_size" from="float" name="graph_shade_dot_size" default="0.02" member="size" to="float">
+         		<documentation> Size of shading dots  		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/DotOriginMarker.xml b/src/params/DotOriginMarker.xml
new file mode 100644
index 0000000..2baf31b
--- /dev/null
+++ b/src/params/DotOriginMarker.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="OriginMarker" directory="visualisers" include="OriginMarker.h" name="DotOriginMarker"/></magics>
diff --git a/src/params/DotPolyShadingMethod.xml b/src/params/DotPolyShadingMethod.xml
new file mode 100644
index 0000000..a4c80f7
--- /dev/null
+++ b/src/params/DotPolyShadingMethod.xml
@@ -0,0 +1,20 @@
+<magics>
+<class inherits="PolyShadingMethod" xmltag="dot" name="DotPolyShadingMethod" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade" action="pcont" doc_inherits="no">
+
+  	<parameter member="size" to="float" default="0.02" from="float" name="contour_shade_dot_size">
+         		<documentation> Size of dot in shading pattern 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+
+ 	<parameter member="max_density" to="float" default="50.0" from="float" name="contour_shade_max_level_density">
+    		<documentation> Dots/square centimetre in highest shading band 		</documentation>
+    		<release>0.2		</release>
+ 	</parameter>
+
+ 	<parameter xml="min_level_density" from="float" name="contour_shade_min_level_density" default="1.0" member="min_density" to="float">
+         		<documentation> Dots/square centimetre in lowest shading band 		</documentation>
+         		<release>0.2		</release>
+ 	</parameter>
+
+ 
+</class></magics>
diff --git a/src/params/DumpShading.xml b/src/params/DumpShading.xml
new file mode 100644
index 0000000..da2cc1e
--- /dev/null
+++ b/src/params/DumpShading.xml
@@ -0,0 +1,4 @@
+<magics>
+<class inherits="ShadingTechnique" xmltag="dump_shading" name="DumpShading" directory="visualisers" prefix="contour" action="pcont" include='CellShading.h'>
+	
+</class></magics>
diff --git a/src/params/DumpShadingWrapper.xml b/src/params/DumpShadingWrapper.xml
new file mode 100644
index 0000000..26ab63a
--- /dev/null
+++ b/src/params/DumpShadingWrapper.xml
@@ -0,0 +1,13 @@
+<magics>
+<class inherits="ShadingTechnique" xmltag="cell_shading" name="CellShading" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade_cell" action="pcont">
+	
+  	<parameter member="resolution" to="float" default="10" from="float" name="contour_shade_cell_resolution">
+         		<documentation> Number of cells per cm for CELL shading 		</documentation> 
+         		<release>0.8		</release>
+  	</parameter>
+  
+  	<parameter from="string" name="contour_shade_cell_method" default="nearest" member="method" to="string" values="nearest/interpolate">
+         		<documentation> NMethod of determining the colour of a cell (INTERPOLATE/ NEAREST) 		</documentation>
+         		<release>0.8		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/EfiDataDecoder.xml b/src/params/EfiDataDecoder.xml
new file mode 100644
index 0000000..1a59290
--- /dev/null
+++ b/src/params/EfiDataDecoder.xml
@@ -0,0 +1,12 @@
+<magics>
+<class action="xml" directory="decoders" name="EfiDataDecoder">
+		<documentation>
+		The Efi decoder is responsible for decoding EFi Ascii file.(Metops)
+		</documentation>
+        	<parameter xml="path" from="string" name="efi_filename" default="" member="path" to="string">           
+            		<documentation> Efi file name Path 		</documentation>
+        	</parameter>        
+         	<parameter xml="record" from="int" name="efi_record" default="0" member="record" to="int">
+            		<documentation> Efi record ( starting at 0) 		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/EfiGraph.xml b/src/params/EfiGraph.xml
new file mode 100644
index 0000000..27d4dda
--- /dev/null
+++ b/src/params/EfiGraph.xml
@@ -0,0 +1,37 @@
+<magics>
+<class action="pcdfgram" directory="visualisers" prefix="efi" xmltag="efigraph" name="EfiGraph">
+		<documentation>
+		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
+		</documentation>
+        	<parameter member="box_colour" to="stringarray" default="stringarray()" from="stringarray" name="efi_box_colour_array">           
+            		<documentation> Colour of the curve  		</documentation>
+        	</parameter>
+        
+        	<parameter member="border_colour" to="Colour" default="black" from="string" name="efi_box_border_colour">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+          	<parameter member="border_thickness" to="int" default="1" from="int" name="efi_box_border_thickness">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+          	<parameter member="border_style" to="LineStyle" default="solid" from="string" name="efi_box_border_line_style">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+            	<parameter member="normal_colour" to="Colour" default="black" from="string" name="efi_normal_colour">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+         	<parameter member="normal_thickness" to="int" default="4" from="int" name="efi_normal_thickness">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+          	<parameter member="normal_style" to="LineStyle" default="solid" from="string" name="efi_normal_line_style">           
+            		<documentation> Style of the curve  		</documentation>
+        	</parameter>
+         	<parameter xml="font" from="string" name="efi_font" default="sansserif" member="font" to="string">           
+        	</parameter>
+         	<parameter xml="font_size" from="float" name="efi_font_size" default="0.25" member="font_size" to="float">           
+        	</parameter>
+        	<parameter xml="font_style" from="string" name="efi_font_style" default="" member="font_style" to="string">           
+        	</parameter>
+        	<parameter xml="font_colour" from="string" name="efi_font_colour" default="black" member="font_colour" to="Colour">           
+        	</parameter>
+        
+</class></magics>
diff --git a/src/params/EfiJSon.xml b/src/params/EfiJSon.xml
new file mode 100644
index 0000000..b0387c8
--- /dev/null
+++ b/src/params/EfiJSon.xml
@@ -0,0 +1,36 @@
+<magics>
+<class action="pmetgram" directory="web" prefix="efijson" xmltag="efijson" name="EfiJSon">
+	 	<parameter member="path" to="string" default="" from="string" name="efijson_input_filename">
+  			<documentation> Path to the file containing the Efi data (JSon format) 		</documentation>
+ 		</parameter>
+ 	
+         
+        	<parameter xml="long_title" from="string" name="efi_long_title" default="off" member="long_title" to="bool">
+            		<documentation> efigram long title ( Point Position ... General title!) 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+        	<parameter xml="title" from="string" name="efi_title" default="off" member="title" to="bool">
+            		<documentation> epsgram title ( parameter name) 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+        
+        
+          	<parameter member="legend" to="bool" default="on" from="string" name="efi_legend">           
+            		<documentation> legend 		</documentation>
+        	</parameter>  
+       
+        
+         	<parameter member="legend_colours" to="stringarray" default="stringarray()" from="stringarray" name="efi_legend_colour_list">           
+            		<documentation> legend box colour list  		</documentation>
+        	</parameter>
+         	<parameter member="legend_type" to="string" default="both" from="string" name="efi_legend_box_type">           
+            		<documentation> both/negative/positive 		</documentation>
+        	</parameter>
+        	<parameter member="legend_normal_colour" to="Colour" default="black" from="string" name="efi_legend_normal_colour">           
+            		<documentation> legend colour box 		</documentation>
+        	</parameter>
+          	<parameter member="legend_normal_thickness" to="int" default="4" from="int" name="efi_legend_normal_thickness">           
+            		<documentation> legend colour box 		</documentation>
+        	</parameter>
+         
+ </class></magics>
diff --git a/src/params/EfigramDecoder.xml b/src/params/EfigramDecoder.xml
new file mode 100644
index 0000000..6867448
--- /dev/null
+++ b/src/params/EfigramDecoder.xml
@@ -0,0 +1,81 @@
+<magics>
+<class action="pefigram" directory="decoders" prefix="efi" xmltag="efigram" name="EfigramDecoder">
+		<documentation>
+		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
+		</documentation>
+         	<parameter xml="database" from="string" name="efi_root_database" default="" member="database" to="string">           
+            		<documentation> database to access 		</documentation>
+        	</parameter> 
+        	<parameter xml="legend_database" from="string" name="efi_legend_root_database" default="" member="legend_database" to="string">           
+            		<documentation> legend 		</documentation>
+        	</parameter>
+        	<parameter member="clim_database" to="string" default="" from="string" name="efi_clim_root_database">           
+            		<documentation> climatalogy database 		</documentation>
+        	</parameter>
+         	<parameter member="dates" to="stringarray" default="stringarray()" from="stringarray" name="efi_dates">           
+            		<documentation> date to select In date format (YYYYMMDDHHHH)		</documentation>
+        	</parameter>   
+        	<parameter member="clim_param" to="string" default="" from="string" name="efi_clim_parameter">           
+            		<documentation> date to select for the clim In date format (YYYYMMDDHHHH)		</documentation>
+        	</parameter>  
+          	<parameter member="clim_date" to="string" default="" from="string" name="efi_clim_date">           
+            		<documentation> date to select for the clim In date format (YYYYMMDDHHHH)		</documentation>
+        	</parameter>  
+        
+        	<parameter member="clim_step" to="int" default="36" from="int" name="efi_clim_step">           
+            		<documentation> date to select for the clim In date format (YYYYMMDDHHHH)		</documentation>
+        	</parameter> 
+        
+        	<parameter member="steps" to="intarray" default="intarray()" from="intarray" name="efi_steps">           
+            		<documentation> steps to extract ( legend will use step+12) 		</documentation>
+        	</parameter>
+         	<parameter xml="parameter" from="string" name="efi_parameter" default="" member="param" to="string">
+            		<metview default="0" class="">  
+            		</metview>
+            		<documentation> epsgram latitude column name 		</documentation>
+            		<migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         
+        	<parameter xml="long_title" from="string" name="efi_long_title" default="off" member="long_title" to="bool">
+            		<documentation> efigram long title ( Point Position ... General title!) 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+        	<parameter xml="title" from="string" name="efi_title" default="off" member="title" to="bool">
+            		<documentation> epsgram title ( parameter name) 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+        	<parameter xml="latitude" from="float" name="efi_latitude" default="0" member="latitude" to="float">
+            		<metview default="0" class="">  
+            		</metview>
+            		<documentation> epsgram latitude column name 		</documentation>
+            		<migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+       	<parameter xml="longitude" from="float" name="efi_longitude" default="0" member="longitude" to="float">
+            		<metview default="0" class="">  
+            		</metview>
+            		<documentation> epsgram longitude column name		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+        
+          	<parameter member="legend" to="bool" default="on" from="string" name="efi_legend">           
+            		<documentation> legend 		</documentation>
+        	</parameter>  
+       
+        
+         	<parameter member="legend_colours" to="stringarray" default="stringarray()" from="stringarray" name="efi_legend_colour_list">           
+            		<documentation> legend box colour list  		</documentation>
+        	</parameter>
+         	<parameter member="legend_type" to="string" default="both" from="string" name="efi_legend_box_type">           
+            		<documentation> both/negative/positive 		</documentation>
+        	</parameter>
+        	<parameter member="legend_normal_colour" to="Colour" default="black" from="string" name="efi_legend_normal_colour">           
+            		<documentation> legend colour box 		</documentation>
+        	</parameter>
+          	<parameter member="legend_normal_thickness" to="int" default="4" from="int" name="efi_legend_normal_thickness">           
+            		<documentation> legend colour box 		</documentation>
+        	</parameter>
+         
+       
+       
+         
+</class></magics>
diff --git a/src/params/EpsBufr.xml b/src/params/EpsBufr.xml
new file mode 100644
index 0000000..ace094b
--- /dev/null
+++ b/src/params/EpsBufr.xml
@@ -0,0 +1,57 @@
+<magics>
+<class action="pmetgram" directory="decoders" prefix="epsbufr" xmltag="epsbufr" name="EpsBufr">
+ 	<parameter member="path" to="string" default="" from="string" name="epsbufr_input_filename">
+  			<documentation> Path to the file containing the Bufr data 		</documentation>
+ 	</parameter>
+    	<parameter member="title" to="string" default="" from="string" name="epsbufr_title">
+         		<documentation> text block to be plotted 		</documentation>
+        	</parameter>
+  	<parameter member="param_title" to="string" default="" from="string" name="epsbufr_parameter_title">
+  			<documentation> Title to use to describe the parameter 		</documentation>
+ 	</parameter>
+  	<parameter member="information" to="bool" default="on" from="string" name="epsbufr_information">
+  			<documentation> Plot or not information about station/forecast  in a long title   		</documentation>  
+ 	</parameter>
+  	<parameter member="short_title" to="bool" default="on" from="string" name="epsbufr_short_title">
+  			<documentation> Plot or not information about station/forecast  in a long title   		</documentation>  
+ 	</parameter>
+ 	<parameter member="param_descriptor" to="int" default="0" from="int" name="epsbufr_parameter_descriptor">
+  				<documentation> Descriptor to use 		</documentation>
+  	</parameter>
+  	<parameter member="param_descriptor_2" to="int" default="0" from="int" name="epsbufr_parameter_2_descriptor">
+  				<documentation> Descriptor to use 		</documentation>
+  	</parameter>
+  	<parameter member="accumulated" to="bool" default="off" from="string" name="epsbufr_accumulated_parameter">
+  				<documentation> Descriptor to use 		</documentation>
+  	</parameter>
+   	<parameter member="station_name" to="string" default="" from="string" name="epsbufr_station_name">
+       		<documentation>Name of the station to use in the title 		</documentation>
+   	</parameter>
+   	<parameter member="latitude" to="float" default="0" from="float" name="epsbufr_station_latitude">
+            		<documentation>Latitude of the point to extract 		</documentation>
+        	</parameter>
+         	<parameter member="longitude" to="float" default="0" from="float" name="epsbufr_station_longitude">           
+            		<documentation> Longitude of the point to extract 		</documentation>
+        	</parameter>
+         	<parameter member="param_scaling_factor" to="float" default="1" from="float" name="epsbufr_parameter_scaling_factor">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+         	<parameter member="param_offset_factor" to="float" default="0" from="float" name="epsbufr_parameter_offset_factor">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+    	<parameter member="percentile" to="float" default="1" from="float" name="epsbufr_y_axis_percentile">           
+            		<documentation> Temperature correction  		</documentation>
+            		<available>yes		</available>
+            		<available>no		</available>
+           
+            		<migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  		</migration>
+        	</parameter>
+        
+         	<parameter member="threshold" to="float" default="50" from="float" name="epsbufr_y_axis_threshold">           
+            		<documentation> Temperature correction  		</documentation>
+            		<available>yes		</available>
+            		<available>no		</available>
+           
+            		<migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  		</migration>
+        	</parameter>
+</class></magics>
diff --git a/src/params/EpsCloud.xml b/src/params/EpsCloud.xml
new file mode 100644
index 0000000..01c974f
--- /dev/null
+++ b/src/params/EpsCloud.xml
@@ -0,0 +1,13 @@
+<magics>
+<class action="peps" directory="visualisers" prefix="eps/eps_rose_cloud" xmltag="epscloud" name="EpsCloud">
+		<documentation>
+		The EpsCloud is repsonsible for plotting the espgram using Cloud rose visualisation
+		</documentation>
+		<parameter member="colour" to="Colour" default="black" from="string" name="eps_rose_cloud_colour"> 
+    		<documentation> Rose wind darker colour  		</documentation>          
+    	</parameter>
+    	<parameter member="border_colour" to="Colour" default="none" from="string" name="eps_rose_cloud_border_colour">    
+    		<documentation> Rose wind border colour  		</documentation>       
+    	</parameter>
+    
+</class></magics>
diff --git a/src/params/EpsDirection.xml b/src/params/EpsDirection.xml
new file mode 100644
index 0000000..b5a1bca
--- /dev/null
+++ b/src/params/EpsDirection.xml
@@ -0,0 +1,19 @@
+<magics>
+<class action="pmetgram" directory="visualisers" prefix="eps/eps_direction" xmltag="epsdirection" name="EpsDirection">
+		<documentation>
+		The EpsPlumeis responsible for plotting epsplume graph
+		</documentation>
+    	<parameter member="keyword" to="string" default="forecast" from="string" name="eps_direction_keyword">           
+            		<documentation> keyword to plot : forecast/control! 		</documentation>
+        	</parameter>
+        	<parameter member="line_colour" to="Colour" default="red" from="string" name="eps_direction_line_colour">           
+            		<documentation> Colour of lines ...  		</documentation>
+        	</parameter>
+        
+         	<parameter member="line_style" to="LineStyle" default="solid" from="string" name="eps_direction_line_style">           
+            		<documentation> Line Style 		</documentation>
+        	</parameter>
+           	<parameter member="line_thickness" to="int" default="1" from="int" name="eps_direction_line_thickness">           
+            		<documentation> Thickness of the line ...  		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/EpsGraph.xml b/src/params/EpsGraph.xml
new file mode 100644
index 0000000..e80184c
--- /dev/null
+++ b/src/params/EpsGraph.xml
@@ -0,0 +1,81 @@
+<magics>
+<class action="peps" directory="visualisers" prefix="eps" xmltag="epsgraph" name="EpsGraph">
+		<documentation>
+		The Epsgraph is repsonsible for plotting the espgram using box and whisker visualisation
+		</documentation>
+        	<parameter xml="font" from="string" name="eps_font" default="sansserif" member="font" to="string">           
+        	</parameter>
+         	<parameter xml="font_size" from="float" name="eps_font_size" default="0.25" member="font_size" to="float">           
+        	</parameter>
+        	<parameter xml="font_style" from="string" name="eps_font_style" default="" member="font_style" to="string">           
+        	</parameter>
+        	<parameter xml="font_colour" from="string" name="eps_font_colour" default="blue" member="font_colour" to="Colour">           
+        	</parameter>
+        	<parameter xml="box_colour" from="string" name="eps_box_colour" default="cyan" member="colour" to="Colour">           
+        	</parameter>
+          	<parameter member="box_shift" to="int" default="0" from="int" name="eps_box_shift">           
+        	</parameter>
+        	<parameter xml="right_box_colour" from="string" name="eps_right_box_colour" default="red" member="right_colour" to="Colour">           
+        	</parameter>
+        	<parameter xml="left_box_colour" from="string" name="eps_left_box_colour" default="blue" member="left_colour" to="Colour">           
+        	</parameter>
+        	<parameter xml="border_colour" from="string" name="eps_box_border_colour" default="black" member="border_colour" to="Colour">            
+        	</parameter>
+        	<parameter xml="border_thickness" from="int" name="eps_box_border_thickness" default="3" member="border_thickness" to="int">            
+        	</parameter>
+          	<parameter member="median_thickness" to="int" default="3" from="int" name="eps_box_median_thickness">            
+        	</parameter>
+         	<parameter member="median_colour" to="Colour" default="black" from="string" name="eps_box_median_colour">            
+        	</parameter>
+        	<parameter xml="max" from="float" name="eps_maximum" default="INT_MAX" member="max" to="float">            
+        	</parameter>
+        	<parameter xml="max_font_name" from="string" name="eps_maximum_font_name" default="sansserif" member="max_font_name" to="string">            
+        	</parameter>
+        	<parameter xml="max_font_style" from="string" name="eps_maximum_font_style" default="normal" member="max_font_style" to="string">            
+        	</parameter>
+        	<parameter xml="max_font_size" from="float" name="eps_maximum_font_size" default="0.25" member="max_font_size" to="float">            
+        	</parameter>
+         	<parameter xml="max_font_colour" from="string" name="eps_maximum_font_colour" default="red" member="max_font_colour" to="Colour">            
+        	</parameter>
+        	<parameter member="box_width" to="float" default="-1" from="float" name="eps_box_width">	</parameter>
+        	 
+        	<parameter xml="whisker" from="string" name="eps_whisker" default="on" member="whisker" to="bool">	</parameter>
+        
+         	<parameter member="legend_resolution" to="string" default="truncature" from="string" name="eps_legend_resolution">	</parameter>	 
+        	       	<parameter member="legend_control_text" to="string" default="" from="string" name="eps_legend_control_text">	</parameter>	    	
+        	   	<parameter member="legend_size" to="float" default="0.3" from="float" name="eps_legend_font_size">	</parameter>	 
+       	  	<parameter member="legend_forecast_text" to="string" default="" from="string" name="eps_legend_forecast_text">	</parameter>	 
+       	
+        	 
+         	<parameter member="deterministic" to="bool" default="on" from="string" name="eps_deterministic">
+        	 		<documentation> plot the deterministic Forecast		</documentation>
+        	</parameter>
+         	<parameter member="deterministic_colour" to="Colour" default="blue" from="string" name="eps_deterministic_line_colour">
+        	 		<documentation>Colour of  deterministic Forecast		</documentation>
+        	</parameter>
+         
+          	<parameter member="deterministic_style" to="LineStyle" default="solid" from="string" name="eps_deterministic_line_style">
+        	 		<documentation>line style of  deterministic Forecast		</documentation>
+        	</parameter>
+        	<parameter member="deterministic_thickness" to="int" default="2" from="int" name="eps_deterministic_line_thickness">
+        	 		<documentation>line style of  deterministic Forecast		</documentation>
+        	</parameter>
+                 	<parameter member="control" to="bool" default="on" from="string" name="eps_control">
+        	 		<documentation> plot the deterministic Forecast		</documentation>
+        	</parameter>
+         	<parameter member="control_colour" to="Colour" default="red" from="string" name="eps_control_line_colour">
+        	 		<documentation>Colour of  deterministic Forecast		</documentation>
+        	</parameter>
+        
+          	<parameter member="control_style" to="LineStyle" default="dash" from="string" name="eps_control_line_style">
+        	 		<documentation>Control of  deterministic Forecast		</documentation>
+        	</parameter>
+        	<parameter member="control_thickness" to="int" default="2" from="int" name="eps_control_line_thickness">
+        	 		<documentation>line style of  deterministic Forecast		</documentation>
+        	</parameter>
+        	 
+        	<parameter member="legend" to="bool" default="on" from="string" name="legend">           
+        	</parameter>
+        	<parameter member="grey_legend" to="bool" default="on" from="string" name="eps_grey_legend">           
+        	</parameter>	 
+</class></magics>
diff --git a/src/params/EpsPlume.xml b/src/params/EpsPlume.xml
new file mode 100644
index 0000000..2937b1c
--- /dev/null
+++ b/src/params/EpsPlume.xml
@@ -0,0 +1,72 @@
+<magics>
+<class action="pmetgram" directory="visualisers" prefix="eps/eps_plume" xmltag="epsplume" name="EpsPlume">
+		<documentation>
+		The EpsPlumeis responsible for plotting epsplume graph
+		</documentation>  
+			<parameter from="string" name="eps_plume_method" default="time_serie" member="method" to="string" values="time_serie/vertical_profile">           
+            		<documentation> Type of visualisation required : time_serie or vertical_profile 		</documentation>
+        	</parameter>
+         	<parameter member="line" to="bool" default="on" from="string" name="eps_plume_members">           
+            		<documentation>show the eps members  		</documentation>
+        	</parameter>
+        
+        	<parameter member="line_colour" to="Colour" default="magenta" from="string" name="eps_plume_line_colour">           
+            		<documentation>Line colour of the eps members  		</documentation>
+        	</parameter>
+        
+         	<parameter member="line_style" to="LineStyle" default="solid" from="string" name="eps_plume_line_style">           
+            		<documentation> Line style of the eps members 		</documentation>
+        	</parameter>
+           	<parameter member="line_thickness" to="int" default="1" from="int" name="eps_plume_line_thickness">           
+            		<documentation> Line thickness of the eps members  		</documentation>
+        	</parameter>
+          	<parameter member="forecast" to="bool" default="on" from="string" name="eps_plume_forecast">           
+            		<documentation>show the forecast  		</documentation>
+        	</parameter>
+          	<parameter member="forecast_line_colour" to="Colour" default="cyan" from="string" name="eps_plume_forecast_line_colour">           
+            		<documentation> Line colour of the deterministic forecast  		</documentation>
+        	</parameter>
+        
+         	<parameter member="forecast_line_style" to="LineStyle" default="dash" from="string" name="eps_plume_forecast_line_style">           
+            		<documentation>   Line Style of the deterministic forecast 		</documentation>
+        	</parameter>
+           	<parameter member="forecast_line_thickness" to="int" default="5" from="int" name="eps_plume_forecast_line_thickness">           
+            		<documentation>  Line thickness of the deterministic forecast  		</documentation>
+        	</parameter>
+          	<parameter member="control" to="bool" default="on" from="string" name="eps_plume_control">           
+            		<documentation>show the forecast  		</documentation>
+        	</parameter>
+        	<parameter member="control_line_colour" to="Colour" default="cyan" from="string" name="eps_plume_control_line_colour">           
+            		<documentation>  Line colour of the control forecast  		</documentation>
+        	</parameter>
+        
+         	<parameter member="control_line_style" to="LineStyle" default="solid" from="string" name="eps_plume_control_line_style">           
+            		<documentation>  Line Style of the control forecast		</documentation>
+        	</parameter>
+           	<parameter member="control_line_thickness" to="int" default="5" from="int" name="eps_plume_control_line_thickness">           
+            		<documentation>  Line thickness of the deterministic forecast  		</documentation>
+        	</parameter>
+        	<parameter member="median" to="bool" default="off" from="string" name="eps_plume_median">           
+            		<documentation>show the forecast  		</documentation>
+        	</parameter>
+        	<parameter member="median_line_colour" to="Colour" default="cyan" from="string" name="eps_plume_median_line_colour">           
+            		<documentation>  Line colour of the control forecast  		</documentation>
+        	</parameter>
+        
+         	<parameter member="median_line_style" to="LineStyle" default="solid" from="string" name="eps_plume_median_line_style">           
+            		<documentation>  Line Style of the control forecast		</documentation>
+        	</parameter>
+           	<parameter member="median_line_thickness" to="int" default="5" from="int" name="eps_plume_median_line_thickness">           
+            		<documentation>  Line thickness of the deterministic forecast  		</documentation>
+        	</parameter>
+            	<parameter member="shading" to="bool" default="off" from="string" name="eps_plume_shading">           
+            		<documentation> Turn on/off the plume shading 		</documentation>
+        	</parameter>    
+         	<parameter member="shading_levels" to="floatarray" default="floatarray()" from="floatarray" name="eps_plume_shading_level_list">           
+            		<documentation> levels used for plumes shading 		</documentation>
+        	</parameter> 
+        	<parameter member="shading_colours" to="stringarray" default="stringarray()" from="stringarray" name="eps_plume_shading_colour_list">           
+            		<documentation> colours used for plumes shading 		</documentation>
+        	</parameter>
+        
+</class></magics>
diff --git a/src/params/EpsShade.xml b/src/params/EpsShade.xml
new file mode 100644
index 0000000..1bc58f8
--- /dev/null
+++ b/src/params/EpsShade.xml
@@ -0,0 +1,18 @@
+<magics>
+<class action="pmetgram" directory="visualisers" prefix="eps" xmltag="epsshade" name="EpsShade">
+		<documentation>
+		The EpsSahde is responsible for plotting climate information as Shaded area.
+		</documentation>
+        	<parameter member="colour" to="Colour" default="red" from="string" name="eps_shade_colour">           
+            		<documentation> Colour of the darkest shade area ...  		</documentation>
+        	</parameter>
+        	<parameter member="line_colour" to="Colour" default="red" from="string" name="eps_shade_line_colour">           
+            		<documentation> Colour of the darkest shade area ...  		</documentation>
+        	</parameter>
+         	<parameter member="line_style" to="LineStyle" default="solid" from="string" name="eps_shade_line_style">           
+            		<documentation> Colour of the darkest shade area ...  		</documentation>
+        	</parameter>
+           	<parameter member="line_thickness" to="int" default="1" from="int" name="eps_shade_line_thickness">           
+            		<documentation> Colour of the darkest shade area ...  		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/EpsWave.xml b/src/params/EpsWave.xml
new file mode 100644
index 0000000..9d3baea
--- /dev/null
+++ b/src/params/EpsWave.xml
@@ -0,0 +1,9 @@
+<magics>
+<class action="peps" directory="visualisers" prefix="eps/eps_rose_wave" xmltag="epswave" name="EpsWave">
+		<documentation>
+		The Epsgraph is repsonsible for plotting the espgram using wind rose visualisation
+		</documentation>
+		<parameter member="colour" to="stringarray" default="stringarray()" from="stringarray" name="eps_rose_wave_colour"> 
+    		<documentation> Rose wind darker colour  		</documentation>          
+    	</parameter>
+</class></magics>
diff --git a/src/params/EpsWind.xml b/src/params/EpsWind.xml
new file mode 100644
index 0000000..4bf9c3b
--- /dev/null
+++ b/src/params/EpsWind.xml
@@ -0,0 +1,20 @@
+<magics>
+<class action="peps" directory="visualisers" prefix="eps/eps_rose_wind" xmltag="epswind" name="EpsWind">
+		<documentation>
+		The Epsgraph is repsonsible for plotting the espgram using wind rose visualisation
+		</documentation>
+		<parameter member="colour" to="Colour" default="grey" from="string" name="eps_rose_wind_colour"> 
+    		<documentation> Rose wind darker colour  		</documentation>          
+    	</parameter>
+    	<parameter member="border_colour" to="Colour" default="grey" from="string" name="eps_rose_wind_border_colour">    
+    		<documentation> Rose wind border colour  		</documentation>       
+    	</parameter>
+    	<parameter member="convention" to="string" default="meteorological" from="string" name="eps_rose_wind_convention">    
+    		<documentation> Define the convention to use to plot the wind direction 
+    	[ meteorological : Direction the parameter is coming from, 
+    	  oceanographic : Direction the parameter is goint to]  		</documentation>       
+    	</parameter>
+    	<parameter member="legend" to="bool" default="on" from="string" name="legend"> 
+    		<documentation> turn the legend (on/off)  		</documentation>          
+    	</parameter>
+</class></magics>
diff --git a/src/params/EpsXmlInput.xml b/src/params/EpsXmlInput.xml
new file mode 100644
index 0000000..cfc294f
--- /dev/null
+++ b/src/params/EpsXmlInput.xml
@@ -0,0 +1,17 @@
+<magics>
+<class action="pmetgram" directory="decoders" prefix="epsxml" xmltag="epsxml" name="EpsXmlInput">
+ 	<parameter member="path" to="string" default="" from="string" name="epsxml_input_filename">
+  			<documentation> Path to the file containing the Xml Description 		</documentation>
+ 	</parameter>
+  	<parameter member="param" to="string" default="" from="string" name="epsxml_parameter">
+  			<documentation> Parameter to extract 		</documentation>
+ 	</parameter>
+   	<parameter member="long_title" to="bool" default="off" from="string" name="epsxml_long_title">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter member="short_title" to="bool" default="on" from="string" name="epsxml_title">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+</class></magics>
diff --git a/src/params/EpsgramDecoder.xml b/src/params/EpsgramDecoder.xml
new file mode 100644
index 0000000..128a048
--- /dev/null
+++ b/src/params/EpsgramDecoder.xml
@@ -0,0 +1,117 @@
+<magics>
+<class xmltag="epsgram" name="EpsgramDecoder" xml_data="eps_title" directory="decoders" prefix="eps" action="peps">
+		<documentation>
+		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
+		</documentation>
+		
+	    	<parameter member="title" to="stringarray" default="stringarray()" from="stringarray" name="eps_title">
+         		<documentation> text block to be plotted 		</documentation>
+        	</parameter>
+        	<parameter xml="type" from="string" name="eps_type" default="eps10" member="type" to="string">
+         		<documentation>Eps Metgram type : eps10 or eps15  		</documentation>
+        	</parameter>
+        
+        	<parameter xml="database" from="string" name="eps_database" default="/vol/epsgram/data/spotbase/epsdb" member="database" to="string">
+           
+            		<documentation> Epsgram Database Path 		</documentation>
+            		<migration> New Magics: Parameter eps_database sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+        	<parameter member="title_text" to="string" default="EPS Meteogram" from="string" name="eps_title_text">
+            		<metview default="" class="">  
+            		</metview>
+            		<documentation> Epsgram Parameter 		</documentation>
+            		<migration> New Magics: Parameter eps_parameter sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+          	<parameter xml="parameter" from="string" name="eps_parameter" default="" member="param" to="string">
+            		<metview default="" class="">  
+            		</metview>
+            		<documentation> Epsgram Parameter 		</documentation>
+            		<migration> New Magics: Parameter eps_parameter sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="parameter_title" from="string" name="eps_parameter_title" default="" member="param_title" to="string">
+           
+            		<documentation> epsgram parameter title : used only in case of an unknow parameter  		</documentation>
+            		<migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="latitude" from="float" name="eps_latitude" default="0" member="latitude" to="float">
+            		<metview default="0" class="">  
+            		</metview>
+            		<documentation> epsgram latitude column name 		</documentation>
+            		<migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+       	<parameter xml="longitude" from="float" name="eps_longitude" default="0" member="longitude" to="float">
+            		<metview default="0" class="">  
+            		</metview>
+            		<documentation> epsgram longitude column name		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter member="param_hour_shift" to="float" default="0" from="float" name="eps_parameter_hour_shift">
+             		<documentation> valid date is shifted ( temporary..)  		</documentation>
+        	</parameter>
+         	<parameter member="param_scaling_factor" to="float" default="1" from="float" name="eps_parameter_scaling_factor">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+         	<parameter member="param_offset_factor" to="float" default="0" from="float" name="eps_parameter_offset_factor">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+        	<parameter xml="date" from="string" name="eps_date" default="-1" member="date" to="string">
+            		<metview default="-1" class="">  
+            		</metview>
+            		<documentation> epsgram longitude column name		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="time" from="string" name="eps_time" default="0000" member="time" to="string">
+            		<metview default="0000" class="">  
+            		</metview>
+            		<documentation> epsgram date 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+		 	<parameter xml="long_title" from="string" name="eps_long_title" default="off" member="long_title" to="bool">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="long_title_station" from="string" name="eps_long_title_station" default="on" member="long_title_station" to="bool">
+            		<documentation> epsgram long title : add the station name 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="long_title_height" from="string" name="eps_long_title_height" default="on" member="long_title_height" to="bool">
+            		<documentation> epsgram long title: add the station height 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="long_title_point" from="string" name="eps_long_title_point" default="on" member="long_title_point" to="bool">
+            		<documentation> epsgram long title: add the grid point position 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="station" from="string" name="eps_station_name" default="" member="station" to="string">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter xml="height" from="float" name="eps_station_height" default="INT_MAX" member="height" to="float">
+            		<documentation> epsgram long title 		</documentation>
+            		<migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         	<parameter member="correction" to="bool" default="yes" from="string" name="eps_temperature_correction">           
+            		<documentation> Temperature correction  		</documentation>
+            		<available>yes		</available>
+            		<available>no		</available>
+           
+            		<migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  		</migration>
+        	</parameter>
+        
+        	<parameter member="percentile" to="float" default="1" from="float" name="eps_y_axis_percentile">           
+            		<documentation> Temperature correction  		</documentation>
+            		<available>yes		</available>
+            		<available>no		</available>
+           
+            		<migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  		</migration>
+        	</parameter>
+        
+         	<parameter member="threshold" to="float" default="50" from="float" name="eps_y_axis_threshold">           
+            		<documentation> Temperature correction  		</documentation>
+            		<available>yes		</available>
+            		<available>no		</available>
+           
+            		<migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  		</migration>
+        	</parameter>
+        
+</class></magics>
diff --git a/src/params/EquidistantTableMode.xml b/src/params/EquidistantTableMode.xml
new file mode 100644
index 0000000..ac3749f
--- /dev/null
+++ b/src/params/EquidistantTableMode.xml
@@ -0,0 +1,4 @@
+<magics>
+<class implements="LookupTableMode" directory="visualisers" name="EquidistantTableMode">
+	
+</class></magics>
diff --git a/src/params/FixedTableMode.xml b/src/params/FixedTableMode.xml
new file mode 100644
index 0000000..1e5d990
--- /dev/null
+++ b/src/params/FixedTableMode.xml
@@ -0,0 +1,10 @@
+<magics>
+<class inherits="LookupTableMode" directory="visualisers" name="FixedTableMode">
+		<parameter member="levels" to="intarray" default="intarray()" from="intarray" name="image_level_list">
+         		<documentation> The list  		</documentation> 
+      	</parameter>
+         	<parameter member="indexes" to="intarray" default="intarray()" from="intarray" name="image_index_list">
+         		<documentation> The list of indexes of the Lut to be used! (size of level_list -1 )  		</documentation>
+      	</parameter>
+       
+</class></magics>
diff --git a/src/params/FlagPlotting.xml b/src/params/FlagPlotting.xml
new file mode 100644
index 0000000..b6d9d9e
--- /dev/null
+++ b/src/params/FlagPlotting.xml
@@ -0,0 +1,75 @@
+<magics>
+<class inherits="WindPlotting" xmltag="flags" name="FlagPlotting" directory="visualisers" prefix="wind/wind_flag" action="pwind" doc_inherits="no">
+  	<documentation> WMO standard wind flags; represented by barbs and solid pennants 	</documentation> 
+  	<parameter from="string" name="wind_flag_calm_indicator" default="on" member="calm" to="CalmIndicator" values="on/off">
+        		<documentation> Plot calm indicator circle, if wind speed is less than 0.5 m/s (ON / OFF) 		</documentation>
+        		<option xml="calm" fortran="on" include="CalmIndicator.h" name="CalmIndicator">		</option>
+        		<option xml="nocalm" fortran="off" include="CalmIndicator.h" name="NoCalmIndicator">		</option>
+			<set name="wind_flag_calm_indicator_size" value="on">		</set>
+			<set name="wind_flag_calm_below" value="on">		</set>
+  	</parameter>
+
+  	<parameter member="calm_indicator_size" to="float" default="0.3" from="float" name="wind_flag_calm_indicator_size">
+         		<documentation> The radius of the circle which indicates calm in centimeter 		</documentation>
+        
+  	</parameter>
+  
+   	<parameter member="calm_below" to="float" default="0.5" from="float" name="wind_flag_calm_below">
+		
+         		<documentation> Winds less than or equal to this value will be drawn as calm. 		</documentation>
+  	</parameter>
+
+  	<parameter member="colour" to="Colour" default="blue" from="string" name="wind_flag_colour">
+			 
+         		<documentation> Colour of wind flag shaft, barbs and pennants  		</documentation>
+        
+  	</parameter>
+
+  	<parameter from="string" name="wind_flag_cross_boundary" visible="false" default="on" member="cross_boundary" to="bool">
+			
+         		<documentation> If set to 'ON', wind flags are truncated if they cross the subpage border (ON / OFF) 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+  	<parameter member="length" to="float" default="1.0" from="float" name="wind_flag_length">
+         		<documentation> Physical length of wind flag shaft 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+  	<parameter member="max_speed" to="float" default="1.0e+21" from="float" name="wind_flag_max_speed">
+         		<documentation> Highest value of wind speed to be plotted 		</documentation>
+         		<migration> New Magics: Parameter wind_flag_max_speed sent to new Magics[Wind].  		</migration>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+  	<parameter member="min_speed" to="float" default="-1.0e+21" from="float" name="wind_flag_min_speed">
+         		<documentation> Lowest value of wind speed to be plotted 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+  	<parameter from="string" name="wind_flag_mode" default="normal" member="wind_flag_mode" to="string" implemented="no">
+      		<release>Basic implementation in 0.6		</release>
+      		<documentation> Controls the line style of the wind flag shaft.(NORMAL / OFF_LEVEL / OFF_TIME) 		</documentation>
+  	</parameter>
+
+ 	<parameter member="style" to="LineStyle" default="solid" from="string" name="wind_flag_style">
+         		<documentation> Controls the line style of the wind flag shaft. 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+  
+   	<parameter from="string" name="wind_flag_origin_marker" default="circle" member="origin" to="OriginMarker" values="circle/dot/off"> 
+			<release>Basic implementation in 0.6		</release>
+			<documentation> Symbol for marking the exact location of the current grid point.		</documentation>
+			<option xml="dotmarker" fortran="dot" include="OriginMarker.h" name="DotOriginMarker">		</option>
+			<option xml="circlemarker" fortran="circle" include="OriginMarker.h" name="CircleOriginMarker">		</option>
+			<option xml="nomarker" fortran="off" include="OriginMarker.h" name="NoOriginMarker">		</option>
+  	</parameter>
+  
+  	<parameter member="origin_marker_size" to="float" default="0.3" from="float" name="wind_flag_origin_marker_size"> 
+  	</parameter>
+
+  	<parameter member="thickness" to="int" default="1" from="int" name="wind_flag_thickness">
+	     		<release>Basic implementation in 0.6		</release>
+         		<documentation> Thickness of wind flag shaft 		</documentation>  	</parameter>
+</class></magics>
diff --git a/src/params/FortranRootSceneNode.xml b/src/params/FortranRootSceneNode.xml
new file mode 100644
index 0000000..ba48e56
--- /dev/null
+++ b/src/params/FortranRootSceneNode.xml
@@ -0,0 +1,51 @@
+<magics>
+<class xmltag="super_page" name="FortranRootSceneNode" directory="common" prefix="super_page" action="pnew" include="RootSceneNode.h">
+  
+  	<parameter member="width" to="float" default="29.7" from="float" name="super_page_x_length">
+         		<documentation> Horizontal length of super page 		</documentation>
+  	</parameter>
+
+  	<parameter member="height" to="float" default="21.0" from="float" name="super_page_y_length">
+           		<release>Magics++0.1		</release>
+         		<documentation> Vertical length of super page 		</documentation>
+  	</parameter>
+
+  	<parameter member="frame" to="bool" default="off" from="string" name="super_page_frame">
+         		<release>Magics++0.5		</release>
+         		<documentation> Plot frame around super page (ON/OFF) 		</documentation>
+  	</parameter>
+
+  	<parameter member="colour" to="Colour" default="blue" from="string" name="super_page_frame_colour">
+           		<release>Magics++0.5		</release>
+         		<documentation> Colour of super page frame 		</documentation>
+  	</parameter>
+
+  	<parameter member="style" to="LineStyle" default="solid" from="string" name="super_page_frame_line_style">
+         		<release>Magics++0.5		</release>
+         		<documentation> Style of super page frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) 		</documentation>
+  	</parameter>
+
+  	<parameter member="thickness" to="int" default="1" from="int" name="super_page_frame_thickness">
+         		<documentation> Thickness of super page frame 		</documentation>
+         		<release>Magics++0.5		</release>
+  	</parameter>
+  
+    	<parameter member="plot_layout" to="string" default="automatic" from="string" name="layout">
+         		<documentation> Type of page layout (POSITIONAL/AUTOMATIC) 		</documentation>
+   	</parameter>
+
+  	<parameter member="plot_start" to="string" default="bottom" from="string" name="plot_start">
+         		<documentation> Position of first page plotted (BOTTOM/TOP) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+  	<parameter member="plot_direction" to="string" default="vertical" from="string" name="plot_direction">
+         		<documentation> Direction of plotting (HORIZONTAL/VERTICAL) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+  
+  	<parameter member="legend" to="bool" default="off" from="string" name="legend">
+         		<documentation>Turn on/off legend		</documentation>
+         		<release>Improved in Magics2.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/FortranSceneNode.xml b/src/params/FortranSceneNode.xml
new file mode 100644
index 0000000..c01be51
--- /dev/null
+++ b/src/params/FortranSceneNode.xml
@@ -0,0 +1,81 @@
+<magics>
+<class xmltag="page" name="FortranSceneNode" directory="common" prefix="page" action="pnew" include="SceneNode.h">
+  	<parameter member="x" to="float" default="0" from="float" name="page_x_position">
+         		<release>Magics++0.1		</release>
+         		<documentation> X-Coordinate of lower left hand corner of page.Default 		</documentation>
+  	</parameter>
+
+  	<parameter member="y" to="float" default="0" from="float" name="page_y_position">
+         		<release>Magics++0.1		</release>
+         		<documentation> Y-Coordinate of lower left hand corner of page.Default 		</documentation>
+  	</parameter>
+
+  	<parameter member="width" to="float" default="29.7" from="float" name="page_x_length">
+          		<release>Magics++0.1		</release>
+         		<documentation> Length of page in horizontal direction 		</documentation>
+  	</parameter>
+
+  	<parameter member="height" to="float" default="21" from="float" name="page_y_length">
+         		<release>Magics++0.1		</release>
+         		<documentation> Length of page in vertical direction 		</documentation>
+  	</parameter>
+
+ 
+  	<parameter member="frame" to="bool" default="off" from="string" name="page_frame">
+         		<release>Magics++2.4		</release>
+         		<documentation> Plot frame around page (ON/OFF) 		</documentation>
+         		<migration> Default as changed from magics6) 		</migration>
+  	</parameter>
+
+  	<parameter member="frame_colour" to="Colour" default="blue" from="string" name="page_frame_colour">
+         		<release>Magics++0.5		</release>
+         		<documentation> Colour of page frame (Full choice of colours) 		</documentation>
+  	</parameter>
+
+  	<parameter member="frame_line_style" to="LineStyle" default="solid" from="string" name="page_frame_line_style">
+         		<release>Magics++0.5		</release>
+         		<documentation> Style of page frame(SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) 		</documentation>
+  	</parameter>
+
+  	<parameter member="frame_thickness" to="int" default="1" from="int" name="page_frame_thickness">
+         		<documentation> Thickness of page frame 		</documentation>
+         		<release>Magics++0.5		</release>
+  	</parameter>
+
+  	<parameter from="string" name="page_id_line" default="on" member="page_id" to="NoPageID" include="PageID.h">
+         		<release>Magics++0.6		</release>
+         		<release>Logo expected in 0.7		</release>
+         		<option fortran="on" include="PageID.h" name="PageID">		</option>
+         		<option fortran="off" include="PageID.h" name="NoPageID">		</option>
+         		<documentation> Plot identification line and ECMWF logo (ON/OFF) 		</documentation>
+  	</parameter>
+  
+ 
+  
+  	<parameter from="float" name="page_x_gap" default="0.0cm" member="page_x_gap" to="float" implemented="no">
+         		<documentation> Gap between pages in X direction 		</documentation>
+         		<release>Magics++0.2		</release>
+         		<release_info>Not fully implemented		</release_info>
+  	</parameter>
+
+  	<parameter from="float" name="page_y_gap" default="0.0cm" member="page_y_gap" to="float" implemented="no">
+         		<documentation> Gap between pages in Y direction 		</documentation>
+         		<release>Magics++0.2		</release>
+          		<release_info>Not fully implemented		</release_info>
+  	</parameter>
+
+    	<parameter member="plot_layout" to="string" default="automatic" from="string" name="layout">
+         		<documentation> Type of page layout (POSITIONAL/AUTOMATIC) 		</documentation>
+   	</parameter>
+
+  	<parameter member="plot_start" to="string" default="bottom" from="string" name="plot_start">
+         		<documentation> Position of first page plotted (BOTTOM/TOP) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+  	<parameter member="plot_direction" to="string" default="vertical" from="string" name="plot_direction">
+         		<documentation> Direction of plotting (HORIZONTAL/VERTICAL) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+  
+</class></magics>
diff --git a/src/params/FortranViewNode.xml b/src/params/FortranViewNode.xml
new file mode 100644
index 0000000..1d377e6
--- /dev/null
+++ b/src/params/FortranViewNode.xml
@@ -0,0 +1,151 @@
+<magics>
+<class xmltag="subpage" name="FortranViewNode" directory="common" prefix="subpage/subpage/subpage" action="pnew" include="ViewNode.h"> 
+    
+
+ 
+
+	<parameter member="left" to="float" default="-1" from="float" name="subpage_x_position">
+         		<documentation> Y-Coordinate of lower left hand corner of subpage in cm. 
+          -1 is the  default: 7.5% of the parent page 		</documentation>
+	</parameter>
+	<parameter member="bottom" to="float" default="-1" from="float" name="subpage_y_position">
+         		<documentation> X-Coordinate of lower left hand corner of subpage in cm. 
+          -1 is the  default: 5% of the parent page		</documentation>
+	</parameter>
+
+	<parameter member="width" to="float" default="-1" from="float" name="subpage_x_length">
+         		<documentation> Length of subpage in horizontal direction in cm.  
+          -1 is the  default: 85% of the parent page 		</documentation>
+	</parameter>
+	<parameter member="height" to="float" default="-1" from="float" name="subpage_y_length">
+         		<documentation> Length of subpage in vertical direction in cm.
+         -1 is the  default:  85% of the parent page 		</documentation>
+	</parameter>
+
+	<parameter member="transformation" to="Transformation" default="cylindrical" from="string" name="subpage_map_projection">
+         		<documentation>Projection to set in the drawing area 		</documentation>
+
+            		<option xml="cylindrical" fortran="cylindrical" include="GeoRectangularProjection.h" name="GeoRectangularProjection">		</option>
+
+               		<option xml="polar_stereographic" fortran="polar_stereographic" include="PolarStereographicProjection.h" name="PolarStereographicProjection">		</option>
+        		<option fortran="polar_north" include="Proj4Projection.h" name="Proj4PolarNorth">		</option>
+ 				<option fortran="geos" include="Proj4Projection.h" name="Proj4Geos">		</option>
+ 				<option fortran="meteosat" include="Proj4Projection.h" name="Proj4Meteosat0">		</option>
+ 				<option fortran="meteosat_57E" include="Proj4Projection.h" name="Proj4Meteosat57">		</option>
+ 				<!--option fortran="meteosat2" include="Proj4Projection.h" name="Proj4Meteosat145">		</option>
+ 				<option fortran="goes_west" include="Proj4Projection.h" name="Proj4Geosw">		</option-->
+ 				<option fortran="goes_east" include="Proj4Projection.h" name="Proj4Geose">		</option>
+ 				<option fortran="lambert" include="Proj4Projection.h" name="Proj4Lambert">		</option>
+ 				<option fortran="EPSG3857" include="Proj4Projection.h" name="Proj4EPSG3857">		</option>
+ 				<option fortran="goode" include="Proj4Projection.h" name="Proj4Goode">		</option>
+ 				<option fortran="collignon" include="Proj4Projection.h" name="Proj4Collignon">		</option>
+ 				<option fortran="mollweide" include="Proj4Projection.h" name="Proj4Mollweide">		</option>
+ 				<option fortran="robinson" include="Proj4Projection.h" name="Proj4Robinson">		</option>
+ 				<option fortran="bonne" include="Proj4Projection.h" name="Proj4Bonne">		</option>
+ 				<option fortran="google" include="Proj4Projection.h" name="Proj4Google">		</option>
+ 				<option fortran="efas" include="Proj4Projection.h" name="Proj4Efas">		</option>
+ 				<option fortran="EPSG4326" include="Proj4Projection.h" name="Proj4EPSG4326">		</option>
+ 				<option fortran="lambert_north_atlantic" include="Proj4Projection.h" name="Proj4LambertNorthAtlantic">		</option>
+
+        		<option xml="mercator" fortran="mercator" include="GeoRectangularProjection.h" name="MercatorProjection">		</option>
+				<option xml="cartesian" fortran="cartesian" include="CartesianTransformation.h" name="CartesianTransformation">		</option>
+        		<option xml="taylor" fortran="taylor" include="TaylorProjection.h" name="TaylorProjection">		</option>
+        		<option xml="tephigram" fortran="tephigram" include="Tephigram.h" name="Tephigram">		</option> 
+        		<option xml="tephiinfo" fortran="tephiinfo" include="Tephigram.h" name="TephiInfo">		</option>
+              
+	</parameter>
+	<parameter from="float" name="subpage_y_position_internal" visible="off" default="-1" member="bottom_internal" to="float">
+         		<documentation> X-Coordinate of lower left hand corner of subpage 		</documentation>
+	</parameter>
+
+	<parameter from="float" name="subpage_x_position_internal" visible="off" default="-1" member="left_internal" to="float">
+         		<documentation> Y-Coordinate of lower left hand corner of subpage 		</documentation>
+	</parameter>
+
+	<parameter from="float" name="subpage_right_position" visible="off" default="-1" member="right" to="float">
+         		<documentation> X-Coordinate of lower right  hand corner of subpage 		</documentation>
+	</parameter>
+
+
+
+	<parameter from="float" name="subpage_y_length_internal" visible="off" default="-1" member="height_internal" to="float">
+         		<documentation> Length of subpage in vertical direction.Default 		</documentation>
+	</parameter>
+	<parameter from="float" name="subpage_x_length_internal" visible="off" default="-1" member="width_internal" to="float">
+         		<documentation> Length of subpage in horizontal direction.Default 		</documentation>
+	</parameter>
+
+	<parameter from="float" name="subpage_top_position" visible="off" default="-1" member="top" to="float">
+         		<release>Magics++2.4		</release>
+         		<documentation> Y-Coordinate of upper left hand corner of subpage 		</documentation>
+	</parameter>
+
+
+	<parameter member="background" to="Colour" default="white" from="string" name="subpage_background_colour">
+         		<documentation> Colour of the subpage background 		</documentation>
+	</parameter>
+
+	<parameter member="frame" to="bool" default="on" from="string" name="subpage_frame">
+         		<documentation> Plot frame around subpage (ON/OFF) 		</documentation>
+         		<set name="subpage_frame_colour" value="on">		</set>
+         		<set name="subpage_frame_line_style" value="on">		</set>
+         		<set name="subpage_frame_thickness" value="on">		</set>
+	</parameter>
+
+	<parameter member="frame_colour" to="Colour" default="black" from="string" name="subpage_frame_colour">
+         		<documentation> Colour of subpage frame (Full choice of colours) 		</documentation>
+	</parameter>
+
+	<parameter member="frame_line_style" to="LineStyle" default="solid" from="string" name="subpage_frame_line_style">
+         		<documentation> Style of subpage frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) 		</documentation>
+	</parameter>
+
+	<parameter member="frame_thickness" to="int" default="2" from="int" name="subpage_frame_thickness">
+         		<documentation> Thickness of subpage frame 		</documentation>
+	</parameter>
+
+	<parameter member="vertical_axis_with" to="float" default="1" from="float" name="subpage_vertical_axis_width">
+         		<documentation> width of the vertical  axis in cm 		</documentation>
+	</parameter>
+	<parameter member="horizontal_axis_height" to="float" default="0.5" from="float" name="subpage_horizontal_axis_height">
+         		<documentation> height of the horizontal  axis in cm		</documentation>
+	</parameter>
+ 	<parameter from="string" name="subpage_map_overlay_control" visible="metview" default="basic" member="overlay" to="string">
+         		<documentation for_docs="no"> Metview Only: overlay method. always: plot the fields as they come; never: never overlay; by_date/by_level: only overlay data with the same valid date/level  		</documentation>
+  	</parameter>
+	<parameter from="string" name="subpage_align_horizontal" default="left" member="horizontal" to="string" values="left/right">
+         		<release>Magics++2.4		</release>     
+         		<documentation>  Used in automatic layout to setup the horizontal alignment of the drawing area in the subpage  		</documentation>
+	</parameter>
+	<parameter from="string" name="subpage_align_vertical" default="bottom" member="vertical" to="string" values="bottom/top">
+         		<release>Magics++2.4		</release>     
+         		<documentation>  Used in automatic layout to setup the vertical alignment of the drawing area in the subpage 		</documentation>
+	</parameter>
+
+
+
+	<parameter from="string" name="subpage_map_json_definition" visible="off" default="" member="json" to="string">
+			<documentation> Metview only : store internal information about zooned area 		</documentation>
+	</parameter>
+
+  
+ 
+
+	<parameter from="string" name="automatic_title" visible="off" default="off" member="title" to="bool">
+         		<documentation> Plot the title (ON/OFF) 		</documentation>
+	</parameter>
+
+	<parameter from="string" name="subpage_map_preview" visible="metview" default="off" member="preview" to="NoPreviewVisitor" include="PreviewVisitor.h">
+         		<documentation for_docs="no"> Mv4: turn on/off the generation of the infomation for the preview box 		</documentation>
+         		<release>Magics++2.8		</release>
+         		<option xml="off" fortran="off" include="PreviewVisitor.h" name="NoPreviewVisitor">		</option>
+         		<option xml="on" fortran="on" include="PreviewVisitor.h" name="PreviewVisitor">		</option>
+	</parameter> 
+
+	<parameter from="string" name="subpage_map_magnifier" visible="metview" default="off" member="magnify" to="NoMagnifierVisitor" include="MagnifierVisitor.h">
+         		<documentation for_docs="no"> Mv4: turn on/off the generation of the infomation for the magnifier tool 		</documentation>
+         		<release>Magics++2.8		</release>
+         		<option xml="off" fortran="off" include="MagnifierVisitor.h" name="NoMagnifierVisitor">		</option>
+         		<option xml="on" fortran="on" include="MagnifierVisitor.h" name="MagnifierVisitor">		</option>
+	</parameter>
+</class></magics>
diff --git a/src/params/GDDriver.xml b/src/params/GDDriver.xml
new file mode 100644
index 0000000..f0b3094
--- /dev/null
+++ b/src/params/GDDriver.xml
@@ -0,0 +1,26 @@
+<magics>
+<class directory="drivers" inherits="BaseDriver" prefix="output" xmltag="gd" name="GDDriver">
+		<documentation for_docs="no">
+		This output driver produces raster output in PNG, GIF, and JPEG format.
+		PNG output can be produced with a transparent background which can be used for overlays.
+
+		JPEG output is included here for backwards compatibility, but is not an ideal format for 
+		scientific plots in raster format. 
+
+		See also the parameters for the Base Driver.
+		</documentation>
+
+		<parameter member="quality" to="int" default="-1" from="int" name="output_jpeg_quality">
+            		<documentation>Defines the quality of Jpeg output. The default of -1 should yield a good general quality/size tradeoff. Should be a value in the range 0-95.		</documentation>
+            		<migration>		</migration>
+        	</parameter>
+
+		<parameter member="delay" to="int" default="100" from="int" name="output_gif_delay">
+            		<documentation>Defines the delay in 1/100 seconds for GIF animations.		</documentation>
+        	</parameter>
+
+		<parameter member="transparent" to="bool" default="off" from="string" name="output_png_transparent">
+            		<documentation>Sets the background to transparent for overlays. Works only with PNG output. (ON/OFF)		</documentation>
+        	</parameter>
+
+</class></magics>
diff --git a/src/params/GenericSQLDecoder.xml b/src/params/GenericSQLDecoder.xml
new file mode 100644
index 0000000..7caff0c
--- /dev/null
+++ b/src/params/GenericSQLDecoder.xml
@@ -0,0 +1,35 @@
+<magics>
+<class directory="decoders" prefix="sql" xmltag="genericsql" name="GenericSQLDecoder">
+		<documentation>
+		Here comes the description of the GenericSQLDcoder
+		</documentation>
+        	<parameter member="database" to="string" default="obs.bufr" from="string" name="sql_database">
+            		<documentation> Generic SQL Database Path 		</documentation>
+        	</parameter>
+          	<parameter member="query" to="string" default="" from="string" name="sql_query">
+            		<documentation> sql Query 		</documentation>
+        	</parameter>
+         	<parameter member="latitude" to="string" default="latitude" from="string" name="sql_latitude">
+            		<documentation> sql latitude column name 		</documentation>
+        	</parameter>
+       	<parameter member="longitude" to="string" default="longitude" from="string" name="sql_longitude">
+            		<documentation> sql longitude column name 		</documentation>
+        	</parameter>
+        	<parameter member="observation" to="string" default="observation" from="string" name="sql_observation">
+         
+            		<documentation> sql observation column name 		</documentation>
+        	</parameter>
+        	<parameter member="level" to="string" default="press" from="string" name="sql_level">
+           
+            		<documentation> sql level column name 		</documentation>
+        	</parameter>
+        	<parameter member="x" to="string" default="x" from="string" name="sql_x">
+         
+            		<documentation> sql  column name used as X input for curve plotting 		</documentation>
+        	</parameter>
+        	<parameter member="y" to="string" default="y" from="string" name="sql_y">
+            		<documentation> sql  column name used as Y input for curve plotting 		</documentation>
+        	</parameter>
+	
+	
+</class></magics>
diff --git a/src/params/GeoPointsDecoder.xml b/src/params/GeoPointsDecoder.xml
new file mode 100644
index 0000000..179788a
--- /dev/null
+++ b/src/params/GeoPointsDecoder.xml
@@ -0,0 +1,7 @@
+<magics>
+<class action="pgeo" directory="decoders" prefix="geo/geo_input" xmltag="geopoints" name="GeoPointsDecoder">
+   	<parameter member="path" to="string" default="" from="string" name="geo_input_file_name">
+         		<release>Magics++1.1		</release>
+         		<documentation> The name of the input file containing the GeoPoints code field(s) 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GeoRectangularProjection.xml b/src/params/GeoRectangularProjection.xml
new file mode 100644
index 0000000..367f976
--- /dev/null
+++ b/src/params/GeoRectangularProjection.xml
@@ -0,0 +1,29 @@
+<magics>
+<class inherits="Transformation" xmltag="cylindrical" name="GeoRectangularProjection" directory="common" prefix="subpage" action="projection">
+		<documentation>
+		These are the attributes of the GeoRectangular projection. 
+		</documentation>
+  	<parameter member="min_latitude" to="float" default="-90.0" from="float" name="subpage_lower_left_latitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Latitude of lower left corner of map. 		</documentation>
+  	</parameter>
+
+  	<parameter member="min_longitude" to="float" default="-180.0" from="float" name="subpage_lower_left_longitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Longitude of lower left corner of map 		</documentation>
+  	</parameter>
+
+  	<parameter member="max_latitude" to="float" default="90.0" from="float" name="subpage_upper_right_latitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Latitude of upper right corner of map 		</documentation>
+  	</parameter>
+
+  	<parameter member="max_longitude" to="float" default="180.0" from="float" name="subpage_upper_right_longitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Longitude of upper right corner of map 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="subpage_minimal_area" visible="off" default="0.1" member="min_area" to="float">
+         		<release>Magics++2.11		</release>
+         		<documentation> Dimension in degrees of the minimal area to display  		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Graph.xml b/src/params/Graph.xml
new file mode 100644
index 0000000..3eed461
--- /dev/null
+++ b/src/params/Graph.xml
@@ -0,0 +1,3 @@
+<magics>
+<class directory="visualisers" name="Graph">
+</class></magics>
diff --git a/src/params/GraphArrow.xml b/src/params/GraphArrow.xml
new file mode 100644
index 0000000..ce3c73c
--- /dev/null
+++ b/src/params/GraphArrow.xml
@@ -0,0 +1,9 @@
+<magics>
+<class directory="visualisers" inherits="Graph" xmltag="arrow" include="Bar.h" name="GraphArrow">
+   	<parameter member="colour" to="Colour" default="black" from="string" name="graph_arrow_colour">
+         		<documentation> The colour of the arrows		</documentation>
+  	</parameter>
+  	<parameter member="unit_velocity" to="float" default="25.0" from="float" name="graph_arrow_unit_velocity">
+        		<documentation>Wind speed in m/s represented by a unit vector (1.0 cm).		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GraphFlag.xml b/src/params/GraphFlag.xml
new file mode 100644
index 0000000..9573278
--- /dev/null
+++ b/src/params/GraphFlag.xml
@@ -0,0 +1,9 @@
+<magics>
+<class directory="visualisers" inherits="Graph" xmltag="flag" include="Bar.h" name="GraphFlag">
+  	<parameter member="colour" to="Colour" default="black" from="string" name="graph_flag_colour">
+         		<documentation> The colour of the Flags!		</documentation>
+  	</parameter>
+  	<parameter member="length" to="float" default="0.75" from="float" name="graph_flag_length">
+         		<documentation> Physical length of wind flag shaft 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GraphPlotting.xml b/src/params/GraphPlotting.xml
new file mode 100644
index 0000000..91770cb
--- /dev/null
+++ b/src/params/GraphPlotting.xml
@@ -0,0 +1,25 @@
+<magics>
+<class directory="visualisers" xmltag="graph" name="GraphPlotting">
+  	<documentation>
+    This action routine (and C++object) controls the plotting of curves, bar charts and area charts.
+  	</documentation>
+ 	<parameter xml="legend" from="string" name="legend" default="off" member="legend" to="bool">
+         		<documentation>  Turn on/off the legend for this graph (this parameter is new to Magics++) 		</documentation>
+         		<release>1.3		</release>
+         		<set name="legend_user_text" value="off">		</set>
+    	</parameter>
+
+  	<parameter xml="legend_text" from="string" name="legend_user_text" default="" member="legend_text" to="string">
+         		<documentation> User-defined text for the legend of this graph 		</documentation>
+  	</parameter>
+
+  	<parameter xml="type" from="string" name="graph_type" default="curve" member="type" to="Graph">
+         		<documentation> Defines the type of curve required  		</documentation>
+         		<migration> New Magics: Parameter graph_type sent to new Magics[Graph].  		</migration>
+         		<option xml="curve" fortran="curve" include="Curve.h" name="Curve">		</option>      
+         		<option xml="bar" fortran="bar" include="Bar.h" name="Bar">		</option>
+         		<option xml="flag" fortran="flag" include="Bar.h" name="GraphFlag">		</option>
+         		<option xml="arrow" fortran="arrow" include="Bar.h" name="GraphArrow">		</option>
+         		<option xml="area" fortran="area" include="Curve.h" name="CurveArea">		</option>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GraphShade.xml b/src/params/GraphShade.xml
new file mode 100644
index 0000000..3a79438
--- /dev/null
+++ b/src/params/GraphShade.xml
@@ -0,0 +1,10 @@
+<magics>
+<class directory="visualisers" name="GraphShade">
+ 	<parameter member="style" to="GraphShadeStyle" default="area_fill" from="string" name="graph_shade_style">
+         
+         		<option xml="solid" fortran="area_fill" include="GraphShadeStyle.h" name="GraphShadeStyle">		</option>
+         		<option xml="hatch" fortran="hatch" include="GraphShadeStyle.h" name="HatchGraphShadeStyle">		</option>
+         		<option xml="dot" fortran="dot" include="GraphShadeStyle.h" name="DotGraphShadeStyle">		</option>
+         		<documentation>  Style of shading 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GraphShadeStyle.xml b/src/params/GraphShadeStyle.xml
new file mode 100644
index 0000000..702dc43
--- /dev/null
+++ b/src/params/GraphShadeStyle.xml
@@ -0,0 +1,6 @@
+<magics>
+<class directory="visualisers" name="GraphShadeStyle">
+  	<parameter xml="colour" from="string" name="graph_shade_colour" default="blue" member="colour" to="Colour">
+         		<documentation> The colour of the shaded part of bars 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GribAddressByteMode.xml b/src/params/GribAddressByteMode.xml
new file mode 100644
index 0000000..502ed38
--- /dev/null
+++ b/src/params/GribAddressByteMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="GribAddressMode" directory="decoders" include="GribAddressMode.h" name="GribAddressByteMode"/></magics>
diff --git a/src/params/GribAddressMode.xml b/src/params/GribAddressMode.xml
new file mode 100644
index 0000000..5ad6211
--- /dev/null
+++ b/src/params/GribAddressMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="decoders" include="GribAddressMode.h" name="GribAddressMode"/></magics>
diff --git a/src/params/GribAddressRecordMode.xml b/src/params/GribAddressRecordMode.xml
new file mode 100644
index 0000000..47eae4b
--- /dev/null
+++ b/src/params/GribAddressRecordMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="GribAddressMode" directory="decoders" include="GribAddressMode.h" name="GribAddressRecordMode"/></magics>
diff --git a/src/params/GribDecoder.xml b/src/params/GribDecoder.xml
new file mode 100644
index 0000000..ed0ac06
--- /dev/null
+++ b/src/params/GribDecoder.xml
@@ -0,0 +1,102 @@
+<magics>
+<class action="pgrib" directory="decoders" prefix="grib/grib" xmltag="grib" name="GribDecoder">
+		<documentation>
+		Responsible for reading and interpolating GRIB data.
+		</documentation>
+
+   	<parameter member="file_name" to="string" default="" from="string" name="grib_input_file_name">
+         		<release>Magics++0.1		</release>
+         		<documentation> The name of the input file containing the GRIB code field(s) 		</documentation>
+  	</parameter>
+
+  	<parameter member="id" to="string" default="" from="string" name="grib_id">
+         		<release>Magics++2.6		</release>
+         		<documentation>Id used to identify a grib file in the title production		</documentation>
+  	</parameter>
+
+ 
+  	<parameter member="scaling" to="bool" default="on" from="string" name="grib_automatic_scaling">
+         		<release>Magics++0.3		</release>
+         		<documentation> Scaling of the decoded field 		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="grib_automatic_derived_scaling" default="off" member="derived_scaling" to="bool" for_docs="no">
+         		<release>Magics++2.13.5		</release>
+         		<documentation> Scaling of the decoded derived field. A field is considered derived if the GRIB_API key generatingProcessIdentifier is 254. 		</documentation>
+  	</parameter>
+
+  	<parameter member="scaling_factor" to="float" default="1" from="float" name="grib_scaling_factor">
+         		<release>Magics++2.10		</release>
+         		<documentation> Apply a scaling factor to the field. 		</documentation>
+  	</parameter>
+  	<parameter member="scaling_offset" to="float" default="0" from="float" name="grib_scaling_offset">
+         		<release>Magics++2.10		</release>
+         		<documentation> Apply a scaling offset to the field. 		</documentation>
+  	</parameter>
+
+ 
+  	<parameter from="string" name="grib_text_experiment" visible="false" default="off" member="expver" to="bool">
+         		<release>Magics++0.3		</release>
+         		<documentation> Include the name or number of the experiment, used to generate the GRIB code field, in the automatic text  (ON/OFF)  		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="grib_text_units" visible="false" default="off" member="units" to="bool">
+         		<release>Magics++0.3		</release>
+         		<documentation> Include the units of the input field in the automatic text  		</documentation>
+  	</parameter>
+
+  
+
+  
+
+ 
+
+  	<parameter from="string" name="grib_file_address_mode" default="record" metview="on" member="address_mode" to="GribAddressMode">
+	     		<option xml="record" fortran="record" include="GribAddressMode.h" name="GribAddressRecordMode">		</option>
+	     		<option xml="byte_offset" fortran="byte_offset" include="GribAddressMode.h" name="GribAddressByteMode">		</option>
+         		<documentation> Normally GRIB fields are stored as records on a file. If the BYTE offset method is being used, the parameter GRIB_FILE_ADDRESS_MODE should be set to 'BYTE_OFFSET'.(RECORD_NUMBER/BYTE_OFFSET) 		</documentation>
+  	</parameter>
+
+  
+
+  	<parameter member="wind_mode" to="WindMode" default="uv" from="string" name="grib_wind_mode">
+         		<documentation> The incoming wind field may contain data other than wind components, e.g. wave height and direction.
+	                 grib_wind_mode should be set to indicate how to interpret the incoming wind field, 
+	                 as u/v components, or speed/direction (uv/vd).
+         		</documentation>
+         		<option xml="uvmode" fortran="uv" include="WindMode.h" name="UVWindMode">		</option>
+         		<option xml="vdmode" fortran="sd" include="WindMode.h" name="SDWindMode">		</option>
+  	</parameter>
+
+  
+
+  	<parameter member="grib_field_position" to="int" default="1" from="int" name="grib_field_position">
+         		<documentation> The position in the input file of a field other than a wind component 		</documentation>
+  	</parameter>
+
+  
+  
+
+ 
+
+  	<parameter member="position_1" to="int" default="1" from="int" name="grib_wind_position_1">
+         		<documentation> The position in the input file of a wind component field 		</documentation>
+  	</parameter>
+
+  	<parameter member="position_2" to="int" default="2" from="int" name="grib_wind_position_2">
+         		<documentation> The position in the input file of a wind component field 		</documentation>
+  	</parameter>
+  
+
+  	<parameter member="colour_position" to="int" default="3" from="int" name="grib_wind_position_colour">
+         		<documentation> The position in the input file of a wind component field used to colour the flag		</documentation>
+  	</parameter>
+  
+  
+
+  	<parameter from="float" name="grib_missing_value_indicator" visible="false" default="-1.5e+21" member="missing_value" to="float">
+         		<documentation> When MAGICS is decoding GRIB code, this is the value to be assigned to field values where data is missing, as indicated by the bit map in the GRIB file. 		</documentation>
+  	</parameter>
+
+  
+</class></magics>
diff --git a/src/params/GribLoop.xml b/src/params/GribLoop.xml
new file mode 100644
index 0000000..d367a8a
--- /dev/null
+++ b/src/params/GribLoop.xml
@@ -0,0 +1,61 @@
+<magics>
+<class xmltag="gribloop" name="GribLoop" directory="decoders" prefix="grib" action="pgrib" include="GribDecoder.h">
+		<documentation>
+		The purpose of the GRIB loop is to easily create an animation. This feature
+        is only available in MagML.
+		</documentation> 
+		<parameter member="address_mode" to="GribAddressMode" default="record" from="string" name="grib_file_address_mode">
+	     		<option xml="record" fortran="record" include="GribAddressMode.h" name="GribAddressRecordMode">		</option>
+	     		<option xml="byte_offset" fortran="byte_offset" include="GribAddressMode.h" name="GribAddressByteMode">		</option>
+         		<documentation> Normally GRIB fields are stored as records on a file. If the BYTE offset method is being used, the parameter GRIB_FILE_ADDRESS_MODE should be set to 'BYTE_OFFSET'.(RECORD_NUMBER/BYTE_OFFSET) 		</documentation>
+  	</parameter>
+		<parameter member="dimension" to="intarray" default="intarray()" from="intarray" name="grib_dimension">
+         		<documentation> Metview:dimension of the input : 1 for field, 2 for wind 		</documentation>
+  	</parameter>
+  
+  	<parameter member="dim_1" to="intarray" default="intarray()" from="intarray" name="grib_position_1">
+         		<documentation> Metview:position of the fields for x component in the fieldset 		</documentation>
+  	</parameter>
+  	<parameter member="dim_2" to="intarray" default="intarray()" from="intarray" name="grib_position_2">
+         		<documentation>  Metview:position of the fields for y component in the fieldset 		</documentation>
+  	</parameter>
+  	<parameter member="dim_colour" to="intarray" default="intarray()" from="intarray" name="grib_position_colour">
+         		<documentation>  Metview:position of the fields for colour component in the fieldset 		</documentation>
+  	</parameter>
+  	<parameter member="dim" to="intarray" default="intarray()" from="intarray" name="grib_position">
+         		<documentation> Metview:position of the fields to plot in the fieldset 		</documentation>
+  	</parameter>
+		<parameter member="path" to="string" default="" from="string" name="grib_loop_path">
+         		<documentation> Path of the grib to animate 		</documentation>
+    	</parameter>
+    	<parameter member="step" to="GribLoopStep" default="loopondate" from="string" name="grib_loop_step">
+	      		<option xml="loopondate" fortran="loopondate" include="GribLoopStep.h" name="DateGribLoopStep">		</option>
+	      		<option xml="looponparam" fortran="looponparam" include="GribLoopStep.h" name="ParamGribLoopStep">		</option>
+         		<documentation> Method to create the steps names for each plot of the animation		</documentation>
+    	</parameter>
+    	<parameter member="scaling" to="bool" default="on" from="string" name="grib_automatic_scaling">
+         		<release>Magics++0.3		</release>
+         		<documentation> Scaling of the decoded field (ON/OFF) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="grib_automatic_derived_scaling" default="off" member="derived_scaling" to="bool" for_docs="no">
+         		<release>Magics++2.13.5		</release>
+         		<documentation> Scaling of the decoded derived field (ON/OFF). A field is considered derived if the GRIB_API key generatingProcessIdentifier is 254. 		</documentation>
+  	</parameter>
+  	<parameter member="scaling_factor" to="float" default="1" from="float" name="grib_scaling_factor">
+         		<release>Magics++2.10		</release>
+         		<documentation> Apply a scaling factor to the field. 		</documentation>
+  	</parameter>
+  	<parameter member="scaling_offset" to="float" default="0" from="float" name="grib_scaling_offset">
+         		<release>Magics++2.10		</release>
+         		<documentation> Apply a scaling offset to the field. 		</documentation>
+  	</parameter> 
+  	<parameter member="wind_mode" to="WindMode" default="uv" from="string" name="grib_wind_mode">
+         		<documentation> The incoming wind field may contain data other than wind components, e.g. wave height and direction.
+	                 grib_wind_mode should be set to indicate how to interpret the incoming wind field, 
+	                 as u/v components, or speed/direction (uv/vd).
+         		</documentation>
+         		<option xml="uvmode" fortran="uv" include="WindMode.h" name="UVWindMode">		</option>
+         
+         		<option xml="sdmode" fortran="sd" include="WindMode.h" name="SDWindMode">		</option>
+  	</parameter>
+</class></magics>
diff --git a/src/params/GribLoopStep.xml b/src/params/GribLoopStep.xml
new file mode 100644
index 0000000..b4d0841
--- /dev/null
+++ b/src/params/GribLoopStep.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pgrib" directory="decoders" prefix="grib/grib_loop_step" xmltag="loopondate" name="GribLoopStep"/></magics>
diff --git a/src/params/GridPlotting.xml b/src/params/GridPlotting.xml
new file mode 100644
index 0000000..3bfb1c0
--- /dev/null
+++ b/src/params/GridPlotting.xml
@@ -0,0 +1,27 @@
+<magics>
+<class inherits="NoGridPlotting" xmltag="grid" name="GridPlotting" directory="visualisers" prefix="map/map_grid" action="pcoast" doc_inherits="no">
+		<documentation>
+		This object will control the settings of the Map Grids.
+		</documentation>
+        	<parameter member="style" to="LineStyle" default="solid" from="string" name="map_grid_line_style">
+            		<documentation>
+            Line style of map grid lines
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+      
+        	<parameter member="thickness" to="int" default="1" from="int" name="map_grid_thickness">
+            		<documentation>
+            Thickness of map grid lines
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+        	<parameter member="colour" to="Colour" default="BLACK" from="string" name="map_grid_colour">
+            		<documentation>
+            Colour of map grid lines
+           		</documentation>
+           		<release>Magics++0.1		</release>
+           		<migration> Default changed fronm YELLOW to BLACK 		</migration>
+       	</parameter>
+      
+</class></magics>
diff --git a/src/params/GridShading.xml b/src/params/GridShading.xml
new file mode 100644
index 0000000..e8c8826
--- /dev/null
+++ b/src/params/GridShading.xml
@@ -0,0 +1,8 @@
+<magics>
+<class inherits="PolyShadingTechnique" name="GridShading" directory="visualisers" action="pcont" include="PolyShadingTechnique.h" doc_inherits="no">
+
+  	<parameter from="string" name="contour_grid_shading_position" default="middle" member="position" to="string" values="middle/bottom_left">
+         		<documentation> Middle : the point is in the midlle of the cell, bottom_left : the point is in the bottom left corner 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+  </class></magics>
diff --git a/src/params/HatchGraphShadeStyle.xml b/src/params/HatchGraphShadeStyle.xml
new file mode 100644
index 0000000..26b0e41
--- /dev/null
+++ b/src/params/HatchGraphShadeStyle.xml
@@ -0,0 +1,6 @@
+<magics>
+<class directory="visualisers" inherits="GraphShadeStyle" include="GraphShadeStyle.h" name="HatchGraphShadeStyle">
+  	<parameter xml="hatch_index" from="int" name="graph_shade_hatch_index" default="0" member="index" to="int">
+         		<documentation>Hatch index number		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/HatchPolyShadingMethod.xml b/src/params/HatchPolyShadingMethod.xml
new file mode 100644
index 0000000..d0758f6
--- /dev/null
+++ b/src/params/HatchPolyShadingMethod.xml
@@ -0,0 +1,18 @@
+<magics>
+<class inherits="PolyShadingMethod" xmltag="hatch" name="HatchPolyShadingMethod" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade_hatch" action="pcont" doc_inherits="no"> 
+
+  	<parameter member="index" to="int" default="0" from="int" name="contour_shade_hatch_index">
+         		<documentation>The hatching pattern(s) to use. 0 Provides an automatic sequence of patterns, other values set a constant pattern across all contour bands.		</documentation>
+         		<release>0.8		</release>
+  	</parameter>
+
+  	<parameter member="thickness" to="int" default="1" from="int" name="contour_shade_hatch_thickness">
+         		<documentation> Thickness of hatch lines 		</documentation>
+         		<release>0.5		</release>
+  	</parameter>
+
+  	<parameter member="density" to="float" default="18.0" from="float" name="contour_shade_hatch_density">
+         		<documentation> Number of hatch lines per cm. 		</documentation>
+         		<release>0.5		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/HeightTechnique.xml b/src/params/HeightTechnique.xml
new file mode 100644
index 0000000..6d4763e
--- /dev/null
+++ b/src/params/HeightTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" name="HeightTechnique"/></magics>
diff --git a/src/params/HiLo.xml b/src/params/HiLo.xml
new file mode 100644
index 0000000..f106b56
--- /dev/null
+++ b/src/params/HiLo.xml
@@ -0,0 +1,82 @@
+<magics>
+<class inherits="HiLoBase" xmltag="hilo" name="HiLo" directory="visualisers" prefix="contour/contour_hilo" action="pcont">
+  	<documentation>
+  Maxima/minima may be plotted as text and/or as numerical values, 
+  default being symbols (H and L ). 
+  The user may, by calling the parameter setting routines, 
+  plot maxima/minima values in various colours, heights, qualities etc. 
+  Users have facilities for plotting only one of these values, 
+  i.e. local maxima or local minima.
+  	</documentation>
+
+	<parameter member="type" to="HiLoTechnique" default="text" from="string" name="contour_hilo_type">
+         		<documentation> Type of high/low (TEXT/NUMBER/BOTH) 		</documentation>
+         		<migration> New Magics: Parameter contour_hilo_type sent to new Magics[HiLo].  		</migration>
+         		<release>0.2		</release>
+         		<option xml="text" fortran="text" include="HiLoText.h" name="HiLoText">		</option>
+         		<option xml="number" fortran="number" include="HiLoNumber.h" name="HiLoNumber">		</option>
+         		<option xml="both" fortran="both" include="HiLoBoth.h" name="HiLoBoth">		</option>
+	</parameter>
+
+	<parameter from="int" name="contour_hilo_window_size" default="3" member="window_size" to="int" new_parameter="on">
+         		<documentation> Size of the window used to calculate the Hi/Lo 		</documentation>
+         		<migration> New Magics: Parameter contour_hilo_window_size sent to new Magics[HiLo].  		</migration>
+         		<release>0.1		</release>
+         		<release_info>new Parameter : we envisage  to have different methods to calculate Hi/Lo in future releases		</release_info>
+	</parameter>
+
+	<parameter from="float" name="contour_hilo_reduction_radius" default="0.0" member="reduction_radius" to="float" implemented="no">
+         		<documentation> Search radius (in grid points) for reducing the number of minima 		</documentation>
+         		<migration> New Magics: Parameter contour_hilo_reduction_radius sent to new Magics[HiLo].  		</migration>
+         		<release_info>Parameter defined but not implemented : expected in 0.7		</release_info>
+	</parameter>
+  
+	<parameter member="suppress_radius" to="float" default="15.0" from="float" name="contour_hilo_suppress_radius">
+         		<documentation> Radius of HiLo search in grid points (default value is for global cylindrical map) 		</documentation>
+         		<migration> New Magics: Parameter contour_hilo_suppress_radius sent to new Magics[HiLo].  		</migration>
+         		<release_info>Parameter defined but not implemented: expected in 0.7		</release_info>
+	</parameter>
+
+	<parameter member="hilo_max_value" to="float" default="1.0e+21" from="float" name="contour_hilo_max_value">
+         		<documentation> Local HiLo above specified value are not drawn 		</documentation>
+         		<migration> New Magics: Parameter contour_hilo_max_value sent to new Magics[HiLo].  		</migration>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="hilo_min_value" to="float" default="-1.0e+21" from="float" name="contour_hilo_min_value">
+         		<documentation> Local HiLo below specified value are not drawn 		</documentation>
+         		<migration> New Magics: Parameter contour_hilo_min_value sent to new Magics[HiLo].  		</migration>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="hi_max_value" to="float" default="1.0e+21" from="float" name="contour_hi_max_value">
+         		<documentation> Local HI above specified value are not drawn 		</documentation>
+         		<migration> New Magics: Parameter contour_hi_max_value sent to new Magics[HiLo].  		</migration>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="hi_min_value" to="float" default="-1.0e+21" from="float" name="contour_hi_min_value">
+         		<documentation> Local HI below specified value are not drawn 		</documentation>
+         		<migration> New Magics: Parameter contour_hi_min_value sent to new Magics[HiLo].  		</migration>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="lo_max_value" to="float" default="1.0e+21" from="float" name="contour_lo_max_value">
+         		<documentation> Local Lo above specified value are not drawn 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="lo_min_value" to="float" default="-1.0e+21" from="float" name="contour_lo_min_value">
+         		<documentation> Local Lo below specified value are not drawn 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="marker" to="HiLoMarkerBase" default="off" from="string" name="contour_hilo_marker">
+    		<documentation> Plot hilo marker (ON/OFF) 		</documentation>
+    		<option xml="marker" fortran="on" include="HiLoMarker.h" name="HiLoMarker">		</option>
+    		<option xml="nomarker" fortran="off" include="HiLoMarker.h" name="NoHiLoMarker">		</option>
+    		<release>0.2		</release>
+	</parameter>
+
+
+</class></magics>
diff --git a/src/params/HiLoBase.xml b/src/params/HiLoBase.xml
new file mode 100644
index 0000000..385210b
--- /dev/null
+++ b/src/params/HiLoBase.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="HiLoBase.h" name="HiLoBase"/></magics>
diff --git a/src/params/HiLoBoth.xml b/src/params/HiLoBoth.xml
new file mode 100644
index 0000000..e775ed9
--- /dev/null
+++ b/src/params/HiLoBoth.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pcont" directory="visualisers" inherits="HiLoTechnique" xmltag="both" name="HiLoBoth"/></magics>
diff --git a/src/params/HiLoMarker.xml b/src/params/HiLoMarker.xml
new file mode 100644
index 0000000..c368ca5
--- /dev/null
+++ b/src/params/HiLoMarker.xml
@@ -0,0 +1,22 @@
+<magics>
+<class action="pcont" directory="visualisers" used_by="HiLo" name="HiLoMarker" inherits="HiLoMarkerBase"> 
+  	<documentation>
+  The position of a maxima/minima value may be marked by plotting a symbol on the precise location. 
+  Users may define their own symbol by setting the parameter CONTOUR_HILO_MARKER_INDEX
+  	</documentation>
+  	<parameter xml="height" from="float" name="contour_hilo_marker_height" default="0.1" member="height" to="float">
+         		<documentation> Height of HILO marker symbol 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+  	<parameter xml="index" from="int" name="contour_hilo_marker_index" default="3" member="index" to="int">
+         		<documentation> Table number of marker symbol. See chapter on Plotting Attributes 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+	<parameter xml="colour" from="string" name="contour_hilo_marker_colour" default="red" member="colour" to="Colour">
+         		<documentation> Colour of grid point markers(Full choice of colours) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/HiLoMarkerBase.xml b/src/params/HiLoMarkerBase.xml
new file mode 100644
index 0000000..e212e10
--- /dev/null
+++ b/src/params/HiLoMarkerBase.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="HiLoMarkerBase.h" name="HiLoMarkerBase"/></magics>
diff --git a/src/params/HiLoNumber.xml b/src/params/HiLoNumber.xml
new file mode 100644
index 0000000..c9596c9
--- /dev/null
+++ b/src/params/HiLoNumber.xml
@@ -0,0 +1,12 @@
+<magics>
+<class action="pcont" directory="visualisers" inherits="HiLoTechnique" name="HiLoNumber">
+  	<documentation>
+This object is reponsible for plotting the HI/Lo as text.
+  	</documentation>
+  	<parameter xml="format" from="string" name="contour_hilo_format" default="(automatic)" member="format" to="string">
+         		<documentation> Format of HILO numbers (MAGICS Format/(AUTOMATIC)) 		</documentation>
+         		<release>Magics++0.1		</release>
+         		<release_info>Parameter defined but not implemented : expected in 0.7		</release_info>
+  	</parameter> 
+ 
+</class></magics>
diff --git a/src/params/HiLoTechnique.xml b/src/params/HiLoTechnique.xml
new file mode 100644
index 0000000..3d12cae
--- /dev/null
+++ b/src/params/HiLoTechnique.xml
@@ -0,0 +1,24 @@
+<magics>
+<class action="pcont" directory="visualisers" prefix="contour/contour_hilo" xmltag="hilo" name="HiLoTechnique">
+  	<documentation> common attributes to the HiLo technique plotting	</documentation> 
+
+	<parameter xml="height" from="float" name="contour_hilo_height" default="0.4" member="contour_hilo_height" to="float">
+         		<documentation> Height of local maxima/minima text or numbers 		</documentation>
+         		<release>0.1		</release>
+	</parameter>
+
+	<parameter xml="quality" from="string" name="contour_hilo_quality" default="low" member="contour_hilo_quality" to="string">
+         		<documentation> (LOW/MEDIUM/HIGH) 		</documentation>
+         		<release>0.1		</release>
+	</parameter>
+
+	<parameter xml="hi_colour" from="string" name="contour_hi_colour" default="blue" member="hi_colour" to="Colour">
+         		<documentation> Colour of local maxima text or number 		</documentation>
+         		<release>0.1		</release>
+	</parameter>
+
+	<parameter xml="lo_colour" from="string" name="contour_lo_colour" default="blue" member="lo_colour" to="Colour">
+         		<documentation> Colour of local minima text or number 		</documentation>
+         		<release>0.1		</release>
+	</parameter>
+</class></magics>
diff --git a/src/params/HiLoText.xml b/src/params/HiLoText.xml
new file mode 100644
index 0000000..cb13fc4
--- /dev/null
+++ b/src/params/HiLoText.xml
@@ -0,0 +1,19 @@
+<magics>
+<class inherits="HiLoTechnique" xmltag="text" name="HiLoText" directory="visualisers" prefix="contour" action="pcont">
+   	<documentation>
+   This object is reponsible for plotting the HI/Lo as text.
+   	</documentation>
+   	<parameter xml="hi_text" from="string" name="contour_hi_text" default="H" member="hi_text" to="string">
+         		<documentation> Text to represent local maxima 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter xml="lo_text" from="string" name="contour_lo_text" default="L" member="lo_text" to="string">
+         		<documentation> Text to represent local minima 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+   	<parameter member="blanking" to="bool" default="off" from="string" name="contour_hilo_blanking">
+         		<documentation> Blank around highs and lows (ON/OFF)		</documentation>         
+         		<release>Magics++2.6		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/HighHiLo.xml b/src/params/HighHiLo.xml
new file mode 100644
index 0000000..69f5fc6
--- /dev/null
+++ b/src/params/HighHiLo.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="HiLoBase" xmltag="high" name="HighHiLo" directory="visualisers" action="pcont" include="HiLo.h"/></magics>
diff --git a/src/params/Histogram.xml b/src/params/Histogram.xml
new file mode 100644
index 0000000..3a9ebeb
--- /dev/null
+++ b/src/params/Histogram.xml
@@ -0,0 +1,62 @@
+<magics>
+<class directory="visualisers" xmltag="histogram" name="Histogram">
+		<documentation>
+		Here comes the description of the Histogram action 
+		</documentation>
+
+    	<parameter member="levels" to="LevelSelection" default="count" from="string" name="histogram_selection_type">
+         		<documentation>  (COUNT/ INTERVAL/ LEVEL_LIST) 		</documentation>
+         		<release>Magics++2.6		</release>
+         		<option xml="count" fortran="count" docdive="no" include="CountSelectionType.h" name="CountSelectionType">		</option>
+         		<option xml="interval" fortran="interval" docdive="no" include="IntervalSelectionType.h" name="IntervalSelectionType">		</option>
+         		<option xml="list" fortran="list" docdive="no" include="LevelListSelectionType.h" name="LevelListSelectionType">		</option>
+     	</parameter>     
+
+  	<parameter member="min" to="float" default="-1.e21" from="float" name="histogram_min_value">
+         		<documentation> Min value 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>
+  
+  	<parameter member="max" to="float" default="1.e21" from="float" name="histogram_max_value">
+         		<documentation> max value to plot 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>
+  
+   	<parameter member="count" to="int" default="10" from="int" name="histogram_level_count">
+         		<documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
+         this means that the number of levels could be slightly different from the requested number of levels		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>
+  
+  	<parameter member="tolerance" to="int" default="2" from="int" name="histogram_level_tolerance">
+         		<documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>
+  
+  	<parameter member="reference" to="float" default="0.0" from="float" name="histogram_reference_level">
+         		<documentation> Level from which the level interval is calculated 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>
+
+
+  	<parameter member="interval" to="float" default="8.0" from="float" name="histogram_interval">
+         		<documentation> Interval in data units between different bands of shading 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>
+
+ 	<parameter member="list" to="floatarray" default="floatarray()" from="floatarray" name="histogram_level_list">
+         		<documentation> List of shading band levels to be plotted 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>  
+  
+  	<parameter member="colour" to="Colour" default="evergreen" from="string" name="histogram_bar_colour">
+         		<documentation> Colour of the bars. 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>  
+  
+  	<parameter member="width" to="float" default="1" from="float" name="histogram_bar_width">
+         		<documentation> Width of the bar in user unit 		</documentation>
+         		<release>Magics++2.6		</release>
+  	</parameter>  
+           
+</class></magics>
diff --git a/src/params/HistogramLegendMethod.xml b/src/params/HistogramLegendMethod.xml
new file mode 100644
index 0000000..fb204f6
--- /dev/null
+++ b/src/params/HistogramLegendMethod.xml
@@ -0,0 +1,40 @@
+<magics>
+<class inherits="LegendMethod" name="HistogramLegendMethod" used_by="Legend" directory="visualisers" action="legend" include="LegendMethod.h" doc_inherits="no">
+		<parameter member="label_frequency" to="int" default="1" from="int" name="legend_label_frequency">
+         			<documentation> Frequency of the labels. 		</documentation>
+   	</parameter>
+   	<parameter member="histo_border" to="bool" default="on" from="string" name="legend_histogram_border">
+         			<documentation> add a border to the the bars 		</documentation>
+         			<set name="legend_histogram_border_colour" value="on">		</set>
+   	</parameter>  
+  	<parameter member="histo_border_colour" to="Colour" default="black" from="string" name="legend_histogram_border_colour">
+         			<documentation> border colour of the bars		</documentation>
+   	</parameter>   
+   	<parameter member="histo_mean" to="bool" default="off" from="string" name="legend_histogram_mean_value">
+         			<documentation> show the mean value 		</documentation>
+         			<set name="legend_histogram_mean_value_marker" value="on">		</set>
+         			<set name="legend_histogram_mean_value_marker_colour" value="on">		</set>
+         			<set name="legend_histogram_mean_value_marker_size" value="on">		</set>
+   	</parameter>  
+    	<parameter member="histo_mean_marker" to="int" default="15" from="int" name="legend_histogram_mean_value_marker">
+         			<documentation> show the mean value 		</documentation>
+   	</parameter> 	
+    	<parameter member="histo_mean_colour" to="Colour" default="black" from="string" name="legend_histogram_mean_value_marker_colour">
+         			<documentation> show the mean value 		</documentation>
+   	</parameter>  
+   	<parameter member="histo_mean_size" to="float" default="0.4" from="float" name="legend_histogram_mean_value_marker_size">
+         			<documentation> show the mean value 		</documentation>
+   	</parameter> 
+   	<parameter member="histo_max" to="bool" default="on" from="string" name="legend_histogram_max_value">
+         			<documentation> show the max value 		</documentation>
+   	</parameter>   
+   	<parameter member="histo_grid_colour" to="Colour" default="black" from="string" name="legend_histogram_grid_colour">
+         			<documentation> Colour of the grids 		</documentation>
+   	</parameter>   
+   	<parameter member="histo_grid_style" to="LineStyle" default="solid" from="string" name="legend_histogram_grid_line_style">
+         			<documentation>  Line Style of the grids 		</documentation>
+   	</parameter>  
+   	<parameter member="histo_grid_thickness" to="int" default="1" from="int" name="legend_histogram_grid_thickness">
+         			<documentation>  thickness of the grids 		</documentation>
+   	</parameter>  
+</class></magics>
diff --git a/src/params/HyperAxisMethod.xml b/src/params/HyperAxisMethod.xml
new file mode 100644
index 0000000..ebde696
--- /dev/null
+++ b/src/params/HyperAxisMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="AxisMethod" include="AxisMethod.h" name="HyperAxisMethod"/></magics>
diff --git a/src/params/ImageCalculateColourTechnique.xml b/src/params/ImageCalculateColourTechnique.xml
new file mode 100644
index 0000000..7490bff
--- /dev/null
+++ b/src/params/ImageCalculateColourTechnique.xml
@@ -0,0 +1,19 @@
+<magics>
+<class implements="ColourTableDefinitionComputeInterface" xmltag="lut_computed" name="ImageCalculateColourTechnique" directory="visualisers" prefix="image" action="pimage">
+  	<parameter member="max" to="Colour" default="blue" from="string" name="image_max_level_colour">
+         		<documentation> Highest image band colour 		</documentation>
+         		<release>Magics++0.8		</release>
+  	</parameter>
+
+  	<parameter member="min" to="Colour" default="red" from="string" name="image_min_level_colour">
+         		<documentation> Lowest image band colour 		</documentation>
+         		<migration> New Magics: Parameter Contour sent to new Magics[Image].  		</migration>
+         		<release>Magics++0.8		</release>
+  	</parameter>
+   	<parameter member="direction" to="string" default="anti_clockwise" from="string" name="image_colour_direction">
+         		<documentation> Direction of colour sequencing for image (CLOCKWISE / ANTI_CLOCKWISE) 		</documentation>
+         		<migration> New Magics: Parameter image_colour_direction sent to new Magics[Image].  		</migration>
+         		<release>Magics++0.8		</release>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/ImageListColourTechnique.xml b/src/params/ImageListColourTechnique.xml
new file mode 100644
index 0000000..b508e16
--- /dev/null
+++ b/src/params/ImageListColourTechnique.xml
@@ -0,0 +1,7 @@
+<magics>
+<class implements="ColourTableDefinitionListInterface" xmltag="list" name="ImageListColourTechnique" directory="visualisers" prefix="image" action="pcont">
+  	<parameter member="values" to="stringarray" default="stringarray()" from="stringarray" name="image_colour_table">
+         		<documentation> List of colours to be used in image plotting. 		</documentation>
+         		<release>Magics++0.8		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/ImagePlotting.xml b/src/params/ImagePlotting.xml
new file mode 100644
index 0000000..5dea344
--- /dev/null
+++ b/src/params/ImagePlotting.xml
@@ -0,0 +1,39 @@
+<magics>
+<class action="pimage" directory="visualisers" prefix="image" xmltag="image" name="ImagePlotting">
+  	<documentation> Here comes the documentation of the ImagePlotting object 	</documentation>
+
+	<parameter member="mode" to="LookupTableMode" default="equidistant" from="string" name="image_colour_table_creation_mode">
+         		<documentation> Method for computing the output image according to the Colour table. 		</documentation>
+         		<available> normal 		</available>
+         		<available> equidistant 		</available>
+         		<available> default 		</available>
+          		<option xml="lut_fixed" fortran="fixed" include="LookupTableMode.h" name="FixedTableMode">		</option>
+         		<option xml="lut_normal" fortran="normal" include="NormalTableMode.h" name="NormalTableMode">		</option>
+         		<option xml="lut_equidistant" fortran="equidistant" include="EquidistantTableMode.h" name="EquidistantTableMode">		</option>
+         		<option xml="lut_linear" fortran="linear" include="LinearTableMode.h" name="LinearTableMode">		</option>
+         		<release>Magics++0.7		</release>     
+         		<release_info>work in constant progress...		</release_info>     
+  	</parameter>
+  
+  	<parameter member="colourMethod" to="ColourTableDefinition" default="computed" from="string" name="image_colour_table_type">
+         		<documentation> Method for setting Colour table for imaging. 		</documentation>
+         		<option xml="lut_list" fortran="list" include="ImageListColourTechnique.h" name="ImageListColourTechnique">		</option>
+         		<option xml="lut_computed" fortran="computed" include="ImageCalculateColourTechnique.h" name="ImageCalculateColourTechnique">		</option>
+
+         		<release>Magics++0.8		</release>     
+         		<release_info>work in constant progress...		</release_info>     
+         		<migration>Default changde from calculate to computed 		</migration>
+  	</parameter>
+
+  	<parameter member="count" to="int" default="127" from="int" name="image_level_count">
+         		<documentation> Number of levels 		</documentation>
+         		<release>Magics++0.8		</release>     
+         		<release_info>work in constant progress...		</release_info>     
+  	</parameter>
+
+    	<parameter member="pixelFrequency" to="int" default="10" from="int" name="image_pixel_selection_frequency">
+         		<documentation> Number of pixels/centimetre to be plotted 
+ 		</documentation>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/ImportAction.xml b/src/params/ImportAction.xml
new file mode 100644
index 0000000..abfaa1c
--- /dev/null
+++ b/src/params/ImportAction.xml
@@ -0,0 +1,23 @@
+<magics>
+<class action="pimport" directory="decoders" prefix="import" xmltag="import" name="ImportAction">
+  	<documentation> Import facilities allow users to import external graphics files (jpeg/gif/eps) 	</documentation>
+
+  	<parameter member="path" to="string" default="" from="string" name="import_file_name">
+         		<documentation>File to import 		</documentation>
+  	</parameter>
+  	<parameter member="valid_time" to="string" default="" from="string" name="import_valid_time">
+         		<documentation>Valid Time  		</documentation>
+         		<release>2.9		</release>
+  	</parameter>
+  	<parameter member="service" to="string" default="" from="string" name="service">
+    		<documentation>Metview info : which service created this image		</documentation>
+  	</parameter>
+
+	<parameter member="url" to="string" default="" from="string" name="url">
+  		<documentation>Metview info : which url created this image : add it in the titles		</documentation>
+	</parameter>
+	<parameter member="short_name" to="string" default="" from="string" name="layers">
+  		<documentation>Metview info :Short name to be put in the layers!		</documentation>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/ImportObjectHandler.xml b/src/params/ImportObjectHandler.xml
new file mode 100644
index 0000000..91cab01
--- /dev/null
+++ b/src/params/ImportObjectHandler.xml
@@ -0,0 +1,26 @@
+<magics>
+<class action="pimport" directory="basic" xmltag="import" name="ImportObjectHandler">
+ 	<parameter member="path" to="string" default="" from="string" name="import_file_name">
+         		<documentation>File to import 		</documentation>
+  	</parameter>
+	<parameter from="string" name="import_format" default="png" member="format" to="string" values="png/jpeg/gif">
+  		<documentation>Specify the format of the imported file 		</documentation>
+	</parameter>
+
+	<parameter member="x" to="float" default="0" from="float" name="import_x_position">
+  		<documentation>X position of the imported image 		</documentation>
+	</parameter>
+  
+	<parameter member="y" to="float" default="0" from="float" name="import_y_position">
+  		<documentation>Y position of the imported image 		</documentation>
+	</parameter>
+
+	<parameter member="width" to="float" default="-1" from="float" name="import_width">
+  		<documentation>Width of the imported image (-1 means use the dimension of the image)		</documentation>
+	</parameter>
+
+	<parameter member="height" to="float" default="-1" from="float" name="import_height">
+  		<documentation>Height of the imported image (-1 means use the dimension of the image)		</documentation>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/ImportPlot.xml b/src/params/ImportPlot.xml
new file mode 100644
index 0000000..a7a5018
--- /dev/null
+++ b/src/params/ImportPlot.xml
@@ -0,0 +1,49 @@
+<magics>
+<class action="pplot" directory="visualisers" name="ImportPlot">
+
+	<parameter member="format" to="string" default="PNG" from="string" name="import_format">
+  		<documentation>Specify the format of the imported file 		</documentation>
+	</parameter>
+
+	<parameter member="system" to="string" default="user" from="string" name="import_system_coordinates">
+  		<documentation>Specify the format of the imported file 		</documentation>
+	</parameter>
+
+	<parameter member="x" to="float" default="0" from="float" name="import_x_position">
+  		<documentation>X position of the imported image 		</documentation>
+	</parameter>
+
+	<parameter member="y" to="float" default="0" from="float" name="import_y_position">
+  		<documentation>Y position of the imported image 		</documentation>
+	</parameter>
+
+	<parameter member="width" to="float" default="-1" from="float" name="import_width">
+  		<documentation>Width of the imported image (-1 means use the dimension of the image)		</documentation>
+	</parameter>
+
+	<parameter member="crs" to="string" default="" from="string" name="crs">
+  		<documentation>Metview info :Crs used for the import		</documentation>
+	</parameter> 
+
+	<parameter member="crs_minx" to="float" default="-180." from="float" name="crs_minx">
+  		<documentation>Metview info :Crs used for the import		</documentation>
+	</parameter> 
+
+	<parameter member="crs_maxx" to="float" default="180." from="float" name="crs_maxx">
+  		<documentation>Metview info :Crs used for the import		</documentation>
+	</parameter> 
+
+	<parameter member="crs_miny" to="float" default="-90." from="float" name="crs_miny">
+  		<documentation>Metview info :Crs used for the import		</documentation>
+	</parameter> 
+
+	<parameter member="crs_maxy" to="float" default="-90." from="float" name="crs_maxy">
+  		<documentation>Metview info :Crs used for the import		</documentation>
+	</parameter> 
+
+	<parameter member="height" to="float" default="-1" from="float" name="import_height">
+  		<documentation>Height of the imported image (-1 means use the dimension of the image)		</documentation>
+	</parameter>
+
+
+</class></magics>
diff --git a/src/params/InputData.xml b/src/params/InputData.xml
new file mode 100644
index 0000000..f5079f6
--- /dev/null
+++ b/src/params/InputData.xml
@@ -0,0 +1,88 @@
+<magics>
+<class directory="decoders" xmltag="input" name="InputData">
+  	<documentation> Input data for curve 	</documentation>
+ 
+
+ 	<parameter from="string" name="input_type" default="cartesian" member="type" to="string" values="cartesian/geographical">
+			           		<documentation>Type of projection 		</documentation>
+					   		<set name="input_x_type" value="cartesian">		</set>
+					   		<set name="input_y_type" value="cartesian">		</set>
+					   		<set name="input_latitude_values" value="geographical">		</set>
+					   		<set name="input_longitude_values" value="geographical">		</set>
+					   		<set name="input_x_component_values" value="geographical">		</set>
+					   		<set name="input_y_component_values" value="geographical">		</set>
+					   		<set name="input_values" value="geographical">		</set>
+					  	</parameter>
+
+
+ 	<parameter from="string" name="input_x_type" default="number" member="x_type" to="string" values="date/number">
+         		<documentation>Type used for X values: number or date 		</documentation>
+         		<set name="input_x_values" value="number">		</set>
+         		<set name="input_x2_values" value="number">		</set>
+         		<set name="input_date_x_values" value="date">		</set>
+         		<set name="input_date_x2_values" value="date">		</set>
+  	</parameter>
+  	<parameter from="string" name="input_y_type" default="number" member="y_type" to="string" values="date/number">
+         		<documentation>Type used for Y values: number or date 		</documentation> 
+				<set name="input_y_values" value="number">		</set>
+				<set name="input_y2_values" value="number">		</set>
+         		<set name="input_date_y_values" value="date">		</set>
+         		<set name="input_date_y2_values" value="date">		</set>
+  	</parameter>
+  
+  	<parameter member="x" to="floatarray" default="floatarray()" from="floatarray" name="input_x_values">
+         		<documentation> X Values  		</documentation>
+  	</parameter>
+  	<parameter member="y" to="floatarray" default="floatarray()" from="floatarray" name="input_y_values">
+         		<documentation> Y Values  		</documentation>
+  	</parameter>
+  
+   	<parameter member="date_x" to="stringarray" default="stringarray()" from="stringarray" name="input_date_x_values">
+         		<documentation> X Date Values  		</documentation>
+  	</parameter>
+  	<parameter member="date_y" to="stringarray" default="stringarray()" from="stringarray" name="input_date_y_values">
+         		<documentation> Y Date Values  		</documentation>
+  	</parameter>
+  	<parameter member="x2" to="floatarray" default="floatarray()" from="floatarray" name="input_x2_values">
+         		<documentation> Array containing X positions for second AREA curve.  		</documentation>
+  	</parameter>
+  	<parameter member="y2" to="floatarray" default="floatarray()" from="floatarray" name="input_y2_values">
+         		<documentation> Array containing X positions for second AREA curve.  		</documentation>
+  	</parameter>
+  
+   	<parameter member="date_x2" to="stringarray" default="stringarray()" from="stringarray" name="input_date_x2_values">
+         		<documentation> Array containing X positions for second AREA curve when X axis is a DATE/TIME axis.  Format is YYYY-MM-DD HH:mm:ss 		</documentation>
+  	</parameter>
+  	<parameter member="date_y2" to="stringarray" default="stringarray()" from="stringarray" name="input_date_y2_values">
+         		<documentation> Array containing Y positions for second AREA curve when X axis is a DATE/TIME axis.  Format is YYYY-MM-DD HH:mm:ss  		</documentation>
+  	</parameter>
+  
+  	<parameter member="x_missing" to="float" default="-21.e6" from="float" name="input_x_missing_value">
+         		<documentation> mssing value for x   		</documentation> 
+  	</parameter> 
+  	<parameter member="y_missing" to="float" default="-21.e6" from="float" name="input_y_missing_value">
+         		<documentation> missing value for x   		</documentation>
+  	</parameter>
+  	<parameter member="values" to="floatarray" default="floatarray()" from="floatarray" name="input_values">
+         		<documentation>  Values  		</documentation>
+  	</parameter>
+  
+   	<parameter member="latitudes" to="floatarray" default="floatarray()" from="floatarray" name="input_latitude_values">
+         		<documentation>  Latitudes  		</documentation>
+  	</parameter>
+ 	<parameter member="longitudes" to="floatarray" default="floatarray()" from="floatarray" name="input_longitude_values">
+         		<documentation>  longitudes  		</documentation>
+  	</parameter>
+  	<parameter member="x_component" to="floatarray" default="floatarray()" from="floatarray" name="input_x_component_values">
+         		<documentation>  u components for vectors  		</documentation>
+  	</parameter>
+  	<parameter member="y_component" to="floatarray" default="floatarray()" from="floatarray" name="input_y_component_values">
+         		<documentation>  v components for vectors  		</documentation>
+  	</parameter>
+
+ 	<parameter from="string" name="input_binning" default="on" member="input_binning" to="BinningObject" include="BinningObject.h">
+         		<documentation> Binning information 		</documentation>
+         		<option xml="nobinning" fortran="off" include="BinningObject.h" name="NoBinningObject">		</option>
+         		<option xml="binning" fortran="on" include="BinningObject.h" name="BinningObject">		</option>
+  	</parameter>
+ </class></magics>
diff --git a/src/params/InputMatrix.xml b/src/params/InputMatrix.xml
new file mode 100644
index 0000000..46fe421
--- /dev/null
+++ b/src/params/InputMatrix.xml
@@ -0,0 +1,49 @@
+<magics>
+<class directory="decoders" prefix="input" xmltag="matrix" name="InputMatrix">
+  	<documentation>
+    This object contains this attributes to set how to interpret data stored in 2-dimensional arrays in memory.
+ 	</documentation>
+
+  	<parameter xml="field" from="Matrix" name="input_field" default="Matrix()" member="field" to="Matrix">
+         		<documentation> Array containing data for contouring 		</documentation>
+  	</parameter>
+  
+  	<parameter xml="field" from="string" name="input_simple_field" default="off" member="simple_field" to="bool">
+         		<documentation for_docs="no">For internal testing only, or very specifivc users request!		</documentation>
+  	</parameter>
+  
+ 	<parameter xml="u_component" from="Matrix" name="input_wind_u_component" default="Matrix()" member="u_component" to="Matrix">
+         		<documentation> Array containing U velocity component for wind field 		</documentation>
+  	</parameter>
+
+  	<parameter xml="v_component" from="Matrix" name="input_wind_v_component" default="Matrix()" member="v_component" to="Matrix">
+         		<documentation> Array containing V velocity component for wind field 		</documentation>
+  	</parameter>
+
+   	<parameter xml="input_field_organization" from="string" name="input_field_organization" default="regular" member="organization" to="InputMatrixInterpretor">
+         		<option xml="gaussian" fortran="regular" include="InputMatrixInterpretor.h" name="InputMatrixRegularInterpretor">		</option>
+         		<option xml="irregular" fortran="nonregular" include="InputMatrixInterpretor.h" name="InputMatrixIrregularInterpretor">		</option>
+         		<documentation> How data is organized in the input field (REGULAR /IRREGULAR/) 		</documentation>
+  	</parameter>
+
+  	<parameter xml="input_field_subpage_mapping" from="string" name="input_field_subpage_mapping" default="upper_left" member="mapping" to="string">
+         		<documentation> Position of first point of array (1,1) on the subpage, (see text)(UPPER_LEFT / UPPER_RIGHT / LOWER_LEFT / LOWER_RIGHT /
+         UPPER_LEFT_TRANSPOSED / UPPER_RIGHT_TRANSPOSED / LOWER_LEFT_TRANSPOSED / LOWER_RIGHT_TRANSPOSED) 		</documentation>
+  	</parameter>  
+   
+  	<parameter member="wind_speed" to="Matrix" default="Matrix()" from="Matrix" name="input_wind_speed">
+         		<documentation> Array containing speed component for wind field 		</documentation>
+  	</parameter>
+
+  	<parameter member="wind_direction" to="Matrix" default="Matrix()" from="Matrix" name="input_wind_direction">
+         		<documentation> Array containing direction component for wind field 		</documentation>
+  	</parameter>
+
+     	<parameter xml="input_field_suppress_below" from="float" name="input_field_suppress_below" default="-1.0e+21" member="suppress_below" to="float">
+         		<documentation> Values in the input field(s) below this value are to be suppressed, i.e. not to be taken into consideration for plotting purposes 		</documentation>
+  	</parameter>
+
+  	<parameter xml="input_field_suppress_above" from="float" name="input_field_suppress_above" default="1.0e+21" member="suppress_above" to="float">
+         		<documentation> Values in the input field(s) above this value are to be suppressed, i.e not to be taken into consideration for plotting purposes 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/InputMatrixIrregularInterpretor.xml b/src/params/InputMatrixIrregularInterpretor.xml
new file mode 100644
index 0000000..75c5591
--- /dev/null
+++ b/src/params/InputMatrixIrregularInterpretor.xml
@@ -0,0 +1,19 @@
+<magics>
+<class directory="decoders" name="InputMatrixIrregularInterpretor">
+
+  	<parameter member="latitudes" to="Matrix" default="Matrix()" from="Matrix" name="input_field_latitudes">
+         		<documentation> latitudes 		</documentation>
+  	</parameter>
+  
+  	<parameter member="longitudes" to="Matrix" default="Matrix()" from="Matrix" name="input_field_longitudes">
+         		<documentation> longitudes 		</documentation>
+  	</parameter>
+  
+  	<parameter member="y" to="Matrix" default="Matrix()" from="Matrix" name="input_field_y_coordinates">
+         		<documentation> y-coordinates of the field 		</documentation>
+  	</parameter>
+  
+  	<parameter member="x" to="Matrix" default="Matrix()" from="Matrix" name="input_field_x_coordinates">
+         		<documentation> x-coordinates of the field 		</documentation>
+  	</parameter>
+ </class></magics>
diff --git a/src/params/InputMatrixRegularInterpretor.xml b/src/params/InputMatrixRegularInterpretor.xml
new file mode 100644
index 0000000..283801d
--- /dev/null
+++ b/src/params/InputMatrixRegularInterpretor.xml
@@ -0,0 +1,79 @@
+<magics>
+<class directory="decoders" name="InputMatrixRegularInterpretor">
+
+  	<parameter xml="origin_latitude" from="float" name="input_field_initial_latitude" default="90" member="latitude" to="float">
+         		<documentation> used in a geographical projection context: Latitude of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter xml="origin_longitude" from="float" name="input_field_initial_longitude" default="0" member="longitude" to="float">
+         		<documentation> used in a geographical projection context: Longitude of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter xml="latitude_step" from="float" name="input_field_latitude_step" default="-1.5" member="latitude_step" to="float">
+         		<documentation> used in a geographical projection context: Distance between two latitude points in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter xml="longitude_step" from="float" name="input_field_longitude_step" default="1.5" member="longitude_step" to="float">
+         		<documentation> used in a geographical projection context: Distance between two longitude points in the input array 		</documentation>
+  	</parameter>
+  
+    	<parameter member="y_first" to="float" default="0" from="float" name="input_field_initial_y">
+         		<documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter member="x_last" to="float" default="100" from="float" name="input_field_final_x">
+         		<documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+  
+   	<parameter member="y_last" to="float" default="100" from="float" name="input_field_final_y">
+         		<documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+  	<parameter member="x_coords" to="floatarray" default="floatarray()" from="floatarray" name="input_field_x_list">
+         		<documentation> used in a cartesian projection context: vector containing the x-coordinates 		</documentation>
+  	</parameter>
+   	<parameter member="y_coords" to="floatarray" default="floatarray()" from="floatarray" name="input_field_y_list">
+         		<documentation> used in a cartesian projection context: vector containing the y-coordinates 		</documentation>
+  	</parameter>
+   
+  	<parameter member="x_first" to="float" default="0" from="float" name="input_field_initial_x">
+         		<documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+  
+    	<parameter member="y_first_date" to="string" default="" from="string" name="input_field_initial_y_date">
+         		<documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter member="x_last_date" to="string" default="" from="string" name="input_field_final_x_date">
+         		<documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+  
+   	<parameter member="y_last_date" to="string" default="" from="string" name="input_field_final_y_date">
+         		<documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter member="x_first_date" to="string" default="" from="string" name="input_field_initial_x_date">
+         		<documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter member="y_step" to="float" default="1" from="float" name="input_field_y_step">
+         		<documentation> used in a cartesian projection context: y-step in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter member="x_step" to="float" default="1" from="float" name="input_field_x_step">
+         		<documentation> used in a cartesian projection context: x-step in the input array 		</documentation>
+  	</parameter>
+
+  	<parameter xml="input_field_primary_index" from="string" name="input_field_primary_index" default="longitude" member="primary_index" to="string" implemented="no">
+         		<documentation> Primary or first index of input array(LATITUDE/LONGITUDE) 		</documentation>
+  	</parameter>
+
+  	<parameter xml="input_field_gradient_control" from="string" name="input_field_gradient_control" default="off" member="input_field_gradient_control" to="string" implemented="no">
+         		<documentation> How to calculate the contour gradients(LEAST/FLAT_ONLY/OFF) 		</documentation>
+  	</parameter>
+
+  	<parameter xml="input_field_gradient_limitation" from="string" name="input_field_gradient_limitation" default="off" member="input_field_gradient_limitation" to="string" implemented="no">
+         		<documentation> Set  gradient to 0 for minimum and/or maximum values(MINIMUM/MAXIMUM/BOTH/OFF) 		</documentation>
+  	</parameter>
+  
+  
+</class></magics>
diff --git a/src/params/IntervalSelectionType.xml b/src/params/IntervalSelectionType.xml
new file mode 100644
index 0000000..0df51c1
--- /dev/null
+++ b/src/params/IntervalSelectionType.xml
@@ -0,0 +1,17 @@
+<magics>
+<class inherits="LevelSelection" xmltag="interval" name="IntervalSelectionType" directory="visualisers" prefix="contour/contour/contour" action="pcont">
+  	<documentation>
+  If the parameter CONTOUR_LEVEL_SELECTION_TYPE is set to 'INTERVAL' , 
+  MAGICS will plot contours at regularly spaced intervals
+  using the value of CONTOUR_REFERENCE_LEVEL as a base
+  and the value in CONTOUR_INTERVAL as the interval between levels.
+  	</documentation>
+  	<parameter member="reference" to="float" default="0.0" from="float" name="contour_reference_level">
+         		<documentation> Contour level from which contour interval is calculated 		</documentation>
+         		<release>Magics++0.1		</release>        
+  	</parameter>
+  	<parameter member="interval" to="float" default="8.0" from="float" name="contour_interval">
+         		<documentation> Interval in data units between two contour lines 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/IsoHighlight.xml b/src/params/IsoHighlight.xml
new file mode 100644
index 0000000..30edec2
--- /dev/null
+++ b/src/params/IsoHighlight.xml
@@ -0,0 +1,31 @@
+<magics>
+<class inherits="NoIsoHighlight" xmltag="highlight" name="IsoHighlight" directory="visualisers" prefix="contour/contour/contour_highlight" action="pcont" doc_inherits="no">
+	<documentation> This object is responsible of plotting the hightlight isolines 	</documentation>
+  	<parameter xml="style" priority="0.2" from="string" name="contour_highlight_style" default="solid" member="style" to="LineStyle">
+         		<documentation> Style of highlighting (SOLID/ DASH/ DOT/ CHAIN_DASH/ CHAIN_DOT) 		</documentation>
+         		<migration> New Magics: Parameter Contour sent to new Magics[Contour].  		</migration>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+ 	<parameter member="reference" to="float" default="0.0" from="float" name="contour_reference_level">
+         		<documentation> Contour level reference 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  
+  	<parameter priority="0.2" from="string" name="contour_highlight_colour" default="blue" member="colour" to="Colour">
+         		<documentation> Colour of highlight line 		</documentation>
+         		<release>Magics++0.2		</release>
+         		<migration> New Magics: Parameter Contour sent to new Magics[Contour].  		</migration>
+  	</parameter>
+
+  	<parameter priority="0.2" from="int" name="contour_highlight_thickness" default="3" member="thickness" to="int">
+         		<release>Magics++0.2		</release>
+         		<documentation> Thickness of highlight line 		</documentation>
+         		<migration> New Magics: Parameter Contour sent to new Magics[Contour].  		</migration>
+  	</parameter>
+
+  	<parameter priority="0.2" from="int" name="contour_highlight_frequency" default="4" member="frequency" to="int">
+         		<release>Magics++0.2		</release>
+         		<documentation> Frequency of highlight line 		</documentation>
+         		<migration> New Magics: Parameter contour_highlight_frequency sent to new Magics[Contour].  		</migration>
+  	</parameter>
+</class></magics>
diff --git a/src/params/IsoLabel.xml b/src/params/IsoLabel.xml
new file mode 100644
index 0000000..729305a
--- /dev/null
+++ b/src/params/IsoLabel.xml
@@ -0,0 +1,72 @@
+<magics>
+<class inherits="NoIsoLabel" xmltag="label" name="IsoLabel" directory="visualisers" prefix="contour/contour/contour_label" action="pcont" doc_inherits="no">
+  	<documentation>
+  The action routine PCONT will plot labels on contour lines either by default
+  or as directed by the user. 
+  Contour labels may be plotted with different attributes from the contour line, 
+  e.g. colour and thickness. 
+  Contour labels are, by default, plotted on every 2nd contour line, 
+  but this may be changed by the user, if desired.
+  	</documentation>
+  	<parameter member="type" to="string" default="number" from="string" name="contour_label_type">
+         		<documentation> Type of label (TEXT/NUMBER/BOTH) 		</documentation>
+         		<migration> New Magics: Parameter contour_label_type sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++2.8		</release>
+         		<release_info>number is used by default in: expected in 0.6 		</release_info>
+  	</parameter>
+  
+  	<parameter member="text" to="string" default="" from="string" name="contour_label_text">
+         		<documentation> Text for labels 		</documentation>
+         		<migration> New Magics: Parameter Contour sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++2.8		</release>
+  	</parameter>
+
+  	<parameter xml="height" from="float" name="contour_label_height" default="0.3" member="height" to="float">
+         		<documentation> Height of contour labels 		</documentation>
+         		<migration> New Magics: Parameter contour_label_height sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter xml="format" from="string" name="contour_label_format" default="(automatic)" member="format" to="string">
+         		<documentation> Format of contour labels (MAGICS Format/(AUTOMATIC)) 		</documentation>
+         		<migration> New Magics: Parameter contour_label_format sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter xml="blanking" from="string" name="contour_label_blanking" default="on" member="blanking" to="bool">
+         		<documentation>Label Blanking		</documentation>
+         		<release>Magics++ 0.4		</release>
+  	</parameter>
+
+  	<parameter xml="quality" from="string" name="contour_label_quality" default="low" member="quality" to="string" implemented="no">
+         		<documentation> (LOW/MEDIUM/HIGH) 		</documentation>
+         		<release>Deprecated 		</release>
+         		<release_info> Use label_font and label_font_style		</release_info>
+  	</parameter>
+  
+  	<parameter member="font" to="string" default="sansserif" from="string" name="contour_label_font">
+         		<documentation> Name of the font  		</documentation>
+         		<migration> New Magics: Parameter contour_label_quality sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  
+  	<parameter xml="font_style" from="string" name="contour_label_font_style" default="normal" member="style" to="string">
+         		<documentation>Style of the font bold/italic		</documentation>
+         		<migration>New Magics: Parameter contour_label_quality sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++ 1.4		</release>
+  	</parameter>
+
+  	<parameter default="contour_line_colour" from="string" name="contour_label_colour" metview_interface="ColourWithExtra" member="colour" to="string">
+         		<documentation> Colour of contour labels 		</documentation>
+         		<migration> New Magics: Parameter contour_label_colour sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++0.4		</release>
+        
+  	</parameter>
+
+  	<parameter member="frequency" to="int" default="2" from="int" name="contour_label_frequency">
+         		<documentation> Every Nth contour line is labelled 		</documentation>
+         		<migration> New Magics: Parameter contour_label_frequency sent to new Magics[IsoLabel].  		</migration>
+         		<release>Magics++0.4		</release>
+         
+  	</parameter>
+</class></magics>
diff --git a/src/params/IsoPlot.xml b/src/params/IsoPlot.xml
new file mode 100644
index 0000000..c008579
--- /dev/null
+++ b/src/params/IsoPlot.xml
@@ -0,0 +1,129 @@
+<magics>
+<class xmltag="isoline" name="IsoPlot" used_by="Contour" directory="visualisers" prefix="contour/contour_line" action="pcont">
+    	<documentation> This object contains all the attributes of the isolines 	</documentation>
+
+
+    	<parameter from="string" name="contour_special_legend" visible="no" default="" member="legend_special" to="string"> 
+        		<documentation> Used in wrep to produce special legend such as spaghetti! 		</documentation>
+        		<release>2.10		</release>
+    	</parameter>
+  
+    	<parameter from="float" name="contour_internal_reduction_factor" visible="no" default="4" member="resolution" to="float" documented="off">
+        		<documentation> Internal factor for contouring   		</documentation>
+        		<release>2.10		</release> 
+    	</parameter>
+
+    	<parameter from="string" name="contour_internal_technique" visible="no" default="interpolate" member="technique" to="string" documented="off">
+        		<documentation> Internal technique for contouring : interpolate/nearest   		</documentation>
+    	</parameter>
+
+    	<parameter from="string" name="contour_legend_text" visible="no" default=" " member="legend_text" to="string" documented="off">
+        		<documentation>Text to be used in legend		</documentation>
+        		<release>2.10		</release>
+        
+    	</parameter>
+
+    	<parameter xml="style" from="string" name="contour_line_style" default="solid" member="style" to="LineStyle">
+        		<documentation> Style of contour line  		</documentation>
+        		<migration> New Magics: Parameter contour_line_style sent to new Magics[IsoPlot].  		</migration>
+        		<release>0.1		</release>
+    	</parameter>
+
+    	<parameter xml="thickness" from="int" name="contour_line_thickness" default="1" member="thickness" to="int">
+        		<documentation> Thickness of contour line 		</documentation>
+        		<migration> New Magics: Parameter contour_line_thickness sent to new Magics[IsoPlot].  		</migration>
+        		<release>0.1		</release>
+    	</parameter>
+
+    	<parameter member="rainbow" to="bool" default="off" from="string" name="contour_line_colour_rainbow">
+        		<documentation> if On, rainbow colouring method will be used.  		</documentation>
+        		<release>2.20		</release>
+        		<set name="contour_line_colour" value="off">		</set> 
+        		<set name="contour_line_colour_rainbow_method" value="on">		</set>
+        		<set name="contour_line_colour_rainbow_max_level_colour" value="on">		</set>
+        		<set name="contour_line_colour_rainbow_min_level_colour" value="on">		</set>
+        		<set name="contour_line_colour_rainbow_direction" value="on">		</set>
+        		<set name="contour_line_colour_rainbow_colour_list" value="on">		</set>
+        		<set name="contour_line_colour_rainbow_colour_list_policy" value="on">		</set>
+    	</parameter>
+
+
+    	<parameter xml="colour" from="string" name="contour_line_colour" default="blue" member="colour" to="Colour">
+        		<documentation> Colour of contour line 		</documentation>
+        		<migration> New Magics: Parameter contour_line_colour sent to new Magics[IsoPlot].  		</migration>
+        		<release>0.1		</release>
+    	</parameter>
+
+
+    	<parameter member="rainbowMethod" to="ColourTechnique" default="calculate" from="string" name="contour_line_colour_rainbow_method">
+        		<documentation>  Method of generating the colours for isoline		</documentation>
+        		<set name="contour_line_colour_rainbow_colour_list" value="list">		</set>
+        		<set name="contour_line_colour_rainbow_colour_list_policy" value="list">		</set>
+        		<set name="contour_line_colour_rainbow_max_level_colour" value="calculate">		</set>
+        		<set name="contour_line_colour_rainbow_min_level_colour" value="calculate">		</set>
+        		<set name="contour_line_colour_rainbow_direction" value="calculate">		</set>
+    	</parameter> 
+
+    	<parameter member="rainbowMaxColour" to="Colour" default="blue" from="string" name="contour_line_colour_rainbow_max_level_colour">
+        		<documentation> Colour to be used for the max level		</documentation>
+    	</parameter>
+
+    	<parameter member="rainbowMinColour" to="Colour" default="red" from="string" name="contour_line_colour_rainbow_min_level_colour">
+        		<documentation> Colour to be used for the mainlevel 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter from="string" name="contour_line_colour_rainbow_direction" default="anti_clockwise" member="rainbowDirection" to="string" values="clockwise/anti-clockwise">
+        		<documentation> Direction of colour sequencing for colouring 		</documentation>
+    	</parameter>
+
+    	<parameter member="rainbowColours" to="stringarray" default="stringarray()" from="stringarray" name="contour_line_colour_rainbow_colour_list">
+        		<documentation> List of colours to be used in rainbow isolines 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="rainbowColourPolicy" to="ListPolicy" default="lastone" from="string" name="contour_line_colour_rainbow_colour_list_policy">
+        		<documentation> What to do if the list of colours is smaller that the list of contour: lastone/cycle 		</documentation>           
+    	</parameter>
+
+    	<parameter xml="highlight" priority="0.2" from="string" name="contour_highlight" default="on" member="highlight" to="NoIsoHighlight" include="IsoHighlight.h">
+        		<documentation> Plot contour highlights (ON/OFF) 		</documentation>
+        		<option xml="highlight" fortran="on" include="IsoHighlight.h" name="IsoHighlight">		</option>
+        		<option xml="nohighlight" fortran="off" include="IsoHighlight.h" name="NoIsoHighlight">		</option>
+        		<migration> New Magics: Parameter contour_highlight sent to new Magics[IsoPlot].  		</migration>
+        		<release>0.2		</release>         
+   	</parameter>
+
+    	<parameter xml="level_selection_type" from="string" name="contour_level_selection_type" default="count" member="levelSelection" to="LevelSelection" inherit_parent_reqs="no">
+        		<documentation> count: calculate a reasonable  contour interval taking into account the min/max and the requested number of isolines. 
+        interval: regularly spaced intervals using the reference_level as base.
+        level_list: uses the given list of levels. 		</documentation>
+        		<option xml="count" fortran="count" xmlfile="LevelSelection" include="CountSelectionType.h" name="CountSelectionType">		</option>
+        		<option xml="interval" fortran="interval" include="IntervalSelectionType.h" name="IntervalSelectionType">		</option>
+        		<option xml="list" fortran="level_list" include="LevelListSelectionType.h" name="LevelListSelectionType">		</option>
+    	</parameter>
+
+
+    	<parameter xml="label" from="string" name="contour_label" default="on" member="label" to="NoIsoLabel" include="IsoLabel.h" inherit_parent_reqs="no">
+        		<documentation> Plot labels on contour lines  		</documentation>
+        		<migration> New Magics: Parameter Contour sent to new Magics[Contour].  		</migration>
+        		<release>0.1		</release>
+        		<option xml="label" fortran="on" include="IsoLabel.h" name="IsoLabel">		</option>
+        		<option xml="nolabel" fortran="off" include="IsoLabel.h" name="NoIsoLabel">		</option>
+  	</parameter>
+
+
+    	<parameter xml="shade" from="string" name="contour_shade" default="off" member="shading" to="NoIsoShading" include="IsoShading.h" inherit_parent_reqs="no">
+        		<documentation> Turn shading on 		</documentation>
+        		<migration> New Magics: Parameter contour_label sent to new Magics[Contour].  		</migration>
+        		<release>0.2		</release>
+        		<option xml="shading" fortran="on" include="IsoShading.h" name="IsoShading">		</option>
+        		<option xml="noshading" fortran="off" include="IsoShading.h" name="NoIsoShading">		</option>
+   	</parameter>
+
+   	<parameter member="legend_only" to="bool" default="off" from="string" name="contour_legend_only"> 
+      		<documentation> Inform the contour object do generate only the legend and not the plot!		</documentation>  		       
+      		<release>2.10		</release>
+   	</parameter>
+
+</class></magics>
diff --git a/src/params/IsoShading.xml b/src/params/IsoShading.xml
new file mode 100644
index 0000000..086c64a
--- /dev/null
+++ b/src/params/IsoShading.xml
@@ -0,0 +1,40 @@
+<magics>
+<class inherits="NoIsoShading" xmltag="shading" name="IsoShading" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade" action="pcont" doc_inherits="no">
+
+    	<parameter member="technique" to="ShadingTechnique" default="polygon_shading" from="string" name="contour_shade_technique">
+        		<documentation> Technique used for shading (POLYGON_SHADING/ CELL_SHADING/ MARKER) 		</documentation>
+        		<option xml="polygon" fortran="polygon_shading" include="PolyShadingTechnique.h" name="PolyShadingTechnique">		</option>
+        		<option xml="grid_shading" fortran="grid_shading" include="PolyShadingTechnique.h" name="GridShading">		</option>
+        		<option xml="cell_shading" fortran="cell_shading" include="CellShading.h" name="CellShading">		</option>
+        		<option xml="dump_shading" fortran="dump_shading" include="CellShading.h" name="DumpShading" visible="no">		</option>
+        		<option xml="marker" fortran="marker" include="MarkerShadingTechnique.h" name="MarkerShadingTechnique">		</option> 
+
+        		<set name="contour_shade_method" value="polygon_shading">		</set>
+
+        		<release>0.2		</release>
+    	</parameter>
+
+
+  
+  	<parameter member="max" to="float" default="1.0e+21" from="float" name="contour_shade_max_level">
+         		<documentation> Maximum level for which shading is required 		</documentation>
+          		<release>0.2		</release>
+  	</parameter>
+
+  	<parameter member="min" to="float" default="-1.0e+21" from="float" name="contour_shade_min_level">
+         		<documentation> Minimum level for which shading is required 		</documentation>
+          		<release>0.2		</release>
+  	</parameter>
+  
+  	<parameter member="colourMethod" to="ColourTechnique" default="calculate" from="string" name="contour_shade_colour_method">
+        		<documentation> Method of generating the colours of the bands in contour shading (LIST/CALCULATE) 		</documentation>
+        		<option xml="calculate" fortran="calculate" include="CalculateColourTechnique.h" name="CalculateColourTechnique">		</option>
+        		<option xml="list" fortran="list" include="ListColourTechnique.h" name="ListColourTechnique">		</option>
+  	</parameter>
+
+  	<metview_parameter from="string" name="contour_shade_label_blanking" default="on" metview="hidden" member="" to="bool">
+         		<documentation> Added for backwards compatibility with existing Metview Contour icons/macros 		</documentation>
+  	</metview_parameter>
+
+ 
+</class></magics>
diff --git a/src/params/KMLDriver.xml b/src/params/KMLDriver.xml
new file mode 100644
index 0000000..ff31bf5
--- /dev/null
+++ b/src/params/KMLDriver.xml
@@ -0,0 +1,56 @@
+<magics>
+<class inherits="BaseDriver" xmltag="kml" name="KMLDriver" directory="drivers" prefix="kml" action="KML">
+		<documentation for_docs="no">
+		This output driver produces output in the KML (Keyhole XML) format. This is the input format for 
+		Google Earth (http://earth.google.com) and Google Maps (http://maps.google.com).
+		
+		The output driver differs much from other drivers, because it describes not only a two-dimensional 
+		visualisation but also describes the dimensions of height and time.
+
+		See also the parameters for the BaseDriver.
+		</documentation>
+
+	<parameter member="kmz" to="bool" default="on" from="string" name="kml_kmz">
+  		<documentation>Defines if output files will be zipped into a KMZ file.		</documentation>
+	</parameter>
+
+	<parameter member="description" to="string" default="Generated by Magics++" from="string" name="kml_description">
+  		<documentation>Short description for the product.		</documentation>
+	</parameter>
+
+	<parameter member="author" to="string" default="" from="string" name="kml_author">
+  		<documentation>Gives the author of the product.		</documentation>
+	</parameter>
+
+	<parameter member="link" to="string" default="" from="string" name="kml_link">
+  		<documentation>Gives the HTTP link to the product (Example: http://www.ecmwf.int/products).		</documentation>
+	</parameter>
+
+	<parameter member="height" to="float" default="5.0" from="float" name="kml_height">
+  		<documentation>Default height of all layers! [This is still WORK IN PROGRESS!!!]		</documentation>
+	</parameter>
+
+	<parameter member="latitude" to="float" default="40.0" from="float" name="kml_latitude">
+  		<documentation>Defines the latitude of initial viewpoint.		</documentation>
+  	</parameter>
+
+	<parameter member="longitude" to="float" default="0.0" from="float" name="kml_longitude">
+  		<documentation>Defines the longitude of initial viewpoint.		</documentation>
+	</parameter>
+
+	<parameter member="transparency" to="int" default="100" from="int" name="kml_transparency">
+  		<documentation>Defines the transparency in percentage ( 0% = invisible) of the layers saved.		</documentation>
+	</parameter>
+
+	<parameter member="tilt" to="int" default="0" from="int" name="kml_tilt">
+  		<documentation>Defines the tilting angle for the default view (0 equals from above).		</documentation>
+	</parameter>
+
+	<parameter member="range" to="int" default="6000" from="int" name="kml_range">
+  		<documentation>Defines the distance (km) to the default view in km.		</documentation>
+	</parameter>
+
+	<parameter member="coastlines" to="bool" default="off" from="string" name="kml_coastlines">
+  		<documentation>Determines if coastlines are plotted by Magics or not. Default is OFF because Google Earth and Google Maps have their own coastlines.		</documentation>
+	</parameter>
+</class></magics>
diff --git a/src/params/LabelPlotting.xml b/src/params/LabelPlotting.xml
new file mode 100644
index 0000000..5101a85
--- /dev/null
+++ b/src/params/LabelPlotting.xml
@@ -0,0 +1,61 @@
+<magics>
+<class inherits="NoLabelPlotting" xmltag="label" name="LabelPlotting" directory="visualisers" prefix="map/map_label" action="pcoast" doc_inherits="no">
+		<documentation>
+		This object will control the settings of the Map Labels.
+		</documentation>
+        	<parameter member="quality" to="string" default="MEDIUM" from="string" name="map_label_quality">
+            		<documentation>
+            Quality of grid labels
+           		</documentation>
+            		<release>Magics++0.1		</release>
+       	</parameter>
+       	<parameter member="colour" to="Colour" default="black" from="string" name="map_label_colour">
+            		<documentation>
+            Colour of map labels
+           		</documentation>
+            		<release>Magics++0.1		</release>
+       	</parameter>
+       	<parameter member="height" to="float" default="0.25" from="float" name="map_label_height">
+            		<documentation>
+            Height og grid labels
+           		</documentation>
+            		<release>Magics++0.1		</release>
+       	</parameter>
+       
+        	<parameter member="latFrequency" to="int" default="1" from="int" name="map_label_latitude_frequency">
+            		<documentation>
+            Evry Nth latitue grid is labelled
+           		</documentation>
+            		<release>Magics++0.1		</release>
+       	</parameter>
+        	<parameter member="lonFrequency" to="int" default="1" from="int" name="map_label_longitude_frequency">
+            		<documentation>
+            Evry Nth longitude grid is labelled
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+        	<parameter member="left" to="bool" default="on" from="string" name="map_label_left">
+            		<documentation>
+           Enable the labels on the left of the map
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+       	<parameter member="right" to="bool" default="on" from="string" name="map_label_right">
+            		<documentation>
+           Enable the labels on the right of the map
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+       	<parameter member="top" to="bool" default="on" from="string" name="map_label_top">
+            		<documentation>
+           Enable the labels on the top of the map
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+       	<parameter member="bottom" to="bool" default="on" from="string" name="map_label_bottom">
+            		<documentation>
+           Enable the labels on the bottom of the map
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+</class></magics>
diff --git a/src/params/LandgramBox.xml b/src/params/LandgramBox.xml
new file mode 100644
index 0000000..7b59185
--- /dev/null
+++ b/src/params/LandgramBox.xml
@@ -0,0 +1,32 @@
+<magics>
+<class directory="visualisers" prefix="landbox" xmltag="landgrambox" name="LandgramBox">
+  	<documentation> LandBox visualisation	</documentation>
+	<parameter member="width" to="float" default="6" from="float" name="landgram_width">
+         		<documentation> Colour of the box 		</documentation>
+  	</parameter>
+  	<parameter member="top1_colour" to="Colour" default="evergreen" from="string" name="landgram_top_box1_colour">
+         		<documentation> Colour of the box 		</documentation>
+  	</parameter>
+   	<parameter member="top1_shading" to="string" default="solid" from="string" name="landgram_top_box1_shading">
+         		<documentation> could be solid or dot		</documentation>
+  	</parameter>
+   	<parameter member="top2_colour" to="Colour" default="evergreen" from="string" name="landgram_top_box2_colour">
+         		<documentation> Colour of the box 		</documentation>
+  	</parameter>
+   	<parameter member="top2_shading" to="string" default="dot" from="string" name="landgram_top_box2_shading">
+         		<documentation> could be solid or dot		</documentation>
+  	</parameter>
+  	<parameter member="bottom1_colour" to="Colour" default="evergreen" from="string" name="landgram_bottom_box1_colour">
+         		<documentation> Colour of the box 		</documentation>
+  	</parameter>
+   	<parameter member="bottom1_shading" to="string" default="solid" from="string" name="landgram_bottom_box1_shading">
+         		<documentation> could be solid or dot		</documentation>
+  	</parameter>
+  
+  	<parameter member="bottom2_colour" to="Colour" default="evergreen" from="string" name="landgram_bottom_box2_colour">
+         		<documentation> Colour of the box 		</documentation>
+  	</parameter>
+   	<parameter member="bottom2_shading" to="string" default="dot" from="string" name="landgram_bottom_box2_shading">
+         		<documentation> could be solid or dot		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/LandgramDecoder.xml b/src/params/LandgramDecoder.xml
new file mode 100644
index 0000000..3a860aa
--- /dev/null
+++ b/src/params/LandgramDecoder.xml
@@ -0,0 +1,17 @@
+<magics>
+<class directory="decoders" prefix="landgram" xmltag="landgram" name="LandgramDecoder">
+  	<documentation> Landgram aplication	</documentation>
+
+  	<parameter member="path" to="string" default="" from="string" name="landgram_input_file_name">
+         		<documentation> path to the file containing the xml description of the lansdgram		</documentation>
+  	</parameter>
+  	<parameter member="scaling" to="float" default="1" from="float" name="landgram_input_scaling_factor">
+         		<documentation> path to the file containing the xml description of the lansdgram		</documentation>
+  	</parameter>
+  	<parameter member="offset" to="float" default="0" from="float" name="landgram_input_offset_factor">
+         		<documentation> path to the file containing the xml description of the lansdgram		</documentation>
+  	</parameter>
+  	<parameter member="title" to="string" default="landgram parameter" from="string" name="landgram_title">
+         		<documentation> title to display 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/LegendMethod.xml b/src/params/LegendMethod.xml
new file mode 100644
index 0000000..f1d8922
--- /dev/null
+++ b/src/params/LegendMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="legend" directory="visualisers" used_by="Legend" include="LegendMethod.h" name="LegendMethod"/></magics>
diff --git a/src/params/LegendVisitor.xml b/src/params/LegendVisitor.xml
new file mode 100644
index 0000000..50621a3
--- /dev/null
+++ b/src/params/LegendVisitor.xml
@@ -0,0 +1,235 @@
+<magics>
+<class action="legend" directory="basic" prefix="legend" xmltag="legend" name="LegendVisitor">
+		<documentation>
+	   Collection of parameters defining how a legend will be plotted. To plot a legend the parameter 'Legend' 
+	   needs to set to 'on'. 
+		</documentation>
+
+	<parameter from="string" name="legend_text_colour" default="blue" member="colour" to="Colour" metview_default="navy">
+    		<documentation> Legend text colour 		</documentation>
+    		<migration> New Magics: Parameter legend_text_colour sent to new Magics[Legend].  		</migration>
+	</parameter>
+        
+ 	<parameter member="title" to="bool" default="off" from="string" name="legend_title">
+    		<documentation> plot legend title text  		</documentation>
+    		<set name="legend_title_text" value="on">		</set>
+    		<set name="legend_title_font_size" value="on">		</set>  
+    		<set name="legend_title_font_colour" value="on">		</set>
+    		<set name="legend_title_orientation" value="on">		</set>
+    		<set name="legend_title_position" value="on">		</set>
+    		<set name="legend_title_position_ratio" value="on">		</set>
+	</parameter>
+
+	<parameter member="title_text" to="string" default="legend" from="string" name="legend_title_text">
+    		<documentation> Text to plot as legend title 		</documentation>
+	</parameter>
+	<parameter from="string" name="legend_title_orientation" default="automatic" member="title_orientation" to="string" values="vertical/horizontal/automatic">
+    		<documentation> Orientation of legend title, if automatic the title will be 
+    	horizontal for horizontal legend and vertical for vertical  		</documentation>
+	</parameter>
+ 	<parameter member="title_font_size" to="float" default="-1" from="float" name="legend_title_font_size">
+    		<documentation> Font size used for the title: The default is the same as text_entry 		</documentation>
+	</parameter>
+
+ 	<parameter member="title_font_colour" to="Colour" default="automatic" from="string" name="legend_title_font_colour">
+    		<documentation> Font Colour used for the title: The defaut is the same as the text_entry		</documentation>
+	</parameter>
+
+	<parameter from="string" name="legend_title_position" default="automatic" member="title_position" to="Position" values="automatic/top/bottom/left/right">
+   		<documentation> relative title position 		</documentation>
+	</parameter> 
+
+	<parameter member="title_ratio" to="float" default="25" from="float" name="legend_title_position_ratio">
+   		<documentation> percentage of the legend box used for the title 		</documentation>
+	</parameter> 
+
+	<parameter member="units_text" to="string" default="" from="string" name="legend_units_text">
+    		<documentation> Text to plot as units 		</documentation>
+	</parameter>
+
+	<parameter member="use_min" to="bool" default="off" from="string" name="legend_user_minimum">
+   		<documentation> Use of user tailored text for minimum 		</documentation>
+   		<set name="legend_user_minimum_text" value="on">		</set>
+	</parameter>
+
+	<parameter member="use_min_text" to="string" default="" from="string" name="legend_user_minimum_text">
+   		<documentation> User tailored text for minimum 		</documentation>
+	</parameter>
+
+	<parameter member="use_max" to="bool" default="off" from="string" name="legend_user_maximum">
+   		<documentation> Use of user tailored text for maximum 		</documentation>
+   		<set name="legend_user_maximum_text" value="on">		</set>
+	</parameter>
+
+	<parameter member="use_max_text" to="string" default="" from="string" name="legend_user_maximum_text">
+  		<documentation> User tailored text for maximum   		</documentation>
+	</parameter>
+        
+	<parameter from="string" name="legend_display_type" default="disjoint" member="method" to="LegendMethod" metview_default="continuous">
+            		<option xml="disjoint" fortran="disjoint" include="LegendMethod.h" name="LegendMethod">		</option>
+            		<option xml="continuous" fortran="continuous" include="LegendMethod.h" name="ContinuousLegendMethod">		</option> 
+            		<option xml="histogram" fortran="histogram" include="LegendMethod.h" name="HistogramLegendMethod">		</option>
+            		<documentation> type of shaded legend required 		</documentation>
+	</parameter>       
+
+	<parameter member="format" to="string" default="(automatic)" from="string" name="legend_text_format">
+     		<documentation> Format of automatic text (MAGICS Format/(AUTOMATIC)) 		</documentation>
+	</parameter>  
+        
+	<parameter from="string" name="legend_box_mode" default="automatic" member="box" to="string" values="automatic/positional">
+        	
+        			<set name="legend_box_x_position" value="positional">		</set>
+        			<set name="legend_box_x_length" value="positional">		</set>
+        			<set name="legend_box_y_position" value="positional">		</set>
+        			<set name="legend_box_y_length" value="positional">		</set>
+        			<documentation>Whether legend box is positioned automatically or by the user  		</documentation>
+	</parameter>
+	<parameter xml="font" from="string" name="legend_text_font" default="sansserif" member="font" to="string">
+			<documentation>Font name - please make sure this font is installed!		</documentation>
+	</parameter>
+	<parameter from="string" name="legend_text_font_style" default="normal" member="font_style" to="string" values="normal/bold/italic/bolditalic">
+				<documentation>Font style. Set this to an empty string in order to remove all styling.		</documentation>
+	</parameter>
+
+
+  
+	<parameter from="string" name="legend_text_font_size" default="0.3" member="font_dimension" to="string" metview_default="0.2">
+			<documentation>Font size, specified in cm or in % ex: 0.5cm or 10% 		</documentation>
+	</parameter>
+  
+
+	<parameter from="string" name="legend_text_quality" visible="off" default="medium" member="text_quality" to="string">
+			<documentation>Quality of text in legend :
+		deprecated use legend_text_font and legend_text_font_style 		</documentation>
+	</parameter>
+         
+	<parameter member="orientation" to="float" default="0" from="float" name="legend_text_orientation">
+			<documentation>Orientation of the text : horizontal by default 		</documentation>
+	</parameter>
+      
+	<parameter member="lines" to="stringarray" default="stringarray()" from="stringarray" name="legend_user_lines">
+             		<documentation> List of text for legend entries 		</documentation>        
+	</parameter>
+
+	<parameter member="columns" to="int" default="1" from="int" name="legend_column_count">
+             		<documentation> Number of columns in the legend 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_entry_plot_direction" default="automatic" member="direction" to="string" values="automatic/row/column">
+             		<documentation> Method of filling in legend entries		</documentation>        
+	</parameter>
+	<parameter from="string" name="legend_entry_plot_orientation" default="bottom_top" member="entry_orientation" to="string" values="bottom_top/top_bottom">
+             		<documentation> going from bootom to top ot top to bottom in column mode!   		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_text_composition" default="automatic_text_only" member="composition" to="string" values="automatic_text_only/user_text_only/both">
+             		<documentation> Determines whether to use automatically-generated or user-generated text (or both) in the legend 		</documentation>        
+       			<set name="legend_user_lines" value="user_text_only">		</set>
+       			<set name="legend_user_lines" value="both">		</set>
+	</parameter>
+
+	<parameter from="string" name="legend_user_text" visible="off" default="" member="text" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_1" visible="off" default="" member="text1" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter> 
+
+	<parameter from="string" name="legend_user_text_2" visible="off" default="" member="text2" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_3" visible="off" default="" member="text3" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_4" visible="off" default="" member="text4" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_5" visible="off" default="" member="text5" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_6" visible="off" default="" member="text6" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_7" visible="off" default="" member="text7" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter> 
+
+	<parameter from="string" name="legend_user_text_8" visible="off" default="" member="text8" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter> 
+
+	<parameter from="string" name="legend_user_text_9" visible="off" default="" member="text9" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>        
+	</parameter>
+
+	<parameter from="string" name="legend_user_text_10" visible="off" default="" member="text10" to="string">
+             		<documentation> User text to be associated with a legend sub-entry from a multiple entry 		</documentation>
+	</parameter> 
+
+	<parameter member="box_x" to="float" default="-1" from="float" name="legend_box_x_position">
+         		<documentation> X coordinate of lower left corner of legend box (Relative to page_x_position) 		</documentation>
+         		<migration> New Magics: Parameter legend_box_x_position sent to new Magics[TextBox].  		</migration>
+	</parameter>
+
+	<parameter member="box_y" to="float" default="-1" from="float" name="legend_box_y_position">
+         		<release>Magics++0.7		</release>
+         		<documentation> Y coordinate of lower left corner of legend box (Relative to page_y_position) 		</documentation>
+	</parameter>
+
+	<parameter member="box_width" to="float" default="-1" from="float" name="legend_box_x_length">
+         		<release>Magics++0.7		</release>
+         		<documentation> Length of legend box in X direction 		</documentation>
+	</parameter>
+
+	<parameter member="box_height" to="float" default="0" from="float" name="legend_box_y_length">
+         		<documentation> Length of legend box in Y direction 		</documentation>
+	</parameter>
+
+	<parameter member="blanking" to="bool" default="off" from="string" name="legend_box_blanking">
+         		<documentation>  blanking of legend box  		</documentation>
+	</parameter>
+
+	<parameter member="border" to="bool" default="off" from="string" name="legend_border">
+         		<documentation> Plot border around legend box  		</documentation>
+         		<set name="legend_border_colour" value="on">		</set>  
+         		<set name="legend_border_line_style" value="on">		</set>
+         		<set name="legend_border_thickness" value="on">		</set>
+	</parameter>
+  
+	<parameter member="border_line_style" to="LineStyle" default="solid" from="string" name="legend_border_line_style">
+         		<documentation> Line style of border around legend box 		</documentation>
+	</parameter>
+
+	<parameter member="border_colour" to="Colour" default="blue" from="string" name="legend_border_colour">
+          		<release>Magics++0.7		</release>    
+         		<documentation> Colour of border around text box (Full choice of colours) 		</documentation>
+	</parameter>
+
+	<parameter member="border_thickness" to="int" default="1" from="int" name="legend_border_thickness">
+          		<release>Magics++0.7		</release>    
+         		<documentation> Thickness of legend box border 		</documentation>
+	</parameter>
+
+	<parameter from="string" name="legend_wrep" visible="off" default="off" member="wrep" to="bool">
+    		<documentation> activate wrep mode for legend building		</documentation>
+	</parameter>
+	<parameter from="string" name="legend_only" visible="off" default="off" member="only" to="bool">
+    		<documentation> generate only the legend ( used for the wrep.. 		</documentation>
+	</parameter>
+	<parameter member="text_width" to="float" default="60" from="float" name="legend_entry_text_width">
+    		<documentation> Width in percent used for the text part of a legend Entry 		</documentation>
+	</parameter>
+	<parameter member="entry_border" to="bool" default="on" from="string" name="legend_entry_border">
+         			<documentation> add a border to the graphical part of each legend entry 		</documentation>
+         			<set name="legend_entry_border_colour" value="on">		</set>
+   	</parameter>  
+ 	<parameter member="entry_border_colour" to="Colour" default="black" from="string" name="legend_entry_border_colour">
+         			<documentation> border colour 		</documentation>
+   	</parameter>  
+</class></magics>
diff --git a/src/params/LevelListSelectionType.xml b/src/params/LevelListSelectionType.xml
new file mode 100644
index 0000000..ce434a3
--- /dev/null
+++ b/src/params/LevelListSelectionType.xml
@@ -0,0 +1,13 @@
+<magics>
+<class inherits="LevelSelection" xmltag="list" name="LevelListSelectionType" directory="visualisers" prefix="contour" action="pcont">
+ 	<documentation>Users may supply a list of the contour levels to be plotted 
+ by setting the parameter CONTOUR_LEVEL_SELECTION_TYPE to 'LEVEL_LIST' 
+ and passing an array of contour level values. 
+ This method enables users to plot contours with irregular intervals.
+ 	</documentation>
+ 	<parameter xml="level_list" from="floatarray" name="contour_level_list" default="floatarray()" member="list" to="floatarray">
+         		<documentation> List of contour levels to be plotted 		</documentation>
+         		<migration> New Magics: Parameter contour_level_list sent to new Magics[LevelListSelectionType].  		</migration>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/LevelSelection.xml b/src/params/LevelSelection.xml
new file mode 100644
index 0000000..401c7b6
--- /dev/null
+++ b/src/params/LevelSelection.xml
@@ -0,0 +1,24 @@
+<magics>
+<class action="pcont" directory="visualisers" prefix="contour" name="LevelSelection" xml_tag="level">
+  	<documentation>  	</documentation>
+
+  	<parameter from="float" name="contour_max_level" default="1.0e+21" member="max" to="float" inherit_parent_reqs="no">
+         		<documentation> Highest level for contours to be drawn 		</documentation>
+         		<migration> New Magics: Parameter contour_max_level sent to new Magics[LevelSelection].  		</migration>
+         		<release>Magics++0.3		</release>
+  	</parameter>
+
+  	<parameter from="float" name="contour_min_level" default="-1.0e+21" member="min" to="float" inherit_parent_reqs="no">
+         		<documentation> Lowest level for contours to be drawn 		</documentation>
+         		<migration> New Magics: Parameter contour_min_level sent to new Magics[LevelSelection].  		</migration>
+         		<release>Magics++0.3		</release>
+  	</parameter>
+
+  	<parameter from="float" name="contour_shade_max_level" default="1.0e+21" member="max_shade" to="float" inherit_parent_reqs="no">
+         		<documentation> Highest level for contours to be shaded 		</documentation>
+  	</parameter>
+
+  	<parameter from="float" name="contour_shade_min_level" default="-1.0e+21" member="min_shade" to="float" inherit_parent_reqs="no">
+         		<documentation> Lowest level for contours to be shaded 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/ListColourTechnique.xml b/src/params/ListColourTechnique.xml
new file mode 100644
index 0000000..ad4584c
--- /dev/null
+++ b/src/params/ListColourTechnique.xml
@@ -0,0 +1,8 @@
+<magics>
+<class inherits="ColourTechnique" implements="ColourTableDefinitionListInterface" xmltag="list" name="ListColourTechnique" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade" action="pcont">
+	   
+  	<parameter from="stringarray" name="contour_shade_colour_list" default="stringarray()" member="values" to="stringarray" colourlist="on">
+         		<documentation> List of colours to be used in contour shading. 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/ListHeightTechnique.xml b/src/params/ListHeightTechnique.xml
new file mode 100644
index 0000000..02f2394b
--- /dev/null
+++ b/src/params/ListHeightTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="HeightTechnique" include="HeightTechnique.h" name="ListHeightTechnique"/></magics>
diff --git a/src/params/LogarithmicAxisMethod.xml b/src/params/LogarithmicAxisMethod.xml
new file mode 100644
index 0000000..ba2e4b9
--- /dev/null
+++ b/src/params/LogarithmicAxisMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="AxisMethod" include="AxisMethod.h" name="LogarithmicAxisMethod"/></magics>
diff --git a/src/params/LogoPlotting.xml b/src/params/LogoPlotting.xml
new file mode 100644
index 0000000..b31f502
--- /dev/null
+++ b/src/params/LogoPlotting.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="NoLogoPlotting" include="LogoPlotting.h" directory="common" xmltag="logo" name="LogoPlotting"/></magics>
diff --git a/src/params/LookupTableMode.xml b/src/params/LookupTableMode.xml
new file mode 100644
index 0000000..676b899
--- /dev/null
+++ b/src/params/LookupTableMode.xml
@@ -0,0 +1,19 @@
+<magics>
+<class directory="visualisers" prefix="image" name="LookupTableMode">
+
+  	<parameter member="minLevel" to="int" default="-1.0e+21" from="int" name="image_min_level">
+         		<documentation> The lowest pixel value to be plotted  		</documentation>
+         		<migration> New Magics: Parameter image_min_level sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter member="maxLevel" to="int" default="1.0e+21" from="int" name="image_max_level">
+         		<documentation> The highest pixel value to be plotted  		</documentation>
+         		<migration> New Magics: Parameter image_max_level sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter member="outlayer" to="float" default="0" from="float" name="image_outlayer_rejection">
+         		<documentation> The outlayer rejection factor 		</documentation>
+         		<migration> New Magics: Parameter image_outlayer_rejection sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/LowHiLo.xml b/src/params/LowHiLo.xml
new file mode 100644
index 0000000..d4545c0
--- /dev/null
+++ b/src/params/LowHiLo.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="HiLoBase" xmltag="low" name="LowHiLo" directory="visualisers" action="pcont" include="HiLo.h"/></magics>
diff --git a/src/params/MagnifierVisitor.xml b/src/params/MagnifierVisitor.xml
new file mode 100644
index 0000000..09bc703
--- /dev/null
+++ b/src/params/MagnifierVisitor.xml
@@ -0,0 +1,53 @@
+<magics>
+<class directory="basic" inherits="NoMagnifierVisitor" name="MagnifierVisitor">
+	<parameter member="symbol_name" to="string" default="magics_3" from="string" name="magnifier_symbol_name">
+         		<documentation for_docs="no"> Mv4: Symbol used in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter> 
+
+	<parameter member="hidden_symbol_name" to="string" default="magics_3" from="string" name="magnifier_hidden_symbol_name">
+         		<documentation for_docs="no"> Mv4: Symbol used in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+    
+	<parameter member="symbol_colour" to="Colour" default="red" from="string" name="magnifier_symbol_colour">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter> 
+
+	<parameter member="hidden_symbol_colour" to="Colour" default="navy" from="string" name="magnifier_hidden_symbol_colour">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+
+	<parameter member="symbol_height" to="float" default="0.2" from="float" name="magnifier_symbol_height">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+
+	<parameter member="hidden_symbol_height" to="float" default="0.1" from="float" name="magnifier_hidden_symbol_height">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+
+	<parameter member="text_font_name" to="string" default="sanserif" from="string" name="magnifier_text_font_name">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+
+	<parameter member="text_font_size" to="float" default="0.2" from="float" name="magnifier_text_font_size">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+
+	<parameter member="text_font_colour" to="Colour" default="navy" from="string" name="magnifier_text_font_colour">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>  
+
+	<parameter member="text_format" to="string" default="(automatic)" from="string" name="magnifier_text_format">
+         		<documentation for_docs="no"> Mv4: Colour of the symbol in the magnifier 		</documentation>
+         		<release>Magics++2.8		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/MapGenDecoder.xml b/src/params/MapGenDecoder.xml
new file mode 100644
index 0000000..9bbba3b
--- /dev/null
+++ b/src/params/MapGenDecoder.xml
@@ -0,0 +1,11 @@
+<magics>
+<class perfix="mapgen" action="pmapgen" directory="decoders" xmltag="mapgen" name="MapGenDecoder">
+   	<parameter member="path" to="string" default="" from="string" name="mapgen_input_file_name">
+         		<release>Magics++2.1		</release>
+         		<documentation> The name of the input file containing the MapGen data 		</documentation>
+  	</parameter>
+   	<parameter member="record" to="int" default="-1" from="int" name="mapgen_record">
+         		<release>Magics++2.1		</release>
+         		<documentation> The name of the input file containing the MapGen data to plot 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/MarkerShadingTechnique.xml b/src/params/MarkerShadingTechnique.xml
new file mode 100644
index 0000000..e3b6d46
--- /dev/null
+++ b/src/params/MarkerShadingTechnique.xml
@@ -0,0 +1,17 @@
+<magics>
+<class inherits="ShadingTechnique" xmltag="marker" name="MarkerShadingTechnique" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade" action="pcont">
+	
+  	<parameter member="colour" to="stringarray" default="stringarray()" from="stringarray" name="contour_shade_colour_table">
+         		<documentation> Colour table to be used with MARKER shading technique 		</documentation>
+  	</parameter>
+
+  	<parameter member="height" to="floatarray" default="floatarray()" from="floatarray" name="contour_shade_height_table">
+         		<documentation> Height table to be used with MARKER shading technique 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+
+  	<parameter member="marker" to="intarray" default="intarray()" from="intarray" name="contour_shade_marker_table">
+         		<documentation> Marker table to be used with MARKER shading technique 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/MarkerValuePlotMethod.xml b/src/params/MarkerValuePlotMethod.xml
new file mode 100644
index 0000000..604bc0a
--- /dev/null
+++ b/src/params/MarkerValuePlotMethod.xml
@@ -0,0 +1,25 @@
+<magics>
+<class inherits="ValuePlotMethod" xmltag="marker" name="MarkerValuePlotMethod" directory="visualisers" prefix="contour/contour_grid_value/contour_grid_value" action="pcont" doc_inherits="no" inherit_parent_reqs="no">
+
+	<parameter member="markerHeight" to="float" default="0.25" from="float" name="contour_grid_value_marker_height">
+         		<documentation> Height of grid point markers 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+  	<parameter member="markerColour" to="Colour" default="red" from="string" name="contour_grid_value_marker_colour">
+         		<documentation> Colour of grid point markers (Full choice of colours) 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+
+  	<parameter member="markerQuality" to="string" default="low" from="string" name="contour_grid_value_marker_qual">
+         		<documentation> (LOW/MEDIUM/HIGH) 		</documentation>
+         		<release>0.2		</release>
+	 
+	</parameter>
+
+  	<parameter member="markerIndex" to="int" default="3" from="int" name="contour_grid_value_marker_index">
+         		<documentation> Table number of marker index. See Appendix for Plotting Attributes 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+  
+</class></magics>
diff --git a/src/params/MercatorProjection.xml b/src/params/MercatorProjection.xml
new file mode 100644
index 0000000..f70bbb0
--- /dev/null
+++ b/src/params/MercatorProjection.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="GeoRectangularProjection" xmltag="rectangular" name="MercatorProjection" directory="common" prefix="subpage" action="projection" include="GeoRectangularProjection.h"/></magics>
diff --git a/src/params/MetaData.xml b/src/params/MetaData.xml
new file mode 100644
index 0000000..de1ece0
--- /dev/null
+++ b/src/params/MetaData.xml
@@ -0,0 +1,27 @@
+<magics>
+<class directory="common" prefix="metadata" xmltag="meta" name="MetaData">
+  	<documentation>	</documentation>
+  
+  	<parameter xml="path" from="string" name="metadata_path" default="meta.xml" member="path" to="string">
+          		<release>Magics 1.1		</release>
+         		<documentation> Path of the Meta data File 		</documentation>
+  	</parameter>
+  	<parameter member="javascript" to="string" default="" from="string" name="javascript_path">
+          		<release>Magics 2.6		</release>
+         		<documentation> Path of the javascript 		</documentation>
+  	</parameter>
+  	<parameter member="profile" to="string" default="" from="string" name="profile_path">
+          		<release>Magics 2.6		</release>
+         		<documentation> Path of the javascript 		</documentation>
+  	</parameter>
+  	<parameter member="world_file" to="string" default="" from="string" name="world_file_path">
+          		<release>Magics 2.6		</release>
+         		<documentation> if defined,  a world file description will be generated 		</documentation>
+  	</parameter>
+  	<parameter member="efi" to="string" default="" from="string" name="efi_path">     
+         		<documentation> Path of the Meta data File 		</documentation>
+  	</parameter> 
+  	<parameter member="efi_template" to="string" default="efi_template.js" from="string" name="efi_template">     
+         		<documentation> Path of the Meta data File 		</documentation>
+  	</parameter> 
+</class></magics>
diff --git a/src/params/MetgramCurve.xml b/src/params/MetgramCurve.xml
new file mode 100644
index 0000000..316db78
--- /dev/null
+++ b/src/params/MetgramCurve.xml
@@ -0,0 +1,24 @@
+<magics>
+<class action="pmetgram" directory="visualisers" prefix="metgram" xmltag="metgraph" name="MetgramCurve">
+    	<documentation>
+        The metgram curve will plot the metgram a s a curve! 
+    	</documentation>
+        	<parameter member="style" to="LineStyle" default="solid" from="string" name="metgram_curve_line_style">           
+            		<documentation> LineStyle of the curve  		</documentation>
+        	</parameter>
+        	<parameter member="style2" to="LineStyle" default="solid" from="string" name="metgram_curve2_line_style">           
+            		<documentation> LineStyle of the second curve  		</documentation>
+        	</parameter>
+        	<parameter member="colour" to="Colour" default="red" from="string" name="metgram_curve_colour">           
+            		<documentation> Colour of the curve  		</documentation>
+        	</parameter>
+         	<parameter member="colour2" to="Colour" default="blue" from="string" name="metgram_curve2_colour">           
+            		<documentation> Colour of the second curve  		</documentation>
+        	</parameter>
+        	<parameter member="thickness" to="int" default="2" from="int" name="metgram_curve_thickness">           
+            		<documentation> Thickness of the curve  		</documentation>
+        	</parameter>
+        	<parameter member="thickness2" to="int" default="2" from="int" name="metgram_curve2_thickness">           
+            		<documentation> Thickness of the second curve  		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/MetgramFlags.xml b/src/params/MetgramFlags.xml
new file mode 100644
index 0000000..5026a76
--- /dev/null
+++ b/src/params/MetgramFlags.xml
@@ -0,0 +1,15 @@
+<magics>
+<class action="pmetgram" directory="visualisers" prefix="metgram" xmltag="metflags" name="MetgramFlags">
+    	<documentation>
+        The metgram curve will plot the metgram a s a curve! 
+    	</documentation>
+        	<parameter member="colour" to="Colour" default="red" from="string" name="metgram_flag_colour">           
+            		<documentation> Colour of Flag  		</documentation>
+        	</parameter>
+        	<parameter member="frequency" to="int" default="1" from="int" name="metgram_flag_frequency">           
+            		<documentation> Frequency to plot the flags  		</documentation>
+        	</parameter>
+        	<parameter member="length" to="float" default="0.5" from="float" name="metgram_flag_length">           
+            		<documentation> length of the flag  		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/MetgramGraph.xml b/src/params/MetgramGraph.xml
new file mode 100644
index 0000000..2374345
--- /dev/null
+++ b/src/params/MetgramGraph.xml
@@ -0,0 +1,12 @@
+<magics>
+<class action="pmetgram" directory="visualisers" prefix="metgram" xmltag="metgraph" name="MetgramGraph">
+		<documentation>
+		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
+		</documentation>
+        	<parameter member="style" to="MetgramStyle" default="curve" from="string" name="metgram_plot_style">           
+            		<documentation> Type of plot  		</documentation>
+            		<option xml="bar" fortran="bar" include="MetgramStyle.h" name="MetgramBar">		</option>
+            		<option xml="flags" fortran="flags" include="MetgramStyle.h" name="MetgramFlags">		</option>
+					<option xml="curve" fortran="curve" include="MetgramStyle.h" name="MetgramCurve">		</option>
+        	</parameter>
+</class></magics>
diff --git a/src/params/MingDriver.xml b/src/params/MingDriver.xml
new file mode 100644
index 0000000..b1a7e66
--- /dev/null
+++ b/src/params/MingDriver.xml
@@ -0,0 +1,7 @@
+<magics>
+<class action="Ming" directory="drivers" inherits="BaseDriver" name="MingDriver">
+		<documentation>
+		These are the attributes of the Ming output driver. This driver is still in the developing stage! 
+		</documentation>
+
+</class></magics>
diff --git a/src/params/MvRootSceneNode.xml b/src/params/MvRootSceneNode.xml
new file mode 100644
index 0000000..05e3a8a
--- /dev/null
+++ b/src/params/MvRootSceneNode.xml
@@ -0,0 +1,52 @@
+<magics>
+<class xmltag="super_page" name="MvRootSceneNode" directory="common" prefix="super_page" action="pnew" include="RootSceneNode.h">
+
+  	<parameter member="width" to="float" default="29.7" from="float" name="super_page_x_length">
+           		<release>Magics++0.1		</release>
+         		<documentation> Horizontal length of super page 		</documentation>
+  	</parameter>
+
+  	<parameter member="height" to="float" default="21.0" from="float" name="super_page_y_length">
+           		<release>Magics++0.1		</release>
+         		<documentation> Vertical length of super page 		</documentation>
+  	</parameter>
+
+  	<parameter member="frame" to="bool" default="off" from="string" name="super_page_frame">
+         		<release>Magics++0.5		</release>
+         		<documentation> Plot frame around super page (ON/OFF) 		</documentation>
+  	</parameter>
+
+  	<parameter member="colour" to="Colour" default="blue" from="string" name="super_page_frame_colour">
+           		<release>Magics++0.5		</release>
+         		<documentation> Colour of super page frame 		</documentation>
+  	</parameter>
+
+  	<parameter member="style" to="LineStyle" default="solid" from="string" name="super_page_frame_line_style">
+         		<release>Magics++0.5		</release>
+         		<documentation> Style of super page frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) 		</documentation>
+  	</parameter>
+
+  	<parameter member="thickness" to="int" default="1" from="int" name="super_page_frame_thickness">
+         		<documentation> Thickness of super page frame 		</documentation>
+         		<release>Magics++0.5		</release>
+  	</parameter>
+  
+    	<parameter member="plot_layout" to="string" default="automatic" from="string" name="layout">
+         		<documentation> Type of page layout (POSITIONAL/AUTOMATIC) 		</documentation>
+   	</parameter>
+
+  	<parameter member="plot_start" to="string" default="bottom" from="string" name="plot_start">
+         		<documentation> Position of first page plotted (BOTTOM/TOP) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+
+  	<parameter member="plot_direction" to="string" default="vertical" from="string" name="plot_direction">
+         		<documentation> Direction of plotting (HORIZONTAL/VERTICAL) 		</documentation>
+         		<release>Magics++0.2		</release>
+  	</parameter>
+  
+  	<parameter member="legend" to="bool" default="off" from="string" name="legend">
+         		<documentation>Turn on/off legend 		</documentation>
+         		<release>Improved in Magics2.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfDecoder.xml b/src/params/NetcdfDecoder.xml
new file mode 100644
index 0000000..51e8296
--- /dev/null
+++ b/src/params/NetcdfDecoder.xml
@@ -0,0 +1,26 @@
+<magics>
+<class action="pnetcdf" directory="decoders" prefix="netcdf" xmltag="netcdf" name="NetcdfDecoder">
+		<documentation>
+       This handles the decoding of NetCDF Files.
+		</documentation>
+
+    
+
+     	<parameter member="interpretor" to="NetcdfInterpretor" default="matrix" from="string" name="netcdf_type">
+        		<option xml="matrix" fortran="matrix" include="NetcdfMatrixInterpretor.h" name="NetcdfMatrixInterpretor">		</option>
+                
+           		<option xml="geomatrix" fortran="geomatrix" include="NetcdfGeoMatrixInterpretor.h" name="NetcdfGeoMatrixInterpretor">		</option>
+          
+          		<option xml="vector" fortran="vector" include="NetcdfVectorInterpretor.h" name="NetcdfVectorInterpretor">		</option>
+           		<option xml="geovector" fortran="geovector" include="NetcdfVectorInterpretor.h" name="NetcdfGeoVectorInterpretor">		</option>
+           		<option xml="geopolarmatrix" fortran="geopolarmatrix" include="NetcdfVectorInterpretor.h" name="NetcdfGeoPolarMatrixInterpretor">		</option>
+        
+        		<option xml="geopoint" fortran="geopoint" include="NetcdfGeopointsInterpretor.h" name="NetcdfGeopointsInterpretor">		</option>  
+          		<option fortran="xypoint" include="NetcdfGeopointsInterpretor.h" name="NetcdfXYpointsInterpretor">		</option>  
+         		<option xml="complex_matrix" fortran="complex_matrix" include="NetcdfOrcaInterpretor.h" name="NetcdfOrcaInterpretor">		</option>
+
+        		<release>Magics++0.1		</release>
+        		<release_info>Only matrix is implemented		</release_info>
+        		<documentation>Type of data arrangement in the file (possible values: matrix) 		</documentation>
+    	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfGeoMatrixInterpretor.xml b/src/params/NetcdfGeoMatrixInterpretor.xml
new file mode 100644
index 0000000..e5cb6e2
--- /dev/null
+++ b/src/params/NetcdfGeoMatrixInterpretor.xml
@@ -0,0 +1,27 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="geopoints" name="NetcdfGeoMatrixInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf">
+        	<parameter member="latitude" to="string" default="latitude" from="string" name="netcdf_latitude_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name representing the latitude dimension		</documentation>
+        	</parameter> 
+         	<parameter member="longitude" to="string" default="longitude" from="string" name="netcdf_longitude_variable">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>Variable name representing the longitude dimension		</documentation>
+        	</parameter>
+         	<parameter member="longitude_sample" to="int" default="1" from="int" name="netcdf_longitude_sample">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>sample the input data by taking aa longitude every nth longitude		</documentation>
+        	</parameter>
+         	<parameter member="latitude_sample" to="int" default="1" from="int" name="netcdf_latitude_sample">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>sample the input data by taking a latitude every nth latitude		</documentation>
+        	</parameter>
+        
+            	<parameter member="primary_index" to="string" default="longitude" from="string" name="netcdf_matrix_primary_index">
+             		<release>Magics++2.4		</release>
+            		<documentation> Primary index latitude/longitude		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfGeoPolarMatrixInterpretor.xml b/src/params/NetcdfGeoPolarMatrixInterpretor.xml
new file mode 100644
index 0000000..23401a4
--- /dev/null
+++ b/src/params/NetcdfGeoPolarMatrixInterpretor.xml
@@ -0,0 +1,19 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="netcdf" name="NetcdfGeoPolarMatrixInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf" include="NetcdfVectorInterpretor.h">
+        	<parameter member="speed" to="string" default="" from="string" name="netcdf_speed_component_variable">
+              		<release>Magics++2.6		</release>
+              		<documentation>Variable name representing the speed component of the vector		</documentation>
+        	</parameter> 
+         	<parameter member="direction" to="string" default="" from="string" name="netcdf_direction_component_variable">
+             		<release>Magics++2.6		</release>
+            		<documentation>Variable name representing the direction component of the vector		</documentation>
+        	</parameter>
+        	<parameter member="latitude" to="string" default="latitude" from="string" name="netcdf_latitude_variable">
+              
+              		<documentation>Variable name representing the latitude dimension		</documentation>
+        	</parameter> 
+         	<parameter member="longitude" to="string" default="longitude" from="string" name="netcdf_longitude_variable">
+            
+            		<documentation>Variable name representing the longitude dimension		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfGeoVectorInterpretor.xml b/src/params/NetcdfGeoVectorInterpretor.xml
new file mode 100644
index 0000000..830bf5e
--- /dev/null
+++ b/src/params/NetcdfGeoVectorInterpretor.xml
@@ -0,0 +1,20 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="geopoints" name="NetcdfGeoVectorInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf" include="NetcdfVectorInterpretor.h">
+        	<parameter member="x_component" to="string" default="" from="string" name="netcdf_x_component_variable">
+              		<release>Magics++2.6		</release>
+              		<documentation>Variable name representing the x component of the vector		</documentation>
+        	</parameter> 
+         	<parameter member="y_component" to="string" default="" from="string" name="netcdf_y_component_variable">
+             		<release>Magics++2.6		</release>
+            		<documentation>Variable name representing the y component of the vector		</documentation>
+        	</parameter>
+        	<parameter member="latitude" to="string" default="latitude" from="string" name="netcdf_latitude_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name representing the latitude dimension		</documentation>
+        	</parameter> 
+         	<parameter member="longitude" to="string" default="longitude" from="string" name="netcdf_longitude_variable">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>Variable name representing the longitude dimension		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfGeopointsInterpretor.xml b/src/params/NetcdfGeopointsInterpretor.xml
new file mode 100644
index 0000000..6961a8d
--- /dev/null
+++ b/src/params/NetcdfGeopointsInterpretor.xml
@@ -0,0 +1,11 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="geopoints" name="NetcdfGeopointsInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf">
+  	<parameter member="latitude" to="string" default="latitude" from="string" name="netcdf_latitude_variable">
+             
+              		<documentation>Variable name representing the x dimension		</documentation>
+        	</parameter> 
+         	<parameter member="longitude" to="string" default="longitude" from="string" name="netcdf_longitude_variable">
+            
+            		<documentation>Variable name representing the y dimension		</documentation>
+        	</parameter>
+ </class></magics>
diff --git a/src/params/NetcdfInterpretor.xml b/src/params/NetcdfInterpretor.xml
new file mode 100644
index 0000000..717a849
--- /dev/null
+++ b/src/params/NetcdfInterpretor.xml
@@ -0,0 +1,51 @@
+<magics>
+<class action="pnetcdf" directory="decoders" prefix="netcdf" xmltag="netcdf" name="NetcdfInterpretor">
+		<documentation>
+		This object contains this attributes to set how to load the data from the file.
+        It is possible to load only a subarray of the data, by setting the dimensions.
+		</documentation>
+        	<parameter member="path" to="string" default="" from="string" name="netcdf_filename">
+            		<release>Magics++0.1		</release>
+            		<documentation>Path of the file to be read		</documentation>
+        	</parameter>
+
+        	<parameter member="dimension" to="stringarray" default="stringarray()" from="stringarray" name="netcdf_dimension_setting">
+            		<metview default="" class="">  		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>The dimensions of the data to load, eg. p/100/10		</documentation>
+        	</parameter>
+        	<parameter from="string" name="netcdf_dimension_setting_method" default="value" member="dimension_method" to="string" values="index/value">
+            
+             		<release>Magics++0.1		</release>
+            		<documentation>To specify a dimension the user can choose the method value: in that case he will pass to Magics the value of the dimension (as defined in the variable), or index : index if the dimesion in the array		</documentation>
+        	</parameter>
+        
+         	<parameter member="field" to="string" default="" from="string" name="netcdf_value_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name to plot		</documentation>
+        	</parameter> 
+       
+          	<parameter member="scaling" to="float" default="1" from="float" name="netcdf_field_scaling_factor">
+            		<release>Magics++0.1		</release>
+            		<documentation>Scaling factor to multiply the field value by		</documentation>
+        	</parameter>
+         	<parameter member="offset" to="float" default="0" from="float" name="netcdf_field_add_offset">
+            		<release>Magics++0.1		</release>
+            		<documentation>Offset added to the field values		</documentation>
+           	</parameter>
+           	<parameter member="missing_attribute" to="string" default="missing_value" from="string" name="netcdf_missing_attribute">
+            		<release>Magics++2.15		</release>
+            		<documentation>Attribute to read to know the value used to indicate a missing value in the data		</documentation>
+           	</parameter>  
+            	<parameter member="reference" to="string" default="0" from="string" name="netcdf_reference_date">
+            		<release>Magics++0.7		</release>
+            		<documentation>attributes name to find the refernce date		</documentation>
+           	</parameter> 
+           	<parameter member="suppress_below" to="float" default="-1.0e+21" from="float" name="netcdf_field_suppress_below">
+         		<documentation> Values in the input field(s) below this value are to be suppressed, i.e. not to be taken into consideration for plotting purposes 		</documentation>
+  	</parameter>
+
+  	<parameter member="suppress_above" to="float" default="1.0e+21" from="float" name="netcdf_field_suppress_above">
+         		<documentation> Values in the input field(s) above this value are to be suppressed, i.e not to be taken into consideration for plotting purposes 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfMatrixInterpretor.xml b/src/params/NetcdfMatrixInterpretor.xml
new file mode 100644
index 0000000..4443dec
--- /dev/null
+++ b/src/params/NetcdfMatrixInterpretor.xml
@@ -0,0 +1,32 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="geopoints" name="NetcdfMatrixInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf">
+        
+         	<parameter member="y" to="string" default="y" from="string" name="netcdf_y_variable">
+             		<release>Magics++0.1		</release>
+            		<documentation>Variable name representing the y dimension		</documentation>
+        	</parameter>
+        	<parameter member="x" to="string" default="x" from="string" name="netcdf_x_variable">
+             		<release>Magics++0.1		</release>
+        		<documentation>Variable name representing the x dimension		</documentation>
+        	</parameter> 
+        	<parameter member="aux_x" to="string" default="" from="string" name="netcdf_x_auxiliary_variable">
+             		<release>Magics++0.1		</release>
+        		<documentation>variable can used to define geoline definition.		</documentation>
+        	</parameter>  
+         	<parameter member="geo_x_convention" to="string" default="lonlat" from="string" name="netcdf_x_geoline_convention">
+        
+        		<documentation>Geoline Convention used lonlat or latlon		</documentation>
+        	</parameter>  
+          	<parameter member="geo_y_convention" to="string" default="lonlat" from="string" name="netcdf_y_geoline_convention">
+        
+        		<documentation>Geoline Convention used lonlat or latlon		</documentation>
+        	</parameter>  
+        	<parameter member="aux_y" to="string" default="" from="string" name="netcdf_y_auxiliary_variable">
+             		<release>Magics++0.1		</release>
+        		<documentation>variable can used to define geoline definition.		</documentation>
+        	</parameter>
+            	<parameter member="primary_index" to="string" default="longitude" from="string" name="netcdf_matrix_primary_index">
+             		<release>Magics++2.4		</release>
+            		<documentation> Primary index latitude/longitude		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfOrcaInterpretor.xml b/src/params/NetcdfOrcaInterpretor.xml
new file mode 100644
index 0000000..4732e11
--- /dev/null
+++ b/src/params/NetcdfOrcaInterpretor.xml
@@ -0,0 +1,27 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="geopoints" name="NetcdfOrcaInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf">
+        	<parameter member="latitude" to="string" default="latitude" from="string" name="netcdf_latitude_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name representing the latitude dimension		</documentation>
+        	</parameter> 
+         	<parameter member="longitude" to="string" default="longitude" from="string" name="netcdf_longitude_variable">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>Variable name representing the longitude dimension		</documentation>
+        	</parameter>
+         	<parameter member="longitude_sample" to="int" default="1" from="int" name="netcdf_longitude_sample">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>sample the input data by taking aa longitude every nth longitude		</documentation>
+        	</parameter>
+         	<parameter member="latitude_sample" to="int" default="1" from="int" name="netcdf_latitude_sample">
+            		<metview default="" class="">   		</metview>
+             		<release>Magics++0.1		</release>
+            		<documentation>sample the input data by taking a latitude every nth latitude		</documentation>
+        	</parameter>
+       
+            	<parameter member="primary_index" to="string" default="longitude" from="string" name="netcdf_matrix_primary_index">
+             		<release>Magics++2.4		</release>
+            		<documentation> Primary index latitude/longitude		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfVectorInterpretor.xml b/src/params/NetcdfVectorInterpretor.xml
new file mode 100644
index 0000000..9d56a49
--- /dev/null
+++ b/src/params/NetcdfVectorInterpretor.xml
@@ -0,0 +1,20 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="geopoints" name="NetcdfVectorInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf">
+        	<parameter member="x_component" to="string" default="" from="string" name="netcdf_x_component_variable">
+              		<release>Magics++2.6		</release>
+              		<documentation>Variable name representing the x component of the vector		</documentation>
+        	</parameter> 
+         	<parameter member="y_component" to="string" default="" from="string" name="netcdf_y_component_variable">
+             		<release>Magics++2.6		</release>
+            		<documentation>Variable name representing the y component of the vector		</documentation>
+        	</parameter>
+        	<parameter member="y" to="string" default="y" from="string" name="netcdf_y_position_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name representing the x dimension		</documentation>
+        	</parameter> 
+         	<parameter member="x" to="string" default="x" from="string" name="netcdf_x_position_variable">
+            		<metview default="" class="">   		</metview>
+            
+            		<documentation>Variable name representing the y dimension		</documentation>
+        	</parameter>
+</class></magics>
diff --git a/src/params/NetcdfXYpointsInterpretor.xml b/src/params/NetcdfXYpointsInterpretor.xml
new file mode 100644
index 0000000..deda93a
--- /dev/null
+++ b/src/params/NetcdfXYpointsInterpretor.xml
@@ -0,0 +1,21 @@
+<magics>
+<class inherits="NetcdfInterpretor" xmltag="xypoints" name="NetcdfXYpointsInterpretor" directory="decoders" prefix="netcdf" action="pnetcdf" include="NetcdfGeopointsInterpretor.h">
+  	<parameter member="x" to="string" default="x" from="string" name="netcdf_x_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name for the x values		</documentation>
+        	</parameter> 
+        	<parameter member="x2" to="string" default="x2" from="string" name="netcdf_x2_variable">
+              		<release>Magics++0.1		</release>
+              		<documentation>Variable name for the auxiliary x values (used in CurveArea)		</documentation>
+        	</parameter> 
+         	<parameter member="y" to="string" default="y" from="string" name="netcdf_y_variable">
+            
+             		<release>Magics++0.1		</release>
+            		<documentation>Variable name for the y values		</documentation>
+        	</parameter> 
+        	<parameter member="y2" to="string" default="y2" from="string" name="netcdf_y2_variable">
+            
+             		<release>Magics++0.1		</release>
+            		<documentation>Variable name for the auxiliary y values (used in CurveArea)		</documentation>
+        	</parameter>
+ </class></magics>
diff --git a/src/params/NoBinningObject.xml b/src/params/NoBinningObject.xml
new file mode 100644
index 0000000..901bb03
--- /dev/null
+++ b/src/params/NoBinningObject.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="BinningObject" xmltag="binning" name="NoBinningObject" directory="decoders" prefix="binning" action="pbinning" include="BinningObject.h" doc_inherits="no"/></magics>
diff --git a/src/params/NoBoundaries.xml b/src/params/NoBoundaries.xml
new file mode 100644
index 0000000..ebe65ab
--- /dev/null
+++ b/src/params/NoBoundaries.xml
@@ -0,0 +1,4 @@
+<magics>
+<class action="pcoast" directory="visualisers" xmltag="noboundaries" include="Boundaries.h" name="NoBoundaries">
+   	<documentation>This object suppresses the political boundaries	</documentation>
+</class></magics>
diff --git a/src/params/NoBoxPlotBoxBorder.xml b/src/params/NoBoxPlotBoxBorder.xml
new file mode 100644
index 0000000..7a0be85
--- /dev/null
+++ b/src/params/NoBoxPlotBoxBorder.xml
@@ -0,0 +1,4 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_median" xmltag="median" name="NoBoxPlotBoxBorder" include='BoxPlotItem.h'>
+  </class>
+</magics>
diff --git a/src/params/NoBoxPlotMedian.xml b/src/params/NoBoxPlotMedian.xml
new file mode 100644
index 0000000..89a61b2
--- /dev/null
+++ b/src/params/NoBoxPlotMedian.xml
@@ -0,0 +1,4 @@
+<magics>
+<class directory="visualisers" prefix="boxplot/boxplot_median" xmltag="median" name="NoBoxPlotMedian" include='BoxPlotItem.h'>
+  </class>
+</magics>
diff --git a/src/params/NoCalmIndicator.xml b/src/params/NoCalmIndicator.xml
new file mode 100644
index 0000000..43749d5
--- /dev/null
+++ b/src/params/NoCalmIndicator.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="CalmIndicator" directory="visualisers" include="CalmIndicator.h" name="NoCalmIndicator"/></magics>
diff --git a/src/params/NoCities.xml b/src/params/NoCities.xml
new file mode 100644
index 0000000..aa325ec
--- /dev/null
+++ b/src/params/NoCities.xml
@@ -0,0 +1,4 @@
+<magics>
+<class action="pcoast" directory="visualisers" xmltag="noboundaries" include="Cities.h" name="NoCities">
+   	<documentation>This object suppresses the plotting of cities.	</documentation>
+</class></magics>
diff --git a/src/params/NoCoastPlotting.xml b/src/params/NoCoastPlotting.xml
new file mode 100644
index 0000000..5be93c3
--- /dev/null
+++ b/src/params/NoCoastPlotting.xml
@@ -0,0 +1,81 @@
+<magics>
+<class xmltag="coast" name="NoCoastPlotting" used_by="Coastlines" directory="visualisers" prefix="map/map_coastline" action="pcoast" include="CoastPlotting.h">
+		<documentation>
+		Coastlines may be turned off by setting the parameter MAP_COASTLINE  to 'OFF' , 
+        the default being 'ON' . 
+        The parameters MAP_COASTLINE_STYLE  and MAP_COASTLINE_COLOUR control line style and colour respectively.
+        The default value for the coastlines have been changed from YELLOW to BLACK.
+		</documentation>
+
+
+
+
+	<parameter from="string" name="map_coastline_resolution" default="automatic" doc_class="CoastPlotting" member="resolution" to="string" values="automatic/low/medium/high">
+ 		<documentation>Select one of the pre-defined resolutions: automatic, low, medium, and high.
+  When set to AUTOMATIC, a resolution appropriate to the scale of the map is chosen in order to balance quality with speed.
+ 		</documentation>
+ 
+ 
+ 		<release>1.1		</release>
+	</parameter>
+
+
+       
+	<parameter from="string" name="map_coastline_land_shade" default="off" doc_class="CoastPlotting" member="land" to="bool">
+ 		<documentation>Sets if land areas are shaded		</documentation>
+   		<set name="map_coastline_land_shade_colour" value="on">		</set>
+	</parameter>
+
+	<parameter xml="colour" priority="0.2" from="string" name="map_coastline_land_shade_colour" default="green" doc_class="CoastPlotting" member="land_colour" to="Colour">
+ 		<documentation>Colour of Shading of land areas		</documentation>
+	</parameter>
+
+	<parameter from="string" name="map_coastline_sea_shade" default="off" doc_class="CoastPlotting" member="sea" to="bool">
+ 		<documentation>Shade the sea areas		</documentation>
+   		<set name="map_coastline_sea_shade_colour" value="on">		</set>
+  	</parameter>    
+
+	<parameter xml="colour" priority="0.2" from="string" name="map_coastline_sea_shade_colour" default="blue" doc_class="CoastPlotting" member="sea_colour" to="Colour">
+ 		<documentation>Colour of Shading of sea areas		</documentation>
+	</parameter>
+
+	<parameter from="string" name="map_boundaries" default="off" member="boundaries" to="NoBoundaries" include="Boundaries.h" inherit_parent_reqs="no">
+  		<documentation>Add the political boundaries		</documentation>
+    		<option xml="boundaries" fortran="on" include="Boundaries.h" name="Boundaries">		</option>
+    		<option xml="noboundaries" fortran="off" include="Boundaries.h" name="NoBoundaries">		</option>
+	</parameter>
+
+	<parameter from="string" name="map_cities" default="off" member="cities" to="NoCities" include="Cities.h" inherit_parent_reqs="no">
+  		<documentation>Add the cities (capitals)		</documentation>
+    		<option xml="cities" fortran="on" include="Boundaries.h" name="Cities">		</option>
+    		<option xml="nocities" fortran="off" include="Boundaries.h" name="NoCities">		</option>
+  		<release>Work in progress		</release>
+	</parameter>
+
+	<parameter from="string" name="map_preview" visible="no" default="off" member="preview" to="bool">
+ 		<documentation for_docs="no">Add a preview : only for metview		</documentation>
+	</parameter>
+
+	<parameter from="string" name="map_rivers" default="off" member="rivers" to="string" values="on/off" inherit_parent_reqs="no">
+ 		<documentation>Display rivers (on/off)		</documentation>
+  		<set name="map_rivers_style" value="on">		</set>
+  		<set name="map_rivers_colour" value="on">		</set>
+  		<set name="map_rivers_thickness" value="on">		</set>           
+ 		<release>2.11		</release>
+	</parameter>
+        
+	<parameter from="string" name="map_rivers_style" default="solid" member="rivers_style" to="LineStyle" inherit_parent_reqs="no">
+  		<documentation>Line style for rivers		</documentation>
+  		<release>2.11		</release>
+	</parameter>       
+
+	<parameter from="string" name="map_rivers_colour" default="blue" member="rivers_colour" to="Colour" inherit_parent_reqs="no">
+ 		<documentation>Colour of the rivers		</documentation>
+ 		<release>2.12		</release>
+	</parameter>
+
+	<parameter xml="thickness" from="int" name="map_rivers_thickness" default="1" member="rivers_thickness" to="int" inherit_parent_reqs="no">
+  		<documentation>Line thickness of rivers		</documentation>
+  		<release>2.12		</release>
+	</parameter>
+</class></magics>
diff --git a/src/params/NoGraphShade.xml b/src/params/NoGraphShade.xml
new file mode 100644
index 0000000..db3fa1d
--- /dev/null
+++ b/src/params/NoGraphShade.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="GraphShade" include="GraphShade.h" name="NoGraphShade"/></magics>
diff --git a/src/params/NoGridPlotting.xml b/src/params/NoGridPlotting.xml
new file mode 100644
index 0000000..79806d9
--- /dev/null
+++ b/src/params/NoGridPlotting.xml
@@ -0,0 +1,30 @@
+<magics>
+<class action="pcoast" directory="visualisers" xmltag="nogrid" include="GridPlotting.h" name="NoGridPlotting">
+   	<documentation>
+   This object suppresses the plotting of the map grid.
+   	</documentation> 
+   	<parameter from="float" name="map_grid_latitude_reference" default="0" metview="on" member="latReference" to="float" inherit_parent_reqs="no">
+            		<documentation>
+            Reference Latitude from which all latitude lines are drawn
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+        	<parameter from="float" name="map_grid_latitude_increment" default="10" metview="on" member="latIncrement" to="float" inherit_parent_reqs="no">
+            		<documentation>
+            Interval between latitude grid lines
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+        	<parameter from="float" name="map_grid_longitude_reference" default="0" metview="on" member="lonReference" to="float" inherit_parent_reqs="no">
+            		<documentation>
+            Reference Longitude from which all longitude lines are drawn
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+        	<parameter from="float" name="map_grid_longitude_increment" default="20" metview="on" member="lonIncrement" to="float" inherit_parent_reqs="no">
+            		<documentation>
+            Interval between longitude grid lines
+           		</documentation>
+           		<release>Magics++0.1		</release>
+       	</parameter>
+</class></magics>
diff --git a/src/params/NoHiLo.xml b/src/params/NoHiLo.xml
new file mode 100644
index 0000000..49c51f9
--- /dev/null
+++ b/src/params/NoHiLo.xml
@@ -0,0 +1,4 @@
+<magics>
+<class inherits="HiLoBase" xmltag="nohilo" name="NoHiLo" directory="visualisers" action="pcont" include="HiLo.h">
+   	<documentation>This object suppresses Hi/Lo information.	</documentation>
+</class></magics>
diff --git a/src/params/NoHiLoMarker.xml b/src/params/NoHiLoMarker.xml
new file mode 100644
index 0000000..71cf709
--- /dev/null
+++ b/src/params/NoHiLoMarker.xml
@@ -0,0 +1,6 @@
+<magics>
+<class inherits="HiLoMarkerBase" xmltag="nomarker" name="NoHiLoMarker" directory="visualisers" action="pcont" include="HiLoMarker.h">
+   	<documentation>
+   This object suppresses the plotting of Hi/Lo markers
+   	</documentation>
+</class></magics>
diff --git a/src/params/NoIsoHighlight.xml b/src/params/NoIsoHighlight.xml
new file mode 100644
index 0000000..ea36f30
--- /dev/null
+++ b/src/params/NoIsoHighlight.xml
@@ -0,0 +1,2 @@
+<magics>
+<class xmltag="nohighlight" name="NoIsoHighlight" directory="visualisers" action="pcont" include="IsoHighlight.h" doc_inherits="no"/></magics>
diff --git a/src/params/NoIsoLabel.xml b/src/params/NoIsoLabel.xml
new file mode 100644
index 0000000..6e62f4e
--- /dev/null
+++ b/src/params/NoIsoLabel.xml
@@ -0,0 +1,2 @@
+<magics>
+<class xmltag="nolabel" name="NoIsoLabel" used_by="IsoPlot" directory="visualisers" action="pcont" include="IsoLabel.h" doc_inherits="no"/></magics>
diff --git a/src/params/NoIsoPlot.xml b/src/params/NoIsoPlot.xml
new file mode 100644
index 0000000..094faa3
--- /dev/null
+++ b/src/params/NoIsoPlot.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="IsoPlot" directory="visualisers" include="IsoPlot.h" name="NoIsoPlot" doc_inherits="no"/></magics>
diff --git a/src/params/NoIsoShading.xml b/src/params/NoIsoShading.xml
new file mode 100644
index 0000000..07f7a00
--- /dev/null
+++ b/src/params/NoIsoShading.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pcont" directory="visualisers" include="IsoShading.h" name="NoIsoShading" doc_inherits="no"/></magics>
diff --git a/src/params/NoLabelPlotting.xml b/src/params/NoLabelPlotting.xml
new file mode 100644
index 0000000..1d56131
--- /dev/null
+++ b/src/params/NoLabelPlotting.xml
@@ -0,0 +1,6 @@
+<magics>
+<class action="pcoast" directory="visualisers" xmltag="nolabel" include="LabelPlotting.h" name="NoLabelPlotting">
+   	<documentation>
+   This object suppresses the plotting of the map grid labels
+   	</documentation>
+</class></magics>
diff --git a/src/params/NoLegendNode.xml b/src/params/NoLegendNode.xml
new file mode 100644
index 0000000..163bbf1
--- /dev/null
+++ b/src/params/NoLegendNode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="LegendNode.h" name="NoLegendNode"/></magics>
diff --git a/src/params/NoLegendVisitor.xml b/src/params/NoLegendVisitor.xml
new file mode 100644
index 0000000..6c36321
--- /dev/null
+++ b/src/params/NoLegendVisitor.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="basic" include="LegendVisitor.h" name="NoLegendVisitor"/></magics>
diff --git a/src/params/NoLogoPloting.xml b/src/params/NoLogoPloting.xml
new file mode 100644
index 0000000..488ed2d
--- /dev/null
+++ b/src/params/NoLogoPloting.xml
@@ -0,0 +1,3 @@
+<magics>
+<class  include="LogoPlotting.h" name="NoLogoPlotting"/>
+</magics>
diff --git a/src/params/NoLogoPlotting.xml b/src/params/NoLogoPlotting.xml
new file mode 100644
index 0000000..488ed2d
--- /dev/null
+++ b/src/params/NoLogoPlotting.xml
@@ -0,0 +1,3 @@
+<magics>
+<class  include="LogoPlotting.h" name="NoLogoPlotting"/>
+</magics>
diff --git a/src/params/NoMagnifierVisitor.xml b/src/params/NoMagnifierVisitor.xml
new file mode 100644
index 0000000..2ba7042
--- /dev/null
+++ b/src/params/NoMagnifierVisitor.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="basic" include="MagnifierVisitor.h" name="NoMagnifierVisitor"/></magics>
diff --git a/src/params/NoOriginMarker.xml b/src/params/NoOriginMarker.xml
new file mode 100644
index 0000000..54ce571
--- /dev/null
+++ b/src/params/NoOriginMarker.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="OriginMarker" directory="visualisers" include="OriginMarker.h" name="NoOriginMarker"/></magics>
diff --git a/src/params/NoOutLayerTechnique.xml b/src/params/NoOutLayerTechnique.xml
new file mode 100644
index 0000000..d97bdcc
--- /dev/null
+++ b/src/params/NoOutLayerTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="OutLayerTechnique.h" name="NoOutLayerTechnique"/></magics>
diff --git a/src/params/NoPageID.xml b/src/params/NoPageID.xml
new file mode 100644
index 0000000..24a3958
--- /dev/null
+++ b/src/params/NoPageID.xml
@@ -0,0 +1,4 @@
+<magics>
+<class directory="common" include="PageID.h" xmltag="nopageid" name="NoPageID">
+   	<documentation>This object suppresses the plotting the page ID	</documentation>
+</class></magics>
diff --git a/src/params/NoPreviewVisitor.xml b/src/params/NoPreviewVisitor.xml
new file mode 100644
index 0000000..0cc0021
--- /dev/null
+++ b/src/params/NoPreviewVisitor.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="basic" include="PreviewVisitor.h" name="NoPreviewVisitor"/></magics>
diff --git a/src/params/NoTitle.xml b/src/params/NoTitle.xml
new file mode 100644
index 0000000..f9acd2a
--- /dev/null
+++ b/src/params/NoTitle.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="TitleBase" directory="visualisers" include="Title.h" name="NoTitle"/></magics>
diff --git a/src/params/NoValuePlot.xml b/src/params/NoValuePlot.xml
new file mode 100644
index 0000000..6f17c11
--- /dev/null
+++ b/src/params/NoValuePlot.xml
@@ -0,0 +1,4 @@
+<magics>
+<class inherits="ValuePlotBase" xmltag="nogridvalues" name="NoValuePlot" directory="visualisers" action="pcont" include="ValuePlot.h">
+   	<documentation>This object suppresses the plotting of grid values. 	</documentation>
+</class></magics>
diff --git a/src/params/ObsCloud.xml b/src/params/ObsCloud.xml
new file mode 100644
index 0000000..0818c27
--- /dev/null
+++ b/src/params/ObsCloud.xml
@@ -0,0 +1,6 @@
+<magics>
+<class directory="visualisers" action_routine="pobs" prefix="obs" xmltag="cloud" name="ObsCloud">
+
+    	
+    	</parameter>    
+</class></magics>
diff --git a/src/params/ObsDecoder.xml b/src/params/ObsDecoder.xml
new file mode 100644
index 0000000..10a151b
--- /dev/null
+++ b/src/params/ObsDecoder.xml
@@ -0,0 +1,23 @@
+<magics>
+<class directory="decoders" action_routine="pobs" prefix="obs" xmltag="bufr" name="ObsDecoder">
+
+  	<parameter member="file_name" to="string" default="" from="string" name="obs_input_file_name">
+         		<documentation> The name of the input file containing the BUFR code field(s) 		</documentation>
+  	</parameter>
+  
+  	<parameter member="level" to="int" default="500" from="int" name="obs_level">
+			<documentation> Pressure level to be plotted (upper air only) 		</documentation>
+  	</parameter>
+  
+  	<parameter member="level2" to="int" default="1000" from="int" name="obs_level_2">
+			<documentation> 2nd pressure level (for thickness plots only) 		</documentation>
+  	</parameter>
+  
+  	<parameter member="tolerance" to="int" default="0" from="int" name="obs_level_tolerance">
+			<documentation> Tolerance (hPa) above and below the requested level for which observations may be plotted (applies to OBS_LEVEL only) 		</documentation>
+  	</parameter>
+
+  	<parameter member="types" to="stringarray" default="stringarray()" from="stringarray" name="obs_type_list">
+			<documentation> A list of observation types (SATEM, TEMP, etc) for which observations are to be plotted 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/ObsDemoItem2.xml b/src/params/ObsDemoItem2.xml
new file mode 100644
index 0000000..fa60d6c
--- /dev/null
+++ b/src/params/ObsDemoItem2.xml
@@ -0,0 +1,9 @@
+<magics>
+<class directory="visualisers" action_routine="pobs" prefix="obs" xmltag="demo2" name="ObsDemoItem2">
+		<parameter member="text" to="string" default="///" from="string" name="obs_demo2_missing_text">
+				<documentation> text to be displayed in case of missinmg data 		</documentation>
+    	</parameter>
+    	<parameter member="text_colour" to="string" default="cyan" from="string" name="obs_demo2_text_colour">
+				<documentation> Text colour 		</documentation>
+    	</parameter>
+</class></magics>
diff --git a/src/params/ObsDewPoint.xml b/src/params/ObsDewPoint.xml
new file mode 100644
index 0000000..73b6acc
--- /dev/null
+++ b/src/params/ObsDewPoint.xml
@@ -0,0 +1,4 @@
+<magics>
+<class directory="visualisers" action_routine="pobs" prefix="obs" xmltag="dewpoint" name="ObsDewPoint">
+		
+</class></magics>
diff --git a/src/params/ObsJSon.xml b/src/params/ObsJSon.xml
new file mode 100644
index 0000000..3484874
--- /dev/null
+++ b/src/params/ObsJSon.xml
@@ -0,0 +1,9 @@
+<magics>
+<class xmltag="obsjson" name="ObsJSon" directory="web" prefix="obsjson" action="pobsjson" include="ObsJSon.h">
+ 	<parameter member="path" to="string" default="" from="string" name="obsjson_input_filename">
+  			<documentation> Path to the file containing the Observation data 		</documentation>
+ 	</parameter>
+ 	<parameter member="values" to="stringarray" default="stringarray()" from="stringarray" name="obsjson_info_list">
+  			<documentation> list of values  described using json format 		</documentation>
+ 	</parameter>
+ </class></magics>
diff --git a/src/params/ObsPlotting.xml b/src/params/ObsPlotting.xml
new file mode 100644
index 0000000..58b2766
--- /dev/null
+++ b/src/params/ObsPlotting.xml
@@ -0,0 +1,183 @@
+<magics>
+<class directory="visualisers" action_routine="pobs" prefix="obs" xmltag="obs" name="ObsPlotting">
+
+ 	<parameter xml="distance_apart" from="float" name="obs_distance_apart" default="1.0" member="apart" to="float">
+   		<documentation>Minimum distance between the centre of any two observations in cm		</documentation>
+ 	</parameter>
+    <parameter  from="string" name="obs_colour" default="black" member="colour" to="Colour">
+   		<release>Magics++ 2.10		</release>
+   		<documentation> Observation Colour		</documentation>
+ 	</parameter>
+
+        <parameter member="size" to="float" default="0.2" from="float" name="obs_size">
+                <documentation> size of a single onservation in cm   </documentation>
+        </parameter>
+        <parameter member="ring_size" to="float" default="0.2" from="float" name="obs_ring_size">
+               <documentation> Size of the station ring  in cm </documentation>
+        </parameter>
+
+		<parameter member="present_ww_visible" to="bool" default="on" from="string" name="obs_present_weather">
+				<documentation> Turn On/off the present weather		</documentation>
+                <set name="obs_present_weather" value="on">        </set> 
+    	</parameter>
+
+    	<parameter member="present_ww_colour" to="Colour" default="automatic" from="string" name="obs_present_weather_colour">
+				<documentation> Colour used to display  the present weather  		</documentation>
+    	</parameter>
+        
+ 	<parameter member="pressure_visible" to="bool" default="on" from="string" name="obs_pressure">
+    		<documentation> Turn On/off the pressure		</documentation>
+            <set name="obs_pressure_colour" value="on">        </set> 
+ 	</parameter>
+
+ 	<parameter member="pressure_colour" to="Colour" default="automatic" from="string" name="obs_pressure_colour">
+    		<documentation> Colour used to display the pressure  		</documentation>
+ 	</parameter>
+    <parameter member="upper_air_visible" to="bool" default="off" from="string" name="obs_upper_air_pressure">
+				<documentation> Turn On/off the upper air pressure level ( satob)  		</documentation>
+            <set name="obs_upper_air_pressure" value="on">        </set> 
+    	</parameter>
+
+    	<parameter  from="string" name="obs_upper_level_pressure_colour" default="automatic" member="upper_air_colour" to="Colour">
+				<documentation> Colour used to display the upper air pressure level	</documentation>
+    	</parameter>
+        <parameter member="pressure_tendency_visible" to="bool" default="on" from="string" name="obs_pressure_tendency">
+				<documentation> Turn On/off the pressure tendency		</documentation>
+                <set name="obs_pressure_tendency" value="on">        </set> 
+    	</parameter>
+    
+    	<parameter member="pressure_tendency_colour" to="Colour" default="automatic" from="string" name="obs_pressure_tendency_colour">
+				<documentation> Colour used to display the pressure tendency 		</documentation>
+    	</parameter>
+        <parameter member="station_ring_visible" to="bool" default="on" from="string" name="obs_station_ring">
+    		<documentation> Turn On/off the station ring 			</documentation>
+            <set name="obs_station_ring" value="on">        </set> 
+ 	</parameter>
+
+ 	<parameter member="station_ring_colour" to="Colour" default="automatic" from="string" name="obs_station_ring_colour">
+   		<documentation> Colour used to display the station ring    </documentation>
+
+ 	</parameter>
+<parameter member="temperature_visible" to="bool" default="on" from="string" name="obs_temperature">
+    		<documentation> Turn On/off the Air temperature		</documentation>
+            <set name="obs_temperature" value="on">        </set> 
+ 	</parameter>
+
+ 	<parameter member="temperature_colour" to="Colour" default="automatic" from="string" name="obs_temperature_colour">
+    		<documentation> Colour  used to display the Air temperature  </documentation>
+ 	</parameter>
+    <parameter member="thickness_visible" to="bool" default="on" from="string" name="obs_thickness">
+        		<documentation> Turn On/off the Thickness		</documentation>
+                <set name="obs_thickness" value="on">        </set> 
+        		<release>2.6		</release>
+    	</parameter>
+    
+    	<parameter member="thickness_colour" to="Colour" default="automatic" from="string" name="obs_thickness_colour">
+        		<documentation> Colour  used to display the thickness 		</documentation>
+    	</parameter>
+        <parameter member="height_visible" to="bool" default="on" from="string" name="obs_height">
+        		<documentation> Turn On/off the height (geopotential)  		</documentation>
+                <set name="obs_height" value="on">        </set> 
+        		<release>2.6		</release>
+    	</parameter>
+    	<parameter member="height_colour" to="Colour" default="automatic" from="string" name="obs_height_colour">
+        		<documentation> Colour  used to display  the height information 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+        <parameter member="identifier_visible" to="bool" default="off" from="string" name="obs_identification">
+				<documentation> Turn On/off the station identification  		</documentation>
+                <set name="obs_identification" value="on">        </set> 
+    	</parameter>
+
+    	<parameter member="identifier_colour" to="Colour" default="automatic" from="string" name="obs_identification_colour">
+				<documentation> Colour  used to display  the station identification  		</documentation>
+    	</parameter>
+        <parameter member="cloud_visible" to="bool" default="on" from="string" name="obs_cloud">
+				<documentation> Turn On/off the cloud   		</documentation>
+    	</parameter>
+
+    	<parameter member="low" to="bool" default="on" from="string" name="obs_low_cloud">
+				<documentation> Turn On/off the low cloud  		</documentation>
+                <set name="obs_low_cloud_colour" value="on">        </set> 
+    	</parameter>
+    
+    	<parameter member="low_colour" to="Colour" default="automatic" from="string" name="obs_low_cloud_colour">
+				<documentation> Colour used to display the low cloud 		</documentation>
+    	</parameter>
+    
+     	<parameter member="medium" to="bool" default="on" from="string" name="obs_medium_cloud">
+				<documentation> Turn On/off the medium cloud  		</documentation>
+    	</parameter>    
+
+    	<parameter member="medium_colour" to="Colour" default="automatic" from="string" name="obs_medium_cloud_colour">
+       		<documentation> Colour used to display the  medium cloud 		</documentation>
+                <set name="obs_medium_cloud_colour" value="on">        </set> 
+    	</parameter>
+
+    	<parameter member="high" to="bool" default="on" from="string" name="obs_high_cloud">
+      		<documentation> Turn On/off the high cloud  		</documentation>
+                <set name="obs_high_cloud_colour" value="on">        </set> 
+    	</parameter>
+
+    	<parameter member="high_colour" to="Colour" default="red" from="string" name="obs_high_cloud_colour">
+      		<documentation> Colour used to display the high cloud 		</documentation>
+ 		</parameter>
+		<parameter member="dewpoint_visible" to="bool" default="on" from="string" name="obs_dewpoint">
+				<documentation> Turn On/off the dewpoint		</documentation>
+                <set name="obs_dewpoint_colour" value="on">        </set> 
+    	</parameter>
+    	
+    	<parameter member="dewpoint_colour" to="Colour" default="red" from="string" name="obs_dewpoint_colour">
+				<documentation> Colour used to display the dewpoint 		</documentation>
+    	</parameter>
+    	<parameter member="sea_temperature_visible" to="bool" default="on" from="string" name="obs_sea_temperature">
+				<documentation> Turn On/off the sea temperature		</documentation>
+    	</parameter>
+    	
+    	<parameter member="sea_temperature_colour" to="Colour" default="black" from="string" name="obs_sea_temperature_colour">
+				<documentation> Colour sed to display the sea temperature 		</documentation>
+                <set name="obs_sea_temperature_colour" value="on">        </set> 
+    	</parameter>
+    	
+    	<parameter member="waves_visible" to="bool" default="on" from="string" name="obs_waves">
+				<documentation> Turn On/off the waves and swell information		</documentation>
+                <set name="obs_waves_colour" value="on">        </set> 
+    	</parameter>
+    	
+    	<parameter member="waves_colour" to="Colour" default="black" from="string" name="obs_waves_colour">
+				<documentation> Colour used to display  the waves and swell 		</documentation>
+    	</parameter>
+        <parameter member="past_ww_visible" to="bool" default="on" from="string" name="obs_past_weather">
+				<documentation> Turn On/off the pas Weather level (satob)		</documentation>
+                <set name="obs_past_weather_colour" value="on">        </set> 
+    	</parameter>
+    
+    	<parameter member="past_ww_colour" to="Colour" default="red" from="string" name="obs_past_weather_colour">
+				<documentation> Colour  used to display  the past weather 		</documentation>
+    	</parameter>
+        <parameter member="time_plot_visible" to="bool" default="off" from="string" name="obs_time">
+				<documentation> Turn On/off the observation time  		</documentation>
+                <set name="obs_time_colour" value="on">        </set> 
+    	</parameter>
+    
+    	<parameter member="time_plot_colour" to="Colour" default="automatic" from="string" name="obs_time_colour">
+				<documentation> Colour used to display the observation time 		</documentation>
+        </parameter>
+		<parameter member="visibility_visible" to="bool" default="on" from="string" name="obs_visibility">
+				<documentation> Turn On/off the visibility</documentation>
+                <set name="obs_visibility_colour" value="on">        </set> 
+    	</parameter>
+    
+    	<parameter member="visibility_colour" to="Colour" default="automatic" from="string" name="obs_visibility_colour">
+				<documentation> Colour  used to display  the visibility 		</documentation>
+    	</parameter>
+        <parameter member="wind_visible" to="bool" default="on" from="string" name="obs_wind">
+    		<documentation> Turn On/off the wind 		</documentation>
+                <set name="obs_wind" value="on">        </set> 
+ 	</parameter>
+
+ 	<parameter member="wind_colour" to="Colour" default="automatic" from="string" name="obs_wind_colour">
+    		<documentation> Colour   used to display  wind 		</documentation>
+ 	</parameter>
+</class>
+</magics>
diff --git a/src/params/ObsStatDecoder.xml b/src/params/ObsStatDecoder.xml
new file mode 100644
index 0000000..cc9e76f
--- /dev/null
+++ b/src/params/ObsStatDecoder.xml
@@ -0,0 +1,13 @@
+<magics>
+<class action="pobsstat" directory="decoders" name="ObsStatDecoder">
+		<documentation>
+		The Obstat decoder is responsible for decoding Obstat Ascii file.
+		</documentation>
+        	<parameter xml="path" from="string" name="obsstat_filename" default="" member="path" to="string">
+           
+            		<documentation> Epsgram Database Path 		</documentation>
+            		<migration> New Magics: Parameter eps_database sent to new Magics[EpsgramDecoder].  		</migration>
+        	</parameter>
+         
+	
+</class></magics>
diff --git a/src/params/ObsTable.xml b/src/params/ObsTable.xml
new file mode 100644
index 0000000..a17fbb0
--- /dev/null
+++ b/src/params/ObsTable.xml
@@ -0,0 +1,9 @@
+<magics>
+<class directory="visualisers" action_routine="pobs" prefix="obs" xmltag="obs" name="ObsTable">
+
+ 	<parameter member="path" to="string" default="" from="string" name="obs_template_file_name">
+   		<release>Magics++ 2.10		</release>
+   		<documentation> User defined template 		</documentation>
+ 	</parameter>
+
+</class></magics>
diff --git a/src/params/OdaGeoDecoder.xml b/src/params/OdaGeoDecoder.xml
new file mode 100644
index 0000000..04bcd23
--- /dev/null
+++ b/src/params/OdaGeoDecoder.xml
@@ -0,0 +1,40 @@
+<magics>
+<class xmltag="odb" name="OdaGeoDecoder" directory="oda" prefix="odb" action="podb" include="OdaDecoder.h">
+		<documentation>
+		New odb Access (Prototype Status) 
+		</documentation>
+    	<parameter member="path" to="string" default="" from="string" name="odb_filename">
+            		<documentation> odb Database Path 		</documentation>
+    	</parameter>
+    
+    	<parameter member="latitude" to="string" default="lat" from="string" name="odb_latitude_variable">          
+            		<documentation> odb Column name for the latitudes   		</documentation>
+    	</parameter>
+    	<parameter member="longitude" to="string" default="lon" from="string" name="odb_longitude_variable">        
+            		<documentation> odb Column name for the longitudes   		</documentation>
+    	</parameter>
+    
+    	<parameter member="value" to="string" default="" from="string" name="odb_value_variable">        
+            		<documentation> odb Column name for the values 		</documentation>
+    	</parameter>
+    	<parameter member="y" to="string" default="" from="string" name="odb_y_component_variable">        
+            		<documentation> odb Column name for the y component of a vector 		</documentation>
+    	</parameter>
+    	<parameter member="x" to="string" default="" from="string" name="odb_x_component_variable">        
+            		<documentation> odb Column name  for the x component of a vector		</documentation>
+    	</parameter>
+    	<parameter member="nb_rows" to="int" default="-1" from="int" name="odb_nb_rows">
+	    		<documentation> umber of rows to be retrieved 		</documentation>
+    	</parameter>
+      	<parameter member="title" to="string" default="" from="string" name="odb_user_title">
+	    		<documentation> User defined title for automatic title 		</documentation>
+    	</parameter>
+      	<parameter member="unit" to="string" default="degrees" from="string" name="odb_coordinates_unit">
+	    		<documentation> Coordinates unit used to define the location of the points (degrees/radians) 		</documentation>
+    	</parameter>
+    	<parameter member="odb_binning" to="BinningObject" default="off" from="string" name="odb_binning">
+     			<documentation> Information for the binning (degrees/radians) 		</documentation>
+     	  		<option xml="binning" fortran="on" include="BinningObject.h" name="BinningObject">		</option>
+          		<option xml="nobinning" fortran="off" include="BinningObject.h" name="NoBinningObject">		</option>
+    	</parameter>
+</class></magics>
diff --git a/src/params/OdaXYDecoder.xml b/src/params/OdaXYDecoder.xml
new file mode 100644
index 0000000..2b1f8c1
--- /dev/null
+++ b/src/params/OdaXYDecoder.xml
@@ -0,0 +1,39 @@
+<magics>
+<class xmltag="odb" name="OdaXYDecoder" directory="oda" prefix="odb" action="podb" include="OdaDecoder.h">
+		<documentation>
+		New odb Access (Prototype Status) 
+		</documentation>
+    	<parameter member="path" to="string" default="" from="string" name="odb_filename">
+            		<documentation> odb Database Path 		</documentation>
+    	</parameter>
+    
+    	<parameter member="x" to="string" default="lat" from="string" name="odb_x_variable">          
+            		<documentation> odb Column name for the x coordinates   		</documentation>
+    	</parameter>
+    	<parameter member="y" to="string" default="lon" from="string" name="odb_y_variable">        
+            		<documentation> odb Column name for the y coordinates   		</documentation>
+    	</parameter>
+    
+    	<parameter member="value" to="string" default="" from="string" name="odb_value_variable">        
+            		<documentation> odb Column name for the values 		</documentation>
+    	</parameter>
+    	<parameter member="y_component" to="string" default="" from="string" name="odb_y_component_variable">        
+            		<documentation> odb Column name for the y component of a vector 		</documentation>
+    	</parameter>
+    	<parameter member="x_component" to="string" default="" from="string" name="odb_x_component_variable">        
+            		<documentation> odb Column name  for the x component of a vector		</documentation>
+    	</parameter>
+    	<parameter member="nb_rows" to="int" default="-1" from="int" name="odb_nb_rows">
+	    		<documentation> umber of rows to be retrieved 		</documentation>
+    	</parameter>
+      	<parameter member="title" to="string" default="" from="string" name="odb_user_title">
+	    		<documentation> User defined title for automatic title 		</documentation>
+    	</parameter>
+      	<parameter member="odb_binning" to="BinningObject" default="off" from="string" name="odb_binning">
+     			<documentation> Information for the binning (degrees/radians) 		</documentation>
+     	  		<option xml="binning" fortran="on" include="BinningObject.h" name="BinningObject">		</option>
+          		<option xml="nobinning" fortran="off" include="BinningObject.h" name="NoBinningObject">		</option>
+    	</parameter>
+    
+
+</class></magics>
diff --git a/src/params/OdbDecoder.xml b/src/params/OdbDecoder.xml
new file mode 100644
index 0000000..6e2da4c
--- /dev/null
+++ b/src/params/OdbDecoder.xml
@@ -0,0 +1,54 @@
+<magics>
+<class action="podb" directory="odb" prefix="odb" xmltag="odb" name="OdbDecoder">
+		<documentation>
+		This is responsible for accessing the ODB and passing
+		its data to MAGICS.
+		</documentation>
+        	<parameter member="database" to="string" default="" from="string" name="odb_database">
+            		<documentation> Odb Database Path 		</documentation>
+        	</parameter>
+         	<parameter member="option" to="string" default="" from="string" name="odb_database_option">        
+            		<documentation> Odb Database option : clean 		</documentation>
+        	</parameter>
+          	<parameter member="query" to="string" default="" from="string" name="odb_query">
+            		<documentation> Odb Query 		</documentation>
+        	</parameter>
+         	<parameter member="latitude" to="string" default="latitude" from="string" name="odb_latitude">
+            		<documentation> Odb latitude column name 		</documentation>
+        	</parameter>
+       	<parameter member="longitude" to="string" default="longitude" from="string" name="odb_longitude">
+ 
+            		<documentation> Odb longitude column name 		</documentation>
+        	</parameter>
+        	<parameter member="observation" to="string" default="obsvalue" from="string" name="odb_observation">
+            		<documentation> Odb observation column name 		</documentation> =       	
+		</parameter>
+        	<parameter member="observation2" to="string" default="obsvalue" from="string" name="odb_observation_2">
+            		<documentation> Odb observation#2 column name (for vectors)		</documentation>        	
+		</parameter>
+		<parameter member="level" to="string" default="press" from="string" name="odb_level">
+            		<documentation> Odb level column name 		</documentation>
+        	</parameter>
+          	<parameter member="date" to="string" default="" from="string" name="odb_date">
+            		<documentation> Odb date column name name used to save in to geopoint format 		</documentation>
+        	</parameter>
+          	<parameter member="time" to="string" default="" from="string" name="odb_time">
+            		<documentation> Odb time column name used to save in to geopoint format 		</documentation>
+        	</parameter>
+        	<parameter member="x" to="string" default="press" from="string" name="odb_x">
+            		<documentation> Odb  column name used as X input for curve plotting 		</documentation>
+        	</parameter>
+        	<parameter member="y" to="string" default="press" from="string" name="odb_y">
+            		<documentation> Odb  column name used as Y input for curve plotting 		</documentation>
+        	</parameter>
+		<parameter member="parameters" to="floatarray" default="floatarray()" from="floatarray" name="odb_parameters">
+	    		<documentation> enable to bind a float value to a odb parameter ($?) 		</documentation>
+        	</parameter> 
+		<parameter member="starting_row" to="int" default="1" from="int" name="odb_starting_row">
+	   		<documentation> info sent to the odb server to set the starting row		</documentation>
+		</parameter>
+		<parameter member="nb_rows" to="int" default="1000" from="int" name="odb_nb_rows">
+	   		<documentation> info sent to the odb server to set the number of rows to be retrieved from the starting row 		</documentation>
+		</parameter>
+	
+</class></magics>
diff --git a/src/params/OriginMarker.xml b/src/params/OriginMarker.xml
new file mode 100644
index 0000000..88d85ee
--- /dev/null
+++ b/src/params/OriginMarker.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" name="OriginMarker"/></magics>
diff --git a/src/params/OutputHandler.xml b/src/params/OutputHandler.xml
new file mode 100644
index 0000000..4ae9f13
--- /dev/null
+++ b/src/params/OutputHandler.xml
@@ -0,0 +1,14 @@
+<magics>
+<class action="popen" directory="common" xmltag="output" name="OutputHandler">    
+
+   	<parameter xml="format" from="string" name="output_format" default="ps" member="format" to="string">
+         		<documentation>Defines the device to be used (ps/gif/svg).		</documentation>
+	 		<release>1.2		</release>
+   	</parameter>
+
+   	<parameter xml="formats" from="stringarray" name="output_formats" default="stringarray()" member="formats" to="stringarray">
+         		<documentation>Defines the list of devices to be used (ps/gif/svg).		</documentation>
+         		<release>1.2		</release>        
+   	</parameter>  
+
+</class></magics>
diff --git a/src/params/PageID.xml b/src/params/PageID.xml
new file mode 100644
index 0000000..e940bf1
--- /dev/null
+++ b/src/params/PageID.xml
@@ -0,0 +1,60 @@
+<magics>
+<class directory="common" inherits="NoPageID" prefix="page_id/page_id_line" xmltag="pageid" name="PageID">
+
+  	<parameter member="height" to="float" default="0.25" from="float" name="page_id_line_height">
+         		<documentation> Height of identification line		</documentation>
+         		<release>2.0		</release>
+  	</parameter>
+ 	<parameter member="colour" to="Colour" default="blue" from="string" name="page_id_line_colour">
+         		<documentation> Colour of identification line. Default based on page_y_length		</documentation>
+         		<release>2.0		</release>
+  	</parameter>
+
+  	<parameter member="magics" to="bool" default="on" from="string" name="page_id_line_magics">
+         		<documentation>Display magics version in identification line (ON/OFF)		</documentation>
+         		<release>2.9		</release>
+  	</parameter>
+
+  	<parameter member="user_text" to="string" default="" from="string" name="page_id_line_user_text">
+         		<documentation> User-supplied text for inclusion in identification line 		</documentation>
+         		<release>2.0		</release>
+  	</parameter>
+
+  	<parameter member="system" to="bool" default="on" from="string" name="page_id_line_system_plot">
+         		<documentation> Plot system part of the identification line (ON/OFF) 		</documentation>
+         		<release>2.0		</release>
+  	</parameter>
+
+  	<parameter member="date" to="bool" default="on" from="string" name="page_id_line_date_plot">
+         		<documentation> Plot date part of the identification line (ON/OFF) 		</documentation>
+         		<release>2.0		</release>
+  	</parameter>
+
+  	<parameter member="errors" to="bool" default="on" from="string" name="page_id_line_errors_plot">
+         		<documentation> Plot error part of the identification line (ON/OFF) 		</documentation>
+         		<release>2.0		</release>
+         		<release_info> Parameter defined but not implemented: no plan		</release_info>
+  	</parameter>
+
+  	<parameter member="text" to="bool" default="on" from="string" name="page_id_line_user_text_plot">
+         		<documentation> Plot user text part of the identification line (ON/OFF) 		</documentation>
+         		<release>2.0		</release>
+  	</parameter>
+
+	<parameter from="string" name="page_id_line_logo_plot" default="on" member="logo" to="NoLogoPlotting" include="LogoPlotting.h">
+         		<documentation>Plot logo part of the identification line (ON/OFF)		</documentation>
+         		<option xml="logo" fortran="on" include="LogoPlotting.h" name="LogoPlotting"> 		</option>
+         		<option xml="nologo" fortran="off" include="LogoPlotting.h" name="NoLogoPlotting"> 		</option>
+	</parameter>
+  
+	<parameter member="font" to="string" default="sansserif" from="string" name="page_id_line_font">
+         		<documentation> Font to be used 		</documentation>
+         		<release>1.3		</release>
+	</parameter>
+
+	<parameter member="font_style" to="string" default="normal" from="string" name="page_id_line_font_style">
+         		<documentation> Style of the Font to be used 		</documentation>
+         		<release>1.3		</release>
+	</parameter>
+ 
+</class></magics>
diff --git a/src/params/ParamGribLoopStep.xml b/src/params/ParamGribLoopStep.xml
new file mode 100644
index 0000000..0ddef19
--- /dev/null
+++ b/src/params/ParamGribLoopStep.xml
@@ -0,0 +1,4 @@
+<magics>
+<class inherits="GribLoopStep" xmltag="looponparam" name="ParamGribLoopStep" directory="decoders" prefix="grib/grib_loop_step" action="pgrib" include="GribLoopStep.h">
+		<documentation>	</documentation> 
+</class></magics>
diff --git a/src/params/PolarStereographicProjection.xml b/src/params/PolarStereographicProjection.xml
new file mode 100644
index 0000000..a22ebf0
--- /dev/null
+++ b/src/params/PolarStereographicProjection.xml
@@ -0,0 +1,76 @@
+<magics>
+<class inherits="Transformation" xmltag="polar_stereographic" name="PolarStereographicProjection" directory="common" prefix="subpage/subpage/subpage_map/subpage_map_area" action="projection">
+		<documentation>
+		These are the attributes of the PolarStereographic projection. 
+		</documentation>
+		<parameter from="string" name="subpage_map_area_coordinate_system" visible="off" default="users" member="system" to="string">
+         		<release>Magics++2.8		</release>
+         
+         
+         		<documentation> If set to projection, the coordinates of the bounding box are described in projection coordinates
+          instead of the more natural lat/lon system  ( this is useful in the WMS context) 		</documentation>
+  	</parameter>
+    	<parameter from="string" name="subpage_map_area_definition_polar" default="corners" member="area" to="string" values="full/corners/centre">
+             		<set name="subpage_lower_left_latitude" value="corners">		</set>
+             		<set name="subpage_lower_left_longitude" value="corners">		</set>
+             		<set name="subpage_upper_right_latitude" value="corners">		</set>
+             		<set name="subpage_upper_right_longitude" value="corners">		</set>
+             		<set name="subpage_upper_right_longitude" value="corners">		</set>
+             		<set name="subpage_map_vertical_longitude" value="centre">		</set>
+             		<set name="subpage_map_centre_latitude" value="centre">		</set>
+             		<set name="subpage_map_centre_longitude" value="centre">		</set>
+             		<set name="subpage_map_scale" value="centre">		</set>
+         		<release>Magics++0.1		</release>
+         
+         		<release_info>Basic implementation: only used for steroGraphicPolar Projection		</release_info>
+         		<documentation> Method of defining a polar stereographic map		</documentation>
+  	</parameter>
+  	<parameter member="hemisphere" to="Hemisphere" default="north" from="string" name="subpage_map_hemisphere">
+         		<release>Magics++0.1		</release>    
+         		<documentation> Hemisphere required for polar stereographic map(NORTH/SOUTH) 		</documentation>
+  	</parameter>
+
+ 
+  
+   	<parameter member="min_latitude" to="float" default="-90.0" from="float" name="subpage_lower_left_latitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Latitude of lower left corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC 		</documentation>
+  	</parameter>
+
+  	<parameter member="min_longitude" to="float" default="-180.0" from="float" name="subpage_lower_left_longitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Longitude of lower left corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC 		</documentation>
+  	</parameter>
+
+  	<parameter member="max_latitude" to="float" default="90.0" from="float" name="subpage_upper_right_latitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Latitude of upper right corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC 		</documentation>
+  	</parameter>
+
+  	<parameter member="max_longitude" to="float" default="180.0" from="float" name="subpage_upper_right_longitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Longitude of upper right corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC 		</documentation>
+  	</parameter>
+   	<parameter member="vertical_longitude" to="float" default="0.0" from="float" name="subpage_map_vertical_longitude">
+         		<documentation> Vertical longitude of polar stereographic or Aitoff map 		</documentation>
+         		<release>Magics++0.1		</release>   
+         		<release_info>Only available for polar sterepgraphic projection		</release_info>
+  	</parameter>
+   	<parameter member="centre_latitude" to="float" default="90.0" from="float" name="subpage_map_centre_latitude">
+         		<release>Magics++0.3		</release>   
+         		<documentation> Latitude of centre of polar stereographic map defined by 'CENTRE' or centre latitude of Lambert/satellite subarea projections 		</documentation>
+  	</parameter>
+
+  	<parameter member="centre_longitude" to="float" default="0.0" from="float" name="subpage_map_centre_longitude">
+         		<release>Magics++0.3		</release>   
+         		<documentation> Longitude of centre of polar stereographic map defined by 'CENTRE' or centre longitude of Lambert/satellite subarea projections 		</documentation>
+  	</parameter>
+
+  	<parameter member="map_scale" to="float" default="50.e6" from="float" name="subpage_map_scale">
+         		<release>Magics++0.3		</release>   
+         		<release_info> only for polar stereographic projection		</release_info>
+         		<documentation> Scale of polar stereographic or Aitoff  map 		</documentation>
+  	</parameter>
+
+
+</class></magics>
diff --git a/src/params/PolyShadingMethod.xml b/src/params/PolyShadingMethod.xml
new file mode 100644
index 0000000..8a1b217
--- /dev/null
+++ b/src/params/PolyShadingMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="PolyShadingMethod.h" name="PolyShadingMethod"/></magics>
diff --git a/src/params/PolyShadingTechnique.xml b/src/params/PolyShadingTechnique.xml
new file mode 100644
index 0000000..3a39137
--- /dev/null
+++ b/src/params/PolyShadingTechnique.xml
@@ -0,0 +1,10 @@
+<magics>
+<class inherits="ShadingTechnique" xmltag="polygon" name="PolyShadingTechnique" directory="visualisers" prefix="contour/contour/contour_shade/contour_shade/contour_shade" action="pcont">
+
+  	<parameter member="method" to="PolyShadingMethod" default="dot" from="string" name="contour_shade_method">
+        		<documentation> Method used for shading (DOT/ AREA_FILL/ HATCH) 		</documentation>
+        		<option xml="area_fill" fortran="area_fill" include="PolyShadingMethod.h" name="PolyShadingMethod">		</option>
+        		<option xml="dot" fortran="dot" include="DotPolyShadingMethod.h" name="DotPolyShadingMethod">		</option>
+        		<option xml="hatch" fortran="hatch" include="HatchPolyShadingMethod.h" name="HatchPolyShadingMethod">		</option>
+  	</parameter>
+</class></magics>
diff --git a/src/params/PositionListAxisMethod.xml b/src/params/PositionListAxisMethod.xml
new file mode 100644
index 0000000..29d82bf
--- /dev/null
+++ b/src/params/PositionListAxisMethod.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="AxisMethod" include="AxisMethod.h" name="PositionListAxisMethod"/></magics>
diff --git a/src/params/PostScriptDriver.xml b/src/params/PostScriptDriver.xml
new file mode 100644
index 0000000..3e2ede2
--- /dev/null
+++ b/src/params/PostScriptDriver.xml
@@ -0,0 +1,20 @@
+<magics>
+<class inherits="BaseDriver" xmltag="ps" name="PostScriptDriver" directory="drivers" prefix="output_ps/output" action="PostScript">
+		<documentation for_docs="no">
+		This is the default driver for Magics, and PostScript is the default output format. 
+		</documentation>
+
+	<parameter from="string" name="output_ps_colour_model" default="cmyk" member="colour_model" to="string" values="rgb/cmyk/monochrome/gray/cmyk_monochrome/cmyk_gray">
+   		<metview default="" class="">  		</metview>
+   		<documentation>Defines the PostScript colour model .		</documentation>
+
+	</parameter>
+
+	<parameter member="scale" to="float" default="1.0" from="float" name="output_ps_scale">
+   		<documentation>Defines the PostScript scale between 0.1 and 1.0 (1.0 being the full page size).		</documentation>
+	</parameter>
+
+	<parameter member="split" to="bool" default="off" from="string" name="output_ps_split">
+   		<documentation>Enables the output to be split into different (single page) PostScript files.		</documentation>
+	</parameter>
+</class></magics>
diff --git a/src/params/PpmDecoder.xml b/src/params/PpmDecoder.xml
new file mode 100644
index 0000000..1b9c74f
--- /dev/null
+++ b/src/params/PpmDecoder.xml
@@ -0,0 +1,26 @@
+<magics>
+<class directory="decoders" action_routine="pobs" prefix="ppm" xmltag="ppm" name="PpmDecoder">
+   	<parameter member="filename" to="string" default="" from="string" name="ppm_input_file_name">
+         		<release>Expected in Magics++0.7		</release>
+         		<documentation> The name of the input file containing the PPM image 		</documentation>
+  	</parameter>
+   	<parameter member="minLat" to="float" default="-90" from="float" name="ppm_min_latitude">
+         		<release>Expected in Magics++0.7		</release>
+         		<documentation> Min latitude of the image 		</documentation>
+  	</parameter>
+  
+  	<parameter member="maxLat" to="float" default="90" from="float" name="ppm_max_latitude">
+         		<release>Expected in Magics++0.7		</release>
+         		<documentation> Max latitude of the image 		</documentation>
+  	</parameter>
+   	<parameter member="minLon" to="float" default="-180" from="float" name="ppm_min_longitude">
+         		<release>Expected in Magics++0.7		</release>
+         		<documentation> Min latitude of the image 		</documentation>
+  	</parameter>
+  
+  	<parameter member="maxLon" to="float" default="180" from="float" name="ppm_max_longitude">
+         		<release>Expected in Magics++0.7		</release>
+         		<documentation> Max latitude of the image 		</documentation>
+  	</parameter>
+  
+</class></magics>
diff --git a/src/params/PreviewVisitor.xml b/src/params/PreviewVisitor.xml
new file mode 100644
index 0000000..c7fe8f3
--- /dev/null
+++ b/src/params/PreviewVisitor.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="basic" inherits="NoPreviewVisitor" name="PreviewVisitor"/></magics>
diff --git a/src/params/Proj4Bonne.xml b/src/params/Proj4Bonne.xml
new file mode 100644
index 0000000..586ce0c
--- /dev/null
+++ b/src/params/Proj4Bonne.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Bonne"/></magics>
diff --git a/src/params/Proj4Collignon.xml b/src/params/Proj4Collignon.xml
new file mode 100644
index 0000000..03bdac4
--- /dev/null
+++ b/src/params/Proj4Collignon.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Collignon"/></magics>
diff --git a/src/params/Proj4EPSG32661.xml b/src/params/Proj4EPSG32661.xml
new file mode 100644
index 0000000..2485c3e
--- /dev/null
+++ b/src/params/Proj4EPSG32661.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4EPSG32661"/></magics>
diff --git a/src/params/Proj4EPSG3857.xml b/src/params/Proj4EPSG3857.xml
new file mode 100644
index 0000000..fa302af
--- /dev/null
+++ b/src/params/Proj4EPSG3857.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4EPSG3857"/></magics>
diff --git a/src/params/Proj4EPSG4326.xml b/src/params/Proj4EPSG4326.xml
new file mode 100644
index 0000000..77fd9b9
--- /dev/null
+++ b/src/params/Proj4EPSG4326.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4EPSG4326"/></magics>
diff --git a/src/params/Proj4Efas.xml b/src/params/Proj4Efas.xml
new file mode 100644
index 0000000..62b5a14
--- /dev/null
+++ b/src/params/Proj4Efas.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Efas"/></magics>
diff --git a/src/params/Proj4Geos.xml b/src/params/Proj4Geos.xml
new file mode 100644
index 0000000..fa23aab
--- /dev/null
+++ b/src/params/Proj4Geos.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Geos"/></magics>
diff --git a/src/params/Proj4Geose.xml b/src/params/Proj4Geose.xml
new file mode 100644
index 0000000..ed9eee8
--- /dev/null
+++ b/src/params/Proj4Geose.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Geose"/></magics>
diff --git a/src/params/Proj4Geosw.xml b/src/params/Proj4Geosw.xml
new file mode 100644
index 0000000..d6fc319
--- /dev/null
+++ b/src/params/Proj4Geosw.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Geosw"/></magics>
diff --git a/src/params/Proj4Goode.xml b/src/params/Proj4Goode.xml
new file mode 100644
index 0000000..ec4dda9
--- /dev/null
+++ b/src/params/Proj4Goode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Goode"/></magics>
diff --git a/src/params/Proj4Google.xml b/src/params/Proj4Google.xml
new file mode 100644
index 0000000..f23e228
--- /dev/null
+++ b/src/params/Proj4Google.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Google"/></magics>
diff --git a/src/params/Proj4Lambert.xml b/src/params/Proj4Lambert.xml
new file mode 100644
index 0000000..348b69f
--- /dev/null
+++ b/src/params/Proj4Lambert.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Lambert"/></magics>
diff --git a/src/params/Proj4LambertNorthAtlantic.xml b/src/params/Proj4LambertNorthAtlantic.xml
new file mode 100644
index 0000000..0d916bb
--- /dev/null
+++ b/src/params/Proj4LambertNorthAtlantic.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4LambertNorthAtlantic"/></magics>
diff --git a/src/params/Proj4Meteosat0.xml b/src/params/Proj4Meteosat0.xml
new file mode 100644
index 0000000..c7c6dff
--- /dev/null
+++ b/src/params/Proj4Meteosat0.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Meteosat0"/></magics>
diff --git a/src/params/Proj4Meteosat145.xml b/src/params/Proj4Meteosat145.xml
new file mode 100644
index 0000000..5179399
--- /dev/null
+++ b/src/params/Proj4Meteosat145.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Meteosat145"/></magics>
diff --git a/src/params/Proj4Meteosat57.xml b/src/params/Proj4Meteosat57.xml
new file mode 100644
index 0000000..8ea9c89
--- /dev/null
+++ b/src/params/Proj4Meteosat57.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Meteosat57"/></magics>
diff --git a/src/params/Proj4Mollweide.xml b/src/params/Proj4Mollweide.xml
new file mode 100644
index 0000000..cd7df34
--- /dev/null
+++ b/src/params/Proj4Mollweide.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Mollweide"/></magics>
diff --git a/src/params/Proj4PolarNorth.xml b/src/params/Proj4PolarNorth.xml
new file mode 100644
index 0000000..5857555
--- /dev/null
+++ b/src/params/Proj4PolarNorth.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4PolarNorth"/></magics>
diff --git a/src/params/Proj4Projection.xml b/src/params/Proj4Projection.xml
new file mode 100644
index 0000000..f20083a
--- /dev/null
+++ b/src/params/Proj4Projection.xml
@@ -0,0 +1,40 @@
+<magics>
+<class inherits="Transformation" action="projection" prefix="subpage" directory="common" name="Proj4Projection">
+		<documentation>
+		These are the attributes of the Proj4 projection. 
+		</documentation>
+	
+     	<parameter from="string" name="subpage_map_area_definition" default="full" member="setting" to="string" values="corners/full">
+            		<documentation>method used to define the geographical area.		</documentation>
+            		<set name="subpage_lower_left_latitude" value="corners">		</set>
+            		<set name="subpage_lower_left_longitude" value="corners">		</set>
+            		<set name="subpage_upper_right_latitude" value="corners">		</set>
+            		<set name="subpage_upper_right_longitude" value="corners">		</set>
+        	</parameter>   
+ 	<parameter member="min_latitude" to="float" default="-90.0" from="float" name="subpage_lower_left_latitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Latitude of lower left corner of map. 		</documentation>
+  	</parameter>
+
+  	<parameter member="min_longitude" to="float" default="-180.0" from="float" name="subpage_lower_left_longitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Longitude of lower left corner of map. 		</documentation>
+  	</parameter>
+
+  	<parameter member="max_latitude" to="float" default="90.0" from="float" name="subpage_upper_right_latitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Latitude of upper right corner of map. 		</documentation>
+  	</parameter>
+
+  	<parameter member="max_longitude" to="float" default="180.0" from="float" name="subpage_upper_right_longitude">
+         		<release>Magics++0.1		</release>
+         		<documentation> Longitude of upper right corner of map. 		</documentation>
+  	</parameter> 
+  	<parameter member="vertical_longitude" to="float" default="0" from="float" name="subpage_map_vertical_longitude">
+       
+         		<documentation> Developement in progress 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="subpage_map_proj4_definition" visible="no" default="" member="proj4_definition" to="string">
+         		<documentation> Proj4 defintion string : to be used very carefully --> possible side effect  		</documentation>
+  	</parameter>
+  </class></magics>
diff --git a/src/params/Proj4Robinson.xml b/src/params/Proj4Robinson.xml
new file mode 100644
index 0000000..3fa8838
--- /dev/null
+++ b/src/params/Proj4Robinson.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Proj4Projection" directory="common" prefix="subpage" include="Proj4Projection.h" name="Proj4Robinson"/></magics>
diff --git a/src/params/QtDriver.xml b/src/params/QtDriver.xml
new file mode 100644
index 0000000..dde5ce6
--- /dev/null
+++ b/src/params/QtDriver.xml
@@ -0,0 +1,16 @@
+<magics>
+<class inherits="BaseDriver" xmltag="qt" name="QtDriver" directory="drivers" prefix="output/output_qt" action="Qt" include="Qt/qgraphicsscene.h">
+
+	<documentation>
+These are the attributes of the Qt output driver. This driver is intended for Qt applications such as Metview.
+	</documentation>
+
+	<parameter member="widget" to="QWidget*" default="0" from="QWidget*" name="output_qt_widget">
+			<documentation>Enable an application to instantiate its own QGraphicsScene and to pass it to Magics++ for it to use it.		</documentation>
+	</parameter>
+
+	<parameter member="scene" to="QGraphicsScene*" default="0" from="QGraphicsScene*" name="output_qt_scene">
+			<documentation>Enable an application to instantiate its own QGraphicsScene and to pass it to Magics++ for it to use it.		</documentation>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/SDWindMode.xml b/src/params/SDWindMode.xml
new file mode 100644
index 0000000..4db4c05
--- /dev/null
+++ b/src/params/SDWindMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pgrib" directory="decoders" inherits="WindMode" include="WindMode.h" name="SDWindMode"/></magics>
diff --git a/src/params/SVGDriver.xml b/src/params/SVGDriver.xml
new file mode 100644
index 0000000..384e0a4
--- /dev/null
+++ b/src/params/SVGDriver.xml
@@ -0,0 +1,31 @@
+<magics>
+<class inherits="BaseDriver" xmltag="svg" name="SVGDriver" directory="drivers" prefix="output_svg/output" action="SVG">
+		<documentation for_docs="no">
+		The output driver produces vector graphics in the SVG format. See also the parameters for the Base Driver.
+		</documentation>
+		<parameter from="string" name="output_svg_logo_location" default="inline" member="logoLocation" to="string" values="inline/share/www/local">
+				<documentation>Sets where the (ECMWF) logo can be found. Possible values are 'inline'(default),'share', 'www' or 'local'.		</documentation>
+		</parameter>
+		<parameter member="desc" to="string" default="" from="string" name="output_svg_desc">
+				<documentation>Defines a text describing the content of the SVG output.		</documentation>
+		</parameter>
+
+		<parameter member="meta" to="string" default="" from="string" name="output_svg_meta">
+				<documentation>Defining meta data in RDF to be added to the SVG output.		</documentation>
+		</parameter>
+
+		<parameter member="external" to="bool" default="off" from="string" name="output_svg_use_external_files">
+				<documentation>Can the SVG driver use external files for cell and image plotting. External files will reduce the SVG file size but add an external dependency!		</documentation>
+		</parameter>
+
+		<parameter member="scripting" to="bool" default="off" from="string" name="output_svg_scripting">
+				<documentation>Integrates scripting for interaction (toggle layers and pan/zooming).		</documentation>
+		</parameter>
+
+		<parameter member="fixSize" to="bool" default="off" from="string" name="output_svg_fix_size">
+				<documentation>Decides if the size is fixed in the SVG document.		</documentation>
+		</parameter>
+
+
+
+</class></magics>
diff --git a/src/params/SampleContourMethod.xml b/src/params/SampleContourMethod.xml
new file mode 100644
index 0000000..9bc80ce
--- /dev/null
+++ b/src/params/SampleContourMethod.xml
@@ -0,0 +1,12 @@
+<magics>
+<class inherits="ContourMethod" directory="visualisers" include="AutomaticContourMethod.h" name="SampleContourMethod" doc_inherits="no">
+
+    	<parameter xml="x_interval" from="int" name="contour_sample_x_interval" default="2" member="x" to="int">
+        		<documentation>X sampling interval used in 'sample' method (takes every nth point)		</documentation>/>
+    	</parameter>
+
+    	<parameter xml="y_interval" from="int" name="contour_sample_y_interval" default="2" member="y" to="int">
+        		<documentation>Y sampling interval used in 'sample' method (takes every nth point)		</documentation>/>
+    	</parameter>
+
+</class></magics>
diff --git a/src/params/SelectionMode.xml b/src/params/SelectionMode.xml
new file mode 100644
index 0000000..3927ee7
--- /dev/null
+++ b/src/params/SelectionMode.xml
@@ -0,0 +1,27 @@
+<magics>
+<class action="Interactive" directory="drivers" prefix="selection_mode" xmltag="interactive_mode" name="SelectionMode"> 
+  	<parameter member="background_colour" to="Colour" default="blue" from="string" name="selection_mode_background_colour">
+         		<release>Magics++3.2		</release>
+         		<documentation> Background colour of selectables objets.		</documentation>
+  	</parameter>
+   	<parameter member="background_opacity" to="int" default="75" from="int" name="selection_mode_background_opacity">
+         		<release>Magics++3.2		</release>
+         		<documentation> Background opacity of selectables objets.		</documentation>
+  	</parameter>
+   	<parameter member="line_colour" to="Colour" default="blue" from="string" name="selection_mode_line_colour">
+         		<release>Magics++3.2		</release>
+         		<documentation> line colour of selectables objets.		</documentation>
+  	</parameter>
+    	<parameter member="line_thickness" to="int" default="2" from="int" name="selection_mode_line_thickness">
+         		<release>Magics++3.2		</release>
+         		<documentation> line thickness of selectables objets.		</documentation>
+  	</parameter>
+    	<parameter member="line_style" to="LineStyle" default="solid" from="string" name="selection_mode_line_style">
+         		<release>Magics++3.2		</release>
+         		<documentation> line style of selectables objets.		</documentation>
+  	</parameter>
+	  	<parameter member="object_instancies" to="int" default="1" from="int" name="selection_mode_object_instancies">
+         		<release>Magics++3.2		</release>
+         		<documentation> max number of  selectables objets.		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/ShadingTechnique.xml b/src/params/ShadingTechnique.xml
new file mode 100644
index 0000000..f62a457
--- /dev/null
+++ b/src/params/ShadingTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="ShadingTechnique.h" name="ShadingTechnique"/></magics>
diff --git a/src/params/ShapeDecoder.xml b/src/params/ShapeDecoder.xml
new file mode 100644
index 0000000..0496633
--- /dev/null
+++ b/src/params/ShapeDecoder.xml
@@ -0,0 +1,8 @@
+<magics>
+<class action="pshape" directory="decoders" prefix="shape" xmltag="shape" name="ShapeDecoder">
+   	<parameter member="path" to="string" default="" from="string" name="shape_input_file_name">
+         		<release>Magics++2.1		</release>
+         		<documentation> The name of the input file containing the shape data ( geography only) 		</documentation>
+  	</parameter>
+   
+</class></magics>
diff --git a/src/params/SimpleOutLayerTechnique.xml b/src/params/SimpleOutLayerTechnique.xml
new file mode 100644
index 0000000..2038ed0
--- /dev/null
+++ b/src/params/SimpleOutLayerTechnique.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="NoOutLayerTechnique" directory="visualisers" include="OutLayerTechnique.h" name="SimpleOutLayerTechnique"/></magics>
diff --git a/src/params/SimplePolyline.xml b/src/params/SimplePolyline.xml
new file mode 100644
index 0000000..e5af1df
--- /dev/null
+++ b/src/params/SimplePolyline.xml
@@ -0,0 +1,98 @@
+<magics>
+<class inherits="SimplePolylineInput" xmltag="polyline" name="SimplePolyline" directory="visualisers" prefix="polyline/polyline_line" action="pline" interface="ColourTechniqueInterface/LevelSelectionInterface">
+ 	<parameter member="legend" to="bool" default="off" from="string" name="legend">
+         		<release>Magics++2.80		</release>
+         		<documentation> Turn the legend on 		</documentation>
+  	</parameter>
+  	<parameter member="colour" to="Colour" default="blue" from="string" name="polyline_line_colour">
+         		<release>Magics++2.1		</release>
+         		<documentation> Colour of the polylines 		</documentation>
+  	</parameter>
+  	<parameter member="style" to="LineStyle" default="solid" from="string" name="polyline_line_style">
+         		<release>Magics++2.1		</release>
+         		<documentation> Style of the polylines (SOLID/ DASH/ DOT/ CHAIN_DASH/ CHAIN_DOT) 		</documentation>
+  	</parameter>
+  	<parameter member="thickness" to="int" default="1" from="int" name="polyline_line_thickness">
+         		<release>Magics++2.1		</release>
+         		<documentation> Thickness of the polylines 		</documentation>
+  	</parameter>
+  
+  	<parameter member="count" to="int" default="10" from="int" name="polyline_level_count">
+         		<documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
+         this means that the number of levels could be slightly different from the requested number of levels		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+  	<parameter member="tolerance" to="int" default="2" from="int" name="polyline_level_tolerance">
+         		<documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+  	<parameter member="reference" to="float" default="0.0" from="float" name="polyline_reference_level">
+         		<documentation> Level from which the level interval is calculated 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+
+  	<parameter member="interval" to="float" default="8.0" from="float" name="polyline_interval">
+         		<documentation> Interval in data units between different bands of shading 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+ 	<parameter member="list" to="floatarray" default="floatarray()" from="floatarray" name="polyline_level_list">
+         		<documentation> List of shading band levels to be plotted 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+  
+  	<parameter member="shade" to="bool" default="none" from="string" name="polyline_shade">
+         		<release>Magics++2.1		</release>
+         		<documentation> Whether to shade polygons or not (ON/OFF) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="max" to="float" default="1.0e+21" from="float" name="polyline_shade_max_level">
+         		<documentation> Maximum level for which shading is required 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+  	<parameter member="min" to="float" default="-1.0e+21" from="float" name="polyline_shade_min_level">
+         		<documentation> Minimum level for which shading is required 		</documentation>
+         		<release>Magics++2.1		</release>
+       
+  	</parameter>
+  
+  	<parameter member="levelSelection" to="LevelSelection" default="count" from="string" name="polyline_shade_level_selection_type">
+         		<documentation> Can be set to one of: (COUNT/ INTERVAL/ LEVEL_LIST) 		</documentation>
+         		<release>Magics++2.1		</release>
+         		<option xml="count" fortran="count" docdive="no" include="CountSelectionType.h" name="CountSelectionType">		</option>
+         		<option xml="interval" fortran="interval" docdive="no" include="IntervalSelectionType.h" name="IntervalSelectionType">		</option>
+         		<option xml="list" fortran="list" docdive="no" include="LevelListSelectionType.h" name="LevelListSelectionType">		</option>
+  	</parameter>
+
+  	<parameter member="colourMethod" to="ColourTechnique" default="calculate" from="string" name="polyline_shade_colour_method">
+         		<documentation> Method of generating the colours of the bands in polygon shading (LIST/CALCULATE) 		</documentation>
+         		<option xml="calculate" fortran="calculate" docdive="no" include="CalculateColourTechnique.h" name="CalculateColourTechnique">		</option>
+         		<option xml="list" fortran="list" docdive="no" include="ListColourTechnique.h" name="ListColourTechnique">		</option>
+         		<available>list		</available>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+  	<parameter member="maxColour" to="Colour" default="blue" from="string" name="polyline_shade_max_level_colour">
+         		<documentation> Highest shading band colour 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+  	<parameter member="minColour" to="Colour" default="red" from="string" name="polyline_shade_min_level_colour">
+         		<documentation> Lowest shading band colour 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+  	<parameter member="direction" to="string" default="anti_clockwise" from="string" name="polyline_shade_colour_direction">
+         		<documentation> Direction of colour sequencing for shading (CLOCKWISE/ ANTI_CLOCKWISE) 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+  	<parameter from="stringarray" name="polyline_shade_colour_list" default="stringarray()" member="colours" to="stringarray" colourlist="on">
+         		<documentation> List of colours to be used in polygon shading. 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/SimplePolylineInput.xml b/src/params/SimplePolylineInput.xml
new file mode 100644
index 0000000..a3321e3
--- /dev/null
+++ b/src/params/SimplePolylineInput.xml
@@ -0,0 +1,28 @@
+<magics>
+<class action="pline" directory="decoders" prefix="polyline/polyline_input" xmltag="polyline_input" name="SimplePolylineInput">
+  
+  	<parameter member="latitudes" to="floatarray" default="floatarray()" from="floatarray" name="polyline_input_latitudes">
+         		<release>Magics++2.1		</release>
+         		<documentation> Array containing the latitudes of the polylines. Each polyline is separated by the break value 		</documentation>
+  	</parameter>
+  	<parameter member="longitudes" to="floatarray" default="floatarray()" from="floatarray" name="polyline_input_longitudes">
+         		<release>Magics++2.1		</release>
+         		<documentation> Array containing the longitudes of the polylines. Each polyline is separated by the break value 		</documentation>
+  	</parameter>
+   	<parameter member="values" to="floatarray" default="floatarray()" from="floatarray" name="polyline_input_values">
+         		<release>Magics++2.1		</release>
+         		<documentation> Array containing the values for each polyline 		</documentation>
+  	</parameter>
+   	<parameter member="breakvalue" to="float" default="-999" from="float" name="polyline_input_break_indicator">
+         		<release>Magics++2.1		</release>
+         		<documentation> Value used as either a latitude or longitude to denote a separation between polylines 		</documentation>
+  	</parameter>
+  	<parameter xml="position_filename" from="string" name="polyline_input_positions_filename" default="" member="position_filename" to="string">
+         		<release>Magics++2.1		</release>
+         		<documentation> Path to a file containing the coordinates for all polylines' points. 		</documentation>
+  	</parameter>
+  	<parameter member="values_filename" to="string" default="" from="string" name="polyline_input_values_filename">
+         		<release>Magics++2.1		</release>
+         		<documentation> Path to a file containing the values for each polyline. 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Streamlines.xml b/src/params/Streamlines.xml
new file mode 100644
index 0000000..411cd50
--- /dev/null
+++ b/src/params/Streamlines.xml
@@ -0,0 +1,40 @@
+<magics>
+<class inherits="WindPlotting" name="Streamlines" directory="visualisers" prefix="wind/wind_streamlines" action="pwind" doc_inherits="no">
+		<documentation>
+        MAGICS parameters exist to control the calculation and plotting of streamlines. 
+		</documentation>
+
+    	<parameter member="min_density" to="float" default="1" from="float" name="wind_streamline_min_density">
+     		<documentation>
+        the minimum number of streamlines to be plotted in one square cm of the user's subpage
+     		</documentation>  
+    	</parameter>
+
+    	<parameter member="min_speed" to="float" default="1" from="float" name="wind_streamline_min_speed">
+     		<documentation>
+        wind speed below which streamline plotting will be stopped
+     		</documentation> 
+    	</parameter>
+
+    	<parameter member="thickness" to="int" default="2" from="int" name="wind_streamline_thickness">
+     		<documentation>
+        thickness of streamlines
+     		</documentation> 
+    	</parameter>
+
+    	<parameter member="colour" to="Colour" default="blue" from="string" name="wind_streamline_colour">
+     		<documentation>
+        colour of streamlines
+     		</documentation> 
+    	</parameter>
+
+    	<parameter member="style" to="LineStyle" default="solid" from="string" name="wind_streamline_style">
+     		<documentation>
+        line style of streamlines
+     		</documentation> 
+    	</parameter>
+
+
+    
+
+</class></magics>
diff --git a/src/params/SymbolAdvancedTableMode.xml b/src/params/SymbolAdvancedTableMode.xml
new file mode 100644
index 0000000..00c30a9
--- /dev/null
+++ b/src/params/SymbolAdvancedTableMode.xml
@@ -0,0 +1,197 @@
+<magics>
+<class directory="visualisers" inherits="SymbolMode" prefix="symbol/symbol_advanced_table" xmltag="advanced" name="SymbolAdvancedTableMode">
+    	<documentation>
+        Here comes the description of the SymbolTableMode object 
+    	</documentation>
+
+    	<parameter from="string" name="symbol_advanced_table_selection_type" default="count" member="levels" to="LevelSelection" values="count/interval/list">
+        		<documentation>  Technique to use to calculate the shading band levels. 		</documentation>
+        		<migration> New Magics: Parameter contour_level_selection_type sent to new Magics[IsoPlot].  		</migration>
+        		<release>2.6		</release>
+
+        		<option xml="count" fortran="count" docdive="no" include="CountSelectionType.h" name="CountSelectionType">		</option>
+        		<option xml="interval" fortran="interval" docdive="no" include="IntervalSelectionType.h" name="IntervalSelectionType">		</option>
+        		<option xml="list" fortran="list" docdive="no" include="LevelListSelectionType.h" name="LevelListSelectionType">		</option>
+               
+        		<set name="symbol_advanced_table_level_list" value="list">		</set>
+        		<set name="symbol_advanced_table_interval" value="interval">		</set> 
+        		<set name="symbol_advanced_table_reference_level" value="interval">		</set>
+        		<set name="symbol_advanced_table_level_count" value="count">		</set>
+        		<set name="symbol_advanced_table_level_tolerance" value="count">		</set>
+    	</parameter>
+   
+    	<parameter member="min" to="float" default="-1.e21" from="float" name="symbol_advanced_table_min_value">
+        		<documentation> Min value to plot		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="max" to="float" default="1.e21" from="float" name="symbol_advanced_table_max_value">
+        		<documentation> Max value to plot 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="count" to="int" default="10" from="int" name="symbol_advanced_table_level_count">
+        		<documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
+            this means that the number of levels could be slightly different from the requested number of levels		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="tolerance" to="int" default="2" from="int" name="symbol_advanced_table_level_tolerance">
+        		<documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="interval" to="float" default="8.0" from="float" name="symbol_advanced_table_interval">
+        		<documentation> Interval in data units between different bands of shading 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="reference" to="float" default="0.0" from="float" name="symbol_advanced_table_reference_level">
+        		<documentation> Level from which the level interval is calculated 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="list" to="floatarray" default="floatarray()" from="floatarray" name="symbol_advanced_table_level_list">
+        		<documentation> List of shading band levels to be plotted 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="colourMethod" to="ColourTechnique" default="calculate" from="string" name="symbol_advanced_table_colour_method">
+        		<documentation> Method of generating the colours of the bands in polygon shading  		</documentation>
+        		<option xml="calculate" fortran="calculate" docdive="no" include="CalculateColourTechnique.h" name="CalculateColourTechnique">		</option>
+        		<option xml="list" fortran="list" docdive="no" include="ListColourTechnique.h" name="ListColourTechnique">		</option>
+        		<available>list		</available>
+        		<release>2.6		</release>
+        		<set name="symbol_advanced_table_colour_list" value="list">		</set>
+        		<set name="symbol_advanced_table_colour_list_policy" value="list">		</set>
+        		<set name="symbol_advanced_table_max_level_colour" value="calculate">		</set>
+        		<set name="symbol_advanced_table_min_level_colour" value="calculate">		</set>
+        		<set name="symbol_advanced_table_colour_direction" value="calculate">		</set>
+    	</parameter>
+
+    	<parameter member="maxColour" to="Colour" default="blue" from="string" name="symbol_advanced_table_max_level_colour">
+        		<documentation> Highest shading band colour 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="minColour" to="Colour" default="red" from="string" name="symbol_advanced_table_min_level_colour">
+        		<documentation> Lowest shading band colour 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter from="string" name="symbol_advanced_table_colour_direction" default="anti_clockwise" member="direction" to="string" values="clockwise/anti-clockwise">
+        		<documentation> Direction of colour sequencing for plotting (CLOCKWISE/ ANTI_CLOCKWISE) 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="colours" to="stringarray" default="stringarray()" from="stringarray" name="symbol_advanced_table_colour_list">
+        		<documentation> List of colours to be used in symbol plotting 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="colour_policy" to="ListPolicy" default="lastone" from="string" name="symbol_advanced_table_colour_list_policy">
+        		<documentation> What to do if the list of colours is smaller than the list of intervals: lastone/cycle 		</documentation>     
+        		<release>2.6		</release>
+    	</parameter>
+  
+    	<parameter member="markers" to="intarray" default="intarray()" from="intarray" name="symbol_advanced_table_marker_list">
+        		<documentation> List of markers to be used in symbol plotting 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="marker_policy" to="ListPolicy" default="lastone" from="string" name="symbol_advanced_table_marker_list_policy">
+        		<documentation>What to do if  the list of markers is smaller than the list of intervals: lastone/cycle 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+  
+    	<parameter member="height_method" to="HeightTechnique" default="list" from="string" name="symbol_advanced_table_height_method">
+        		<documentation> Method of generating the height   		</documentation>
+        		<option xml="calculate" fortran="calculate" docdive="no" include="HeightTechnique.h" name="CalculateHeightTechnique">		</option>
+        		<option xml="list" fortran="list" docdive="no" include="HeightTechnique.h" name="ListHeightTechnique">		</option>
+        		<set name="symbol_advanced_table_height_list" value="list">		</set>
+        		<set name="symbol_advanced_table_height_list_policy" value="list">		</set>
+        		<set name="symbol_advanced_table_height_max_value" value="calculate">		</set>
+        		<set name="symbol_advanced_table_height_min_value" value="calculate">		</set>
+        		<release>2.6		</release>
+    	</parameter>
+  
+        
+    	<parameter member="height_max" to="float" default="0.2" from="float" name="symbol_advanced_table_height_max_value">
+        		<documentation> Maximum height to use 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>    
+
+    	<parameter member="height_min" to="float" default="0.1" from="float" name="symbol_advanced_table_height_min_value">
+        		<documentation> Mininimum height to use 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="heights" to="floatarray" default="floatarray()" from="floatarray" name="symbol_advanced_table_height_list">
+        		<documentation> List of heights to be used 		</documentation>
+        		<available>list		</available>
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="height_policy" to="ListPolicy" default="lastone" from="string" name="symbol_advanced_table_height_list_policy">
+        		<documentation> What to do if the list of heights is smaller than the list of intervals: lastone/cycle 		</documentation>     
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="text_list" to="stringarray" default="stringarray()" from="stringarray" name="symbol_advanced_table_text_list">
+        		<documentation> Text to display 		</documentation>
+        		<release>2.6		</release>
+    	</parameter>    
+
+    	<parameter member="text_policy" to="ListPolicy" default="cycle" from="string" name="symbol_advanced_table_text_list_policy">
+        		<documentation> What to do if  the list of text is smaller that the list of intervals
+			lastone: reuse the last one, 
+			cycle: return to the fisrt one 
+        		</documentation>     
+        		<release>2.6		</release>
+    	</parameter>
+
+    	<parameter member="text_font_name" to="string" default="sansserif" from="string" name="symbol_advanced_table_text_font_name">
+        		<documentation> Font to use for text plotting. 		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_size" to="float" default="0.25" from="float" name="symbol_advanced_table_text_font_size">
+        		<documentation> Font size  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_style" to="string" default="normal" from="string" name="symbol_advanced_table_text_font_style">
+        		<documentation>  Font Style   		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_colour" to="Colour" default="automatic" from="string" name="symbol_advanced_table_text_font_colour">
+        		<documentation> Symbol Colour  		</documentation>
+    	</parameter> 
+
+    	<parameter from="string" name="symbol_advanced_table_text_display_type" default="none" member="text_display_type" to="string" values="centre/none/right/left/top/bottom">
+        		<documentation>  How to display text 
+         	none:do not display it 
+         	centre : display it instead of the symbol, 
+         	right : attached it to the right of the symbol, 
+         	top : attached it to the top of the symbol, 
+         	bottom:   attached it to the bottom of the symbol, 
+        		</documentation>
+        		<release>2.6		</release>
+    	</parameter>    
+
+    	<parameter from="string" name="symbol_advanced_table_outlayer_method" default="none" member="outlayer" to="NoOutLayerTechnique" include="OutLayerTechnique.h">
+        		<documentation> outlayer method 		</documentation> 
+        		<option xml="nooutlayer" fortran="none" docdive="no" include="OutLayerTechnique.h" name="NoOutLayerTechnique">		</option>
+        		<option xml="simple" name="SimpleOutLayerTechnique" fortran="simple" docdive="no" visible="no" include="OutLayerTechnique.h">		</option>                 
+        		<release>2.6		</release>
+    	</parameter>    
+
+    	<parameter from="float" name="symbol_advanced_table_outlayer_min_value" visible="no" default="-1.e21" member="outlayer_min" to="float">
+        		<documentation> outlayer min value 		</documentation>         
+        		<release>2.6		</release>
+    	</parameter>   
+
+    	<parameter from="float" name="symbol_advanced_table_outlayer_max_value" visible="no" default="1.e21" member="outlayer_max" to="float">
+        		<documentation> outlayer max value 		</documentation>         
+        		<release>2.6		</release>
+    	</parameter>    
+  
+</class></magics>
diff --git a/src/params/SymbolIndividualMode.xml b/src/params/SymbolIndividualMode.xml
new file mode 100644
index 0000000..21bfa66
--- /dev/null
+++ b/src/params/SymbolIndividualMode.xml
@@ -0,0 +1,83 @@
+<magics>
+<class inherits="SymbolMode" xmltag="individual" name="SymbolIndividualMode" prefix="symbol" directory="visualisers" include="SymbolMode.h">
+    	<documentation>Here comes the description of the SymbolIndividualMode object	</documentation>
+
+    	<parameter default="" to="string" member="legend_text" from="string" name="legend_user_text">
+        		<documentation> if set, the text to be shown for the symbol group in the legend				</documentation>
+    	</parameter>
+
+    	<parameter member="colour" to="Colour" default="BLUE" from="string" name="symbol_colour">
+        		<documentation> Colour of symbols.   		</documentation>
+    	</parameter>
+
+    	<parameter member="height" to="float" default="0.2" from="float" name="symbol_height">
+        		<documentation> Height of symbols.  		</documentation>
+    	</parameter>
+
+    	<parameter from="string" name="symbol_marker_mode" default="index" member="marker_mode" to="string" values="index/name/image">
+        		<documentation> Method to select a marker : by name, by index, by image : in that case, Magics will use an external image as marker.
+        		</documentation>
+        		<set name="symbol_marker_index" value="index">		</set>
+        		<noset name="symbol_marker_name" value="name">		</noset>
+        		<set name="symbol_image_path" value="image">		</set>
+        		<set name="symbol_image_format" value="image">		</set> 
+        		<set name="symbol_image_width" value="image">		</set>
+        		<set name="symbol_image_height" value="image">		</set>
+    	</parameter>
+        
+       
+    	<parameter member="marker" to="int" default="1" from="int" name="symbol_marker_index">
+        		<documentation> Marker indice:  An integer between 1 and 28		</documentation>
+    	</parameter>
+        
+    	<parameter member="symbol" to="string" default="dot" from="string" name="symbol_marker_name">
+        		<documentation> Symbol name. Choose in a list of available markers dot/circle/ww_00 ... 		</documentation>
+    	</parameter>
+
+    	<parameter member="image_path" to="string" default="" from="string" name="symbol_image_path">
+        		<documentation> Path to the image 		</documentation>
+    	</parameter>
+        
+    	<parameter from="string" name="symbol_image_format" default="automatic" member="image_format" to="string" values="automatic/png/svg">
+        		<documentation> Format of the image file. If set to AUTOMATIC, the file extension will be used to determine the file type. 		</documentation>
+    	</parameter>
+        
+    	<parameter member="image_width" to="float" default="-1" from="float" name="symbol_image_width">
+        		<documentation>  width of the image 		</documentation>
+    	</parameter> 
+
+    	<parameter member="image_height" to="float" default="-1" from="float" name="symbol_image_height">
+        		<documentation>  height of the image 		</documentation>
+    	</parameter>
+
+    	<parameter member="text" to="stringarray" default="stringarray()" from="stringarray" name="symbol_text_list">
+        		<documentation> list of texts to plot 		</documentation>
+    	</parameter>
+
+    	<parameter from="string" name="symbol_text_position" default="right" member="text_position" to="string" values="right/left/bottom/top">
+        		<documentation> Position of the text 		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_name" to="string" default="sansserif" from="string" name="symbol_text_font_name">
+        		<documentation> Font to use  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_size" to="float" default="0.25" from="float" name="symbol_text_font_size">
+        		<documentation> Font size  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_style" to="string" default="normal" from="string" name="symbol_text_font_style">
+            		<documentation> Font style  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_colour" to="Colour" default="automatic" from="string" name="symbol_text_font_colour">
+        		<documentation> Font colour.  		</documentation>
+    	</parameter> 
+
+    	<parameter member="text_blanking" to="bool" default="off" from="string" name="symbol_text_blanking">
+        		<documentation> blanking of the text 		</documentation>
+    	</parameter>
+    	<parameter member="legend_height" to="float" default="-1" from="float" name="symbol_legend_height">
+         		<documentation> If set, the height will be used to plot the symbols in the legend 		</documentation>
+  		</parameter>
+</class></magics>
diff --git a/src/params/SymbolInput.xml b/src/params/SymbolInput.xml
new file mode 100644
index 0000000..32dc945
--- /dev/null
+++ b/src/params/SymbolInput.xml
@@ -0,0 +1,40 @@
+<magics>
+<class directory="decoders" action_routine="psymb" prefix="symbol/symbol_input" xmltag="input" name="SymbolInput">
+	<documentation>
+	Here comes the description of the Symbol Plotting action
+	</documentation>
+
+	<parameter member="x" to="floatarray" default="floatarray()" from="floatarray" name="symbol_input_x_position">
+   		<documentation> array containing x positions for symbol plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type 		</documentation>
+   		<release>0.6		</release>
+   		<release_info> only GEOGRAPHICAL position is implemented 		</release_info>
+	</parameter>
+
+	<parameter member="y" to="floatarray" default="floatarray()" from="floatarray" name="symbol_input_y_position">
+   		<documentation> array containing y positions for symbol plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type 		</documentation>
+   		<release>0.6		</release>
+   		<release_info> only GEOGRAPHICAL position is implemented 		</release_info>
+	</parameter>
+
+	<parameter member="speed" to="floatarray" default="floatarray()" from="floatarray" name="symbol_input_wind_speed">
+   		<documentation> array containing wind speed for wind plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type 		</documentation>
+   		<release_info> only GEOGRAPHICAL position is implemented 		</release_info>
+	</parameter>
+
+	<parameter member="direction" to="floatarray" default="floatarray()" from="floatarray" name="symbol_input_wind_direction">
+   		<documentation> array containing wind direction for wind plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type 		</documentation>
+   		<release_info> only GEOGRAPHICAL position is implemented 		</release_info>
+	</parameter>  
+
+	<parameter member="value" to="floatarray" default="floatarray()" from="floatarray" name="symbol_input_number_list">
+   		<documentation> Array containing REAL VALUES. The value in a particular element of the array is plotted at the position defined by the corresponding 
+    elements of SYMBOL_INPUT_X_POSITION and SYMBOL_INPUT_Y_POSITION. This parameter may also be used with TEXT and MARKER plotting in TABLE mode 		</documentation>
+   		<release>0.6		</release>
+	</parameter>
+
+	<parameter member="position" to="string" default="geographic" from="string" name="symbol_position_mode">
+   		<documentation> Defines the input position data, valid values: GEOGRAPHIC, PAPER and GRAPH 		</documentation>
+   		<release>1.3		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/SymbolMode.xml b/src/params/SymbolMode.xml
new file mode 100644
index 0000000..508c4ae
--- /dev/null
+++ b/src/params/SymbolMode.xml
@@ -0,0 +1,3 @@
+<magics>
+<class directory="visualisers" prefix="symbol" xmltag="table" name="SymbolMode">
+</class></magics>
diff --git a/src/params/SymbolPlotting.xml b/src/params/SymbolPlotting.xml
new file mode 100644
index 0000000..e74069d
--- /dev/null
+++ b/src/params/SymbolPlotting.xml
@@ -0,0 +1,164 @@
+<magics>
+<class xmltag="symbol" name="SymbolPlotting" metview="MSYMB" directory="visualisers" prefix="symbol" action="psymb">
+    	<documentation>
+    This action routine (and C++object) controls the plotting of meteorological and marker symbols.
+    	</documentation>
+
+    	<parameter member="legend" to="bool" default="off" from="string" name="legend">
+        		<documentation> Turn legend on or off (ON/OFF) : New Parameter! 		</documentation>
+        		<set name="legend_user_text" value="on">		</set>
+    	</parameter>
+
+    	<parameter from="string" name="symbol_type" default="number" member="type" to="string" values="number/text/marker/wind">
+        		<documentation> Defines the type of symbol plotting required 		</documentation>
+
+        		<set name="symbol_text_list" value="text">		</set>
+        		<set name="symbol_text_position" value="text">		</set> 
+        		<set name="symbol_text_font_name" value="text">		</set>
+        		<set name="symbol_text_font_size" value="text">		</set>
+        		<set name="symbol_text_font_style" value="text">		</set>
+        		<set name="symbol_text_font_colour" value="text">		</set>  
+        		<set name="symbol_text_blanking" value="text">		</set>  
+
+        		<set name="symbol_marker_mode" value="marker">		</set>
+        		<set name="symbol_marker_index" value="marker">		</set> 
+        		<set name="symbol_marker_name" value="marker">		</set> 
+        		<set name="symbol_image_path" value="marker">		</set>
+        		<set name="symbol_image_format" value="marker">		</set>
+        		<set name="symbol_image_width" value="marker">		</set>
+        		<set name="symbol_image_height" value="marker">		</set>
+
+        		<set name="symbol_format" value="number">		</set>
+        		<set name="symbol_text_position" value="number">		</set> 
+        		<set name="symbol_text_font_name" value="number">		</set>
+        		<set name="symbol_text_font_size" value="number">		</set>
+        		<set name="symbol_text_font_style" value="number">		</set>
+        		<set name="symbol_text_font_colour" value="number">		</set>  
+        		<set name="symbol_text_blanking" value="number">		</set>  
+
+        		<set name="symbol_text_position" value="both">		</set> 
+        		<set name="symbol_text_font_name" value="both">		</set>
+        		<set name="symbol_text_font_size" value="both">		</set>
+        		<set name="symbol_text_font_style" value="both">		</set>
+        		<set name="symbol_text_font_colour" value="both">		</set> 
+        		<set name="symbol_text_blanking" value="text">		</set>  
+        		<set name="symbol_format" value="both">		</set>
+        		<set name="symbol_marker_mode" value="both">		</set>
+        		<set name="symbol_marker_index" value="both">		</set> 
+        		<set name="symbol_marker_name" value="both">		</set> 
+        		<set name="symbol_image_path" value="both">		</set>
+        		<set name="symbol_image_format" value="both">		</set>
+        		<set name="symbol_image_width" value="both">		</set>
+        		<set name="symbol_image_height" value="both">		</set>
+    	</parameter>
+
+
+    	<parameter xml="table_mode" from="string" name="symbol_table_mode" default="OFF" member="mode" to="SymbolMode">
+        		<option xml="individual" fortran="off" docdive="no" include="SymbolMode.h" name="SymbolIndividualMode">		</option>
+        		<option xml="advanced" fortran="advanced" docdive="no" include="SymbolAdvancedTableMode.h" name="SymbolAdvancedTableMode">		</option>
+        		<option xml="table" fortran="on" docdive="no" include="SymbolMode.h" name="SymbolTableMode">		</option>
+        		<documentation> Specifies if plotting is to be in advanced, table (on) or individual mode (off).
+            	        Note:  The simple table mode is not recommended anymore, try to use the advanced mode instead, 
+            		    this  should give you easier control of the plot. 		</documentation>
+
+        		<set name="symbol_colour" value="off">		</set>
+        		<set name="symbol_format" value="off">		</set>
+        		<set name="symbol_height" value="off">		</set>
+        		<set name="symbol_marker_mode" value="off">		</set>
+        		<set name="symbol_marker_index" value="off">		</set>
+        		<set name="symbol_marker_name" value="off">		</set>
+        		<set name="symbol_text_position" value="off">		</set>
+        		<set name="symbol_text_font_name" value="off">		</set>
+        		<set name="symbol_text_font_size" value="off">		</set>
+        		<set name="symbol_text_font_style" value="off">		</set>
+        		<set name="symbol_text_font_colour" value="off">		</set>
+        		<set name="legend_user_text" value="off">		</set>
+
+        		<set name="symbol_min_table" value="on">		</set>
+        		<set name="symbol_max_table" value="on">		</set>
+        		<set name="symbol_colour_table" value="on">		</set>
+        		<set name="symbol_height_table" value="on">		</set>
+        		<set name="symbol_marker_table" value="on">		</set>
+        		<set name="symbol_name_table" value="on">		</set>
+
+        		<set name="symbol_advanced_table_selection_type" value="advanced">		</set>
+        		<set name="symbol_advanced_table_min_value" value="advanced">		</set>
+        		<set name="symbol_advanced_table_max_value" value="advanced">		</set>
+        		<set name="symbol_advanced_table_level_count" value="advanced">		</set>
+        		<set name="symbol_advanced_table_level_tolerance" value="advanced">		</set>
+        		<set name="symbol_advanced_table_interval" value="advanced">		</set>
+        		<set name="symbol_advanced_table_reference_level" value="advanced">		</set>
+        		<set name="symbol_advanced_table_level_list" value="advanced">		</set>
+        		<set name="symbol_advanced_table_colour_method" value="advanced">		</set>
+        		<set name="symbol_advanced_table_max_level_colour" value="advanced">		</set>
+        		<set name="symbol_advanced_table_min_level_colour" value="advanced">		</set>
+        		<set name="symbol_advanced_table_colour_direction" value="advanced">		</set>
+        		<set name="symbol_advanced_table_colour_list" value="advanced">		</set>
+        		<set name="symbol_advanced_table_colour_list_policy" value="advanced">		</set>
+        		<set name="symbol_advanced_table_marker_list" value="advanced">		</set>
+        		<set name="symbol_advanced_table_marker_list_policy" value="advanced">		</set>
+        		<set name="symbol_advanced_table_height_method" value="advanced">		</set>
+        		<set name="symbol_advanced_table_height_max_value" value="advanced">		</set>
+        		<set name="symbol_advanced_table_height_min_value" value="advanced">		</set>
+        		<set name="symbol_advanced_table_height_list" value="advanced">		</set>
+        		<set name="symbol_advanced_table_height_list_policy" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_list" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_list_policy" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_font_name" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_font_size" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_font_style" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_font_colour" value="advanced">		</set>
+        		<set name="symbol_advanced_table_text_display_type" value="advanced">		</set>
+        		<set name="symbol_advanced_table_outlayer_method" value="advanced">		</set>
+        		<set name="symbol_advanced_table_outlayer_min_value" value="advanced">		</set>
+        		<set name="symbol_advanced_table_outlayer_max_value" value="advanced">		</set>
+    	</parameter>
+
+    	<parameter xml="format" from="string" name="symbol_format" default="(automatic)" member="format" to="string">
+        		<documentation> Format used to plot values (MAGICS Format/(AUTOMATIC)) 		</documentation>
+    	</parameter>
+
+		<parameter member="outline" to="bool" default="off" from="string" name="symbol_outline"> 
+        		<set name="symbol_outline_colour" value="on">		</set> 
+        		<set name="symbol_outline_thickness" value="on">		</set>
+        		<set name="symbol_outline_style" value="on">		</set>
+        		<documentation> Add an outline to each symbol 		</documentation>
+    	</parameter>
+
+    	<parameter member="outline_colour" to="Colour" default="black" from="string" name="symbol_outline_colour">
+        		<documentation> Colour of the outline 		</documentation>
+    	</parameter>  
+
+    	<parameter member="outline_thickness" to="int" default="1" from="int" name="symbol_outline_thickness">
+        		<documentation> thickness of the outline 		</documentation>
+    	</parameter>
+
+    	<parameter member="outline_style" to="LineStyle" default="solid" from="string" name="symbol_outline_style">
+        		<documentation> Line Style of outline 		</documentation>
+    	</parameter>
+
+		<parameter member="connect" to="bool" default="off" from="string" name="symbol_connect_line"> 
+        		<set name="symbol_connect_automatic_line_colour" value="on">		</set> 
+        		<set name="symbol_connect_line_colour" value="on">		</set> 
+        		<set name="symbol_connect_line_thickness" value="on">		</set>
+        		<set name="symbol_connect_line_style" value="on">		</set>
+        		<documentation> Connect all the symbols with a line 		</documentation>
+    	</parameter> 
+
+    	<parameter member="automatic_connect_colour" to="bool" default="on" from="string" name="symbol_connect_automatic_line_colour">  
+        		<set name="symbol_connect_line_colour" value="off">		</set>  
+        		<documentation> if on, will use the colour of the symbol  		</documentation>
+    	</parameter>  
+
+    	<parameter member="connect_colour" to="Colour" default="black" from="string" name="symbol_connect_line_colour">
+        		<documentation> Colour of the connecting line  		</documentation>
+    	</parameter>  
+
+    	<parameter member="connect_thickness" to="int" default="1" from="int" name="symbol_connect_line_thickness">
+        		<documentation> thickness of the  connecting line 		</documentation>
+    	</parameter>
+
+    	<parameter member="connect_style" to="LineStyle" default="solid" from="string" name="symbol_connect_line_style">
+        		<documentation> Line Style of  connecting line 		</documentation>
+    	</parameter>
+</class></magics>
diff --git a/src/params/SymbolTableMode.xml b/src/params/SymbolTableMode.xml
new file mode 100644
index 0000000..9aba5d2
--- /dev/null
+++ b/src/params/SymbolTableMode.xml
@@ -0,0 +1,30 @@
+<magics>
+<class inherits="SymbolMode" xmltag="table" name="SymbolTableMode" prefix="symbol" directory="visualisers" include="SymbolMode.h">
+    	<documentation>
+        Here comes the description of the SymbolTableMode object 
+        	</documentation>
+
+    	<parameter member="min" to="floatarray" default="floatarray()" from="floatarray" name="symbol_min_table">
+        		<documentation> Table of minimum values.  The table is used in conjunction with SYMBOL_MAX_TABLE  		</documentation>
+    	</parameter>
+
+    	<parameter member="max" to="floatarray" default="floatarray()" from="floatarray" name="symbol_max_table">
+        		<documentation> Table of maximum values. The table is used in conjunction with SYMBOL_MIN_TABLE  		</documentation>
+    	</parameter>
+
+    	<parameter member="marker" to="intarray" default="intarray()" from="intarray" name="symbol_marker_table">
+            		<documentation> Table of MARKER indices. The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  		</documentation>
+    	</parameter>
+
+    	<parameter member="symbol" to="stringarray" default="stringarray()" from="stringarray" name="symbol_name_table">
+        		<documentation> Table of Symbol names. The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  		</documentation>
+    	</parameter>
+
+    	<parameter member="colour" to="stringarray" default="stringarray()" from="stringarray" name="symbol_colour_table">
+        		<documentation> Table of SYMBOL colours. T The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  		</documentation>
+    	</parameter>
+
+    	<parameter member="height" to="floatarray" default="floatarray()" from="floatarray" name="symbol_height_table">
+        		<documentation> Table of SYMBOL heights.  The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  		</documentation>
+    	</parameter>
+</class></magics>
diff --git a/src/params/TableDecoder.xml b/src/params/TableDecoder.xml
new file mode 100644
index 0000000..a004be4
--- /dev/null
+++ b/src/params/TableDecoder.xml
@@ -0,0 +1,83 @@
+<magics>
+<class directory="decoders" xmltag="table" name="TableDecoder">
+  	<documentation> table data for curve 	</documentation>
+
+  	<parameter member="path" to="string" default="" from="string" name="table_filename">
+         		<documentation>Path to the table data 		</documentation>
+  	</parameter>
+  
+  	<parameter member="delimiter" to="string" default="," from="string" name="table_delimiter">
+         		<documentation>Used delimiter 		</documentation>
+  	</parameter>
+  
+  	<parameter member="combine_delimiters" to="bool" default="off" from="string" name="table_combine_delimiters">
+         		<documentation>Consecutive delimiters will be considered as one 		</documentation>
+  	</parameter>
+  
+  	<parameter member="header_row" to="int" default="1" from="int" name="table_header_row">
+         		<documentation>Which row (first is 1) is the header line on? 		</documentation>
+  	</parameter>
+  
+   	<parameter member="data_row_offset" to="int" default="1" from="int" name="table_data_row_offset">
+         		<documentation>How many rows after the header row does the data start? 1 if no header row.		</documentation>
+  	</parameter>
+
+   	<parameter member="meta_data_rows" to="intarray" default="intarray()" from="intarray" name="table_meta_data_rows">
+         		<documentation>List of row indexes containing meta-data of the form P1=V1 P2=V2.		</documentation>
+  	</parameter> 
+ 
+ 
+ 	<parameter from="string" name="table_x_type" default="number" member="x_type" to="string" values="number/date">
+         		<documentation>Type used for X variable_index: number or date 		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="table_y_type" default="number" member="y_type" to="string" values="number/date">
+         		<documentation>Type used for Y variable_index: number or date 		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="table_variable_identifier_type" default="index" member="name_mode" to="string" values="index/name">
+         		<documentation> are we refering to the columns by names or index (index/name) 		</documentation>
+  	</parameter>
+  
+  	<parameter member="x" to="string" default="1" from="string" name="table_x_variable">
+         		<documentation> X variable_index or name  		</documentation>
+  	</parameter>
+  
+  	<parameter member="y" to="string" default="2" from="string" name="table_y_variable">
+         		<documentation> Y variable_index  or name 		</documentation>
+  	</parameter>
+ 
+  	<parameter member="values" to="string" default="-1" from="string" name="table_value_variable">
+         		<documentation>  variable_index  or name 		</documentation>
+  	</parameter>
+  
+  	<parameter member="lat" to="string" default="2" from="string" name="table_latitude_variable">
+         		<documentation>  Latitudes  index or name 		</documentation>
+  	</parameter>
+
+  	<parameter member="lon" to="string" default="1" from="string" name="table_longitude_variable">
+         		<documentation>  longitudes  index or name		</documentation>
+  	</parameter>
+  
+  	<parameter member="x_component" to="string" default="-1" from="string" name="table_x_component_variable">
+         		<documentation>  u components index or name for vectors  		</documentation>
+  	</parameter>
+
+  	<parameter member="y_component" to="string" default="-1" from="string" name="table_y_component_variable">
+         		<documentation>  v components index or name for vectors  		</documentation>
+  	</parameter>
+  
+  	<parameter member="x_missing" to="float" default="-21.e6" from="float" name="table_x_missing_value">
+         		<documentation> mssing value for x   		</documentation> 
+  	</parameter>
+
+  	<parameter member="y_missing" to="float" default="-21.e6" from="float" name="table_y_missing_value">
+         		<documentation> missing value for x   		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="table_binning" default="on" member="table_binning" to="BinningObject" include="BinningObject.h">
+         		<documentation> Binning information 		</documentation>
+         		<option xml="nobinning" fortran="off" include="BinningObject.h" name="NoBinningObject">		</option>
+         		<option xml="binning" fortran="on" include="BinningObject.h" name="BinningObject">		</option>
+  	</parameter>
+</class></magics>
diff --git a/src/params/TaylorGrid.xml b/src/params/TaylorGrid.xml
new file mode 100644
index 0000000..cafcf5f
--- /dev/null
+++ b/src/params/TaylorGrid.xml
@@ -0,0 +1,161 @@
+<magics>
+<class action="ptaylor" directory="visualisers" prefix="taylor/taylor" xmltag="taylorgrid" name="TaylorGrid">
+		<documentation> description of the grid 	</documentation>
+    	<parameter member="label" to="string" default="Correlation" from="string" name="taylor_label">
+            		<documentation>
+              	Label of the grid
+           		</documentation>
+           		<release>Magics++2.7		</release> 
+        	</parameter> 
+        	<parameter member="label_colour" to="Colour" default="navy" from="string" name="taylor_label_colour">
+            		<documentation>
+              	Colour of the label
+           		</documentation>
+           		<release>Magics++1.4		</release> 
+        	</parameter>
+        	<parameter member="label_height" to="float" default="0.35" from="float" name="taylor_label_height">
+            		<documentation>
+              	Hieght of the label
+           		</documentation>
+           		<release>Magics++1.4		</release> 
+        	</parameter>
+        
+        	<parameter member="primary_increment" to="float" default="0.5" from="float" name="taylor_primary_grid_increment">
+            		<documentation>
+              	Reference used  of the Standard deviation plotting.
+           		</documentation>
+           		<release>Magics++1.4		</release> 
+        	</parameter>
+        
+       
+        
+       	<parameter member="primary_colour" to="Colour" default="navy" from="string" name="taylor_primary_grid_line_colour">
+            		<documentation>
+              	Colour used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="primary_thickness" to="int" default="1" from="int" name="taylor_primary_grid_line_thickness">
+            		<documentation>
+              	Thickness used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>    
+       	<parameter member="primary_style" to="LineStyle" default="solid" from="string" name="taylor_primary_grid_line_style">
+            		<documentation>
+              	Line Style used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="primary_reference" to="float" default="0.5" from="float" name="taylor_primary_grid_reference">
+            		<documentation>
+              	Reference used  of the Standard deviation plotting.
+           		</documentation>
+           		<release>Magics++2.7		</release> 
+        	</parameter>
+           	<parameter member="reference_colour" to="Colour" default="navy" from="string" name="taylor_reference_line_colour">
+            		<documentation>
+              	Colour used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="reference_thickness" to="int" default="2" from="int" name="taylor_reference_line_thickness">
+            		<documentation>
+              	Thickness used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter> 
+          	<parameter member="reference_style" to="LineStyle" default="solid" from="string" name="taylor_reference_line_style">
+            		<documentation>
+              	Line Style used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       
+       	<parameter member="primary_label" to="bool" default="on" from="string" name="taylor_primary_label">
+            		<documentation>
+              	Turn the labels (on/off) of the primary grid
+            		</documentation>
+            		<set name="taylor_primary_label_colour" value="on">		</set>
+            		<set name="taylor_primary_label_height" value="on">		</set>
+            
+           
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="primary_label_colour" to="Colour" default="navy" from="string" name="taylor_primary_label_colour">
+            		<documentation>
+              	Colour of the  labels  of the primary grid
+            		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="primary_label_height" to="float" default="0.35" from="float" name="taylor_primary_label_height">
+            		<documentation>
+              	Height of the  labels  of the primary grid
+            		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+    
+       	<parameter member="secondary_grid" to="bool" default="off" from="string" name="taylor_secondary_grid">
+            		<documentation>
+              	turn on/off the secondaries lines for the grid.
+           		</documentation>
+           on value='on' name='taylor_secondary_grid_reference'/>
+           		<set name="taylor_secondary_grid_increment" value="on">		</set>
+           		<set name="taylor_secondary_grid_line_colour" value="on">		</set>
+            		<set name="taylor_secondary_grid_line_thickness" value="on">		</set>
+            		<set name="taylor_secondary_grid_line_style" value="on">		</set>
+             		<set name="taylor_secondary_label" value="on">		</set>
+             
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="secondary_reference" to="float" default="0.5" from="float" name="taylor_secondary_grid_reference">
+            		<documentation>
+              	Reference used  of the Standard deviation plotting.
+           		</documentation>
+           		<release>Magics++1.4		</release> 
+        	</parameter>
+        	<parameter member="secondary_increment" to="float" default="0.5" from="float" name="taylor_secondary_grid_increment">
+            		<documentation>
+              	Reference used  of the Standard deviation plotting.
+           		</documentation>
+           		<release>Magics++1.4		</release> 
+        	</parameter>
+        	<parameter member="secondary_colour" to="Colour" default="navy" from="string" name="taylor_secondary_grid_line_colour">
+            		<documentation>
+              	Colour used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+            
+       	</parameter>
+       	<parameter member="secondary_thickness" to="int" default="1" from="int" name="taylor_secondary_grid_line_thickness">
+            		<documentation>
+              	Thickness used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="secondary_style" to="LineStyle" default="solid" from="string" name="taylor_secondary_grid_line_style">
+            		<documentation>
+              	Line Style used to plot the primary grid
+           		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter> 	<parameter member="secondary_label" to="bool" default="on" from="string" name="taylor_secondary_label">
+            		<documentation>
+              	Turn the labels (on/off) of the secondary grid
+            		</documentation>
+            		<set name="taylor_secondary_label_colour" value="on">		</set>
+             		<set name="taylor_secondary_label_height" value="on">		</set>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="secondary_label_colour" to="Colour" default="navy" from="string" name="taylor_secondary_label_colour">
+            		<documentation>
+              	Colour of the  labels  of the secondary grid
+            		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+       	<parameter member="secondary_label_height" to="float" default="0.35" from="float" name="taylor_secondary_label_height">
+            		<documentation>
+              	Height of the  labels  of the secondary grid
+            		</documentation>
+           		<release>Magics++2.8		</release>
+       	</parameter>
+</class></magics>
diff --git a/src/params/TaylorProjection.xml b/src/params/TaylorProjection.xml
new file mode 100644
index 0000000..007c809
--- /dev/null
+++ b/src/params/TaylorProjection.xml
@@ -0,0 +1,18 @@
+<magics>
+<class inherits="Transformation" xmltag="taylor" name="TaylorProjection" directory="common" prefix="taylor/taylor/taylor_standard_deviation" action="ptaylor">
+		<documentation>
+		
+		</documentation>
+         	<parameter xml="min" from="float" name="taylor_standard_deviation_min" default="0" member="min" to="float">
+            		<documentation>
+              	Min of the Standard deviation axis.
+           		</documentation>
+           		<release>Magics++1.4		</release> 
+       	</parameter>
+       	<parameter xml="max" from="float" name="taylor_standard_deviation_max" default="1" member="max" to="float">
+            		<documentation>
+              	Max of the Standard deviation axis.
+           		</documentation>
+           		<release>Magics++1.4		</release>
+       	</parameter>
+</class></magics>
diff --git a/src/params/TephiGrid.xml b/src/params/TephiGrid.xml
new file mode 100644
index 0000000..348bcaf
--- /dev/null
+++ b/src/params/TephiGrid.xml
@@ -0,0 +1,420 @@
+<magics>
+<class action="ptephi" directory="visualisers" name="TephiGrid">
+		<documentation> description of the grid 	</documentation>
+	
+		<parameter from="string" name="tephigram_isotherm_grid" default="on" member="isotherm" to="bool" values="on/off">
+            		<documentation>
+              	Plot the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release>
+           		<set name="tephigram_isotherm_colour" value="on">		</set>
+           		<set name="tephigram_isotherm_style" value="on">		</set> 
+           		<set name="tephigram_isotherm_thickness" value="on">		</set>
+           		<set name="tephigram_isotherm_interval" value="on">		</set>
+           		<set name="tephigram_isotherm_reference" value="on">		</set>
+           		<set name="tephigram_isotherm_reference_colour" value="on">		</set>
+           		<set name="tephigram_isotherm_reference_style" value="on">		</set>
+            		<set name="tephigram_isotherm_reference_thickness" value="on">		</set>
+           		<set name="tephigram_isotherm_label_colour" value="on">		</set>
+           		<set name="tephigram_isotherm_label_font_name" value="on">		</set>
+           		<set name="tephigram_isotherm_label_font_style" value="on">		</set>
+           		<set name="tephigram_isotherm_label_font_size" value="on">		</set>
+           		<set name="tephigram_isotherm_label_frequency" value="on">		</set>
+        	</parameter>  
+     	<parameter member="isotherm_colour" to="Colour" default="charcoal" from="string" name="tephigram_isotherm_colour">
+            		<documentation>
+              	Colou of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        	<parameter member="isotherm_thickness" to="int" default="1" from="int" name="tephigram_isotherm_thickness">
+            		<documentation>
+              	Thickness  of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+        
+       	<parameter member="isotherm_style" to="LineStyle" default="solid" from="string" name="tephigram_isotherm_style">
+            		<documentation>
+              	Line Style  of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>   
+        	<parameter member="isotherm_interval" to="float" default="10" from="float" name="tephigram_isotherm_interval">
+            		<documentation>
+              	interval for isotherms grid
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+          	<parameter member="isotherm_reference" to="float" default="0" from="float" name="tephigram_isotherm_reference">
+            		<documentation>
+              Reference   of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>    
+        	<parameter member="isotherm_reference_colour" to="Colour" default="red" from="string" name="tephigram_isotherm_reference_colour">
+            		<documentation>
+              Reference   of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+          	<parameter member="isotherm_reference_style" to="LineStyle" default="solid" from="string" name="tephigram_isotherm_reference_style">
+            		<documentation>
+              Reference   of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        	<parameter member="isotherm_reference_thickness" to="int" default="2" from="int" name="tephigram_isotherm_reference_thickness">
+            		<documentation>
+              Reference   of the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="isotherm_label_colour" to="Colour" default="charcoal" from="string" name="tephigram_isotherm_label_colour">
+            		<documentation>
+              Label Colour for the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="isotherm_label_font" to="string" default="sanserif" from="string" name="tephigram_isotherm_label_font_name">
+            		<documentation>
+              Font name used for the isotherms labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="isotherm_label_style" to="string" default="normal" from="string" name="tephigram_isotherm_label_font_style">
+            		<documentation>
+               Font Style used for the isotherms labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="isotherm_label_size" to="float" default="0.3" from="float" name="tephigram_isotherm_label_font_size">
+            		<documentation>
+              Font Size used for the isotherms labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+       
+         	<parameter member="isotherm_label_frequency" to="int" default="1" from="int" name="tephigram_isotherm_label_frequency">
+            		<documentation>
+             Isotherm frequency for labelling
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+    	<parameter member="isobar" to="bool" default="on" from="string" name="tephigram_isobar_grid">
+            		<documentation>
+              	Plot the isobars
+           		</documentation>
+           		<release>Magics++2.20		</release>
+           		<set name="tephigram_isobar_colour" value="on">		</set>
+           		<set name="tephigram_isobar_style" value="on">		</set> 
+           		<set name="tephigram_isobar_thickness" value="on">		</set>
+           		<set name="tephigram_isobar_interval" value="on">		</set>
+           		<set name="tephigram_isobar_reference" value="on">		</set>
+           		<set name="tephigram_isobar_label_colour" value="on">		</set>
+           		<set name="tephigram_isobar_label_font_name" value="on">		</set>
+           		<set name="tephigram_isobar_label_font_style" value="on">		</set>
+           		<set name="tephigram_isobar_label_font_size" value="on">		</set>
+           		<set name="tephigram_isobar_label_reference" value="on">		</set>
+           		<set name="tephigram_isobar_label_frequency" value="on">		</set>
+        	</parameter>  
+     	<parameter member="isobar_colour" to="Colour" default="evergreen" from="string" name="tephigram_isobar_colour">
+            		<documentation>
+              	Colou of the isobars
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        	<parameter member="isobar_thickness" to="int" default="2" from="int" name="tephigram_isobar_thickness">
+            		<documentation>
+              	Thickness  of the isobars
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+        
+       	<parameter member="isobar_style" to="LineStyle" default="solid" from="string" name="tephigram_isobar_style">
+            		<documentation>
+              	Line Style  of the isobars
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>   
+        	<parameter member="isobar_interval" to="float" default="100" from="float" name="tephigram_isobar_interval">
+            		<documentation>
+              	Interval between isobars
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+          	<parameter member="isobar_reference" to="float" default="1000" from="float" name="tephigram_isobar_reference">
+            		<documentation>
+              	Line Style  of the isobars
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+                	<parameter member="isobar_label_colour" to="Colour" default="evergreen" from="string" name="tephigram_isobar_label_colour">
+            		<documentation>
+              Label Colour for the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="isobar_label_font" to="string" default="sanserif" from="string" name="tephigram_isobar_label_font_name">
+            		<documentation>
+              Font name used for the isobars labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="isobar_label_style" to="string" default="normal" from="string" name="tephigram_isobar_label_font_style">
+            		<documentation>
+               Font Style used for the isobars labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="isobar_label_size" to="float" default="0.3" from="float" name="tephigram_isobar_label_font_size">
+            		<documentation>
+              Font Size used for the isobars labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        
+         	<parameter member="isobar_label_frequency" to="int" default="1" from="int" name="tephigram_isobar_label_frequency">
+            		<documentation>
+             isobar frequency for labelling
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="dry_adiabatic" to="bool" default="on" from="string" name="tephigram_dry_adiabatic_grid">
+            		<documentation>
+              	Plot the dry_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release>
+           		<set name="tephigram_dry_adiabatic_colour" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_style" value="on">		</set> 
+           		<set name="tephigram_dry_adiabatic_thickness" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_intreval" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_reference" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_label_colour" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_label_font_name" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_label_font_style" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_label_font_size" value="on">		</set>
+           		<set name="tephigram_dry_adiabatic_label_frequency" value="on">		</set>
+        	</parameter>  
+     	<parameter member="dry_adiabatic_colour" to="Colour" default="charcoal" from="string" name="tephigram_dry_adiabatic_colour">
+            		<documentation>
+              	Colou of the dry_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        	<parameter member="dry_adiabatic_thickness" to="int" default="1" from="int" name="tephigram_dry_adiabatic_thickness">
+            		<documentation>
+              	Thickness  of the dry_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+        
+       	<parameter member="dry_adiabatic_style" to="LineStyle" default="solid" from="string" name="tephigram_dry_adiabatic_style">
+            		<documentation>
+              	Line Style  of the dry_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>   
+        	<parameter member="dry_adiabatic_interval" to="float" default="10" from="float" name="tephigram_dry_adiabatic_interval">
+            		<documentation>
+              	Interval between 2 dry_adiabatics.
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+          	<parameter member="dry_adiabatic_reference" to="float" default="0" from="float" name="tephigram_dry_adiabatic_reference">
+            		<documentation>
+              Reference   of the dry_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="dry_adiabatic_label_colour" to="Colour" default="charcoal" from="string" name="tephigram_dry_adiabatic_label_colour">
+            		<documentation>
+              Label Colour for the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="dry_adiabatic_label_font" to="string" default="sanserif" from="string" name="tephigram_dry_adiabatic_label_font_name">
+            		<documentation>
+              Font name used for the dry_adiabatics labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="dry_adiabatic_label_style" to="string" default="normal" from="string" name="tephigram_dry_adiabatic_label_font_style">
+            		<documentation>
+               Font Style used for the dry_adiabatics labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="dry_adiabatic_label_size" to="float" default="0.3" from="float" name="tephigram_dry_adiabatic_label_font_size">
+            		<documentation>
+              Font Size used for the dry_adiabatics labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        
+         	<parameter member="dry_adiabatic_label_frequency" to="int" default="1" from="int" name="tephigram_dry_adiabatic_label_frequency">
+            		<documentation>
+              frequency for dry_adiabatic labelling
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+    
+                	<parameter member="saturated_adiabatic" to="bool" default="on" from="string" name="tephigram_saturated_adiabatic_grid">
+            		<documentation>
+              	Plot the saturated_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release>
+           		<set name="tephigram_saturated_adiabatic_colour" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_style" value="on">		</set> 
+           		<set name="tephigram_saturated_adiabatic_thickness" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_interval" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_reference" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_label_colour" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_label_font_name" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_label_font_style" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_label_font_size" value="on">		</set>
+           		<set name="tephigram_saturated_adiabatic_label_frequency" value="on">		</set>
+        	</parameter>  
+     	<parameter member="saturated_adiabatic_colour" to="Colour" default="charcoal" from="string" name="tephigram_saturated_adiabatic_colour">
+            		<documentation>
+              	Colou of the saturated_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        	<parameter member="saturated_adiabatic_thickness" to="int" default="2" from="int" name="tephigram_saturated_adiabatic_thickness">
+            		<documentation>
+              	Thickness  of the dry_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+        
+       	<parameter member="saturated_adiabatic_style" to="LineStyle" default="solid" from="string" name="tephigram_saturated_adiabatic_style">
+            		<documentation>
+              	Line Style  of the saturated_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>   
+        	<parameter member="saturated_adiabatic_interval" to="float" default="5" from="float" name="tephigram_saturated_adiabatic_interval">
+            		<documentation>
+              	interval for saturated_adiabatics grid
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+          	<parameter member="saturated_adiabatic_reference" to="float" default="0" from="float" name="tephigram_saturated_adiabatic_reference">
+            		<documentation>
+              Reference   of the saturated_adiabatics
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="saturated_adiabatic_label_colour" to="Colour" default="charcoal" from="string" name="tephigram_saturated_adiabatic_label_colour">
+            		<documentation>
+              Label Colour for the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="saturated_adiabatic_label_font" to="string" default="sanserif" from="string" name="tephigram_saturated_adiabatic_label_font_name">
+            		<documentation>
+              Font name used for the saturated_adiabatics labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="saturated_adiabatic_label_style" to="string" default="normal" from="string" name="tephigram_saturated_adiabatic_label_font_style">
+            		<documentation>
+               Font Style used for the saturated_adiabatics labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="saturated_adiabatic_label_size" to="float" default="0.3" from="float" name="tephigram_saturated_adiabatic_label_font_size">
+            		<documentation>
+              Font Size used for the saturated_adiabatics labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        
+         	<parameter member="saturated_adiabatic_label_frequency" to="int" default="1" from="int" name="tephigram_saturated_adiabatic_label_frequency">
+            		<documentation>
+             saturated_adiabatic frequency for labelling
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="mixing_ratio" to="bool" default="on" from="string" name="tephigram_mixing_ratio_grid">
+            		<documentation>
+              	Plot the mixing_ratios
+           		</documentation>
+           		<release>Magics++2.20		</release>
+           		<set name="tephigram_mixing_ratio_colour" value="on">		</set>
+           		<set name="tephigram_mixing_ratio_style" value="on">		</set> 
+           		<set name="tephigram_mixing_ratio_thickness" value="on">		</set>
+           		<set name="tephigram_mixing_ratio_label_colour" value="on">		</set>
+           		<set name="tephigram_mixing_ratio_label_font_name" value="on">		</set>
+           		<set name="tephigram_mixing_ratio_label_font_style" value="on">		</set>
+           		<set name="tephigram_mixing_ratio_label_font_size" value="on">		</set>
+           		<set name="tephigram_mixing_ratio_label_frequency" value="on">		</set>
+           
+          
+        	</parameter>  
+     	<parameter member="mixing_ratio_colour" to="Colour" default="purple" from="string" name="tephigram_mixing_ratio_colour">
+            		<documentation>
+              	Colou of the mixing_ratios
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+        	<parameter member="mixing_ratio_thickness" to="int" default="1" from="int" name="tephigram_mixing_ratio_thickness">
+            		<documentation>
+              	Thickness  of the mixing_ratios
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+        
+       	<parameter member="mixing_ratio_style" to="LineStyle" default="dash" from="string" name="tephigram_mixing_ratio_style">
+            		<documentation>
+              	Line Style  of the mixing_ratios
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>   
+       
+         	<parameter member="mixing_ratio_frequency" to="int" default="1" from="int" name="tephigram_mixing_ratio_frequency">
+            		<documentation>
+             mixing_ratio frequency for grid
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="mixing_ratio_label_colour" to="Colour" default="purple" from="string" name="tephigram_mixing_ratio_label_colour">
+            		<documentation>
+              Label Colour for the isotherms
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="mixing_ratio_label_font" to="string" default="sanserif" from="string" name="tephigram_mixing_ratio_label_font_name">
+            		<documentation>
+              Font name used for the mixing_ratios labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        	<parameter member="mixing_ratio_label_style" to="string" default="normal" from="string" name="tephigram_mixing_ratio_label_font_style">
+            		<documentation>
+               Font Style used for the mixing_ratios labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+         	<parameter member="mixing_ratio_label_size" to="float" default="0.3" from="float" name="tephigram_mixing_ratio_label_font_size">
+            		<documentation>
+              Font Size used for the mixing_ratios labels 
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter>  
+      
+         	<parameter member="mixing_ratio_label_frequency" to="int" default="1" from="int" name="tephigram_mixing_ratio_label_frequency">
+            		<documentation>
+             mixing_ratio frequency for labelling
+           		</documentation>
+           		<release>Magics++2.20		</release> 
+        	</parameter> 
+        
+</class></magics>
diff --git a/src/params/TephiInfo.xml b/src/params/TephiInfo.xml
new file mode 100644
index 0000000..b535b35
--- /dev/null
+++ b/src/params/TephiInfo.xml
@@ -0,0 +1,2 @@
+<magics>
+<class inherits="Tephigram" xmltag="tephigram" name="TephiInfo" directory="common" action="ptephi" include="Tephigram.h"/></magics>
diff --git a/src/params/Tephigram.xml b/src/params/Tephigram.xml
new file mode 100644
index 0000000..14be777
--- /dev/null
+++ b/src/params/Tephigram.xml
@@ -0,0 +1,20 @@
+<magics>
+<class action="ptephi" inherits="Transformation" directory="common" xmltag="tephigram" name="Tephigram">
+
+	<parameter member="x_min" to="float" default="0" from="float" name="x_min">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter member="x_max" to="float" default="100" from="float" name="x_max">
+    		<release>Magics++0.1		</release>
+	</parameter>    
+	<parameter member="y_min" to="float" default="0" from="float" name="y_min">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter member="y_max" to="float" default="100" from="float" name="y_max">
+    		<release>Magics++0.1		</release>
+	</parameter>     
+
+
+</class></magics>
diff --git a/src/params/TextVisitor.xml b/src/params/TextVisitor.xml
new file mode 100644
index 0000000..6f423ec
--- /dev/null
+++ b/src/params/TextVisitor.xml
@@ -0,0 +1,374 @@
+<magics>
+<class xmltag="text" name="TextVisitor" xml_data="text_lines" directory="basic" prefix="text" xml_doc_inherits="XmlBasicNode" action="ptext">
+  	<documentation>	</documentation>
+  
+
+ 	<parameter from="string" name="text_html" default="on" metview="no" member="html" to="bool">
+         		<release>2.0		</release>
+         		<release_info> Change the default value from off to on in Magics2.12		</release_info>
+         		<documentation> enable use of HTML convention 		</documentation>
+  	</parameter>
+
+
+ 	<parameter member="count" to="int" default="1" from="int" name="text_line_count">
+         		<release>0.1		</release>
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> The number of lines of text to be plotted 		</documentation>
+         		<set name="text_line_1" value="1/2/3/4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_2" value="2/3/4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_3" value="3/4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_4" value="4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_5" value="5/6/7/8/9/10">		</set>
+         		<set name="text_line_6" value="6/7/8/9/10">		</set>
+         		<set name="text_line_7" value="7/8/9/10">		</set>
+         		<set name="text_line_8" value="8/9/10">		</set>
+         		<set name="text_line_9" value="9/10">		</set>
+         		<set name="text_line_10" value="10">		</set>
+ 	</parameter>
+
+  	<parameter member="line1" to="string" default="<magics_title/>" from="string" name="text_line_1">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+ 	<parameter member="line2" to="string" default="" from="string" name="text_line_2">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line3" to="string" default="" from="string" name="text_line_3">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line4" to="string" default="" from="string" name="text_line_4">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line5" to="string" default="" from="string" name="text_line_5">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line6" to="string" default="" from="string" name="text_line_6">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+
+   	<parameter member="line7" to="string" default="" from="string" name="text_line_7">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line8" to="string" default="" from="string" name="text_line_8">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line9" to="string" default="" from="string" name="text_line_9">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line10" to="string" default="" from="string" name="text_line_10">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+
+  	<parameter from="int" name="text_first_line" default="1" metview="no" member="first" to="int">
+          		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> The first line in the text block to be plotted 		</documentation>
+  	</parameter>
+  
+
+  	<parameter from="string" name="text_colour" default="blue" member="font_colour" to="Colour" metview_default="navy">
+			<documentation>Colour of text in text block (Full choice of colours)		</documentation>
+			<release>1.0		</release>
+  	</parameter>
+
+  	<parameter xml="font" from="string" name="text_font" default="sansserif" member="font" to="string">
+			<documentation>Font name - please make sure this font is installed!		</documentation>
+			<release>1.0		</release>
+			<release_info>Much improved in version 1.3.		</release_info>
+  	</parameter>
+  
+  	<parameter member="font_style" to="string" default="normal" from="string" name="text_font_style">
+			<documentation>Font style. Set this to an empty string in order to remove all styling.		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="text_font_size" default="0.5" member="font_dimension" to="string" metview_default="0.3">
+			<documentation>Font size, specified in cm.		</documentation>
+  	</parameter>
+
+  	<parameter member="justification" to="Justification" default="centre" from="string" name="text_justification">
+			<release>Magisc++0.3		</release>
+			<documentation> How text is to be positioned in each line (LEFT/CENTRE/RIGHT)		</documentation>
+  	</parameter>
+
+
+   	<parameter from="string" name="text_automatic" visible="no" default="on" member="automatic" to="bool">
+			<release>Magisc++2.1		</release>
+			<documentation>How text is to be positioned in each line (LEFT/CENTRE/RIGHT)		</documentation>
+  	</parameter>
+
+  	<parameter member="lines" to="stringarray" default="stringarray()" from="stringarray" name="text_lines">
+         		<documentation> text block to be plotted 		</documentation>
+         		<migration> New Magics: Parameter text sent to new Magics[TextAction].  		</migration>
+  	</parameter>
+ 	<parameter from="string" name="text_mode" default="title" member="mode" to="string" values="title/positional">
+ 			<documentation>Whether text is to be a title or user positioned (TITLE/POSITIONAL)		</documentation>
+    		<set name="text_box_x_position" value="positional">		</set>
+    		<set name="text_box_y_position" value="positional">		</set>
+    		<set name="text_box_x_length" value="positional">		</set>
+    		<set name="text_box_y_length" value="positional">		</set>
+			<release>1.0		</release>
+  	</parameter>
+    	<parameter member="x" to="float" default="-1" from="float" name="text_box_x_position">
+         		<release>0.1		</release>
+         		<documentation> X coordinate of lower left corner of text box (Relative to PAGE_X_POSITION) 		</documentation>
+  	</parameter>
+
+  	<parameter member="y" to="float" default="-1" from="float" name="text_box_y_position">
+         		<release>0.1		</release>
+         		<documentation> Y coordinate of lower left corner of text box (Relative to PAGE_Y_POSITION) 		</documentation>
+  	</parameter>
+
+  	<parameter member="width" to="float" default="-1" from="float" name="text_box_x_length">
+         		<release>0.1		</release>
+         		<documentation> Length of text box in X direction 		</documentation>
+  	</parameter>
+
+  	<parameter xml="height" from="float" name="text_box_y_length" default="-1" member="height" to="float">
+         		<release>0.1		</release>
+         		<migration> New Magics: Parameter text_box_y_length sent to new Magics[TextBox].  		</migration>
+  	</parameter>
+
+  	<parameter member="blanking" to="bool" default="off" from="string" name="text_box_blanking">
+         		<release>0.1		</release>
+          		<release_info>Paremeter defined but not implemeted : expected for 0.6		</release_info>
+         		<documentation> All plotting in the text box previous to PTEXT call will be blanked out. Plotting after PTEXT call will not be affected. (ON/OFF) 		</documentation>
+  	</parameter>
+
+  	<parameter member="border" to="bool" default="off" from="string" name="text_border">
+         		<release>0.5		</release>    
+         		<documentation> Plot border around text box (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter text_border sent to new Magics[TextBox].  		</migration>
+         		<set name="text_border_line_style" value="on">		</set>
+         		<set name="text_border_colour" value="on">		</set>
+         		<set name="text_border_thickness" value="on">		</set>
+      
+  	</parameter>
+  
+  	<parameter member="border_line_style" to="LineStyle" default="solid" from="string" name="text_border_line_style">
+          		<release>0.5		</release>    
+         		<documentation> Line style of border around text box (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) 		</documentation>
+  	</parameter>
+
+  	<parameter member="border_colour" to="Colour" default="blue" from="string" name="text_border_colour">
+          		<release>0.5		</release>    
+         		<documentation> Colour of border around text box (Full choice of colours) 		</documentation>
+  	</parameter>
+
+  	<parameter member="border_thickness" to="int" default="1" from="int" name="text_border_thickness">
+          		<release>0.5		</release>    
+         		<documentation> Thickness of text box border 		</documentation>
+  	</parameter>
+  
+    
+   	<parameter from="string" name="text_character_1" default="" metview="no" member="character1" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="text_character_2" default="" metview="no" member="character2" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_3" default="" metview="no" member="character3" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_4" default="" metview="no" member="character4" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_5" default="" metview="no" member="character5" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_6" default="" metview="no" member="character6" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_7" default="" metview="no" member="character7" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_8" default="" metview="no" member="character8" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_9" default="" metview="no" member="character9" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_10" default="" metview="no" member="character10" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+
+  	<parameter from="int" name="text_integer_1" default="0" metview="no" member="integer1" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+  
+   	<parameter from="int" name="text_integer_2" default="0" metview="no" member="integer2" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_3" default="0" metview="no" member="integer3" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_4" default="0" metview="no" member="integer4" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_5" default="0" metview="no" member="integer5" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_6" default="0" metview="no" member="integer6" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_7" default="0" metview="no" member="integer7" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_8" default="0" metview="no" member="integer8" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_9" default="0" metview="no" member="integer9" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_10" default="0" metview="no" member="integer10" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+
+  	<parameter from="float" name="text_real_1" default="0" metview="no" member="real1" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter from="float" name="text_real_2" default="0" metview="no" member="real2" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_3" default="0" metview="no" member="real3" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_4" default="0" metview="no" member="real4" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_5" default="0" metview="no" member="real5" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_6" default="0" metview="no" member="real6" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_7" default="0" metview="no" member="real7" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_8" default="0" metview="no" member="real8" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_9" default="0" metview="no" member="real9" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_10" default="0" metview="no" member="real10" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+  	<parameter from="float" name="text_line_height_ratio_1" default="1" metview="no" member="height_ratio_1" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  
+  	<parameter from="float" name="text_line_height_ratio_2" default="1" metview="no" member="height_ratio_2" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_3" default="1" metview="no" member="height_ratio_3" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_4" default="1" metview="no" member="height_ratio_4" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_5" default="1" metview="no" member="height_ratio_5" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_6" default="1" metview="no" member="height_ratio_6" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_7" default="1" metview="no" member="height_ratio_7" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_8" default="1" metview="no" member="height_ratio_8" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_9" default="1" metview="no" member="height_ratio_9" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  
+  	<parameter from="float" name="text_line_height_ratio_10" default="1" metview="no" member="height_ratio_10" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+
+ 
+  	<parameter from="string" name="text_instruction_shift_character" default="\" metview="no" member="text_instruction_shift_character" to="string" implemented="no">
+         		<documentation> Symbol or character for indicating that an Instruction String follows 		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="text_escape_character" default="#" member="text_escape_character" to="string" implemented="no">
+         		<documentation> Symbol or character followed by 3 octal numbers - see one of Figure XIV-1 to Figure XIV-3 		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="text_parameter_escape_character" default="@" metview="no" member="parameter_escape" to="string">
+         		<documentation> Symbol or character for indicating that a MAGICS parameter follows. The MAGICS parameter is also terminated by the same symbol or character 		</documentation>
+  	</parameter>
+  
+  	<parameter xml="line_height_ratios" from="floatarray" name="text_line_height_ratios" default="floatarray()" metview="no" member="height_ratios" to="floatarray">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+
+  	<parameter priory="0" from="float" name="text_line_space_ratio" default="1.5" member="text_line_space_ratio" to="float" implemented="no">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of space above and below each line to text reference character height. See main text 		</documentation>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/Title.xml b/src/params/Title.xml
new file mode 100644
index 0000000..d4121dc
--- /dev/null
+++ b/src/params/Title.xml
@@ -0,0 +1,42 @@
+<magics>
+<class directory="visualisers" inherits="TitleBase" name="Title" xml_data="title_text">
+  	<documentation>	</documentation>
+  
+  	<parameter xml="colour" from="string" name="title_colour" default="blue" member="colour" to="Colour">
+          		<release>Magisc++0.8		</release>
+         		<documentation> Colour of the title 		</documentation>
+         		<migration> New Magics: Parameter text_mode sent to new Magics[TextAction].  		</migration>
+  	</parameter>
+  	<parameter xml="text" from="stringarray" name="title_text" default="stringarray()" member="text" to="stringarray">
+          		<release>Magisc++0.8		</release>
+         		<documentation>title 		</documentation>
+         		<migration> New Magics: Parameter text_mode sent to new Magics[TextAction].  		</migration>
+  	</parameter>
+   	<parameter xml="justification" from="string" name="title_justification" default="centre" member="justification" to="Justification">
+          		<release>Magisc++0.8		</release>
+         		<documentation> How text is to be positioned in each line (LEFT/CENTRE/RIGHT)	 		</documentation>
+         		<migration> New Magics: Parameter title_justification sent to new Magics[Ttitle].  		</migration>
+  	</parameter>
+  
+  	<parameter xml="font_size" from="float" name="text_font_size" default="0.5" member="height" to="float">
+	     		<release>Magics++0.8		</release>
+	      		<release_info>Change default from 2.0 to 0.5 ---> To be discussed later!		</release_info>
+         		<documentation> height for calculating the height of the characters in text lines (see main text) 		</documentation>
+         		<migration> New Magics: Parameter text_reference_character_height sent to new Magics[TextAction].  		</migration>
+  	</parameter>
+
+  	<parameter xml="font" from="string" name="title_font" default="sansserif" member="font" to="string">
+	     		<release>Magics++1.38		</release>
+         		<documentation>Font to use 		</documentation>
+         		<migration> New Magics: Parameter text_reference_character_height sent to new Magics[TextAction].  		</migration>
+  	</parameter>
+   	<parameter xml="font_style" from="string" name="text_font_style" default="normal" member="style" to="string">
+			<available>normal		</available>
+			<available>bold		</available>
+			<available>italic		</available>
+			<available>bolditalic		</available>
+			<documentation>Font style.		</documentation>
+			<release>1.3		</release>
+			<release_info>Implemented in Magics++ 1.3.		</release_info>
+  	</parameter>
+</class></magics>
diff --git a/src/params/TitleBase.xml b/src/params/TitleBase.xml
new file mode 100644
index 0000000..678b497
--- /dev/null
+++ b/src/params/TitleBase.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="TitleBase.h" name="TitleBase"/></magics>
diff --git a/src/params/TitleTemplate.xml b/src/params/TitleTemplate.xml
new file mode 100644
index 0000000..8e22817
--- /dev/null
+++ b/src/params/TitleTemplate.xml
@@ -0,0 +1,11 @@
+<magics>
+<class directory="decoders" name="TitleTemplate">
+		<documentation>
+		Here comes the description of the TitleTemplate 
+		</documentation>
+        	<parameter member="file" to="string" default="title_template.xml" from="string" name="title_template_filename">
+            		<documentation> Description in Xml of the titles  		</documentation>
+            		<migration> New Magics: Parameter title_template_filename sent to new Magics[TitleTemplate].  		</migration>
+        	</parameter>
+        
+</class></magics>
diff --git a/src/params/Transformation.xml b/src/params/Transformation.xml
new file mode 100644
index 0000000..1b94d33
--- /dev/null
+++ b/src/params/Transformation.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="common" name="Transformation"/></magics>
diff --git a/src/params/UVWindMode.xml b/src/params/UVWindMode.xml
new file mode 100644
index 0000000..b79ef48
--- /dev/null
+++ b/src/params/UVWindMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pgrib" directory="decoders" inherits="WindMode" include="WindMode.h" name="UVWindMode"/></magics>
diff --git a/src/params/UserLogoPlotting.xml b/src/params/UserLogoPlotting.xml
new file mode 100644
index 0000000..59d0b05
--- /dev/null
+++ b/src/params/UserLogoPlotting.xml
@@ -0,0 +1,49 @@
+<magics>
+<class inherits="NoLogoPlotting" xmltag="userlogo" name="UserLogoPlotting" prefix="page/page/user_logo" directory="common" include="LogoPlotting.h">  
+
+	<parameter member="path" to="string" default="" from="string" name="user_logo_filename">
+         		<documentation for_docs="no"> Logo's Path 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+	</parameter>
+
+	<parameter member="format" to="string" default="PNG" from="string" name="user_logo_format">
+  		<documentation for_docs="no">Specify the format of the logo		</documentation>
+  		<release>Basic implementation in 0.6		</release>
+	</parameter>
+
+	<parameter member="units" to="string" default="cm" from="string" name="user_logo_position_units">
+         		<documentation for_docs="no">Units used to define the position of the logo: cm or percent		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+	</parameter>
+
+	<parameter member="y" to="float" default="2.5" from="float" name="user_logo_y_position">
+         		<documentation for_docs="no"> Y position of the imported image 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+	</parameter>
+  
+  	<parameter member="x" to="float" default="80" from="float" name="user_logo_x_position">
+         		<documentation for_docs="no"> X position of the imported image 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+ 
+  	<parameter member="bottom" to="string" default="" from="string" name="user_logo_bottom">
+         		<documentation for_docs="no"> Y position of the imported image 		</documentation>
+         		<release>Implementation in 2.4		</release>
+  	</parameter>
+  
+  	<parameter member="left" to="string" default="" from="string" name="user_logo_left">
+         		<documentation for_docs="no"> X position of the imported image 		</documentation>
+         		<release>implementation in 2.4		</release>
+  	</parameter>
+      
+  	<parameter member="width" to="float" default="-1" from="float" name="user_logo_width">
+         		<documentation for_docs="no"> width of the imported image (-1 means use the dimension of the image) 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+
+  	<parameter member="height" to="float" default="-1" from="float" name="user_logo_height">
+         		<documentation for_docs="no"> height of the imported image (-1 means use the dimension of the image) 		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/VDWindMode.xml b/src/params/VDWindMode.xml
new file mode 100644
index 0000000..66c3d45
--- /dev/null
+++ b/src/params/VDWindMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pgrib" directory="decoders" inherits="WindMode" include="WindMode.h" name="VDWindMode"/></magics>
diff --git a/src/params/ValuePlot.xml b/src/params/ValuePlot.xml
new file mode 100644
index 0000000..e7e6a36
--- /dev/null
+++ b/src/params/ValuePlot.xml
@@ -0,0 +1,17 @@
+<magics>
+<class inherits="ValuePlotBase" xmltag="gridvalues" name="ValuePlot" directory="visualisers" prefix="contour/contour_grid_value/contour_grid_value" action="pcont">
+
+  	<parameter from="string" name="contour_grid_value_type" default="normal" member="type" to="string" values="normal/reduced/akima">
+         		<documentation> For Gaussian fields, plot normal (regular) values or reduced grid values.  (NORMAL/REDUCED/akima). If akima, the akima grid values will be plotted 		</documentation>
+         		<release>0.2		</release>
+  	</parameter>
+
+  	<parameter xml="plot_type" from="string" name="contour_grid_value_plot_type" default="value" member="method" to="ValuePlotMethod">
+         		<documentation> (VALUE/MARKER/BOTH) 		</documentation>
+         		<option xml="value" fortran="value" include="ValuePlotMethod.h" name="ValuePlotMethod">		</option>
+         		<option xml="marker" fortran="marker" include="MarkerValuePlotMethod.h" name="MarkerValuePlotMethod">		</option>
+         		<option xml="both" fortran="both" include="BothValuePlotMethod.h" name="BothValuePlotMethod">		</option>
+         		<release>0.2		</release>
+ 	</parameter>
+
+ </class></magics>
diff --git a/src/params/ValuePlotBase.xml b/src/params/ValuePlotBase.xml
new file mode 100644
index 0000000..892efaa
--- /dev/null
+++ b/src/params/ValuePlotBase.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" include="ValuePlotBase.h" name="ValuePlotBase"/></magics>
diff --git a/src/params/ValuePlotMethod.xml b/src/params/ValuePlotMethod.xml
new file mode 100644
index 0000000..71bce11
--- /dev/null
+++ b/src/params/ValuePlotMethod.xml
@@ -0,0 +1,45 @@
+<magics>
+<class action="pcont" directory="visualisers" prefix="contour/contour_grid_value/contour_grid_value" name="ValuePlotMethod">
+
+	<parameter from="float" name="contour_grid_value_min" default="-1.0e+21" doc_class="ValuePlot" member="min" to="float">
+         		<documentation> The minimum value for which grid point values are to be plotted 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter from="float" name="contour_grid_value_max" default="1.0e+21" doc_class="ValuePlot" member="max" to="float">
+         		<documentation> The maximum value for which grid point values are to be plotted 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter from="int" name="contour_grid_value_lat_frequency" default="1" doc_class="ValuePlot" member="lat_frequency" to="int">
+         		<documentation> The grid point values in every Nth latitude row are plotted 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter from="int" name="contour_grid_value_lon_frequency" default="1" doc_class="ValuePlot" member="lon_frequency" to="int">
+         		<documentation> The grid point values in every Nth longitude column are plotted 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+  
+	<parameter member="height" to="float" default="0.25" from="float" name="contour_grid_value_height">
+         		<documentation> Height of grid point values  		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="colour" to="Colour" default="blue" from="string" name="contour_grid_value_colour">
+         		<documentation> Colour of grid point values (Full choice of colours) 		</documentation>
+         		<release>0.2		</release>
+	</parameter>
+
+	<parameter member="format" to="string" default="(automatic)" from="string" name="contour_grid_value_format">
+         		<documentation> Format of grid point values (MAGICS Format/(AUTOMATIC)) 		</documentation>
+         		<release>0.2		</release>
+         		<release>Format is not yet implemented. Expected Magics++0.3		</release>
+	</parameter>
+
+	<parameter member="quality" to="string" default="low" from="string" name="contour_grid_value_quality">
+         		<documentation> (LOW/MEDIUM/HIGH) 		</documentation>
+         		<release>0.2		</release>
+         		<release>Quality is not yet implemented. Expected Magics++0.3		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/Wind.xml b/src/params/Wind.xml
new file mode 100644
index 0000000..2acc5ae
--- /dev/null
+++ b/src/params/Wind.xml
@@ -0,0 +1,26 @@
+<magics>
+<class xmltag="wind" name="Wind" metview="MWIND" directory="visualisers" prefix="wind" action="pwind">
+  	<documentation> Wind plotting facilities allow users to plot wind fields as either arrows or flags.	</documentation>
+
+  	<parameter member="type" to="WindPlotting" default="arrows" from="string" name="wind_field_type">
+         		<documentation> Method of wind field plotting  		</documentation>
+         		<release>Basic implementation in 0.6		</release>
+         		<option xml="flags" fortran="flags" include="FlagPlotting.h" name="FlagPlotting">		</option>
+         		<option xml="arrows" fortran="arrows" include="ArrowPlotting.h" name="ArrowPlotting">		</option>
+         		<option fortran="streamlines" include="Streamlines.h" name="Streamlines">		</option>
+  	</parameter>
+
+ 	<parameter from="string" name="wind_thinning_method" visible="false" default="data" member="thinning_method" to="string" values="data/user">
+         		<documentation> Method to control the thinning: 
+         data : wind_thinning_factor will determine the frequency as before 
+         user : wind_thining_factor will determine the minimal distance in user coordinates betvween 2 winds. 
+         the default is "data" for backward compatibility.
+          		</documentation>
+         		<release>2.9		</release>
+  	</parameter>
+
+  	<parameter member="thinning_factor" to="float" default="2.0" from="float" name="wind_thinning_factor">
+         		<documentation> Controls the actual number of wind arrows or flags plotted. See main text for explanation. Needs to 1.0 or larger.		</documentation>
+         		<release>0.6		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/WindMode.xml b/src/params/WindMode.xml
new file mode 100644
index 0000000..a4b4d59
--- /dev/null
+++ b/src/params/WindMode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pgrib" directory="decoders" include="WindMode.h" name="WindMode"/></magics>
diff --git a/src/params/WindPlotting.xml b/src/params/WindPlotting.xml
new file mode 100644
index 0000000..0cd61c0
--- /dev/null
+++ b/src/params/WindPlotting.xml
@@ -0,0 +1,131 @@
+<magics>
+<class action="pwind" directory="visualisers" prefix="wind/wind_flag" xmltag="flags" name="WindPlotting">
+		<documentation>Parameters common to the flags and arrows.	</documentation>
+
+	<parameter member="legend" to="bool" default="off" from="string" name="legend">
+			<release>2.1		</release>
+			<set name="wind_legend_text" value="on">		</set>
+			<set name="wind_arrow_legend_text" value="on">		</set>
+			<documentation> Add  a wind legend information in the legend 		</documentation>
+	</parameter>
+
+	<parameter from="string" name="wind_legend_only" visible="off" default="off" member="legend_only" to="bool">
+			<release>2.1		</release>
+			<documentation for_docs="no"> Wrep only : to build only the legned... 		</documentation>
+	</parameter>
+
+	<parameter member="legend_text" to="string" default="vector" from="string" name="wind_legend_text">
+			<release>2.1		</release>
+			<documentation> Use your own text in the legend		</documentation>
+	</parameter>
+
+	<parameter from="string" name="wind_advanced_method" default="off" member="advanced_method" to="string" values="on/off"> 
+         		<documentation>Enable advanced plotting of wind (default is off for backward compatibility). 
+         The coour is selected according to the intensity of the wind (vector) 		</documentation>
+          		<set name="wind_advanced_colour_selection_type" value="on">		</set> 		 
+		  		<set name="wind_advanced_colour_max_value" value="on">		</set> 
+		  		<set name="wind_advanced_colour_min_value" value="on">		</set>          
+          		<set name="wind_advanced_colour_table_colour_method" value="on">		</set>
+          		<set name="wind_advanced_colour_parameter" value="on">		</set>
+          		<set name="wind_advanced_colour_level_interval" value="on">		</set>
+          		<set name="wind_advanced_colour_level_list" value="on">		</set>
+          		<set name="wind_advanced_colour_list" value="on">		</set>
+          		<set name="wind_advanced_colour_list_policy" value="on">		</set>
+  		<release>2.9		</release>
+	</parameter>
+
+	<parameter from="string" name="wind_advanced_colour_parameter" default="speed" member="colour_method" to="string" values="speed/parameter">
+         		<documentation>if speed, the wind is coloured using the norm of the vector, If parameter, a third parameter is used. 		</documentation>
+         		<release>2.9		</release>
+	</parameter>
+
+	<parameter member="levels" to="LevelSelection" default="count" from="string" name="wind_advanced_colour_selection_type">
+         		<documentation>Set selection method 		</documentation>
+         		<release>2.6		</release>
+         		<option xml="count" fortran="count" docdive="no" include="CountSelectionType.h" name="CountSelectionType">		</option>
+         		<option xml="interval" fortran="interval" docdive="no" include="IntervalSelectionType.h" name="IntervalSelectionType">		</option>
+         		<option xml="list" fortran="list" docdive="no" include="LevelListSelectionType.h" name="LevelListSelectionType">		</option>
+         		<set name="wind_advanced_colour_level_list" value="list">		</set>
+         		<set name="wind_advanced_colour_level_interval" value="interval">		</set>	
+         		<set name="wind_advanced_colour_reference_level" value="interval">		</set>
+         		<set name="wind_advanced_colour_reference_level" value="count">		</set>
+         		<set name="wind_advanced_colour_level_count" value="count">		</set>
+         		<set name="wind_advanced_colour_level_tolerance" value="count">		</set>
+	</parameter>
+
+	<parameter member="max" to="float" default="1.e21" from="float" name="wind_advanced_colour_max_value">
+         		<documentation>Max value to plot 		</documentation>
+         		<release>2.6		</release>
+	</parameter>
+
+	<parameter member="min" to="float" default="-1.e21" from="float" name="wind_advanced_colour_min_value">
+         		<documentation>Min value to plot 		</documentation>
+         		<release>2.6		</release>
+	</parameter>
+
+	<parameter member="count" to="int" default="10" from="int" name="wind_advanced_colour_level_count">
+         		<documentation>Number of levels to be plotted. Magics will try to find "nice levels", 
+         this means that the number of levels could be slightly different		</documentation>
+         		<release>2.6		</release>
+	</parameter>
+
+	<parameter member="tolerance" to="int" default="2" from="int" name="wind_advanced_colour_level_tolerance">
+         		<documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] 		</documentation>
+         		<release>2.6		</release>
+	</parameter>
+ 
+	<parameter member="reference" to="float" default="0.0" from="float" name="wind_advanced_colour_reference_level">
+         		<documentation> Level from which the level interval is calculated 		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+
+
+  	<parameter member="interval" to="float" default="8.0" from="float" name="wind_advanced_colour_level_interval">
+         		<documentation> Interval in data units between different bands of colours 		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+ 
+		<parameter member="list" to="floatarray" default="floatarray()" from="floatarray" name="wind_advanced_colour_level_list">
+         		<documentation> List of levels  to be used 		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+  
+  	<parameter member="colourMethod" to="ColourTechnique" default="calculate" from="string" name="wind_advanced_colour_table_colour_method">
+         		<documentation> Method of generating the colours 		</documentation>
+  				<set name="wind_advanced_colour_max_level_colour" value="calculate">		</set>
+  				<set name="wind_advanced_colour_min_level_colour" value="calculate">		</set>
+  				<set name="wind_advanced_colour_direction" value="calculate">		</set>
+  				<set name="wind_advanced_colour_list" value="list">		</set>
+  				<set name="wind_advanced_colour_list_policy" value="list">		</set>
+         		<option xml="calculate" fortran="calculate" docdive="no" include="CalculateColourTechnique.h" name="CalculateColourTechnique">		</option>
+         		<option xml="list" fortran="list" docdive="no" include="ListColourTechnique.h" name="ListColourTechnique">		</option>
+         		<release>2.6		</release>
+  	</parameter>
+
+  	<parameter member="maxColour" to="Colour" default="blue" from="string" name="wind_advanced_colour_max_level_colour">
+         		<documentation> Highest shading band colour 		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+
+  	<parameter member="minColour" to="Colour" default="red" from="string" name="wind_advanced_colour_min_level_colour">
+         		<documentation> Lowest shading band colour 		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+
+  	<parameter from="string" name="wind_advanced_colour_direction" default="anti_clockwise" member="direction" to="string" values="clockwise/anti_clockwise">
+         		<documentation> Direction of colour sequencing for plotting  		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+
+  	<parameter from="stringarray" name="wind_advanced_colour_list" default="stringarray()" member="colours" to="stringarray" colourlist="on">
+         		<documentation> List of colours to be used in wind plotting 		</documentation>
+         		<release>2.6		</release>
+  	</parameter>
+  	<parameter member="colour_policy" to="ListPolicy" default="lastone" from="string" name="wind_advanced_colour_list_policy">
+         		<documentation> What to do if, the list of colours is smaller that the list of intervals: lastone/cycle 		</documentation>     
+         		<release>2.6		</release>
+  	</parameter>
+  
+  
+      
+</class></magics>
diff --git a/src/params/WrepJSon.xml b/src/params/WrepJSon.xml
new file mode 100644
index 0000000..4322bd7
--- /dev/null
+++ b/src/params/WrepJSon.xml
@@ -0,0 +1,82 @@
+<magics>
+<class xmltag="wrepjson" name="WrepJSon" directory="web" prefix="wrepjson" action="pwrepjson" include="EpsJSon.h">
+ 	<parameter member="path" to="string" default="" from="string" name="wrepjson_input_filename">
+  			<documentation> Path to the file containing the Bufr data 		</documentation>
+ 	</parameter>
+    	<parameter member="param_info" to="string" default="" from="string" name="wrepjson_parameter_information">
+         		<documentation> Product information for  key=parameter_info  		</documentation>
+        	</parameter> 
+        		
+        	<parameter member="position_info" to="bool" default="on" from="string" name="wrepjson_position_information">
+         		<documentation> Switch on/off the position information in the title. 		</documentation>
+        	</parameter> 
+   	<parameter member="product_info" to="string" default="" from="string" name="wrepjson_product_information">
+         		<documentation> Product information for  key=product_info 		</documentation>
+        	</parameter>
+    	<parameter member="family" to="string" default="eps" from="string" name="wrepjson_family">
+         		<documentation> Forecast information to plot!  		</documentation>
+   
+        	</parameter>
+ 
+ 	<parameter member="plumes" to="float" default="1" from="float" name="wrepjson_plumes_interval">
+  			<documentation> plumes interval 		</documentation>
+ 	</parameter>
+  	<parameter member="information" to="bool" default="on" from="string" name="wrepjson_information">
+  			<documentation> Plot or not information about station/forecast  in a long title   		</documentation>  
+ 	</parameter>
+ 	<parameter member="keyword" to="string" default="" from="string" name="wrepjson_keyword">
+  			<documentation> if several eps data are put in the same json object, give the keyowrd to find them   		</documentation>  
+ 	</parameter>
+   	<parameter member="station_name" to="string" default="" from="string" name="wrepjson_station_name">
+       		<documentation>Name of the station to use in the title 		</documentation>
+   	</parameter>
+  	<parameter member="param" to="string" default="1" from="string" name="wrepjson_parameter">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+         	<parameter member="param_scaling_factor" to="float" default="1" from="float" name="wrepjson_parameter_scaling_factor">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+         	<parameter member="param_offset_factor" to="float" default="0" from="float" name="wrepjson_parameter_offset_factor">
+             		<documentation> Scaling factor to apply to the values		</documentation>
+        	</parameter>
+        	<parameter member="clim_param" to="string" default="" from="string" name="wrepjson_clim_parameter">           
+            		<documentation> date to select for the clim In date format (YYYYMMDDHHHH)		</documentation>
+        	</parameter>  
+        
+        
+        	<parameter member="clim_step" to="int" default="36" from="int" name="wrepjson_clim_step">           
+            		<documentation> date to select for the clim In date format (YYYYMMDDHHHH)		</documentation>
+        	</parameter> 
+        
+        	<parameter member="steps" to="intarray" default="intarray()" from="intarray" name="wrepjson_steps">           
+            		<documentation> steps to extract ( legend will use step+12) 		</documentation>
+        	</parameter>
+         
+       	<parameter member="percentile" to="float" default="1" from="float" name="wrepjson_y_axis_percentile">           
+        		<documentation> use of threshold   		</documentation>
+        	</parameter>
+        
+         	<parameter member="threshold" to="float" default="50" from="float" name="wrepjson_y_axis_threshold">           
+            		<documentation> use of threshold   to get rid of the unlikely values		</documentation>
+     
+        	</parameter>
+         	<parameter member="y_max_threshold" to="float" default="INT_MAX" from="float" name="wrepjson_y_max_threshold">           
+            		<documentation> If all the values are below the threshold, use the threshold as max value when automatic setting of y axis		</documentation>
+     
+        	</parameter>
+		<parameter member="y_percent" to="float" default="0.01" from="float" name="wrepjson_y_percentage">           
+            				<documentation> percentage of the range to add to compute automatic minmax of axis.			</documentation>
+     
+        		</parameter>
+	   	<parameter member="correction" to="bool" default="off" from="string" name="wrepjson_temperature_correction">
+            		<documentation> Temperature correction  		</documentation>
+
+        	</parameter>
+
+	   	<parameter member="missing_value" to="float" default="-9999" from="float" name="wrepjson_missing_value">
+            		<documentation> Missing value  		</documentation>
+
+        	</parameter>
+
+        
+</class></magics>
diff --git a/src/params/WrepRootNode.xml b/src/params/WrepRootNode.xml
new file mode 100644
index 0000000..311eb23
--- /dev/null
+++ b/src/params/WrepRootNode.xml
@@ -0,0 +1,23 @@
+<magics>
+<class directory="basic" prefix="wrep_node" xmltag="magics" name="WrepRootNode">
+ 	<documentation>
+ 	In the wrep mode, magics will always try to fill the space: ie  the geographical area can be extended!
+ 	Different methods cab be used to control this extension.. 
+ 	centre : the middle point of the geographical will be put in the middle of the output ..
+ 	 top_left : the top_left point of the geographical will be put in the top_left of the output ..
+ 	 The other possibilities could be implemented but do not seem to be so important!
+ 	</documentation>
+  	<parameter member="pixel_width" to="float" default="800" from="float" name="wrep_node_width">
+           		<release>Magics++2.9		</release>
+         		<documentation> dimension in pixel of the output width 		</documentation>
+  	</parameter>
+  	<parameter member="pixel_height" to="float" default="400" from="float" name="wrep_node_height">
+           		<release>Magics++2.9		</release>
+         		<documentation> dimension in pixel of the output height		</documentation>
+  	</parameter>
+
+  	<parameter member="anchor" to="string" default="centre" from="string" name="wrep_node_mapping_anchor">
+           		<release>Magics++2.9		</release>
+         		<documentation> method name used for the extension 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/XCoordinate.xml b/src/params/XCoordinate.xml
new file mode 100644
index 0000000..8e8f7eb
--- /dev/null
+++ b/src/params/XCoordinate.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pnew" directory="common" xmltag="x_regular" include="Coordinate.h" name="XCoordinate"/></magics>
diff --git a/src/params/XDateCoordinate.xml b/src/params/XDateCoordinate.xml
new file mode 100644
index 0000000..ab81844
--- /dev/null
+++ b/src/params/XDateCoordinate.xml
@@ -0,0 +1,24 @@
+<magics>
+<class inherits="XCoordinate" metview_prefix="subpage_" xmltag="x_date" name="XDateCoordinate" directory="common" prefix="subpage/subpage_x/subpage_x_date" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+	<parameter xml="automatic" from="string" name="subpage_x_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+     		<release>Magics2.1		</release>
+     		<set name="subpage_x_max" value="off">		</set> 
+     		<set name="subpage_x_min" value="off">		</set>
+     		<set name="subpage_x_max" value="min_only">		</set> 
+     		<set name="subpage_x_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+	<parameter member="date_min" to="string" default="" from="string" name="subpage_x_date_min">
+         		<release>Magics++0.1		</release>
+	</parameter> 
+
+	<parameter xml="max" from="string" name="subpage_x_date_max" default="" member="date_max" to="string">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_x_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/XHyperCoordinate.xml b/src/params/XHyperCoordinate.xml
new file mode 100644
index 0000000..f8c0675
--- /dev/null
+++ b/src/params/XHyperCoordinate.xml
@@ -0,0 +1,32 @@
+<magics>
+<class inherits="XCoordinate" metview_prefix="subpage_" xmltag="x_hyper" name="XHyperCoordinate" directory="common" prefix="subpage/subpage_x/subpage_x_hyper" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+	<parameter xml="automatic" from="string" name="subpage_x_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+     		<release>Magics2.1		</release>
+     		<set name="subpage_x_max" value="off">		</set> 
+     		<set name="subpage_x_min" value="off">		</set>
+     		<set name="subpage_x_max" value="min_only">		</set> 
+     		<set name="subpage_x_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+	<parameter xml="min" from="float" name="subpage_x_min_latitude" default="-90" member="min_lat" to="float">
+   		<release>Magics++2.10		</release>
+	</parameter>
+
+	<parameter xml="max" from="float" name="subpage_x_max_latitude" default="90" member="max_lat" to="float">
+     		<release>Magics++2.10		</release>
+	</parameter>
+
+	<parameter xml="min" from="float" name="subpage_x_min_longitude" default="-180" member="min_lon" to="float">
+   		<release>Magics++2.10		</release>
+	</parameter>
+
+	<parameter xml="max" from="float" name="subpage_x_max_longitude" default="180" member="max_lon" to="float">
+   		<release>Magics++2.10		</release>
+	</parameter>
+
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_x_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/XLogarithmicCoordinate.xml b/src/params/XLogarithmicCoordinate.xml
new file mode 100644
index 0000000..8996a52
--- /dev/null
+++ b/src/params/XLogarithmicCoordinate.xml
@@ -0,0 +1,26 @@
+<magics>
+<class inherits="XCoordinate" metview_prefix="subpage_" xmltag="x_regular" name="XLogarithmicCoordinate" directory="common" prefix="subpage/subpage_x" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+
+	<parameter xml="automatic" from="string" name="subpage_x_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+     		<release>Magics2.1		</release>
+     		<set name="subpage_x_max" value="off">		</set> 
+     		<set name="subpage_x_min" value="off">		</set>
+     		<set name="subpage_x_max" value="min_only">		</set> 
+     		<set name="subpage_x_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+
+	<parameter xml="x_min" from="float" name="subpage_x_min" default="0" member="min" to="float">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter xml="x_max" from="float" name="subpage_x_max" default="100" member="max" to="float">
+    		<release>Magics++0.1		</release>
+	</parameter>
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_x_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+
+</class></magics>
diff --git a/src/params/XRegularCoordinate.xml b/src/params/XRegularCoordinate.xml
new file mode 100644
index 0000000..852320a
--- /dev/null
+++ b/src/params/XRegularCoordinate.xml
@@ -0,0 +1,27 @@
+<magics>
+<class inherits="XCoordinate" metview_prefix="subpage_" xmltag="x_regular" name="XRegularCoordinate" directory="common" prefix="subpage/subpage_x" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+
+	<parameter xml="automatic" from="string" name="subpage_x_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+     		<release>Magics2.1		</release>
+     		<set name="subpage_x_max" value="off">		</set> 
+     		<set name="subpage_x_min" value="off">		</set>
+     		<set name="subpage_x_max" value="min_only">		</set> 
+     		<set name="subpage_x_min" value="max_only">		</set>
+     		<set name="subpage_x_automatic_reverse" value="on">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+
+	<parameter xml="x_min" from="float" name="subpage_x_min" default="0" member="min" to="float">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter xml="x_max" from="float" name="subpage_x_max" default="100" member="max" to="float">
+    		<release>Magics++0.1		</release>
+	</parameter>
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_x_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+
+</class></magics>
diff --git a/src/params/XYList.xml b/src/params/XYList.xml
new file mode 100644
index 0000000..51d29b2
--- /dev/null
+++ b/src/params/XYList.xml
@@ -0,0 +1,126 @@
+<magics>
+<class directory="decoders" xmltag="xyinput" name="XYList">
+  	<documentation> Here comes the documentation of the XYSystem object 	</documentation>
+
+  	<parameter xml="x_values" from="floatarray" name="x_values" default="floatarray()" member="x" to="floatarray">
+         		<documentation> X Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="y_values" from="floatarray" name="y_values" default="floatarray()" member="y" to="floatarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  
+  
+  
+  
+  	<parameter xml="x_date_values" from="stringarray" name="x_date_values" default="stringarray()" member="x_date" to="stringarray">
+         		<documentation> X Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  	<parameter member="x_base" to="string" default="" from="string" name="x_base_date">
+         		<documentation>Base Date to use when X date coordinates defined as offset  		</documentation>
+         
+  	</parameter>
+  	<parameter member="x_offset" to="string" default="second" from="string" name="x_date_offset">
+         		<documentation>unit for the offset second/minute/hour/day		</documentation>
+        
+  	</parameter>
+   	<parameter member="y_base" to="string" default="" from="string" name="y_base_date">
+         		<documentation>Base Date to use when Y date coordinates defined as offset  		</documentation>
+         
+  	</parameter>
+  	<parameter member="y_offset" to="string" default="second" from="string" name="y_date_offset">
+         		<documentation>unit for the offset second/minute/hour/day		</documentation>
+        
+  	</parameter>
+
+  	<parameter xml="y_date_values" from="stringarray" name="y_date_values" default="stringarray()" member="y_date" to="stringarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  	<parameter member="x_missing" to="float" default="-21.e6" from="float" name="x_missing_value">
+         		<documentation> mssing value for x   		</documentation> 
+  	</parameter> 
+  	<parameter member="y_missing" to="float" default="-21.e6" from="float" name="y_missing_value">
+         		<documentation> missing value for x   		</documentation>
+  	</parameter>
+  
+   	<parameter xml="x2_values" from="floatarray" name="x2_values" default="floatarray()" member="x2" to="floatarray">
+         		<documentation> X2 Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="y2_values" from="floatarray" name="y2_values" default="floatarray()" member="y2" to="floatarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  
+   	<parameter member="x2_base" to="string" default="" from="string" name="x2_base_date">
+         		<documentation>Base Date to use when x2 date coordinates defined as offset  		</documentation>
+         
+  	</parameter>
+  	<parameter member="x2_offset" to="string" default="second" from="string" name="x2_date_offset">
+         		<documentation>unit for the offset second/minute/hour/day		</documentation>
+        
+  	</parameter>
+  	<parameter xml="x2_date_values" from="stringarray" name="x2_date_values" default="stringarray()" member="x2_date" to="stringarray">
+         		<documentation> X Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  	<parameter member="y2_base" to="string" default="" from="string" name="y2_base_date">
+         		<documentation>Base Date to use when x2 date coordinates defined as offset  		</documentation>
+         
+  	</parameter>
+  	<parameter member="y2_offset" to="string" default="second" from="string" name="y2_date_offset">
+         		<documentation>unit for the offset second/minute/hour/day		</documentation>
+        
+  	</parameter>
+  
+  	<parameter xml="y2_date_values" from="stringarray" name="y2_date_values" default="stringarray()" member="y2_date" to="stringarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="x_values" from="floatarray" name="x_lower_values" default="floatarray()" member="x_lower" to="floatarray">
+         		<documentation> X Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="y_values" from="floatarray" name="y_lower_values" default="floatarray()" member="y_lower" to="floatarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  
+  	<parameter xml="x_lower_date_values" from="stringarray" name="x_lower_date_values" default="stringarray()" member="x_lower_date" to="stringarray">
+         		<documentation> X Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="y_lower_date_values" from="stringarray" name="y_lower_date_values" default="stringarray()" member="y_lower_date" to="stringarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  
+    	<parameter xml="x_upper_values" from="floatarray" name="x_upper_values" default="floatarray()" member="x_upper" to="floatarray">
+         		<documentation> X Upper Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="y_upper_values" from="floatarray" name="y_upper_values" default="floatarray()" member="y_upper" to="floatarray">
+         		<documentation> y Upper Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  
+  	<parameter xml="x_upper_date_values" from="stringarray" name="x_upper_date_values" default="stringarray()" member="x_upper_date" to="stringarray">
+         		<documentation> X Values  		</documentation>
+         		<migration> New Magics: Parameter x_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+
+  	<parameter xml="y_upper_date_values" from="stringarray" name="y_upper_date_values" default="stringarray()" member="y_upper_date" to="stringarray">
+         		<documentation> y Values  		</documentation>
+         		<migration> New Magics: Parameter y_values sent to new Magics[XYList].  		</migration>
+  	</parameter>
+  
+</class></magics>
diff --git a/src/params/XmlBasicNode.xml b/src/params/XmlBasicNode.xml
new file mode 100644
index 0000000..eb6f9d4
--- /dev/null
+++ b/src/params/XmlBasicNode.xml
@@ -0,0 +1,147 @@
+<magics>
+<class action="MagML" directory="basic" prefix="view" xmltag="view" name="XmlBasicNode"> 
+  	<parameter member="standalone" to="bool" default="off" from="string" name="view_standalone">
+         		<release>Magics++2.9		</release>
+         		<documentation> If true, the node will be created in an external file .. can be useful for legend and text ...		</documentation>
+  	</parameter>
+  
+  	<parameter member="standalone_path" to="string" default="" from="string" name="view_standalone_file_name">
+         		<release>Magics++2.9		</release>
+         		<documentation> Path of the file wich will contain this view 		</documentation>
+  	</parameter>
+  
+  	<parameter member="standalone_format" to="string" default="png" from="string" name="view_standalone_format">
+         		<release>Magics++2.9		</release>
+         		<documentation> format of the file wich will contain this view 		</documentation>
+  	</parameter>
+ 
+  	<parameter member="standalone_width" to="float" default="128" from="float" name="view_standalone_width">
+         		<release>Magics++2.9		</release>
+         		<documentation> width of the image that will contain this view 		</documentation>
+  	</parameter>
+  
+   	<parameter member="standalone_height" to="float" default="64" from="float" name="view_standalone_height">
+         		<release>Magics++2.9		</release>
+         		<documentation> height of the image that will contain this view 		</documentation>
+  	</parameter>
+
+  	<parameter member="display" to="DisplayType" default="inline" from="string" name="view_display">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="bottom" to="string" default="0%" from="string" name="view_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>  
+  
+  	<parameter member="left" to="string" default="0%" from="string" name="view_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="width" to="string" default="100%" from="string" name="view_width">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="height" to="string" default="100%" from="string" name="view_height">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+
+  	<parameter member="margin_bottom" to="string" default="undef" from="string" name="view_margin_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="margin_left" to="string" default="undef" from="string" name="view_margin_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="margin_right" to="string" default="undef" from="string" name="view_margin_right">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="margin_top" to="string" default="undef" from="string" name="view_margin_top">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+
+  	<parameter member="background" to="Colour" default="white" from="string" name="view_background_colour">
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter member="border_bottom" to="string" default="1px" from="string" name="view_border_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="border_left" to="string" default="1px" from="string" name="view_border_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="border_right" to="string" default="1px" from="string" name="view_border_right">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="border_top" to="string" default="1px" from="string" name="view_border_top">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="border" to="bool" default="on" from="string" name="view_border"> 
+         		<documentation> Frame 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+  
+  	<parameter member="blanking" to="bool" default="on" from="string" name="view_blanking"> 
+         		<documentation> Blanking 		</documentation>
+         		<release>Magics++2.1		</release>
+  	</parameter>
+  
+  	<parameter member="border_colour" to="Colour" default="tan" from="string" name="view_border_colour"> 
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  
+  	<parameter member="border_style" to="LineStyle" default="solid" from="string" name="view_border_style"> 
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  
+  	<parameter member="border_thickness" to="int" default="1" from="int" name="view_border_thickness"> 
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter member="padding_bottom" to="string" default="0%" from="string" name="view_padding_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="padding_left" to="string" default="0%" from="string" name="view_padding_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="padding_right" to="string" default="0%" from="string" name="view_padding_right">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="padding_top" to="string" default="0%" from="string" name="view_padding_top">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="padding_colour" to="Colour" default="none" from="string" name="view_padding_colour">
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+</class></magics>
diff --git a/src/params/XmlBox.xml b/src/params/XmlBox.xml
new file mode 100644
index 0000000..02952de
--- /dev/null
+++ b/src/params/XmlBox.xml
@@ -0,0 +1,45 @@
+<magics>
+<class directory="visualisers" name="XmlBox">
+  	<parameter xml="left" from="string" name="box_left" default="5%" member="left" to="string">
+         		<release>Magics++0.8		</release>
+         		<documentation> Left Position of Box 		</documentation>
+         		<migration>Only avalaible in MagML  		</migration>
+  	</parameter>
+
+  	<parameter xml="bottom" from="string" name="box_bottom" default="80%" member="bottom" to="string">
+         		<release>Magics++0.8		</release>
+         		<documentation> Botton Position of Box 		</documentation>
+         		<migration> Only avalaible in MagML  		</migration>
+  	</parameter>
+
+  	<parameter xml="width" from="string" name="box_width" default="85%" member="width" to="string">
+         		<release>Magics++0.8		</release>
+         		<documentation> Length of text box in X direction 		</documentation>
+         		<migration> Only avalaible in MagML  		</migration>
+  	</parameter>
+
+  	<parameter xml="height" from="string" name="box_height" default="10%" member="height" to="string">
+         		<release>Magics++0.1		</release>
+         		<documentation> Length of text box in Y direction 		</documentation>
+         		<migration> Only avalaible in MagML  		</migration>
+  	</parameter>
+
+  	<parameter member="blanking" to="bool" default="off" from="string" name="blanking">
+         		<release>Magics++0.1		</release>
+          		<release_info>Paremeter defined but not implemeted : expected for Magics++0.6		</release_info>
+         		<documentation> All plotting in the text box previous to PTEXT call will be blanked out. Plotting after PTEXT call will not be affected. (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter text_box_blanking sent to new Magics[TextBox].  		</migration>
+  	</parameter>
+
+  	<parameter member="frame" to="FrameBase" default="off" from="string" name="frame">
+         		<release>Magics++0.5		</release>    
+         		<documentation> Plot border around text box (ON/OFF) 		</documentation>
+         		<option xml="frame" fortran="on" include="Frame.h" name="Frame">		</option>
+         			<option xml="noframe" fortran="off" include="Frame.h" name="NoFrame">		</option>
+         		<migration> New Magics: Parameter text_border sent to new Magics[TextBox].  		</migration>
+  	</parameter>
+  
+  
+  
+  
+</class></magics>
diff --git a/src/params/XmlLegendNode.xml b/src/params/XmlLegendNode.xml
new file mode 100644
index 0000000..d465594
--- /dev/null
+++ b/src/params/XmlLegendNode.xml
@@ -0,0 +1,2 @@
+<magics>
+<class directory="visualisers" inherits="XmlBasicNode/LegendNode" include="LegendNode.h" name="XmlLegendNode" doc_inherits="no"/></magics>
diff --git a/src/params/XmlPage.xml b/src/params/XmlPage.xml
new file mode 100644
index 0000000..180b606
--- /dev/null
+++ b/src/params/XmlPage.xml
@@ -0,0 +1,25 @@
+<magics>
+<class directory="common" name="XmlPage" embedded_objects="Frame">
+
+  		<parameter xml="format" from="string" name="format" default="a4" member="format" to="string">
+				<documentation> format of the page 		</documentation>
+  				<migration>  Only used in the MagML Interface  		</migration>
+    				<release>Magics++0.7		</release>
+		</parameter>
+
+		<parameter xml="orientation" from="string" name="orientation" default="landscape" member="orientation" to="string">
+         			<documentation>  orientation of the page 		</documentation>
+           			<migration> Only used in the MagML Interface 		</migration>
+				<release>Magics++0.7		</release>
+		</parameter>
+
+	
+		<parameter member="meta" to="MetaData" default="nometadata" from="string" name="meta">
+           		<release>Magics++0.7		</release>         
+         		<documentation> Write metadata in xml format 		</documentation>
+         		<option xml="metadata" include="MetaData.h" name="MetaData">		</option>
+         		<option xml="nometadata" include="MetaData.h" name="NoMetaData">		</option>
+         		<migration>  Only used in the MagML Interface  		</migration>
+  	</parameter>
+  
+</class></magics>
diff --git a/src/params/XmlRootNode.xml b/src/params/XmlRootNode.xml
new file mode 100644
index 0000000..640ac0d
--- /dev/null
+++ b/src/params/XmlRootNode.xml
@@ -0,0 +1,47 @@
+<magics>
+<class name="XmlRootNode" include='RootSceneNode.h' prefix="root_node" xmltag="magics">
+ 	<parameter member="format" to="string" default="a4" from="string" name="root_node_format">
+           		<release>Magics++2.4 		</release>
+          		<documentation>Format of super page (A4/A3/A2)		</documentation>
+  	</parameter>
+  
+   	<parameter member="orientation" to="string" default="landscape" from="string" name="root_node_orientation">
+           		<release>Magics++2.4		</release>
+         		<documentation>Orientation of super page (landscape/portrait)		</documentation>
+  	</parameter>
+  
+  	<parameter member="width" to="float" default="-1" from="float" name="root_node_width">
+           		<release>Magics++0.1		</release>
+         		<documentation> Horizontal length of super page 		</documentation>
+  	</parameter>
+
+  	<parameter member="height" to="float" default="-1" from="float" name="root_node_height">
+           		<release>Magics++0.1		</release>
+         		<documentation> Vertical length of super page 		</documentation>
+  	</parameter>
+  
+  	<parameter member="border" to="bool" default="off" from="string" name="root_node_frame">
+           		<release>Magics++2.1		</release>
+         		<documentation> Frame on/off 		</documentation>
+  	</parameter>
+  
+  	<parameter member="border_colour" to="Colour" default="blue" from="string" name="root_node_frame_colour">
+           		<release>Magics++2.1		</release>
+         		<documentation>Colour of frame		</documentation>
+  	</parameter>
+  
+  	<parameter member="border_style" to="LineStyle" default="solid" from="string" name="root_node_frame_line_style">
+           		<release>Magics++2.1		</release>
+         		<documentation> Frame Line Style 		</documentation>
+  	</parameter>
+  
+  	<parameter member="border_thickness" to="int" default="1" from="int" name="root_node_frame_thickness">
+           		<release>Magics++2.1		</release>
+         		<documentation> Frame thickness 		</documentation>
+  	</parameter>
+   	<parameter member="application" to="string" default="magml" from="string" name="root_node_application">
+           		<release>Magics++2.1		</release>
+         		<documentation> magml/wrep : set specail behaviour for wrep project 		</documentation>
+  	</parameter>
+</class>
+</magics>
diff --git a/src/params/XmlSceneNode.xml b/src/params/XmlSceneNode.xml
new file mode 100644
index 0000000..1a9c09d
--- /dev/null
+++ b/src/params/XmlSceneNode.xml
@@ -0,0 +1,122 @@
+<magics>
+<class action="MagML" directory="basic" prefix="scene_node/view" xmltag="page" name="XmlSceneNode"> 
+  	<parameter member="display" to="DisplayType" default="inline" from="string" name="view_display">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+
+  	<parameter member="bottom" to="string" default="0%" from="string" name="scene_node_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>  
+  
+  	<parameter member="left" to="string" default="0%" from="string" name="scene_node_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="width" to="string" default="100%" from="string" name="scene_node_width">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="height" to="string" default="100%" from="string" name="scene_node_height">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+
+  	<parameter member="margin_bottom" to="string" default="0%" from="string" name="scene_node_margin_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="margin_left" to="string" default="0%" from="string" name="scene_node_margin_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="margin_right" to="string" default="0%" from="string" name="scene_node_margin_right">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="margin_top" to="string" default="0%" from="string" name="scene_node_margin_top">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+
+  	<parameter member="background" to="Colour" default="white" from="string" name="scene_node_background_colour">
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter member="border_bottom" to="string" default="1px" from="string" name="scene_node_border_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="border_left" to="string" default="1px" from="string" name="scene_node_border_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="border_right" to="string" default="1px" from="string" name="scene_node_border_right">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+   	<parameter member="border" to="bool" default="off" from="string" name="scene_node_border">
+         		<release>Magics++0.1		</release>
+          		<documentation> Frame on/off 		</documentation>
+  	</parameter>
+
+  	<parameter member="border_top" to="string" default="1px" from="string" name="scene_node_border_top">
+         		<release>Magics++0.1		</release>
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+
+  	<parameter member="border_colour" to="Colour" default="blue" from="string" name="scene_node_border_colour">
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+  
+  	<parameter member="border_style" to="LineStyle" default="solid" from="string" name="scene_node_border_style"> 
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter member="border_thickness" to="int" default="1" from="int" name="scene_node_border_thickness"> 
+         		<documentation> Colour of the subpage background 		</documentation>
+         		<release>Magics++0.1		</release>
+  	</parameter>
+
+  	<parameter member="padding_bottom" to="string" default="0%" from="string" name="scene_node_padding_bottom">
+         		<release>Magics++0.8		</release>
+         		<documentation> Y-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="padding_left" to="string" default="0%" from="string" name="scene_node_padding_left">
+         		<release>Magics++0.8		</release>
+         		<documentation> X-Coordinate of bottom of View.		</documentation>
+  	</parameter>
+  
+   	<parameter member="padding_right" to="string" default="0%" from="string" name="scene_node_padding_right">
+         		<release>Magics++0.8		</release>
+         		<documentation> width of the View .		</documentation>
+  	</parameter>
+  
+  	<parameter member="padding_top" to="string" default="0%" from="string" name="scene_node_padding_top">
+          		<documentation> Height of View.		</documentation>
+  	</parameter>
+  
+  	<parameter member="padding_colour" to="Colour" default="none" from="string" name="scene_node_padding_colour">
+         		<documentation> Colour of the subpage background 		</documentation>
+  	</parameter>
+  
+ 	<parameter from="string" name="scene_node_id_line" default="on" member="page_id" to="NoPageID" include="PageID.h">
+         		<release>Magics++2.1		</release>
+         		<option xml="pageid" include="PageID.h" name="PageID">		</option>
+         		<option xml="nopageid" include="PageID.h" name="NoPageID">		</option>
+         		<documentation> Plot identification line and ECMWF logo (ON/OFF) 		</documentation>
+  	</parameter>
+</class></magics>
diff --git a/src/params/XmlSubPage.xml b/src/params/XmlSubPage.xml
new file mode 100644
index 0000000..880ca07
--- /dev/null
+++ b/src/params/XmlSubPage.xml
@@ -0,0 +1,36 @@
+<magics>
+<class directory="common" name="XmlSubPage" embedded_objects="FrameBase/PageIdBase/LegendBase/TitleBase">
+
+  	<parameter xml="bottom" from="string" name="bottom" default="0%" member="bottom" to="string">
+			<documentation> Y-Coordinate of bottom of page.		</documentation>
+			<migration> Only used in the MagML Interface 		</migration>
+			<release>Magics++0.8		</release>
+  	</parameter>
+  
+  	<parameter xml="left" from="string" name="left" default="0%" member="left" to="string">
+			<documentation> X-Coordinate of bottom of page.		</documentation>
+			<migration> Only used in the MagML Interface 		</migration>
+			<release>Magics++0.8		</release>
+  	</parameter>
+  
+   	<parameter xml="width" from="string" name="width" default="100%" member="width" to="string">
+			<documentation> width of page.		</documentation>
+			<migration> Only used in the MagML Interface 		</migration>
+			<release>Magics++0.8		</release>
+  	</parameter>
+  
+  	<parameter xml="height" from="string" name="height" default="100%" member="height" to="string">
+			<documentation> Height of page.		</documentation>
+			<migration> Only used in the MagML Interface 		</migration>
+			<release>Magics++0.1		</release>
+  	</parameter>
+
+ 
+  
+  
+	
+  
+
+  
+  
+</class></magics>
diff --git a/src/params/XmlViewNode.xml b/src/params/XmlViewNode.xml
new file mode 100644
index 0000000..d2f72e0
--- /dev/null
+++ b/src/params/XmlViewNode.xml
@@ -0,0 +1,23 @@
+<magics>
+<class inherits="XmlBasicNode" xmltag="map" name="XmlViewNode" directory="basic" prefix="view/subpage_map" action="MagML"> 
+		<parameter member="fitted" to="string" default="off" from="string" name="view_fitted_mode">
+			<documentation> If set to cropped, the projection will force a resize of the output to respect the aspect ratio.. Useful in the context of the web..  If set to fitted, the projection willbe expendef to fill the space! a resize of the output to respect the aspect ratio.. Useful in the context of the web.. 		</documentation>
+		</parameter>
+		<parameter member="transformation" to="Transformation" default="cylindrical" from="string" name="subpage_map_projection">
+         		<documentation> Projection required(CYLINDRICAL/ POLAR_STEREOGRAPHIC/ MERCATOR/SATELLITE/LAMBERT/AITOFF/OCEAN_SECTION/NONE) 		</documentation>
+         		<release>Magics++0.1		</release>
+        
+         
+         		<option xml="cylindrical" fortran="cylindrical" include="GeoRectangularProjection.h" name="GeoRectangularProjection">		</option>
+
+         
+         
+
+         		<option xml="mercator" fortran="mercator" include="GeoRectangularProjection.h" name="MercatorProjection">		</option>
+		 		<option xml="cartesian" fortran="none" include="CartesianTransformation.h" name="CartesianTransformation">		</option>
+         		<option xml="taylor" fortran="taylor" include="TaylorProjection.h" name="TaylorProjection">		</option>
+         		<option xml="tephigram" fortran="tephigram" include="Tephigram.h" name="Tephigram">		</option>
+         
+         
+		</parameter>
+</class></magics>
diff --git a/src/params/YCoordinate.xml b/src/params/YCoordinate.xml
new file mode 100644
index 0000000..c2c0752
--- /dev/null
+++ b/src/params/YCoordinate.xml
@@ -0,0 +1,2 @@
+<magics>
+<class action="pnew" directory="common" xmltag="y_regular" include="Coordinate.h" name="YCoordinate"/></magics>
diff --git a/src/params/YDateCoordinate.xml b/src/params/YDateCoordinate.xml
new file mode 100644
index 0000000..9bd349a
--- /dev/null
+++ b/src/params/YDateCoordinate.xml
@@ -0,0 +1,29 @@
+<magics>
+<class inherits="YCoordinate" metview_prefix="subpage_" xmltag="y_date" name="YDateCoordinate" directory="common" prefix="subpage/subpage_y/subpage_y_date" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+	<parameter xml="automatic" from="string" name="subpage_y_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+         		<release>Magics 2.1		</release>
+        
+         		<set name="subpage_y_max" value="off">		</set> 
+     		<set name="subpage_y_min" value="off">		</set>
+     		<set name="subpage_y_max" value="min_only">		</set> 
+     		<set name="subpage_y_min" value="max_only">		</set>
+     		<set name="subpage_y_date_max" value="off">		</set> 
+     		<set name="subpage_y_date_min" value="off">		</set>
+     		<set name="subpage_y_date_max" value="min_only">		</set> 
+     		<set name="subpage_y_date_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+	<parameter member="date_min" to="string" default="" from="string" name="subpage_y_date_min">
+   		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter member="date_max" to="string" default="" from="string" name="subpage_y_date_max">
+         		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_y_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/YHyperCoordinate.xml b/src/params/YHyperCoordinate.xml
new file mode 100644
index 0000000..8cd610f
--- /dev/null
+++ b/src/params/YHyperCoordinate.xml
@@ -0,0 +1,38 @@
+<magics>
+<class inherits="YCoordinate" metview_prefix="subpage_" xmltag="y_hyper" name="YHyperCoordinate" directory="common" prefix="subpage/subpage_y/subpage_y_hyper" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+	<parameter xml="automatic" from="string" name="subpage_y_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+         		<release>Magics 2.1		</release>
+        
+         		<set name="subpage_y_max" value="off">		</set> 
+     		<set name="subpage_y_min" value="off">		</set>
+     		<set name="subpage_y_max" value="min_only">		</set> 
+     		<set name="subpage_y_min" value="max_only">		</set>
+     		<set name="subpage_y_date_max" value="off">		</set> 
+     		<set name="subpage_y_date_min" value="off">		</set>
+     		<set name="subpage_y_date_max" value="min_only">		</set> 
+     		<set name="subpage_y_date_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+	<parameter xml="min" from="float" name="subpage_y_min_latitude" default="-90" member="min_lat" to="float">
+         		<release>Magics++2.10		</release>         
+ 	</parameter>
+
+	<parameter xml="max" from="float" name="subpage_y_max_latitude" default="90" member="max_lat" to="float">
+         		<release>Magics++2.10		</release>         
+	</parameter>
+
+	<parameter xml="min" from="float" name="subpage_y_min_longitude" default="-180" member="min_lon" to="float">
+ 		<documentation>Set Y min value		</documentation>        
+ 		<release>Magics++2.10		</release>        
+	</parameter>
+
+	<parameter xml="max" from="float" name="subpage_y_max_longitude" default="180" member="max_lon" to="float">
+ 		<documentation>Set max Lon value		</documentation>        
+         		<release>Magics++2.10		</release>         
+	</parameter>
+  
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_y_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+</class></magics>
diff --git a/src/params/YLogarithmicCoordinate.xml b/src/params/YLogarithmicCoordinate.xml
new file mode 100644
index 0000000..033408d
--- /dev/null
+++ b/src/params/YLogarithmicCoordinate.xml
@@ -0,0 +1,29 @@
+<magics>
+<class inherits="YCoordinate" metview_prefix="subpage_" xmltag="y_regular" name="YLogarithmicCoordinate" directory="common" prefix="subpage/subpage_y" action="pnew" include="Coordinate.h">
+  This object contains the common attributes to the cartesian Projections
+	<parameter xml="automatic" from="string" name="subpage_y_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+         		<release>Magics 2.1		</release>
+        
+         		<set name="subpage_y_max" value="off">		</set> 
+     		<set name="subpage_y_min" value="off">		</set>
+     		<set name="subpage_y_max" value="min_only">		</set> 
+     		<set name="subpage_y_min" value="max_only">		</set>
+     		<set name="subpage_y_date_max" value="off">		</set> 
+     		<set name="subpage_y_date_min" value="off">		</set>
+     		<set name="subpage_y_date_max" value="min_only">		</set> 
+     		<set name="subpage_y_date_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+	<parameter xml="min" from="float" name="subpage_y_min" default="0" member="min" to="float"> 
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter xml="max" from="float" name="subpage_y_max" default="100" member="max" to="float">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_y_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+</class></magics>
diff --git a/src/params/YRegularCoordinate.xml b/src/params/YRegularCoordinate.xml
new file mode 100644
index 0000000..eb2274a
--- /dev/null
+++ b/src/params/YRegularCoordinate.xml
@@ -0,0 +1,27 @@
+<magics>
+<class inherits="YCoordinate" metview_prefix="subpage_" xmltag="y_regular" name="YRegularCoordinate" directory="common" prefix="subpage/subpage_y" action="pnew" include="Coordinate.h">
+  This object contains the common attributes off the cartesian Projection
+	<parameter xml="automatic" from="string" name="subpage_y_automatic" default="off" member="automatic" to="AxisAutomaticSetting" values="on/off/min_only/max_only">
+         	<release>Magics 2.1		</release>
+         	<set name="subpage_y_max" value="off">		</set> 
+     		<set name="subpage_y_min" value="off">		</set>
+     		<set name="subpage_y_max" value="min_only">		</set> 
+     		<set name="subpage_y_min" value="max_only">		</set>
+     		<set name="subpage_y_date_max" value="off">		</set> 
+     		<set name="subpage_y_date_min" value="off">		</set>
+     		<set name="subpage_y_date_max" value="min_only">		</set> 
+     		<set name="subpage_y_date_min" value="max_only">		</set>
+     		<documentation> The Min and Max are calculated from the data		</documentation>    
+	</parameter>
+	<parameter xml="min" from="float" name="subpage_y_min" default="0" member="min" to="float"> 
+    		<release>Magics++0.1		</release>
+	</parameter>
+
+	<parameter xml="max" from="float" name="subpage_y_max" default="100" member="max" to="float">
+    		<release>Magics++0.1		</release>
+	</parameter>
+	<parameter member="reverse" to="bool" default="off" from="string" name="subpage_y_automatic_reverse">
+    		<release>Magics++0.1		</release>
+	</parameter>
+</class>
+</magics>
diff --git a/src/params/todo.xml b/src/params/todo.xml
new file mode 100644
index 0000000..3badec0
--- /dev/null
+++ b/src/params/todo.xml
@@ -0,0 +1,106 @@
+<magics>
+<class directory="visualisers" name="todo">
+
+
+  	<parameter xml="colour_direction" from="string" name="image_colour_direction" default="" member="colour_direction" to="string" implemented="no">
+         		<documentation> Direction for pixel colour calculation
+ 		</documentation>
+         		<migration> New Magics: Parameter image_colour_direction sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="(clockwise/anti_clockwise)" from="" name="(clockwise/anti_clockwise)" default="" member="(clockwise/anti_clockwise)" to="" implemented="no">
+         		<documentation>  		</documentation>
+         		<migration> New Magics: Parameter (clockwise/anti_clockwise) sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="clockwise" from="" name="clockwise" default="" member="clockwise" to="" implemented="no">
+         		<documentation> 
+ 		</documentation>
+         		<migration> New Magics: Parameter clockwise sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="background_colour" from="string" name="image_background_colour" default="grey" member="background_colour" to="string" implemented="no"> 
+         		<documentation> Colour of the area on the map that is not part of the satellite image. 		</documentation>
+         		<migration> New Magics: Parameter image_background_colour sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="subarea_selection" from="string" name="image_subarea_selection" default="" member="subarea_selection" to="string" implemented="no">
+         		<documentation> Plot subarea of satellite projection
+ 		</documentation>
+         		<migration> New Magics: Parameter image_subarea_selection sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  
+
+  	<parameter xml="legend" from="string" name="image_legend" default="off" member="legend" to="string" implemented="no">
+         		<documentation> Plot image legend (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter image_legend sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_title" from="string" name="image_legend_title" default="off" member="legend_title" to="string" implemented="no">
+         		<documentation> Plot image legend title (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter image_legend_title sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_title_text" from="string" name="image_legend_title_text" default="legend" member="legend_title_text" to="string" implemented="no">
+         		<documentation> Text string for plotting as image legend title 		</documentation>
+         		<migration> New Magics: Parameter image_legend_title_text sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_text_quality" from="string" name="image_legend_text_quality" default="" member="legend_text_quality" to="string" implemented="no">
+         		<documentation> Quality of image legend text 
+ 		</documentation>
+         		<migration> New Magics: Parameter image_legend_text_quality sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_text_colour" from="string" name="image_legend_text_colour" default="blue" member="legend_text_colour" to="string" implemented="no">
+         		<documentation> Colour of image legend text 		</documentation>
+         		<migration> New Magics: Parameter image_legend_text_colour sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_border" from="string" name="image_legend_border" default="on" member="legend_border" to="string" implemented="no">
+         		<documentation> Draw border round image legend box (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter image_legend_border sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_border_line_style" from="string" name="image_legend_border_line_style" default="solid" member="legend_border_line_style" to="string" implemented="no">
+         		<documentation> Line style of image legend border 		</documentation>
+         		<migration> New Magics: Parameter image_legend_border_line_style sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_border_colour" from="string" name="image_legend_border_colour" default="blue" member="legend_border_colour" to="string" implemented="no">
+         		<documentation> Colour of image legend border 		</documentation>
+         		<migration> New Magics: Parameter image_legend_border_colour sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_border_thickness" from="int" name="image_legend_border_thickness" default="1" member="legend_border_thickness" to="int" implemented="no">
+         		<documentation> Thickness of image legend border 		</documentation>
+         		<migration> New Magics: Parameter image_legend_border_thickness sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_box_blanking" from="string" name="image_legend_box_blanking" default="off" member="legend_box_blanking" to="string" implemented="no">
+         		<documentation> Blank area behind the legend box (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter image_legend_box_blanking sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_box_x_position" from="float" name="image_legend_box_x_position" default="see text" member="legend_box_x_position" to="float" implemented="no">
+         		<documentation> X position of image legend box within page  		</documentation>
+         		<migration> New Magics: Parameter image_legend_box_x_position sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_box_y_position" from="float" name="image_legend_box_y_position" default="see text" member="legend_box_y_position" to="float" implemented="no">
+         		<documentation> Y position of image legend box within page  		</documentation>
+         		<migration> New Magics: Parameter image_legend_box_y_position sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_box_x_length" from="float" name="image_legend_box_x_length" default="see text" member="legend_box_x_length" to="float" implemented="no">
+         		<documentation> X length of the image legend box 		</documentation>
+         		<migration> New Magics: Parameter image_legend_box_x_length sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+  	<parameter xml="legend_box_y_length" from="float" name="image_legend_box_y_length" default="see text" member="legend_box_y_length" to="float" implemented="no">
+         		<documentation> Y length of the image legend box 		</documentation>
+         		<migration> New Magics: Parameter image_legend_box_y_length sent to new Magics[ImagePlotting].  		</migration>
+  	</parameter>
+
+</class></magics>
diff --git a/src/params/xx.xml b/src/params/xx.xml
new file mode 100644
index 0000000..f4dd7ce
--- /dev/null
+++ b/src/params/xx.xml
@@ -0,0 +1,84 @@
+<magics>
+<class inherits="SymbolMode" xmltag="individual" name="SymbolIndividualMode" prefix="symbol" directory="visualisers" include="SymbolMode.h">
+    	<documentation>Here comes the description of the SymbolIndividualMode object	</documentation>
+
+    	<parameter default="" to="string" member="legend_text" from="string" name="legend_user_text">
+        		<documentation> if set, the text to be shown for the symbol group in the legend				</documentation>
+    	</parameter>
+
+    	<parameter member="colour" to="Colour" default="BLUE" from="string" name="symbol_colour">
+        		<documentation> Colour of symbols.   		</documentation>
+    	</parameter>
+
+    	<parameter member="height" to="float" default="0.2" from="float" name="symbol_height">
+        		<documentation> Height of symbols.  		</documentation>
+    	</parameter>
+
+    	<parameter from="string" name="symbol_marker_mode" default="index" member="marker_mode" to="string" values="index/name/image">
+        		<documentation> Method to select a marker : by name, by index, by image : in that case, Magics will use an external image as marker.
+        		</documentation>
+        		<set name="symbol_marker_index" value="index"/>
+        		<noset name="symbol_marker_name" value="name"/>
+        		<set name="symbol_image_path" value="image"/>
+        		<set name="symbol_image_format" value="image"/>
+        		<set name="symbol_image_width" value="image"/>
+        		<set name="symbol_image_height" value="image"/>
+
+    	</parameter>
+        
+       
+    	<parameter member="marker" to="int" default="1" from="int" name="symbol_marker_index">
+        		<documentation> Marker indice:  An integer between 1 and 28		</documentation>
+    	</parameter>
+        
+    	<parameter member="symbol" to="string" default="dot" from="string" name="symbol_marker_name">
+        		<documentation> Symbol name. Choose in a list of available markers dot/circle/ww_00 ... 		</documentation>
+    	</parameter>
+
+    	<parameter member="image_path" to="string" default="" from="string" name="symbol_image_path">
+        		<documentation> Path to the image 		</documentation>
+    	</parameter>
+        
+    	<parameter from="string" name="symbol_image_format" default="automatic" member="image_format" to="string" values="automatic/png/svg">
+        		<documentation> Format of the image file. If set to AUTOMATIC, the file extension will be used to determine the file type. 		</documentation>
+    	</parameter>
+        
+    	<parameter member="image_width" to="float" default="-1" from="float" name="symbol_image_width">
+        		<documentation>  width of the image 		</documentation>
+    	</parameter> 
+
+    	<parameter member="image_height" to="float" default="-1" from="float" name="symbol_image_height">
+        		<documentation>  height of the image 		</documentation>
+    	</parameter>
+
+    	<parameter member="text" to="stringarray" default="stringarray()" from="stringarray" name="symbol_text_list">
+        		<documentation> list of texts to plot 		</documentation>
+    	</parameter>
+
+    	<parameter from="string" name="symbol_text_position" default="right" member="text_position" to="string" values="right/left/bottom/top">
+        		<documentation> Position of the text 		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_name" to="string" default="sansserif" from="string" name="symbol_text_font_name">
+        		<documentation> Font to use  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_size" to="float" default="0.25" from="float" name="symbol_text_font_size">
+        		<documentation> Font size  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_style" to="string" default="normal" from="string" name="symbol_text_font_style">
+            		<documentation> Font style  		</documentation>
+    	</parameter>
+
+    	<parameter member="text_font_colour" to="Colour" default="automatic" from="string" name="symbol_text_font_colour">
+        		<documentation> Font colour.  		</documentation>
+    	</parameter> 
+
+    	<parameter member="text_blanking" to="bool" default="off" from="string" name="symbol_text_blanking">
+        		<documentation> blanking of the text 		</documentation>
+    	</parameter>
+    	<parameter member="legend_height" to="float" default="-1" from="float" name="symbol_legend_height">
+         		<documentation> If set, the height will be used to plot the symbols in the legend 		</documentation>
+  		</parameter>
+</class></magics>
diff --git a/src/terralib/CMakeLists.txt b/src/terralib/CMakeLists.txt
new file mode 100644
index 0000000..4a67c9a
--- /dev/null
+++ b/src/terralib/CMakeLists.txt
@@ -0,0 +1,132 @@
+set( _terralib_srcs
+# headers
+            kernel/checkvec.h kernel/dynpq.h kernel/graph.h kernel/showseq.h
+            kernel/Gra_algo.h
+            kernel/TeAbstractFactory.h kernel/TeAbstractTheme.h
+            kernel/TeAffineGT.h kernel/TeAffineGTFactory.h
+            kernel/TeAgnostic.h kernel/TeAsciiFile.h
+            kernel/TeAssertions.h kernel/TeAttribute.h
+            kernel/TeBaseSTInstance.h kernel/TeBaseSTInstanceSet.h
+            kernel/TeBox.h kernel/TeBufferRegion.h
+            kernel/TeComposite.h kernel/TeCoord2D.h
+            kernel/TeCounted.h
+            kernel/TeDBConnection.h kernel/TeDBConnectionsPool.h
+            kernel/TeDataTypes.h kernel/TeDatabase.h
+            kernel/TeDatabaseFactory.h kernel/TeDatabaseFactoryParams.h
+            kernel/TeDatum.h kernel/TeDecoder.h
+            kernel/TeDecoderASCIIGrid.h kernel/TeDecoderDatabase.h
+            kernel/TeDecoderFile.h kernel/TeDecoderMemory.h
+            kernel/TeDecoderMemoryMap.h kernel/TeDecoderSPR.h
+            kernel/TeDecoderSmartMem.h kernel/TeDecoderVirtualMemory.h
+            kernel/TeDefines.h
+            kernel/TeErrorLog.h kernel/TeErrorMessage.h
+            kernel/TeException.h kernel/TeExternalTheme.h
+            kernel/TeFactory.h kernel/TeFragmentation.h
+            kernel/TeGTFactory.h kernel/TeGTParams.h
+            kernel/TeGeometricTransformation.h kernel/TeGeometry.h
+            kernel/TeGeometryAlgorithms.h kernel/TeGroupingAlgorithms.h
+            kernel/TeImportRaster.h kernel/TeInitRasterDecoders.h
+            kernel/TeIntersector.h
+            kernel/TeKdTree.h
+            kernel/TeLayer.h kernel/TeLegendEntry.h
+            kernel/TeMappedMemory.h kernel/TeMatrix.h
+            kernel/TeMeasure.h kernel/TeMetaModelCache.h
+            kernel/TeMultiContainer.h kernel/TeMultiGeometry.h
+            kernel/TeMutex.h
+            kernel/TeNeighbours.h kernel/TeNetwork.h
+            kernel/TeOverlay.h kernel/TeOverlayUtils.h
+            kernel/TePieBar.h kernel/TePrecision.h
+            kernel/TeProgress.h kernel/TeProgressBase.h
+            kernel/TeProject.h kernel/TeProjection.h
+            kernel/TeProjectiveGT.h kernel/TeProjectiveGTFactory.h
+            kernel/TePrototype.h kernel/TeProxMatrixConstructionStrategy.h
+            kernel/TeProxMatrixImplementation.h
+            kernel/TeProxMatrixSlicingStrategy.h
+            kernel/TeProxMatrixWeightsStrategy.h
+            kernel/TeQuerier.h kernel/TeQuerierDB.h
+            kernel/TeQuerierDBStr1.h kernel/TeQuerierDBStr2.h
+            kernel/TeQuerierDBStr3.h kernel/TeQuerierImpl.h
+            kernel/TeQuerierParams.h
+            kernel/TeRTree.h kernel/TeRaster.h
+            kernel/TeRasterMemManager.h kernel/TeRasterParams.h
+            kernel/TeRasterRemap.h kernel/TeRasterTransform.h
+            kernel/TeRepresentation.h
+            kernel/TeSTEFunctionsDB.h kernel/TeSTElementSet.h
+            kernel/TeSTEvent.h kernel/TeSTInstance.h
+            kernel/TeSharedPtr.h kernel/TeSingleton.h
+            kernel/TeSlice.h kernel/TeSpatialOperations.h
+            kernel/TeStatistics.h kernel/TeStdFile.h
+            kernel/TeTable.h kernel/TeTemporalSeries.h
+            kernel/TeTheme.h kernel/TeThread.h
+            kernel/TeThreadDatatypes.h kernel/TeThreadFunctor.h
+            kernel/TeThreadParameters.h kernel/TeThreadSignal.h
+            kernel/TeTime.h kernel/TeTimeInterval.h
+            kernel/TeTin.h
+            kernel/TeUtils.h
+            kernel/TeVectorRemap.h kernel/TeView.h
+            kernel/TeViewNode.h kernel/TeVisual.h
+            kernel/yyTemporal.h
+            utils/TeDatabaseUtils.h
+            jpeg/ijl.h jpeg/jpeg.h
+# cpp sources
+            kernel/TeAbstractTheme.cpp
+            kernel/TeAffineGT.cpp kernel/TeAffineGTFactory.cpp
+            kernel/TeAgnostic.cpp kernel/TeAsciiFile.cpp
+            kernel/TeBox.cpp kernel/TeBufferRegion.cpp
+            kernel/TeCentroid.cpp
+            kernel/TeDBConnection.cpp kernel/TeDBConnectionsPool.cpp
+            kernel/TeDatabase.cpp kernel/TeDatabaseFactoryParams.cpp
+            kernel/TeDatum.cpp kernel/TeDecoderASCIIGrid.cpp
+            kernel/TeDecoderDatabase.cpp kernel/TeDecoderFile.cpp
+            kernel/TeDecoderMemory.cpp kernel/TeDecoderMemoryMap.cpp
+            kernel/TeDecoderSPR.cpp kernel/TeDecoderSmartMem.cpp
+            kernel/TeDecoderVirtualMemory.cpp
+            kernel/TeErrorLog.cpp kernel/TeErrorMessage.cpp
+            kernel/TeException.cpp kernel/TeExternalTheme.cpp
+            kernel/TeFragmentation.cpp
+            kernel/TeGTFactory.cpp kernel/TeGTParams.cpp
+            kernel/TeGeometricTransformation.cpp kernel/TeGeometry.cpp
+            kernel/TeGeometryAlgorithms.cpp kernel/TeGroupingAlgorithms.cpp
+            kernel/TeImportRaster.cpp kernel/TeInitRasterDecoders.cpp
+            kernel/TeIntersector.cpp
+            kernel/TeLayer.cpp kernel/TeLegendEntry.cpp
+            kernel/TeMappedMemory.cpp kernel/TeMatrix.cpp
+            kernel/TeMetaModelCache.cpp kernel/TeMultiGeometry.cpp
+            kernel/TeMutex.cpp
+            kernel/TeNeighbours.cpp kernel/TeNetwork.cpp
+            kernel/TeOverlay.cpp kernel/TeOverlayUtils.cpp
+            kernel/TeProgress.cpp kernel/TeProject.cpp
+            kernel/TeProjection.cpp kernel/TeProjectiveGT.cpp
+            kernel/TeProjectiveGTFactory.cpp
+            kernel/TeProxMatrixConstructionStrategy.cpp
+            kernel/TeProxMatrixImplementation.cpp
+            kernel/TeProxMatrixStrategies.cpp
+            kernel/TeQuerier.cpp kernel/TeQuerierDB.cpp
+            kernel/TeQuerierDBStr1.cpp kernel/TeQuerierDBStr2.cpp
+            kernel/TeQuerierDBStr3.cpp kernel/TeQuerierImpl.cpp
+            kernel/TeQuerierParams.cpp
+            kernel/TeRaster.cpp kernel/TeRasterMemManager.cpp
+            kernel/TeRasterParams.cpp kernel/TeRasterRemap.cpp
+            kernel/TeRasterTransform.cpp kernel/TeRepresentation.cpp
+            kernel/TeSTElementSet.cpp kernel/TeSTEvent.cpp
+            kernel/TeSTInstance.cpp kernel/TeSpatialOperations.cpp
+            kernel/TeStdFile.cpp
+            kernel/TeTable.cpp kernel/TeTemporalSeries.cpp
+            kernel/TeTheme.cpp kernel/TeThread.cpp
+            kernel/TeThreadFunctor.cpp kernel/TeThreadSignal.cpp
+            kernel/TeTime.cpp kernel/TeTimeInterval.cpp
+            kernel/TeTin.cpp
+            kernel/TeUtils.cpp
+            kernel/TeVectorRemap.cpp kernel/TeViewNode.cpp
+            kernel/TeVisual.cpp
+            kernel/lexTemporal.cpp kernel/yyTemporal.cpp
+
+)
+foreach( file ${_terralib_srcs} )
+  list( APPEND terralib_srcs terralib/${file} )
+endforeach()
+
+set( terralib_srcs ${terralib_srcs} PARENT_SCOPE )
+
+# libterralib_la_CXXFLAGS	= -DNO_HUGE -DXTFUNCPROTO -DLITTLEENDIAN -DS4LINUX -DS4MDX -DS4NO_STRNICMP -DXK_MISCELLANY -DNO_TEJPEG -DNO_TETIFF
+# AM_CPPFLAGS		= -I$(top_srcdir)/src/terralib -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/terralib/utils
diff --git a/src/terralib/Makefile.am b/src/terralib/Makefile.am
deleted file mode 100644
index 0dbf0ab..0000000
--- a/src/terralib/Makefile.am
+++ /dev/null
@@ -1,138 +0,0 @@
-noinst_LTLIBRARIES	= libterralib.la
-
-include_H		= kernel/checkvec.h kernel/dynpq.h kernel/graph.h kernel/showseq.h \
-			kernel/Gra_algo.h \
-			kernel/TeAbstractFactory.h kernel/TeAbstractTheme.h \
-			kernel/TeAffineGT.h kernel/TeAffineGTFactory.h \
-			kernel/TeAgnostic.h kernel/TeAsciiFile.h \
-			kernel/TeAssertions.h kernel/TeAttribute.h \
-			kernel/TeBaseSTInstance.h kernel/TeBaseSTInstanceSet.h \
-			kernel/TeBox.h kernel/TeBufferRegion.h \
-			kernel/TeComposite.h kernel/TeCoord2D.h \
-			kernel/TeCounted.h \
-			kernel/TeDBConnection.h kernel/TeDBConnectionsPool.h \
-			kernel/TeDataTypes.h kernel/TeDatabase.h \
-			kernel/TeDatabaseFactory.h kernel/TeDatabaseFactoryParams.h \
-			kernel/TeDatum.h kernel/TeDecoder.h \
-			kernel/TeDecoderASCIIGrid.h kernel/TeDecoderDatabase.h \
-			kernel/TeDecoderFile.h kernel/TeDecoderMemory.h \
-			kernel/TeDecoderMemoryMap.h kernel/TeDecoderSPR.h \
-			kernel/TeDecoderSmartMem.h kernel/TeDecoderVirtualMemory.h \
-			kernel/TeDefines.h \
-			kernel/TeErrorLog.h kernel/TeErrorMessage.h \
-			kernel/TeException.h kernel/TeExternalTheme.h \
-			kernel/TeFactory.h kernel/TeFragmentation.h \
-			kernel/TeGTFactory.h kernel/TeGTParams.h \
-			kernel/TeGeometricTransformation.h kernel/TeGeometry.h \
-			kernel/TeGeometryAlgorithms.h kernel/TeGroupingAlgorithms.h \
-			kernel/TeImportRaster.h kernel/TeInitRasterDecoders.h \
-			kernel/TeIntersector.h \
-			kernel/TeKdTree.h \
-			kernel/TeLayer.h kernel/TeLegendEntry.h \
-			kernel/TeMappedMemory.h kernel/TeMatrix.h \
-			kernel/TeMeasure.h kernel/TeMetaModelCache.h \
-			kernel/TeMultiContainer.h kernel/TeMultiGeometry.h \
-			kernel/TeMutex.h \
-			kernel/TeNeighbours.h kernel/TeNetwork.h \
-			kernel/TeOverlay.h kernel/TeOverlayUtils.h \
-			kernel/TePieBar.h kernel/TePrecision.h \
-			kernel/TeProgress.h kernel/TeProgressBase.h \
-			kernel/TeProject.h kernel/TeProjection.h \
-			kernel/TeProjectiveGT.h kernel/TeProjectiveGTFactory.h \
-			kernel/TePrototype.h kernel/TeProxMatrixConstructionStrategy.h \
-			kernel/TeProxMatrixImplementation.h \
-			kernel/TeProxMatrixSlicingStrategy.h \
-			kernel/TeProxMatrixWeightsStrategy.h \
-			kernel/TeQuerier.h kernel/TeQuerierDB.h \
-			kernel/TeQuerierDBStr1.h kernel/TeQuerierDBStr2.h \
-			kernel/TeQuerierDBStr3.h kernel/TeQuerierImpl.h \
-			kernel/TeQuerierParams.h \
-			kernel/TeRTree.h kernel/TeRaster.h \
-			kernel/TeRasterMemManager.h kernel/TeRasterParams.h \
-			kernel/TeRasterRemap.h kernel/TeRasterTransform.h \
-			kernel/TeRepresentation.h \
-			kernel/TeSTEFunctionsDB.h kernel/TeSTElementSet.h \
-			kernel/TeSTEvent.h kernel/TeSTInstance.h \
-			kernel/TeSharedPtr.h kernel/TeSingleton.h \
-			kernel/TeSlice.h kernel/TeSpatialOperations.h \
-			kernel/TeStatistics.h kernel/TeStdFile.h \
-			kernel/TeTable.h kernel/TeTemporalSeries.h \
-			kernel/TeTheme.h kernel/TeThread.h \
-			kernel/TeThreadDatatypes.h kernel/TeThreadFunctor.h \
-			kernel/TeThreadParameters.h kernel/TeThreadSignal.h \
-			kernel/TeTime.h kernel/TeTimeInterval.h \
-			kernel/TeTin.h \
-			kernel/TeUtils.h \
-			kernel/TeVectorRemap.h kernel/TeView.h \
-			kernel/TeViewNode.h kernel/TeVisual.h \
-			kernel/yyTemporal.h \
-			utils/TeDatabaseUtils.h
-
-
-libterralib_la_SOURCES	= \
-			kernel/TeAbstractTheme.cpp \
-			kernel/TeAffineGT.cpp kernel/TeAffineGTFactory.cpp \
-			kernel/TeAgnostic.cpp kernel/TeAsciiFile.cpp \
-			kernel/TeBox.cpp kernel/TeBufferRegion.cpp \
-			kernel/TeCentroid.cpp \
-			kernel/TeDBConnection.cpp kernel/TeDBConnectionsPool.cpp \
-			kernel/TeDatabase.cpp kernel/TeDatabaseFactoryParams.cpp \
-			kernel/TeDatum.cpp kernel/TeDecoderASCIIGrid.cpp \
-			kernel/TeDecoderDatabase.cpp kernel/TeDecoderFile.cpp \
-			kernel/TeDecoderMemory.cpp kernel/TeDecoderMemoryMap.cpp \
-			kernel/TeDecoderSPR.cpp kernel/TeDecoderSmartMem.cpp \
-			kernel/TeDecoderVirtualMemory.cpp \
-			kernel/TeErrorLog.cpp kernel/TeErrorMessage.cpp \
-			kernel/TeException.cpp kernel/TeExternalTheme.cpp \
-			kernel/TeFragmentation.cpp \
-			kernel/TeGTFactory.cpp kernel/TeGTParams.cpp \
-			kernel/TeGeometricTransformation.cpp kernel/TeGeometry.cpp \
-			kernel/TeGeometryAlgorithms.cpp kernel/TeGroupingAlgorithms.cpp \
-			kernel/TeImportRaster.cpp kernel/TeInitRasterDecoders.cpp \
-			kernel/TeIntersector.cpp \
-			kernel/TeLayer.cpp kernel/TeLegendEntry.cpp \
-			kernel/TeMappedMemory.cpp kernel/TeMatrix.cpp \
-			kernel/TeMetaModelCache.cpp kernel/TeMultiGeometry.cpp \
-			kernel/TeMutex.cpp \
-			kernel/TeNeighbours.cpp kernel/TeNetwork.cpp \
-			kernel/TeOverlay.cpp kernel/TeOverlayUtils.cpp \
-			kernel/TeProgress.cpp kernel/TeProject.cpp \
-			kernel/TeProjection.cpp kernel/TeProjectiveGT.cpp \
-			kernel/TeProjectiveGTFactory.cpp \
-			kernel/TeProxMatrixConstructionStrategy.cpp \
-			kernel/TeProxMatrixImplementation.cpp \
-			kernel/TeProxMatrixStrategies.cpp \
-			kernel/TeQuerier.cpp kernel/TeQuerierDB.cpp \
-			kernel/TeQuerierDBStr1.cpp kernel/TeQuerierDBStr2.cpp \
-			kernel/TeQuerierDBStr3.cpp kernel/TeQuerierImpl.cpp \
-			kernel/TeQuerierParams.cpp \
-			kernel/TeRaster.cpp kernel/TeRasterMemManager.cpp \
-			kernel/TeRasterParams.cpp kernel/TeRasterRemap.cpp \
-			kernel/TeRasterTransform.cpp kernel/TeRepresentation.cpp \
-			kernel/TeSTElementSet.cpp kernel/TeSTEvent.cpp \
-			kernel/TeSTInstance.cpp kernel/TeSpatialOperations.cpp \
-			kernel/TeStdFile.cpp \
-			kernel/TeTable.cpp kernel/TeTemporalSeries.cpp \
-			kernel/TeTheme.cpp kernel/TeThread.cpp \
-			kernel/TeThreadFunctor.cpp kernel/TeThreadSignal.cpp \
-			kernel/TeTime.cpp kernel/TeTimeInterval.cpp \
-			kernel/TeTin.cpp \
-			kernel/TeUtils.cpp \
-			kernel/TeVectorRemap.cpp kernel/TeViewNode.cpp \
-			kernel/TeVisual.cpp \
-			kernel/lexTemporal.cpp kernel/yyTemporal.cpp
-
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= 
-else
-include_HEADERS = 
-noinst_HEADERS	= $(include_H)
-endif
-
-libterralib_la_CXXFLAGS	= -DNO_HUGE -DXTFUNCPROTO -DLITTLEENDIAN -DS4LINUX -DS4MDX -DS4NO_STRNICMP -DXK_MISCELLANY -DNO_TEJPEG -DNO_TETIFF
-libterralib_la_LDFLAGS	= -no-undefined -no-install
-#AM_CPPFLAGS		= -I$(top_srcdir)/src/terralib -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/terralib/jpeg -I$(top_srcdir)/src/terralib/functions -I$(top_srcdir)/src/terralib/utils
-AM_CPPFLAGS		= -I$(top_srcdir)/src/terralib -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/terralib/utils
-#EXTRA_DIST		= jpeg/ijl.h jpeg/jpeg.h
diff --git a/src/terralib/Makefile.in b/src/terralib/Makefile.in
deleted file mode 100644
index baf2402..0000000
--- a/src/terralib/Makefile.in
+++ /dev/null
@@ -1,1706 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = src/terralib
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libterralib_la_LIBADD =
-am_libterralib_la_OBJECTS = libterralib_la-TeAbstractTheme.lo \
-	libterralib_la-TeAffineGT.lo \
-	libterralib_la-TeAffineGTFactory.lo \
-	libterralib_la-TeAgnostic.lo libterralib_la-TeAsciiFile.lo \
-	libterralib_la-TeBox.lo libterralib_la-TeBufferRegion.lo \
-	libterralib_la-TeCentroid.lo libterralib_la-TeDBConnection.lo \
-	libterralib_la-TeDBConnectionsPool.lo \
-	libterralib_la-TeDatabase.lo \
-	libterralib_la-TeDatabaseFactoryParams.lo \
-	libterralib_la-TeDatum.lo libterralib_la-TeDecoderASCIIGrid.lo \
-	libterralib_la-TeDecoderDatabase.lo \
-	libterralib_la-TeDecoderFile.lo \
-	libterralib_la-TeDecoderMemory.lo \
-	libterralib_la-TeDecoderMemoryMap.lo \
-	libterralib_la-TeDecoderSPR.lo \
-	libterralib_la-TeDecoderSmartMem.lo \
-	libterralib_la-TeDecoderVirtualMemory.lo \
-	libterralib_la-TeErrorLog.lo libterralib_la-TeErrorMessage.lo \
-	libterralib_la-TeException.lo \
-	libterralib_la-TeExternalTheme.lo \
-	libterralib_la-TeFragmentation.lo \
-	libterralib_la-TeGTFactory.lo libterralib_la-TeGTParams.lo \
-	libterralib_la-TeGeometricTransformation.lo \
-	libterralib_la-TeGeometry.lo \
-	libterralib_la-TeGeometryAlgorithms.lo \
-	libterralib_la-TeGroupingAlgorithms.lo \
-	libterralib_la-TeImportRaster.lo \
-	libterralib_la-TeInitRasterDecoders.lo \
-	libterralib_la-TeIntersector.lo libterralib_la-TeLayer.lo \
-	libterralib_la-TeLegendEntry.lo \
-	libterralib_la-TeMappedMemory.lo libterralib_la-TeMatrix.lo \
-	libterralib_la-TeMetaModelCache.lo \
-	libterralib_la-TeMultiGeometry.lo libterralib_la-TeMutex.lo \
-	libterralib_la-TeNeighbours.lo libterralib_la-TeNetwork.lo \
-	libterralib_la-TeOverlay.lo libterralib_la-TeOverlayUtils.lo \
-	libterralib_la-TeProgress.lo libterralib_la-TeProject.lo \
-	libterralib_la-TeProjection.lo \
-	libterralib_la-TeProjectiveGT.lo \
-	libterralib_la-TeProjectiveGTFactory.lo \
-	libterralib_la-TeProxMatrixConstructionStrategy.lo \
-	libterralib_la-TeProxMatrixImplementation.lo \
-	libterralib_la-TeProxMatrixStrategies.lo \
-	libterralib_la-TeQuerier.lo libterralib_la-TeQuerierDB.lo \
-	libterralib_la-TeQuerierDBStr1.lo \
-	libterralib_la-TeQuerierDBStr2.lo \
-	libterralib_la-TeQuerierDBStr3.lo \
-	libterralib_la-TeQuerierImpl.lo \
-	libterralib_la-TeQuerierParams.lo libterralib_la-TeRaster.lo \
-	libterralib_la-TeRasterMemManager.lo \
-	libterralib_la-TeRasterParams.lo \
-	libterralib_la-TeRasterRemap.lo \
-	libterralib_la-TeRasterTransform.lo \
-	libterralib_la-TeRepresentation.lo \
-	libterralib_la-TeSTElementSet.lo libterralib_la-TeSTEvent.lo \
-	libterralib_la-TeSTInstance.lo \
-	libterralib_la-TeSpatialOperations.lo \
-	libterralib_la-TeStdFile.lo libterralib_la-TeTable.lo \
-	libterralib_la-TeTemporalSeries.lo libterralib_la-TeTheme.lo \
-	libterralib_la-TeThread.lo libterralib_la-TeThreadFunctor.lo \
-	libterralib_la-TeThreadSignal.lo libterralib_la-TeTime.lo \
-	libterralib_la-TeTimeInterval.lo libterralib_la-TeTin.lo \
-	libterralib_la-TeUtils.lo libterralib_la-TeVectorRemap.lo \
-	libterralib_la-TeViewNode.lo libterralib_la-TeVisual.lo \
-	libterralib_la-lexTemporal.lo libterralib_la-yyTemporal.lo
-libterralib_la_OBJECTS = $(am_libterralib_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libterralib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(libterralib_la_CXXFLAGS) $(CXXFLAGS) \
-	$(libterralib_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libterralib_la_SOURCES)
-DIST_SOURCES = $(libterralib_la_SOURCES)
-am__include_HEADERS_DIST = kernel/checkvec.h kernel/dynpq.h \
-	kernel/graph.h kernel/showseq.h kernel/Gra_algo.h \
-	kernel/TeAbstractFactory.h kernel/TeAbstractTheme.h \
-	kernel/TeAffineGT.h kernel/TeAffineGTFactory.h \
-	kernel/TeAgnostic.h kernel/TeAsciiFile.h kernel/TeAssertions.h \
-	kernel/TeAttribute.h kernel/TeBaseSTInstance.h \
-	kernel/TeBaseSTInstanceSet.h kernel/TeBox.h \
-	kernel/TeBufferRegion.h kernel/TeComposite.h \
-	kernel/TeCoord2D.h kernel/TeCounted.h kernel/TeDBConnection.h \
-	kernel/TeDBConnectionsPool.h kernel/TeDataTypes.h \
-	kernel/TeDatabase.h kernel/TeDatabaseFactory.h \
-	kernel/TeDatabaseFactoryParams.h kernel/TeDatum.h \
-	kernel/TeDecoder.h kernel/TeDecoderASCIIGrid.h \
-	kernel/TeDecoderDatabase.h kernel/TeDecoderFile.h \
-	kernel/TeDecoderMemory.h kernel/TeDecoderMemoryMap.h \
-	kernel/TeDecoderSPR.h kernel/TeDecoderSmartMem.h \
-	kernel/TeDecoderVirtualMemory.h kernel/TeDefines.h \
-	kernel/TeErrorLog.h kernel/TeErrorMessage.h \
-	kernel/TeException.h kernel/TeExternalTheme.h \
-	kernel/TeFactory.h kernel/TeFragmentation.h \
-	kernel/TeGTFactory.h kernel/TeGTParams.h \
-	kernel/TeGeometricTransformation.h kernel/TeGeometry.h \
-	kernel/TeGeometryAlgorithms.h kernel/TeGroupingAlgorithms.h \
-	kernel/TeImportRaster.h kernel/TeInitRasterDecoders.h \
-	kernel/TeIntersector.h kernel/TeKdTree.h kernel/TeLayer.h \
-	kernel/TeLegendEntry.h kernel/TeMappedMemory.h \
-	kernel/TeMatrix.h kernel/TeMeasure.h kernel/TeMetaModelCache.h \
-	kernel/TeMultiContainer.h kernel/TeMultiGeometry.h \
-	kernel/TeMutex.h kernel/TeNeighbours.h kernel/TeNetwork.h \
-	kernel/TeOverlay.h kernel/TeOverlayUtils.h kernel/TePieBar.h \
-	kernel/TePrecision.h kernel/TeProgress.h \
-	kernel/TeProgressBase.h kernel/TeProject.h \
-	kernel/TeProjection.h kernel/TeProjectiveGT.h \
-	kernel/TeProjectiveGTFactory.h kernel/TePrototype.h \
-	kernel/TeProxMatrixConstructionStrategy.h \
-	kernel/TeProxMatrixImplementation.h \
-	kernel/TeProxMatrixSlicingStrategy.h \
-	kernel/TeProxMatrixWeightsStrategy.h kernel/TeQuerier.h \
-	kernel/TeQuerierDB.h kernel/TeQuerierDBStr1.h \
-	kernel/TeQuerierDBStr2.h kernel/TeQuerierDBStr3.h \
-	kernel/TeQuerierImpl.h kernel/TeQuerierParams.h \
-	kernel/TeRTree.h kernel/TeRaster.h kernel/TeRasterMemManager.h \
-	kernel/TeRasterParams.h kernel/TeRasterRemap.h \
-	kernel/TeRasterTransform.h kernel/TeRepresentation.h \
-	kernel/TeSTEFunctionsDB.h kernel/TeSTElementSet.h \
-	kernel/TeSTEvent.h kernel/TeSTInstance.h kernel/TeSharedPtr.h \
-	kernel/TeSingleton.h kernel/TeSlice.h \
-	kernel/TeSpatialOperations.h kernel/TeStatistics.h \
-	kernel/TeStdFile.h kernel/TeTable.h kernel/TeTemporalSeries.h \
-	kernel/TeTheme.h kernel/TeThread.h kernel/TeThreadDatatypes.h \
-	kernel/TeThreadFunctor.h kernel/TeThreadParameters.h \
-	kernel/TeThreadSignal.h kernel/TeTime.h \
-	kernel/TeTimeInterval.h kernel/TeTin.h kernel/TeUtils.h \
-	kernel/TeVectorRemap.h kernel/TeView.h kernel/TeViewNode.h \
-	kernel/TeVisual.h kernel/yyTemporal.h utils/TeDatabaseUtils.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = kernel/checkvec.h kernel/dynpq.h \
-	kernel/graph.h kernel/showseq.h kernel/Gra_algo.h \
-	kernel/TeAbstractFactory.h kernel/TeAbstractTheme.h \
-	kernel/TeAffineGT.h kernel/TeAffineGTFactory.h \
-	kernel/TeAgnostic.h kernel/TeAsciiFile.h kernel/TeAssertions.h \
-	kernel/TeAttribute.h kernel/TeBaseSTInstance.h \
-	kernel/TeBaseSTInstanceSet.h kernel/TeBox.h \
-	kernel/TeBufferRegion.h kernel/TeComposite.h \
-	kernel/TeCoord2D.h kernel/TeCounted.h kernel/TeDBConnection.h \
-	kernel/TeDBConnectionsPool.h kernel/TeDataTypes.h \
-	kernel/TeDatabase.h kernel/TeDatabaseFactory.h \
-	kernel/TeDatabaseFactoryParams.h kernel/TeDatum.h \
-	kernel/TeDecoder.h kernel/TeDecoderASCIIGrid.h \
-	kernel/TeDecoderDatabase.h kernel/TeDecoderFile.h \
-	kernel/TeDecoderMemory.h kernel/TeDecoderMemoryMap.h \
-	kernel/TeDecoderSPR.h kernel/TeDecoderSmartMem.h \
-	kernel/TeDecoderVirtualMemory.h kernel/TeDefines.h \
-	kernel/TeErrorLog.h kernel/TeErrorMessage.h \
-	kernel/TeException.h kernel/TeExternalTheme.h \
-	kernel/TeFactory.h kernel/TeFragmentation.h \
-	kernel/TeGTFactory.h kernel/TeGTParams.h \
-	kernel/TeGeometricTransformation.h kernel/TeGeometry.h \
-	kernel/TeGeometryAlgorithms.h kernel/TeGroupingAlgorithms.h \
-	kernel/TeImportRaster.h kernel/TeInitRasterDecoders.h \
-	kernel/TeIntersector.h kernel/TeKdTree.h kernel/TeLayer.h \
-	kernel/TeLegendEntry.h kernel/TeMappedMemory.h \
-	kernel/TeMatrix.h kernel/TeMeasure.h kernel/TeMetaModelCache.h \
-	kernel/TeMultiContainer.h kernel/TeMultiGeometry.h \
-	kernel/TeMutex.h kernel/TeNeighbours.h kernel/TeNetwork.h \
-	kernel/TeOverlay.h kernel/TeOverlayUtils.h kernel/TePieBar.h \
-	kernel/TePrecision.h kernel/TeProgress.h \
-	kernel/TeProgressBase.h kernel/TeProject.h \
-	kernel/TeProjection.h kernel/TeProjectiveGT.h \
-	kernel/TeProjectiveGTFactory.h kernel/TePrototype.h \
-	kernel/TeProxMatrixConstructionStrategy.h \
-	kernel/TeProxMatrixImplementation.h \
-	kernel/TeProxMatrixSlicingStrategy.h \
-	kernel/TeProxMatrixWeightsStrategy.h kernel/TeQuerier.h \
-	kernel/TeQuerierDB.h kernel/TeQuerierDBStr1.h \
-	kernel/TeQuerierDBStr2.h kernel/TeQuerierDBStr3.h \
-	kernel/TeQuerierImpl.h kernel/TeQuerierParams.h \
-	kernel/TeRTree.h kernel/TeRaster.h kernel/TeRasterMemManager.h \
-	kernel/TeRasterParams.h kernel/TeRasterRemap.h \
-	kernel/TeRasterTransform.h kernel/TeRepresentation.h \
-	kernel/TeSTEFunctionsDB.h kernel/TeSTElementSet.h \
-	kernel/TeSTEvent.h kernel/TeSTInstance.h kernel/TeSharedPtr.h \
-	kernel/TeSingleton.h kernel/TeSlice.h \
-	kernel/TeSpatialOperations.h kernel/TeStatistics.h \
-	kernel/TeStdFile.h kernel/TeTable.h kernel/TeTemporalSeries.h \
-	kernel/TeTheme.h kernel/TeThread.h kernel/TeThreadDatatypes.h \
-	kernel/TeThreadFunctor.h kernel/TeThreadParameters.h \
-	kernel/TeThreadSignal.h kernel/TeTime.h \
-	kernel/TeTimeInterval.h kernel/TeTin.h kernel/TeUtils.h \
-	kernel/TeVectorRemap.h kernel/TeView.h kernel/TeViewNode.h \
-	kernel/TeVisual.h kernel/yyTemporal.h utils/TeDatabaseUtils.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libterralib.la
-include_H = kernel/checkvec.h kernel/dynpq.h kernel/graph.h kernel/showseq.h \
-			kernel/Gra_algo.h \
-			kernel/TeAbstractFactory.h kernel/TeAbstractTheme.h \
-			kernel/TeAffineGT.h kernel/TeAffineGTFactory.h \
-			kernel/TeAgnostic.h kernel/TeAsciiFile.h \
-			kernel/TeAssertions.h kernel/TeAttribute.h \
-			kernel/TeBaseSTInstance.h kernel/TeBaseSTInstanceSet.h \
-			kernel/TeBox.h kernel/TeBufferRegion.h \
-			kernel/TeComposite.h kernel/TeCoord2D.h \
-			kernel/TeCounted.h \
-			kernel/TeDBConnection.h kernel/TeDBConnectionsPool.h \
-			kernel/TeDataTypes.h kernel/TeDatabase.h \
-			kernel/TeDatabaseFactory.h kernel/TeDatabaseFactoryParams.h \
-			kernel/TeDatum.h kernel/TeDecoder.h \
-			kernel/TeDecoderASCIIGrid.h kernel/TeDecoderDatabase.h \
-			kernel/TeDecoderFile.h kernel/TeDecoderMemory.h \
-			kernel/TeDecoderMemoryMap.h kernel/TeDecoderSPR.h \
-			kernel/TeDecoderSmartMem.h kernel/TeDecoderVirtualMemory.h \
-			kernel/TeDefines.h \
-			kernel/TeErrorLog.h kernel/TeErrorMessage.h \
-			kernel/TeException.h kernel/TeExternalTheme.h \
-			kernel/TeFactory.h kernel/TeFragmentation.h \
-			kernel/TeGTFactory.h kernel/TeGTParams.h \
-			kernel/TeGeometricTransformation.h kernel/TeGeometry.h \
-			kernel/TeGeometryAlgorithms.h kernel/TeGroupingAlgorithms.h \
-			kernel/TeImportRaster.h kernel/TeInitRasterDecoders.h \
-			kernel/TeIntersector.h \
-			kernel/TeKdTree.h \
-			kernel/TeLayer.h kernel/TeLegendEntry.h \
-			kernel/TeMappedMemory.h kernel/TeMatrix.h \
-			kernel/TeMeasure.h kernel/TeMetaModelCache.h \
-			kernel/TeMultiContainer.h kernel/TeMultiGeometry.h \
-			kernel/TeMutex.h \
-			kernel/TeNeighbours.h kernel/TeNetwork.h \
-			kernel/TeOverlay.h kernel/TeOverlayUtils.h \
-			kernel/TePieBar.h kernel/TePrecision.h \
-			kernel/TeProgress.h kernel/TeProgressBase.h \
-			kernel/TeProject.h kernel/TeProjection.h \
-			kernel/TeProjectiveGT.h kernel/TeProjectiveGTFactory.h \
-			kernel/TePrototype.h kernel/TeProxMatrixConstructionStrategy.h \
-			kernel/TeProxMatrixImplementation.h \
-			kernel/TeProxMatrixSlicingStrategy.h \
-			kernel/TeProxMatrixWeightsStrategy.h \
-			kernel/TeQuerier.h kernel/TeQuerierDB.h \
-			kernel/TeQuerierDBStr1.h kernel/TeQuerierDBStr2.h \
-			kernel/TeQuerierDBStr3.h kernel/TeQuerierImpl.h \
-			kernel/TeQuerierParams.h \
-			kernel/TeRTree.h kernel/TeRaster.h \
-			kernel/TeRasterMemManager.h kernel/TeRasterParams.h \
-			kernel/TeRasterRemap.h kernel/TeRasterTransform.h \
-			kernel/TeRepresentation.h \
-			kernel/TeSTEFunctionsDB.h kernel/TeSTElementSet.h \
-			kernel/TeSTEvent.h kernel/TeSTInstance.h \
-			kernel/TeSharedPtr.h kernel/TeSingleton.h \
-			kernel/TeSlice.h kernel/TeSpatialOperations.h \
-			kernel/TeStatistics.h kernel/TeStdFile.h \
-			kernel/TeTable.h kernel/TeTemporalSeries.h \
-			kernel/TeTheme.h kernel/TeThread.h \
-			kernel/TeThreadDatatypes.h kernel/TeThreadFunctor.h \
-			kernel/TeThreadParameters.h kernel/TeThreadSignal.h \
-			kernel/TeTime.h kernel/TeTimeInterval.h \
-			kernel/TeTin.h \
-			kernel/TeUtils.h \
-			kernel/TeVectorRemap.h kernel/TeView.h \
-			kernel/TeViewNode.h kernel/TeVisual.h \
-			kernel/yyTemporal.h \
-			utils/TeDatabaseUtils.h
-
-libterralib_la_SOURCES = \
-			kernel/TeAbstractTheme.cpp \
-			kernel/TeAffineGT.cpp kernel/TeAffineGTFactory.cpp \
-			kernel/TeAgnostic.cpp kernel/TeAsciiFile.cpp \
-			kernel/TeBox.cpp kernel/TeBufferRegion.cpp \
-			kernel/TeCentroid.cpp \
-			kernel/TeDBConnection.cpp kernel/TeDBConnectionsPool.cpp \
-			kernel/TeDatabase.cpp kernel/TeDatabaseFactoryParams.cpp \
-			kernel/TeDatum.cpp kernel/TeDecoderASCIIGrid.cpp \
-			kernel/TeDecoderDatabase.cpp kernel/TeDecoderFile.cpp \
-			kernel/TeDecoderMemory.cpp kernel/TeDecoderMemoryMap.cpp \
-			kernel/TeDecoderSPR.cpp kernel/TeDecoderSmartMem.cpp \
-			kernel/TeDecoderVirtualMemory.cpp \
-			kernel/TeErrorLog.cpp kernel/TeErrorMessage.cpp \
-			kernel/TeException.cpp kernel/TeExternalTheme.cpp \
-			kernel/TeFragmentation.cpp \
-			kernel/TeGTFactory.cpp kernel/TeGTParams.cpp \
-			kernel/TeGeometricTransformation.cpp kernel/TeGeometry.cpp \
-			kernel/TeGeometryAlgorithms.cpp kernel/TeGroupingAlgorithms.cpp \
-			kernel/TeImportRaster.cpp kernel/TeInitRasterDecoders.cpp \
-			kernel/TeIntersector.cpp \
-			kernel/TeLayer.cpp kernel/TeLegendEntry.cpp \
-			kernel/TeMappedMemory.cpp kernel/TeMatrix.cpp \
-			kernel/TeMetaModelCache.cpp kernel/TeMultiGeometry.cpp \
-			kernel/TeMutex.cpp \
-			kernel/TeNeighbours.cpp kernel/TeNetwork.cpp \
-			kernel/TeOverlay.cpp kernel/TeOverlayUtils.cpp \
-			kernel/TeProgress.cpp kernel/TeProject.cpp \
-			kernel/TeProjection.cpp kernel/TeProjectiveGT.cpp \
-			kernel/TeProjectiveGTFactory.cpp \
-			kernel/TeProxMatrixConstructionStrategy.cpp \
-			kernel/TeProxMatrixImplementation.cpp \
-			kernel/TeProxMatrixStrategies.cpp \
-			kernel/TeQuerier.cpp kernel/TeQuerierDB.cpp \
-			kernel/TeQuerierDBStr1.cpp kernel/TeQuerierDBStr2.cpp \
-			kernel/TeQuerierDBStr3.cpp kernel/TeQuerierImpl.cpp \
-			kernel/TeQuerierParams.cpp \
-			kernel/TeRaster.cpp kernel/TeRasterMemManager.cpp \
-			kernel/TeRasterParams.cpp kernel/TeRasterRemap.cpp \
-			kernel/TeRasterTransform.cpp kernel/TeRepresentation.cpp \
-			kernel/TeSTElementSet.cpp kernel/TeSTEvent.cpp \
-			kernel/TeSTInstance.cpp kernel/TeSpatialOperations.cpp \
-			kernel/TeStdFile.cpp \
-			kernel/TeTable.cpp kernel/TeTemporalSeries.cpp \
-			kernel/TeTheme.cpp kernel/TeThread.cpp \
-			kernel/TeThreadFunctor.cpp kernel/TeThreadSignal.cpp \
-			kernel/TeTime.cpp kernel/TeTimeInterval.cpp \
-			kernel/TeTin.cpp \
-			kernel/TeUtils.cpp \
-			kernel/TeVectorRemap.cpp kernel/TeViewNode.cpp \
-			kernel/TeVisual.cpp \
-			kernel/lexTemporal.cpp kernel/yyTemporal.cpp
-
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = 
-libterralib_la_CXXFLAGS = -DNO_HUGE -DXTFUNCPROTO -DLITTLEENDIAN -DS4LINUX -DS4MDX -DS4NO_STRNICMP -DXK_MISCELLANY -DNO_TEJPEG -DNO_TETIFF
-libterralib_la_LDFLAGS = -no-undefined -no-install
-#AM_CPPFLAGS		= -I$(top_srcdir)/src/terralib -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/terralib/jpeg -I$(top_srcdir)/src/terralib/functions -I$(top_srcdir)/src/terralib/utils
-AM_CPPFLAGS = -I$(top_srcdir)/src/terralib -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/terralib/utils
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cpp .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/terralib/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/terralib/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libterralib.la: $(libterralib_la_OBJECTS) $(libterralib_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libterralib_la_LINK)  $(libterralib_la_OBJECTS) $(libterralib_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeAbstractTheme.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeAffineGT.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeAffineGTFactory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeAgnostic.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeAsciiFile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeBox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeBufferRegion.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeCentroid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDBConnection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDBConnectionsPool.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDatabase.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDatabaseFactoryParams.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDatum.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderASCIIGrid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderDatabase.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderFile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderMemory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderMemoryMap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderSPR.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderSmartMem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeDecoderVirtualMemory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeErrorLog.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeErrorMessage.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeException.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeExternalTheme.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeFragmentation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeGTFactory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeGTParams.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeGeometricTransformation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeGeometry.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeGeometryAlgorithms.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeGroupingAlgorithms.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeImportRaster.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeInitRasterDecoders.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeIntersector.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeLayer.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeLegendEntry.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeMappedMemory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeMatrix.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeMetaModelCache.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeMultiGeometry.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeMutex.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeNeighbours.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeNetwork.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeOverlay.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeOverlayUtils.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProgress.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProject.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProjection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProjectiveGT.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProjectiveGTFactory.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProxMatrixConstructionStrategy.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProxMatrixImplementation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeProxMatrixStrategies.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerier.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerierDB.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerierDBStr1.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerierDBStr2.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerierDBStr3.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerierImpl.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeQuerierParams.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeRaster.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeRasterMemManager.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeRasterParams.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeRasterRemap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeRasterTransform.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeRepresentation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeSTElementSet.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeSTEvent.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeSTInstance.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeSpatialOperations.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeStdFile.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeTable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeTemporalSeries.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeTheme.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeThread.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeThreadFunctor.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeThreadSignal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeTime.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeTimeInterval.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeTin.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeUtils.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeVectorRemap.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeViewNode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-TeVisual.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-lexTemporal.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libterralib_la-yyTemporal.Plo at am__quote@
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-libterralib_la-TeAbstractTheme.lo: kernel/TeAbstractTheme.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeAbstractTheme.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeAbstractTheme.Tpo -c -o libterralib_la-TeAbstractTheme.lo `test -f 'kernel/TeAbstractTheme.cpp' || echo '$(srcdir)/'`kernel/TeAbstractTheme.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeAbstractTheme.Tpo $(DEPDIR)/libterralib_la-TeAbstractTheme.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeAbstractTheme.cpp' object='libterralib_la-TeAbstractTheme.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeAbstractTheme.lo `test -f 'kernel/TeAbstractTheme.cpp' || echo '$(srcdir)/'`kernel/TeAbstractTheme.cpp
-
-libterralib_la-TeAffineGT.lo: kernel/TeAffineGT.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeAffineGT.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeAffineGT.Tpo -c -o libterralib_la-TeAffineGT.lo `test -f 'kernel/TeAffineGT.cpp' || echo '$(srcdir)/'`kernel/TeAffineGT.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeAffineGT.Tpo $(DEPDIR)/libterralib_la-TeAffineGT.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeAffineGT.cpp' object='libterralib_la-TeAffineGT.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeAffineGT.lo `test -f 'kernel/TeAffineGT.cpp' || echo '$(srcdir)/'`kernel/TeAffineGT.cpp
-
-libterralib_la-TeAffineGTFactory.lo: kernel/TeAffineGTFactory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeAffineGTFactory.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeAffineGTFactory.Tpo -c -o libterralib_la-TeAffineGTFactory.lo `test -f 'kernel/TeAffineGTFactory.cpp' || echo '$(srcdir)/'`kernel/TeAffineGTFactory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeAffineGTFactory.Tpo $(DEPDIR)/libterralib_la-TeAffineGTFactory.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeAffineGTFactory.cpp' object='libterralib_la-TeAffineGTFactory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeAffineGTFactory.lo `test -f 'kernel/TeAffineGTFactory.cpp' || echo '$(srcdir)/'`kernel/TeAffineGTFactory.cpp
-
-libterralib_la-TeAgnostic.lo: kernel/TeAgnostic.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeAgnostic.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeAgnostic.Tpo -c -o libterralib_la-TeAgnostic.lo `test -f 'kernel/TeAgnostic.cpp' || echo '$(srcdir)/'`kernel/TeAgnostic.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeAgnostic.Tpo $(DEPDIR)/libterralib_la-TeAgnostic.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeAgnostic.cpp' object='libterralib_la-TeAgnostic.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeAgnostic.lo `test -f 'kernel/TeAgnostic.cpp' || echo '$(srcdir)/'`kernel/TeAgnostic.cpp
-
-libterralib_la-TeAsciiFile.lo: kernel/TeAsciiFile.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeAsciiFile.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeAsciiFile.Tpo -c -o libterralib_la-TeAsciiFile.lo `test -f 'kernel/TeAsciiFile.cpp' || echo '$(srcdir)/'`kernel/TeAsciiFile.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeAsciiFile.Tpo $(DEPDIR)/libterralib_la-TeAsciiFile.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeAsciiFile.cpp' object='libterralib_la-TeAsciiFile.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeAsciiFile.lo `test -f 'kernel/TeAsciiFile.cpp' || echo '$(srcdir)/'`kernel/TeAsciiFile.cpp
-
-libterralib_la-TeBox.lo: kernel/TeBox.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeBox.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeBox.Tpo -c -o libterralib_la-TeBox.lo `test -f 'kernel/TeBox.cpp' || echo '$(srcdir)/'`kernel/TeBox.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeBox.Tpo $(DEPDIR)/libterralib_la-TeBox.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeBox.cpp' object='libterralib_la-TeBox.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeBox.lo `test -f 'kernel/TeBox.cpp' || echo '$(srcdir)/'`kernel/TeBox.cpp
-
-libterralib_la-TeBufferRegion.lo: kernel/TeBufferRegion.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeBufferRegion.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeBufferRegion.Tpo -c -o libterralib_la-TeBufferRegion.lo `test -f 'kernel/TeBufferRegion.cpp' || echo '$(srcdir)/'`kernel/TeBufferRegion.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeBufferRegion.Tpo $(DEPDIR)/libterralib_la-TeBufferRegion.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeBufferRegion.cpp' object='libterralib_la-TeBufferRegion.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeBufferRegion.lo `test -f 'kernel/TeBufferRegion.cpp' || echo '$(srcdir)/'`kernel/TeBufferRegion.cpp
-
-libterralib_la-TeCentroid.lo: kernel/TeCentroid.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeCentroid.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeCentroid.Tpo -c -o libterralib_la-TeCentroid.lo `test -f 'kernel/TeCentroid.cpp' || echo '$(srcdir)/'`kernel/TeCentroid.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeCentroid.Tpo $(DEPDIR)/libterralib_la-TeCentroid.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeCentroid.cpp' object='libterralib_la-TeCentroid.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeCentroid.lo `test -f 'kernel/TeCentroid.cpp' || echo '$(srcdir)/'`kernel/TeCentroid.cpp
-
-libterralib_la-TeDBConnection.lo: kernel/TeDBConnection.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDBConnection.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDBConnection.Tpo -c -o libterralib_la-TeDBConnection.lo `test -f 'kernel/TeDBConnection.cpp' || echo '$(srcdir)/'`kernel/TeDBConnection.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDBConnection.Tpo $(DEPDIR)/libterralib_la-TeDBConnection.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDBConnection.cpp' object='libterralib_la-TeDBConnection.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDBConnection.lo `test -f 'kernel/TeDBConnection.cpp' || echo '$(srcdir)/'`kernel/TeDBConnection.cpp
-
-libterralib_la-TeDBConnectionsPool.lo: kernel/TeDBConnectionsPool.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDBConnectionsPool.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDBConnectionsPool.Tpo -c -o libterralib_la-TeDBConnectionsPool.lo `test -f 'kernel/TeDBConnectionsPool.cpp' || echo '$(srcdir)/'`kernel/TeDBConnectionsPool.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDBConnectionsPool.Tpo $(DEPDIR)/libterralib_la-TeDBConnectionsPool.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDBConnectionsPool.cpp' object='libterralib_la-TeDBConnectionsPool.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDBConnectionsPool.lo `test -f 'kernel/TeDBConnectionsPool.cpp' || echo '$(srcdir)/'`kernel/TeDBConnectionsPool.cpp
-
-libterralib_la-TeDatabase.lo: kernel/TeDatabase.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDatabase.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDatabase.Tpo -c -o libterralib_la-TeDatabase.lo `test -f 'kernel/TeDatabase.cpp' || echo '$(srcdir)/'`kernel/TeDatabase.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDatabase.Tpo $(DEPDIR)/libterralib_la-TeDatabase.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDatabase.cpp' object='libterralib_la-TeDatabase.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDatabase.lo `test -f 'kernel/TeDatabase.cpp' || echo '$(srcdir)/'`kernel/TeDatabase.cpp
-
-libterralib_la-TeDatabaseFactoryParams.lo: kernel/TeDatabaseFactoryParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDatabaseFactoryParams.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDatabaseFactoryParams.Tpo -c -o libterralib_la-TeDatabaseFactoryParams.lo `test -f 'kernel/TeDatabaseFactoryParams.cpp' || echo '$(srcdir)/'`kernel/TeDatabaseFactoryParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDatabaseFactoryParams.Tpo $(DEPDIR)/libterralib_la-TeDatabaseFactoryParams.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDatabaseFactoryParams.cpp' object='libterralib_la-TeDatabaseFactoryParams.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDatabaseFactoryParams.lo `test -f 'kernel/TeDatabaseFactoryParams.cpp' || echo '$(srcdir)/'`kernel/TeDatabaseFactoryParams.cpp
-
-libterralib_la-TeDatum.lo: kernel/TeDatum.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDatum.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDatum.Tpo -c -o libterralib_la-TeDatum.lo `test -f 'kernel/TeDatum.cpp' || echo '$(srcdir)/'`kernel/TeDatum.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDatum.Tpo $(DEPDIR)/libterralib_la-TeDatum.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDatum.cpp' object='libterralib_la-TeDatum.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDatum.lo `test -f 'kernel/TeDatum.cpp' || echo '$(srcdir)/'`kernel/TeDatum.cpp
-
-libterralib_la-TeDecoderASCIIGrid.lo: kernel/TeDecoderASCIIGrid.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderASCIIGrid.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderASCIIGrid.Tpo -c -o libterralib_la-TeDecoderASCIIGrid.lo `test -f 'kernel/TeDecoderASCIIGrid.cpp' || echo '$(srcdir)/'`kernel/TeDecoderASCIIGrid.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderASCIIGrid.Tpo $(DEPDIR)/libterralib_la-TeDecoderASCIIGrid.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderASCIIGrid.cpp' object='libterralib_la-TeDecoderASCIIGrid.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderASCIIGrid.lo `test -f 'kernel/TeDecoderASCIIGrid.cpp' || echo '$(srcdir)/'`kernel/TeDecoderASCIIGrid.cpp
-
-libterralib_la-TeDecoderDatabase.lo: kernel/TeDecoderDatabase.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderDatabase.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderDatabase.Tpo -c -o libterralib_la-TeDecoderDatabase.lo `test -f 'kernel/TeDecoderDatabase.cpp' || echo '$(srcdir)/'`kernel/TeDecoderDatabase.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderDatabase.Tpo $(DEPDIR)/libterralib_la-TeDecoderDatabase.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderDatabase.cpp' object='libterralib_la-TeDecoderDatabase.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderDatabase.lo `test -f 'kernel/TeDecoderDatabase.cpp' || echo '$(srcdir)/'`kernel/TeDecoderDatabase.cpp
-
-libterralib_la-TeDecoderFile.lo: kernel/TeDecoderFile.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderFile.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderFile.Tpo -c -o libterralib_la-TeDecoderFile.lo `test -f 'kernel/TeDecoderFile.cpp' || echo '$(srcdir)/'`kernel/TeDecoderFile.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderFile.Tpo $(DEPDIR)/libterralib_la-TeDecoderFile.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderFile.cpp' object='libterralib_la-TeDecoderFile.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderFile.lo `test -f 'kernel/TeDecoderFile.cpp' || echo '$(srcdir)/'`kernel/TeDecoderFile.cpp
-
-libterralib_la-TeDecoderMemory.lo: kernel/TeDecoderMemory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderMemory.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderMemory.Tpo -c -o libterralib_la-TeDecoderMemory.lo `test -f 'kernel/TeDecoderMemory.cpp' || echo '$(srcdir)/'`kernel/TeDecoderMemory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderMemory.Tpo $(DEPDIR)/libterralib_la-TeDecoderMemory.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderMemory.cpp' object='libterralib_la-TeDecoderMemory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderMemory.lo `test -f 'kernel/TeDecoderMemory.cpp' || echo '$(srcdir)/'`kernel/TeDecoderMemory.cpp
-
-libterralib_la-TeDecoderMemoryMap.lo: kernel/TeDecoderMemoryMap.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderMemoryMap.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderMemoryMap.Tpo -c -o libterralib_la-TeDecoderMemoryMap.lo `test -f 'kernel/TeDecoderMemoryMap.cpp' || echo '$(srcdir)/'`kernel/TeDecoderMemoryMap.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderMemoryMap.Tpo $(DEPDIR)/libterralib_la-TeDecoderMemoryMap.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderMemoryMap.cpp' object='libterralib_la-TeDecoderMemoryMap.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderMemoryMap.lo `test -f 'kernel/TeDecoderMemoryMap.cpp' || echo '$(srcdir)/'`kernel/TeDecoderMemoryMap.cpp
-
-libterralib_la-TeDecoderSPR.lo: kernel/TeDecoderSPR.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderSPR.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderSPR.Tpo -c -o libterralib_la-TeDecoderSPR.lo `test -f 'kernel/TeDecoderSPR.cpp' || echo '$(srcdir)/'`kernel/TeDecoderSPR.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderSPR.Tpo $(DEPDIR)/libterralib_la-TeDecoderSPR.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderSPR.cpp' object='libterralib_la-TeDecoderSPR.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderSPR.lo `test -f 'kernel/TeDecoderSPR.cpp' || echo '$(srcdir)/'`kernel/TeDecoderSPR.cpp
-
-libterralib_la-TeDecoderSmartMem.lo: kernel/TeDecoderSmartMem.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderSmartMem.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderSmartMem.Tpo -c -o libterralib_la-TeDecoderSmartMem.lo `test -f 'kernel/TeDecoderSmartMem.cpp' || echo '$(srcdir)/'`kernel/TeDecoderSmartMem.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderSmartMem.Tpo $(DEPDIR)/libterralib_la-TeDecoderSmartMem.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderSmartMem.cpp' object='libterralib_la-TeDecoderSmartMem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderSmartMem.lo `test -f 'kernel/TeDecoderSmartMem.cpp' || echo '$(srcdir)/'`kernel/TeDecoderSmartMem.cpp
-
-libterralib_la-TeDecoderVirtualMemory.lo: kernel/TeDecoderVirtualMemory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeDecoderVirtualMemory.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeDecoderVirtualMemory.Tpo -c -o libterralib_la-TeDecoderVirtualMemory.lo `test -f 'kernel/TeDecoderVirtualMemory.cpp' || echo '$(srcdir)/'`kernel/TeDecoderVirtualMemory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeDecoderVirtualMemory.Tpo $(DEPDIR)/libterralib_la-TeDecoderVirtualMemory.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeDecoderVirtualMemory.cpp' object='libterralib_la-TeDecoderVirtualMemory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeDecoderVirtualMemory.lo `test -f 'kernel/TeDecoderVirtualMemory.cpp' || echo '$(srcdir)/'`kernel/TeDecoderVirtualMemory.cpp
-
-libterralib_la-TeErrorLog.lo: kernel/TeErrorLog.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeErrorLog.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeErrorLog.Tpo -c -o libterralib_la-TeErrorLog.lo `test -f 'kernel/TeErrorLog.cpp' || echo '$(srcdir)/'`kernel/TeErrorLog.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeErrorLog.Tpo $(DEPDIR)/libterralib_la-TeErrorLog.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeErrorLog.cpp' object='libterralib_la-TeErrorLog.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeErrorLog.lo `test -f 'kernel/TeErrorLog.cpp' || echo '$(srcdir)/'`kernel/TeErrorLog.cpp
-
-libterralib_la-TeErrorMessage.lo: kernel/TeErrorMessage.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeErrorMessage.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeErrorMessage.Tpo -c -o libterralib_la-TeErrorMessage.lo `test -f 'kernel/TeErrorMessage.cpp' || echo '$(srcdir)/'`kernel/TeErrorMessage.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeErrorMessage.Tpo $(DEPDIR)/libterralib_la-TeErrorMessage.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeErrorMessage.cpp' object='libterralib_la-TeErrorMessage.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeErrorMessage.lo `test -f 'kernel/TeErrorMessage.cpp' || echo '$(srcdir)/'`kernel/TeErrorMessage.cpp
-
-libterralib_la-TeException.lo: kernel/TeException.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeException.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeException.Tpo -c -o libterralib_la-TeException.lo `test -f 'kernel/TeException.cpp' || echo '$(srcdir)/'`kernel/TeException.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeException.Tpo $(DEPDIR)/libterralib_la-TeException.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeException.cpp' object='libterralib_la-TeException.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeException.lo `test -f 'kernel/TeException.cpp' || echo '$(srcdir)/'`kernel/TeException.cpp
-
-libterralib_la-TeExternalTheme.lo: kernel/TeExternalTheme.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeExternalTheme.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeExternalTheme.Tpo -c -o libterralib_la-TeExternalTheme.lo `test -f 'kernel/TeExternalTheme.cpp' || echo '$(srcdir)/'`kernel/TeExternalTheme.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeExternalTheme.Tpo $(DEPDIR)/libterralib_la-TeExternalTheme.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeExternalTheme.cpp' object='libterralib_la-TeExternalTheme.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeExternalTheme.lo `test -f 'kernel/TeExternalTheme.cpp' || echo '$(srcdir)/'`kernel/TeExternalTheme.cpp
-
-libterralib_la-TeFragmentation.lo: kernel/TeFragmentation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeFragmentation.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeFragmentation.Tpo -c -o libterralib_la-TeFragmentation.lo `test -f 'kernel/TeFragmentation.cpp' || echo '$(srcdir)/'`kernel/TeFragmentation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeFragmentation.Tpo $(DEPDIR)/libterralib_la-TeFragmentation.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeFragmentation.cpp' object='libterralib_la-TeFragmentation.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeFragmentation.lo `test -f 'kernel/TeFragmentation.cpp' || echo '$(srcdir)/'`kernel/TeFragmentation.cpp
-
-libterralib_la-TeGTFactory.lo: kernel/TeGTFactory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeGTFactory.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeGTFactory.Tpo -c -o libterralib_la-TeGTFactory.lo `test -f 'kernel/TeGTFactory.cpp' || echo '$(srcdir)/'`kernel/TeGTFactory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeGTFactory.Tpo $(DEPDIR)/libterralib_la-TeGTFactory.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeGTFactory.cpp' object='libterralib_la-TeGTFactory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeGTFactory.lo `test -f 'kernel/TeGTFactory.cpp' || echo '$(srcdir)/'`kernel/TeGTFactory.cpp
-
-libterralib_la-TeGTParams.lo: kernel/TeGTParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeGTParams.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeGTParams.Tpo -c -o libterralib_la-TeGTParams.lo `test -f 'kernel/TeGTParams.cpp' || echo '$(srcdir)/'`kernel/TeGTParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeGTParams.Tpo $(DEPDIR)/libterralib_la-TeGTParams.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeGTParams.cpp' object='libterralib_la-TeGTParams.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeGTParams.lo `test -f 'kernel/TeGTParams.cpp' || echo '$(srcdir)/'`kernel/TeGTParams.cpp
-
-libterralib_la-TeGeometricTransformation.lo: kernel/TeGeometricTransformation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeGeometricTransformation.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeGeometricTransformation.Tpo -c -o libterralib_la-TeGeometricTransformation.lo `test -f 'kernel/TeGeometricTransformation.cpp' || echo '$(srcdir)/'`kernel/TeGeometricTransformation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeGeometricTransformation.Tpo $(DEPDIR)/libterralib_la-TeGeometricTransformation.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeGeometricTransformation.cpp' object='libterralib_la-TeGeometricTransformation.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeGeometricTransformation.lo `test -f 'kernel/TeGeometricTransformation.cpp' || echo '$(srcdir)/'`kernel/TeGeometricTransformation.cpp
-
-libterralib_la-TeGeometry.lo: kernel/TeGeometry.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeGeometry.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeGeometry.Tpo -c -o libterralib_la-TeGeometry.lo `test -f 'kernel/TeGeometry.cpp' || echo '$(srcdir)/'`kernel/TeGeometry.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeGeometry.Tpo $(DEPDIR)/libterralib_la-TeGeometry.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeGeometry.cpp' object='libterralib_la-TeGeometry.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeGeometry.lo `test -f 'kernel/TeGeometry.cpp' || echo '$(srcdir)/'`kernel/TeGeometry.cpp
-
-libterralib_la-TeGeometryAlgorithms.lo: kernel/TeGeometryAlgorithms.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeGeometryAlgorithms.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeGeometryAlgorithms.Tpo -c -o libterralib_la-TeGeometryAlgorithms.lo `test -f 'kernel/TeGeometryAlgorithms.cpp' || echo '$(srcdir)/'`kernel/TeGeometryAlgorithms.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeGeometryAlgorithms.Tpo $(DEPDIR)/libterralib_la-TeGeometryAlgorithms.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeGeometryAlgorithms.cpp' object='libterralib_la-TeGeometryAlgorithms.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeGeometryAlgorithms.lo `test -f 'kernel/TeGeometryAlgorithms.cpp' || echo '$(srcdir)/'`kernel/TeGeometryAlgorithms.cpp
-
-libterralib_la-TeGroupingAlgorithms.lo: kernel/TeGroupingAlgorithms.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeGroupingAlgorithms.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeGroupingAlgorithms.Tpo -c -o libterralib_la-TeGroupingAlgorithms.lo `test -f 'kernel/TeGroupingAlgorithms.cpp' || echo '$(srcdir)/'`kernel/TeGroupingAlgorithms.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeGroupingAlgorithms.Tpo $(DEPDIR)/libterralib_la-TeGroupingAlgorithms.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeGroupingAlgorithms.cpp' object='libterralib_la-TeGroupingAlgorithms.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeGroupingAlgorithms.lo `test -f 'kernel/TeGroupingAlgorithms.cpp' || echo '$(srcdir)/'`kernel/TeGroupingAlgorithms.cpp
-
-libterralib_la-TeImportRaster.lo: kernel/TeImportRaster.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeImportRaster.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeImportRaster.Tpo -c -o libterralib_la-TeImportRaster.lo `test -f 'kernel/TeImportRaster.cpp' || echo '$(srcdir)/'`kernel/TeImportRaster.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeImportRaster.Tpo $(DEPDIR)/libterralib_la-TeImportRaster.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeImportRaster.cpp' object='libterralib_la-TeImportRaster.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeImportRaster.lo `test -f 'kernel/TeImportRaster.cpp' || echo '$(srcdir)/'`kernel/TeImportRaster.cpp
-
-libterralib_la-TeInitRasterDecoders.lo: kernel/TeInitRasterDecoders.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeInitRasterDecoders.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeInitRasterDecoders.Tpo -c -o libterralib_la-TeInitRasterDecoders.lo `test -f 'kernel/TeInitRasterDecoders.cpp' || echo '$(srcdir)/'`kernel/TeInitRasterDecoders.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeInitRasterDecoders.Tpo $(DEPDIR)/libterralib_la-TeInitRasterDecoders.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeInitRasterDecoders.cpp' object='libterralib_la-TeInitRasterDecoders.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeInitRasterDecoders.lo `test -f 'kernel/TeInitRasterDecoders.cpp' || echo '$(srcdir)/'`kernel/TeInitRasterDecoders.cpp
-
-libterralib_la-TeIntersector.lo: kernel/TeIntersector.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeIntersector.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeIntersector.Tpo -c -o libterralib_la-TeIntersector.lo `test -f 'kernel/TeIntersector.cpp' || echo '$(srcdir)/'`kernel/TeIntersector.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeIntersector.Tpo $(DEPDIR)/libterralib_la-TeIntersector.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeIntersector.cpp' object='libterralib_la-TeIntersector.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeIntersector.lo `test -f 'kernel/TeIntersector.cpp' || echo '$(srcdir)/'`kernel/TeIntersector.cpp
-
-libterralib_la-TeLayer.lo: kernel/TeLayer.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeLayer.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeLayer.Tpo -c -o libterralib_la-TeLayer.lo `test -f 'kernel/TeLayer.cpp' || echo '$(srcdir)/'`kernel/TeLayer.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeLayer.Tpo $(DEPDIR)/libterralib_la-TeLayer.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeLayer.cpp' object='libterralib_la-TeLayer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeLayer.lo `test -f 'kernel/TeLayer.cpp' || echo '$(srcdir)/'`kernel/TeLayer.cpp
-
-libterralib_la-TeLegendEntry.lo: kernel/TeLegendEntry.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeLegendEntry.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeLegendEntry.Tpo -c -o libterralib_la-TeLegendEntry.lo `test -f 'kernel/TeLegendEntry.cpp' || echo '$(srcdir)/'`kernel/TeLegendEntry.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeLegendEntry.Tpo $(DEPDIR)/libterralib_la-TeLegendEntry.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeLegendEntry.cpp' object='libterralib_la-TeLegendEntry.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeLegendEntry.lo `test -f 'kernel/TeLegendEntry.cpp' || echo '$(srcdir)/'`kernel/TeLegendEntry.cpp
-
-libterralib_la-TeMappedMemory.lo: kernel/TeMappedMemory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeMappedMemory.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeMappedMemory.Tpo -c -o libterralib_la-TeMappedMemory.lo `test -f 'kernel/TeMappedMemory.cpp' || echo '$(srcdir)/'`kernel/TeMappedMemory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeMappedMemory.Tpo $(DEPDIR)/libterralib_la-TeMappedMemory.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeMappedMemory.cpp' object='libterralib_la-TeMappedMemory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeMappedMemory.lo `test -f 'kernel/TeMappedMemory.cpp' || echo '$(srcdir)/'`kernel/TeMappedMemory.cpp
-
-libterralib_la-TeMatrix.lo: kernel/TeMatrix.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeMatrix.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeMatrix.Tpo -c -o libterralib_la-TeMatrix.lo `test -f 'kernel/TeMatrix.cpp' || echo '$(srcdir)/'`kernel/TeMatrix.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeMatrix.Tpo $(DEPDIR)/libterralib_la-TeMatrix.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeMatrix.cpp' object='libterralib_la-TeMatrix.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeMatrix.lo `test -f 'kernel/TeMatrix.cpp' || echo '$(srcdir)/'`kernel/TeMatrix.cpp
-
-libterralib_la-TeMetaModelCache.lo: kernel/TeMetaModelCache.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeMetaModelCache.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeMetaModelCache.Tpo -c -o libterralib_la-TeMetaModelCache.lo `test -f 'kernel/TeMetaModelCache.cpp' || echo '$(srcdir)/'`kernel/TeMetaModelCache.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeMetaModelCache.Tpo $(DEPDIR)/libterralib_la-TeMetaModelCache.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeMetaModelCache.cpp' object='libterralib_la-TeMetaModelCache.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeMetaModelCache.lo `test -f 'kernel/TeMetaModelCache.cpp' || echo '$(srcdir)/'`kernel/TeMetaModelCache.cpp
-
-libterralib_la-TeMultiGeometry.lo: kernel/TeMultiGeometry.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeMultiGeometry.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeMultiGeometry.Tpo -c -o libterralib_la-TeMultiGeometry.lo `test -f 'kernel/TeMultiGeometry.cpp' || echo '$(srcdir)/'`kernel/TeMultiGeometry.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeMultiGeometry.Tpo $(DEPDIR)/libterralib_la-TeMultiGeometry.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeMultiGeometry.cpp' object='libterralib_la-TeMultiGeometry.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeMultiGeometry.lo `test -f 'kernel/TeMultiGeometry.cpp' || echo '$(srcdir)/'`kernel/TeMultiGeometry.cpp
-
-libterralib_la-TeMutex.lo: kernel/TeMutex.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeMutex.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeMutex.Tpo -c -o libterralib_la-TeMutex.lo `test -f 'kernel/TeMutex.cpp' || echo '$(srcdir)/'`kernel/TeMutex.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeMutex.Tpo $(DEPDIR)/libterralib_la-TeMutex.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeMutex.cpp' object='libterralib_la-TeMutex.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeMutex.lo `test -f 'kernel/TeMutex.cpp' || echo '$(srcdir)/'`kernel/TeMutex.cpp
-
-libterralib_la-TeNeighbours.lo: kernel/TeNeighbours.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeNeighbours.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeNeighbours.Tpo -c -o libterralib_la-TeNeighbours.lo `test -f 'kernel/TeNeighbours.cpp' || echo '$(srcdir)/'`kernel/TeNeighbours.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeNeighbours.Tpo $(DEPDIR)/libterralib_la-TeNeighbours.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeNeighbours.cpp' object='libterralib_la-TeNeighbours.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeNeighbours.lo `test -f 'kernel/TeNeighbours.cpp' || echo '$(srcdir)/'`kernel/TeNeighbours.cpp
-
-libterralib_la-TeNetwork.lo: kernel/TeNetwork.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeNetwork.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeNetwork.Tpo -c -o libterralib_la-TeNetwork.lo `test -f 'kernel/TeNetwork.cpp' || echo '$(srcdir)/'`kernel/TeNetwork.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeNetwork.Tpo $(DEPDIR)/libterralib_la-TeNetwork.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeNetwork.cpp' object='libterralib_la-TeNetwork.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeNetwork.lo `test -f 'kernel/TeNetwork.cpp' || echo '$(srcdir)/'`kernel/TeNetwork.cpp
-
-libterralib_la-TeOverlay.lo: kernel/TeOverlay.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeOverlay.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeOverlay.Tpo -c -o libterralib_la-TeOverlay.lo `test -f 'kernel/TeOverlay.cpp' || echo '$(srcdir)/'`kernel/TeOverlay.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeOverlay.Tpo $(DEPDIR)/libterralib_la-TeOverlay.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeOverlay.cpp' object='libterralib_la-TeOverlay.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeOverlay.lo `test -f 'kernel/TeOverlay.cpp' || echo '$(srcdir)/'`kernel/TeOverlay.cpp
-
-libterralib_la-TeOverlayUtils.lo: kernel/TeOverlayUtils.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeOverlayUtils.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeOverlayUtils.Tpo -c -o libterralib_la-TeOverlayUtils.lo `test -f 'kernel/TeOverlayUtils.cpp' || echo '$(srcdir)/'`kernel/TeOverlayUtils.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeOverlayUtils.Tpo $(DEPDIR)/libterralib_la-TeOverlayUtils.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeOverlayUtils.cpp' object='libterralib_la-TeOverlayUtils.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeOverlayUtils.lo `test -f 'kernel/TeOverlayUtils.cpp' || echo '$(srcdir)/'`kernel/TeOverlayUtils.cpp
-
-libterralib_la-TeProgress.lo: kernel/TeProgress.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProgress.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProgress.Tpo -c -o libterralib_la-TeProgress.lo `test -f 'kernel/TeProgress.cpp' || echo '$(srcdir)/'`kernel/TeProgress.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProgress.Tpo $(DEPDIR)/libterralib_la-TeProgress.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProgress.cpp' object='libterralib_la-TeProgress.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProgress.lo `test -f 'kernel/TeProgress.cpp' || echo '$(srcdir)/'`kernel/TeProgress.cpp
-
-libterralib_la-TeProject.lo: kernel/TeProject.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProject.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProject.Tpo -c -o libterralib_la-TeProject.lo `test -f 'kernel/TeProject.cpp' || echo '$(srcdir)/'`kernel/TeProject.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProject.Tpo $(DEPDIR)/libterralib_la-TeProject.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProject.cpp' object='libterralib_la-TeProject.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProject.lo `test -f 'kernel/TeProject.cpp' || echo '$(srcdir)/'`kernel/TeProject.cpp
-
-libterralib_la-TeProjection.lo: kernel/TeProjection.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProjection.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProjection.Tpo -c -o libterralib_la-TeProjection.lo `test -f 'kernel/TeProjection.cpp' || echo '$(srcdir)/'`kernel/TeProjection.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProjection.Tpo $(DEPDIR)/libterralib_la-TeProjection.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProjection.cpp' object='libterralib_la-TeProjection.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProjection.lo `test -f 'kernel/TeProjection.cpp' || echo '$(srcdir)/'`kernel/TeProjection.cpp
-
-libterralib_la-TeProjectiveGT.lo: kernel/TeProjectiveGT.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProjectiveGT.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProjectiveGT.Tpo -c -o libterralib_la-TeProjectiveGT.lo `test -f 'kernel/TeProjectiveGT.cpp' || echo '$(srcdir)/'`kernel/TeProjectiveGT.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProjectiveGT.Tpo $(DEPDIR)/libterralib_la-TeProjectiveGT.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProjectiveGT.cpp' object='libterralib_la-TeProjectiveGT.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProjectiveGT.lo `test -f 'kernel/TeProjectiveGT.cpp' || echo '$(srcdir)/'`kernel/TeProjectiveGT.cpp
-
-libterralib_la-TeProjectiveGTFactory.lo: kernel/TeProjectiveGTFactory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProjectiveGTFactory.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProjectiveGTFactory.Tpo -c -o libterralib_la-TeProjectiveGTFactory.lo `test -f 'kernel/TeProjectiveGTFactory.cpp' || echo '$(srcdir)/'`kernel/TeProjectiveGTFactory.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProjectiveGTFactory.Tpo $(DEPDIR)/libterralib_la-TeProjectiveGTFactory.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProjectiveGTFactory.cpp' object='libterralib_la-TeProjectiveGTFactory.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProjectiveGTFactory.lo `test -f 'kernel/TeProjectiveGTFactory.cpp' || echo '$(srcdir)/'`kernel/TeProjectiveGTFactory.cpp
-
-libterralib_la-TeProxMatrixConstructionStrategy.lo: kernel/TeProxMatrixConstructionStrategy.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProxMatrixConstructionStrategy.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProxMatrixConstructionStrategy.Tpo -c -o libterralib_la-TeProxMatrixConstructionStrategy.lo `test -f 'kernel/TeProxMatrixConstructionStrategy.cpp' || echo '$(srcdir)/'`ke [...]
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProxMatrixConstructionStrategy.Tpo $(DEPDIR)/libterralib_la-TeProxMatrixConstructionStrategy.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProxMatrixConstructionStrategy.cpp' object='libterralib_la-TeProxMatrixConstructionStrategy.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProxMatrixConstructionStrategy.lo `test -f 'kernel/TeProxMatrixConstructionStrategy.cpp' || echo '$(srcdir)/'`kernel/TeProxMatrixConstructionStrategy.cpp
-
-libterralib_la-TeProxMatrixImplementation.lo: kernel/TeProxMatrixImplementation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProxMatrixImplementation.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProxMatrixImplementation.Tpo -c -o libterralib_la-TeProxMatrixImplementation.lo `test -f 'kernel/TeProxMatrixImplementation.cpp' || echo '$(srcdir)/'`kernel/TeProxMatrixImpleme [...]
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProxMatrixImplementation.Tpo $(DEPDIR)/libterralib_la-TeProxMatrixImplementation.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProxMatrixImplementation.cpp' object='libterralib_la-TeProxMatrixImplementation.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProxMatrixImplementation.lo `test -f 'kernel/TeProxMatrixImplementation.cpp' || echo '$(srcdir)/'`kernel/TeProxMatrixImplementation.cpp
-
-libterralib_la-TeProxMatrixStrategies.lo: kernel/TeProxMatrixStrategies.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeProxMatrixStrategies.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeProxMatrixStrategies.Tpo -c -o libterralib_la-TeProxMatrixStrategies.lo `test -f 'kernel/TeProxMatrixStrategies.cpp' || echo '$(srcdir)/'`kernel/TeProxMatrixStrategies.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeProxMatrixStrategies.Tpo $(DEPDIR)/libterralib_la-TeProxMatrixStrategies.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeProxMatrixStrategies.cpp' object='libterralib_la-TeProxMatrixStrategies.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeProxMatrixStrategies.lo `test -f 'kernel/TeProxMatrixStrategies.cpp' || echo '$(srcdir)/'`kernel/TeProxMatrixStrategies.cpp
-
-libterralib_la-TeQuerier.lo: kernel/TeQuerier.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerier.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerier.Tpo -c -o libterralib_la-TeQuerier.lo `test -f 'kernel/TeQuerier.cpp' || echo '$(srcdir)/'`kernel/TeQuerier.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerier.Tpo $(DEPDIR)/libterralib_la-TeQuerier.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerier.cpp' object='libterralib_la-TeQuerier.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerier.lo `test -f 'kernel/TeQuerier.cpp' || echo '$(srcdir)/'`kernel/TeQuerier.cpp
-
-libterralib_la-TeQuerierDB.lo: kernel/TeQuerierDB.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerierDB.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerierDB.Tpo -c -o libterralib_la-TeQuerierDB.lo `test -f 'kernel/TeQuerierDB.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDB.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerierDB.Tpo $(DEPDIR)/libterralib_la-TeQuerierDB.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerierDB.cpp' object='libterralib_la-TeQuerierDB.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerierDB.lo `test -f 'kernel/TeQuerierDB.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDB.cpp
-
-libterralib_la-TeQuerierDBStr1.lo: kernel/TeQuerierDBStr1.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerierDBStr1.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerierDBStr1.Tpo -c -o libterralib_la-TeQuerierDBStr1.lo `test -f 'kernel/TeQuerierDBStr1.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDBStr1.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerierDBStr1.Tpo $(DEPDIR)/libterralib_la-TeQuerierDBStr1.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerierDBStr1.cpp' object='libterralib_la-TeQuerierDBStr1.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerierDBStr1.lo `test -f 'kernel/TeQuerierDBStr1.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDBStr1.cpp
-
-libterralib_la-TeQuerierDBStr2.lo: kernel/TeQuerierDBStr2.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerierDBStr2.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerierDBStr2.Tpo -c -o libterralib_la-TeQuerierDBStr2.lo `test -f 'kernel/TeQuerierDBStr2.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDBStr2.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerierDBStr2.Tpo $(DEPDIR)/libterralib_la-TeQuerierDBStr2.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerierDBStr2.cpp' object='libterralib_la-TeQuerierDBStr2.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerierDBStr2.lo `test -f 'kernel/TeQuerierDBStr2.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDBStr2.cpp
-
-libterralib_la-TeQuerierDBStr3.lo: kernel/TeQuerierDBStr3.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerierDBStr3.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerierDBStr3.Tpo -c -o libterralib_la-TeQuerierDBStr3.lo `test -f 'kernel/TeQuerierDBStr3.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDBStr3.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerierDBStr3.Tpo $(DEPDIR)/libterralib_la-TeQuerierDBStr3.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerierDBStr3.cpp' object='libterralib_la-TeQuerierDBStr3.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerierDBStr3.lo `test -f 'kernel/TeQuerierDBStr3.cpp' || echo '$(srcdir)/'`kernel/TeQuerierDBStr3.cpp
-
-libterralib_la-TeQuerierImpl.lo: kernel/TeQuerierImpl.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerierImpl.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerierImpl.Tpo -c -o libterralib_la-TeQuerierImpl.lo `test -f 'kernel/TeQuerierImpl.cpp' || echo '$(srcdir)/'`kernel/TeQuerierImpl.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerierImpl.Tpo $(DEPDIR)/libterralib_la-TeQuerierImpl.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerierImpl.cpp' object='libterralib_la-TeQuerierImpl.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerierImpl.lo `test -f 'kernel/TeQuerierImpl.cpp' || echo '$(srcdir)/'`kernel/TeQuerierImpl.cpp
-
-libterralib_la-TeQuerierParams.lo: kernel/TeQuerierParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeQuerierParams.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeQuerierParams.Tpo -c -o libterralib_la-TeQuerierParams.lo `test -f 'kernel/TeQuerierParams.cpp' || echo '$(srcdir)/'`kernel/TeQuerierParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeQuerierParams.Tpo $(DEPDIR)/libterralib_la-TeQuerierParams.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeQuerierParams.cpp' object='libterralib_la-TeQuerierParams.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeQuerierParams.lo `test -f 'kernel/TeQuerierParams.cpp' || echo '$(srcdir)/'`kernel/TeQuerierParams.cpp
-
-libterralib_la-TeRaster.lo: kernel/TeRaster.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeRaster.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeRaster.Tpo -c -o libterralib_la-TeRaster.lo `test -f 'kernel/TeRaster.cpp' || echo '$(srcdir)/'`kernel/TeRaster.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeRaster.Tpo $(DEPDIR)/libterralib_la-TeRaster.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeRaster.cpp' object='libterralib_la-TeRaster.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeRaster.lo `test -f 'kernel/TeRaster.cpp' || echo '$(srcdir)/'`kernel/TeRaster.cpp
-
-libterralib_la-TeRasterMemManager.lo: kernel/TeRasterMemManager.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeRasterMemManager.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeRasterMemManager.Tpo -c -o libterralib_la-TeRasterMemManager.lo `test -f 'kernel/TeRasterMemManager.cpp' || echo '$(srcdir)/'`kernel/TeRasterMemManager.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeRasterMemManager.Tpo $(DEPDIR)/libterralib_la-TeRasterMemManager.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeRasterMemManager.cpp' object='libterralib_la-TeRasterMemManager.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeRasterMemManager.lo `test -f 'kernel/TeRasterMemManager.cpp' || echo '$(srcdir)/'`kernel/TeRasterMemManager.cpp
-
-libterralib_la-TeRasterParams.lo: kernel/TeRasterParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeRasterParams.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeRasterParams.Tpo -c -o libterralib_la-TeRasterParams.lo `test -f 'kernel/TeRasterParams.cpp' || echo '$(srcdir)/'`kernel/TeRasterParams.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeRasterParams.Tpo $(DEPDIR)/libterralib_la-TeRasterParams.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeRasterParams.cpp' object='libterralib_la-TeRasterParams.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeRasterParams.lo `test -f 'kernel/TeRasterParams.cpp' || echo '$(srcdir)/'`kernel/TeRasterParams.cpp
-
-libterralib_la-TeRasterRemap.lo: kernel/TeRasterRemap.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeRasterRemap.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeRasterRemap.Tpo -c -o libterralib_la-TeRasterRemap.lo `test -f 'kernel/TeRasterRemap.cpp' || echo '$(srcdir)/'`kernel/TeRasterRemap.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeRasterRemap.Tpo $(DEPDIR)/libterralib_la-TeRasterRemap.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeRasterRemap.cpp' object='libterralib_la-TeRasterRemap.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeRasterRemap.lo `test -f 'kernel/TeRasterRemap.cpp' || echo '$(srcdir)/'`kernel/TeRasterRemap.cpp
-
-libterralib_la-TeRasterTransform.lo: kernel/TeRasterTransform.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeRasterTransform.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeRasterTransform.Tpo -c -o libterralib_la-TeRasterTransform.lo `test -f 'kernel/TeRasterTransform.cpp' || echo '$(srcdir)/'`kernel/TeRasterTransform.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeRasterTransform.Tpo $(DEPDIR)/libterralib_la-TeRasterTransform.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeRasterTransform.cpp' object='libterralib_la-TeRasterTransform.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeRasterTransform.lo `test -f 'kernel/TeRasterTransform.cpp' || echo '$(srcdir)/'`kernel/TeRasterTransform.cpp
-
-libterralib_la-TeRepresentation.lo: kernel/TeRepresentation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeRepresentation.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeRepresentation.Tpo -c -o libterralib_la-TeRepresentation.lo `test -f 'kernel/TeRepresentation.cpp' || echo '$(srcdir)/'`kernel/TeRepresentation.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeRepresentation.Tpo $(DEPDIR)/libterralib_la-TeRepresentation.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeRepresentation.cpp' object='libterralib_la-TeRepresentation.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeRepresentation.lo `test -f 'kernel/TeRepresentation.cpp' || echo '$(srcdir)/'`kernel/TeRepresentation.cpp
-
-libterralib_la-TeSTElementSet.lo: kernel/TeSTElementSet.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeSTElementSet.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeSTElementSet.Tpo -c -o libterralib_la-TeSTElementSet.lo `test -f 'kernel/TeSTElementSet.cpp' || echo '$(srcdir)/'`kernel/TeSTElementSet.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeSTElementSet.Tpo $(DEPDIR)/libterralib_la-TeSTElementSet.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeSTElementSet.cpp' object='libterralib_la-TeSTElementSet.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeSTElementSet.lo `test -f 'kernel/TeSTElementSet.cpp' || echo '$(srcdir)/'`kernel/TeSTElementSet.cpp
-
-libterralib_la-TeSTEvent.lo: kernel/TeSTEvent.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeSTEvent.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeSTEvent.Tpo -c -o libterralib_la-TeSTEvent.lo `test -f 'kernel/TeSTEvent.cpp' || echo '$(srcdir)/'`kernel/TeSTEvent.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeSTEvent.Tpo $(DEPDIR)/libterralib_la-TeSTEvent.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeSTEvent.cpp' object='libterralib_la-TeSTEvent.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeSTEvent.lo `test -f 'kernel/TeSTEvent.cpp' || echo '$(srcdir)/'`kernel/TeSTEvent.cpp
-
-libterralib_la-TeSTInstance.lo: kernel/TeSTInstance.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeSTInstance.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeSTInstance.Tpo -c -o libterralib_la-TeSTInstance.lo `test -f 'kernel/TeSTInstance.cpp' || echo '$(srcdir)/'`kernel/TeSTInstance.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeSTInstance.Tpo $(DEPDIR)/libterralib_la-TeSTInstance.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeSTInstance.cpp' object='libterralib_la-TeSTInstance.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeSTInstance.lo `test -f 'kernel/TeSTInstance.cpp' || echo '$(srcdir)/'`kernel/TeSTInstance.cpp
-
-libterralib_la-TeSpatialOperations.lo: kernel/TeSpatialOperations.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeSpatialOperations.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeSpatialOperations.Tpo -c -o libterralib_la-TeSpatialOperations.lo `test -f 'kernel/TeSpatialOperations.cpp' || echo '$(srcdir)/'`kernel/TeSpatialOperations.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeSpatialOperations.Tpo $(DEPDIR)/libterralib_la-TeSpatialOperations.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeSpatialOperations.cpp' object='libterralib_la-TeSpatialOperations.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeSpatialOperations.lo `test -f 'kernel/TeSpatialOperations.cpp' || echo '$(srcdir)/'`kernel/TeSpatialOperations.cpp
-
-libterralib_la-TeStdFile.lo: kernel/TeStdFile.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeStdFile.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeStdFile.Tpo -c -o libterralib_la-TeStdFile.lo `test -f 'kernel/TeStdFile.cpp' || echo '$(srcdir)/'`kernel/TeStdFile.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeStdFile.Tpo $(DEPDIR)/libterralib_la-TeStdFile.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeStdFile.cpp' object='libterralib_la-TeStdFile.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeStdFile.lo `test -f 'kernel/TeStdFile.cpp' || echo '$(srcdir)/'`kernel/TeStdFile.cpp
-
-libterralib_la-TeTable.lo: kernel/TeTable.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeTable.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeTable.Tpo -c -o libterralib_la-TeTable.lo `test -f 'kernel/TeTable.cpp' || echo '$(srcdir)/'`kernel/TeTable.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeTable.Tpo $(DEPDIR)/libterralib_la-TeTable.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeTable.cpp' object='libterralib_la-TeTable.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeTable.lo `test -f 'kernel/TeTable.cpp' || echo '$(srcdir)/'`kernel/TeTable.cpp
-
-libterralib_la-TeTemporalSeries.lo: kernel/TeTemporalSeries.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeTemporalSeries.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeTemporalSeries.Tpo -c -o libterralib_la-TeTemporalSeries.lo `test -f 'kernel/TeTemporalSeries.cpp' || echo '$(srcdir)/'`kernel/TeTemporalSeries.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeTemporalSeries.Tpo $(DEPDIR)/libterralib_la-TeTemporalSeries.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeTemporalSeries.cpp' object='libterralib_la-TeTemporalSeries.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeTemporalSeries.lo `test -f 'kernel/TeTemporalSeries.cpp' || echo '$(srcdir)/'`kernel/TeTemporalSeries.cpp
-
-libterralib_la-TeTheme.lo: kernel/TeTheme.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeTheme.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeTheme.Tpo -c -o libterralib_la-TeTheme.lo `test -f 'kernel/TeTheme.cpp' || echo '$(srcdir)/'`kernel/TeTheme.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeTheme.Tpo $(DEPDIR)/libterralib_la-TeTheme.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeTheme.cpp' object='libterralib_la-TeTheme.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeTheme.lo `test -f 'kernel/TeTheme.cpp' || echo '$(srcdir)/'`kernel/TeTheme.cpp
-
-libterralib_la-TeThread.lo: kernel/TeThread.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeThread.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeThread.Tpo -c -o libterralib_la-TeThread.lo `test -f 'kernel/TeThread.cpp' || echo '$(srcdir)/'`kernel/TeThread.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeThread.Tpo $(DEPDIR)/libterralib_la-TeThread.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeThread.cpp' object='libterralib_la-TeThread.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeThread.lo `test -f 'kernel/TeThread.cpp' || echo '$(srcdir)/'`kernel/TeThread.cpp
-
-libterralib_la-TeThreadFunctor.lo: kernel/TeThreadFunctor.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeThreadFunctor.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeThreadFunctor.Tpo -c -o libterralib_la-TeThreadFunctor.lo `test -f 'kernel/TeThreadFunctor.cpp' || echo '$(srcdir)/'`kernel/TeThreadFunctor.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeThreadFunctor.Tpo $(DEPDIR)/libterralib_la-TeThreadFunctor.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeThreadFunctor.cpp' object='libterralib_la-TeThreadFunctor.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeThreadFunctor.lo `test -f 'kernel/TeThreadFunctor.cpp' || echo '$(srcdir)/'`kernel/TeThreadFunctor.cpp
-
-libterralib_la-TeThreadSignal.lo: kernel/TeThreadSignal.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeThreadSignal.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeThreadSignal.Tpo -c -o libterralib_la-TeThreadSignal.lo `test -f 'kernel/TeThreadSignal.cpp' || echo '$(srcdir)/'`kernel/TeThreadSignal.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeThreadSignal.Tpo $(DEPDIR)/libterralib_la-TeThreadSignal.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeThreadSignal.cpp' object='libterralib_la-TeThreadSignal.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeThreadSignal.lo `test -f 'kernel/TeThreadSignal.cpp' || echo '$(srcdir)/'`kernel/TeThreadSignal.cpp
-
-libterralib_la-TeTime.lo: kernel/TeTime.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeTime.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeTime.Tpo -c -o libterralib_la-TeTime.lo `test -f 'kernel/TeTime.cpp' || echo '$(srcdir)/'`kernel/TeTime.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeTime.Tpo $(DEPDIR)/libterralib_la-TeTime.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeTime.cpp' object='libterralib_la-TeTime.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeTime.lo `test -f 'kernel/TeTime.cpp' || echo '$(srcdir)/'`kernel/TeTime.cpp
-
-libterralib_la-TeTimeInterval.lo: kernel/TeTimeInterval.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeTimeInterval.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeTimeInterval.Tpo -c -o libterralib_la-TeTimeInterval.lo `test -f 'kernel/TeTimeInterval.cpp' || echo '$(srcdir)/'`kernel/TeTimeInterval.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeTimeInterval.Tpo $(DEPDIR)/libterralib_la-TeTimeInterval.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeTimeInterval.cpp' object='libterralib_la-TeTimeInterval.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeTimeInterval.lo `test -f 'kernel/TeTimeInterval.cpp' || echo '$(srcdir)/'`kernel/TeTimeInterval.cpp
-
-libterralib_la-TeTin.lo: kernel/TeTin.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeTin.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeTin.Tpo -c -o libterralib_la-TeTin.lo `test -f 'kernel/TeTin.cpp' || echo '$(srcdir)/'`kernel/TeTin.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeTin.Tpo $(DEPDIR)/libterralib_la-TeTin.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeTin.cpp' object='libterralib_la-TeTin.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeTin.lo `test -f 'kernel/TeTin.cpp' || echo '$(srcdir)/'`kernel/TeTin.cpp
-
-libterralib_la-TeUtils.lo: kernel/TeUtils.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeUtils.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeUtils.Tpo -c -o libterralib_la-TeUtils.lo `test -f 'kernel/TeUtils.cpp' || echo '$(srcdir)/'`kernel/TeUtils.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeUtils.Tpo $(DEPDIR)/libterralib_la-TeUtils.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeUtils.cpp' object='libterralib_la-TeUtils.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeUtils.lo `test -f 'kernel/TeUtils.cpp' || echo '$(srcdir)/'`kernel/TeUtils.cpp
-
-libterralib_la-TeVectorRemap.lo: kernel/TeVectorRemap.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeVectorRemap.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeVectorRemap.Tpo -c -o libterralib_la-TeVectorRemap.lo `test -f 'kernel/TeVectorRemap.cpp' || echo '$(srcdir)/'`kernel/TeVectorRemap.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeVectorRemap.Tpo $(DEPDIR)/libterralib_la-TeVectorRemap.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeVectorRemap.cpp' object='libterralib_la-TeVectorRemap.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeVectorRemap.lo `test -f 'kernel/TeVectorRemap.cpp' || echo '$(srcdir)/'`kernel/TeVectorRemap.cpp
-
-libterralib_la-TeViewNode.lo: kernel/TeViewNode.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeViewNode.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeViewNode.Tpo -c -o libterralib_la-TeViewNode.lo `test -f 'kernel/TeViewNode.cpp' || echo '$(srcdir)/'`kernel/TeViewNode.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeViewNode.Tpo $(DEPDIR)/libterralib_la-TeViewNode.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeViewNode.cpp' object='libterralib_la-TeViewNode.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeViewNode.lo `test -f 'kernel/TeViewNode.cpp' || echo '$(srcdir)/'`kernel/TeViewNode.cpp
-
-libterralib_la-TeVisual.lo: kernel/TeVisual.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-TeVisual.lo -MD -MP -MF $(DEPDIR)/libterralib_la-TeVisual.Tpo -c -o libterralib_la-TeVisual.lo `test -f 'kernel/TeVisual.cpp' || echo '$(srcdir)/'`kernel/TeVisual.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-TeVisual.Tpo $(DEPDIR)/libterralib_la-TeVisual.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/TeVisual.cpp' object='libterralib_la-TeVisual.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-TeVisual.lo `test -f 'kernel/TeVisual.cpp' || echo '$(srcdir)/'`kernel/TeVisual.cpp
-
-libterralib_la-lexTemporal.lo: kernel/lexTemporal.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-lexTemporal.lo -MD -MP -MF $(DEPDIR)/libterralib_la-lexTemporal.Tpo -c -o libterralib_la-lexTemporal.lo `test -f 'kernel/lexTemporal.cpp' || echo '$(srcdir)/'`kernel/lexTemporal.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-lexTemporal.Tpo $(DEPDIR)/libterralib_la-lexTemporal.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/lexTemporal.cpp' object='libterralib_la-lexTemporal.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-lexTemporal.lo `test -f 'kernel/lexTemporal.cpp' || echo '$(srcdir)/'`kernel/lexTemporal.cpp
-
-libterralib_la-yyTemporal.lo: kernel/yyTemporal.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -MT libterralib_la-yyTemporal.lo -MD -MP -MF $(DEPDIR)/libterralib_la-yyTemporal.Tpo -c -o libterralib_la-yyTemporal.lo `test -f 'kernel/yyTemporal.cpp' || echo '$(srcdir)/'`kernel/yyTemporal.cpp
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libterralib_la-yyTemporal.Tpo $(DEPDIR)/libterralib_la-yyTemporal.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='kernel/yyTemporal.cpp' object='libterralib_la-yyTemporal.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libterralib_la_CXXFLAGS) $(CXXFLAGS) -c -o libterralib_la-yyTemporal.lo `test -f 'kernel/yyTemporal.cpp' || echo '$(srcdir)/'`kernel/yyTemporal.cpp
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-#EXTRA_DIST		= jpeg/ijl.h jpeg/jpeg.h
-
-# 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/terralib/jpeg/ijl.h b/src/terralib/jpeg/ijl.h
new file mode 100644
index 0000000..26ff912
--- /dev/null
+++ b/src/terralib/jpeg/ijl.h
@@ -0,0 +1,1513 @@
+/*M*
+//
+//
+//               INTEL CORPORATION PROPRIETARY INFORMATION
+//  This software is supplied under the terms of a license agreement or
+//  nondisclosure agreement with Intel Corporation and may not be copied
+//  or disclosed except in accordance with the terms of that agreement.
+//        Copyright (c) 1998 Intel Corporation. All Rights Reserved.
+//
+//
+//  File:
+//    ijl.h
+//
+//  Purpose:
+//    IJL Common Header File
+//    This file contains:  definitions for data types, data
+//    structures, error codes, and function prototypes used
+//    in the Intel(R) JPEG Library (IJL).
+//
+//  Version:
+//    1.5
+//
+*M*/
+
+#ifndef __IJL_H__
+#define __IJL_H__
+
+
+#if defined( __cplusplus )
+extern "C" {
+#endif
+
+
+#ifndef IJL_ALL_WARNINGS
+
+#if _MSC_VER >= 1000
+
+/* nonstandard extension used : nameless struct/union          */
+#pragma warning(disable : 4201)
+/* nonstandard extension used : bit field types other than int */
+#pragma warning(disable : 4214)
+/* unreferenced inline function has been removed               */
+#pragma warning(disable : 4514)
+/* named type definition in parentheses                        */
+#pragma warning(disable : 4115)
+
+#endif /* _MSC_VER >= 1000 */
+
+#endif /* IJL_ALL_WARNINGS */
+
+
+#define IJL_STDCALL __stdcall
+
+
+/* align struct on 8 bytes boundary */
+#pragma pack (8)
+
+
+/* /////////////////////////////////////////////////////////////////////////
+// Macros/Constants */
+
+/* Size of file I/O buffer (4K). */
+#define JBUFSIZE    4096
+
+
+#define IJL_INT64  __int64
+#define IJL_UINT64 unsigned IJL_INT64
+
+
+#ifndef IJLAPI
+  #ifdef IJL_MSEXPORTS
+    #define IJLAPI(type,name,arg) \
+      extern __declspec(dllimport) type IJL_STDCALL name arg
+  #else
+    #define IJLAPI(type,name,arg) \
+      extern type IJL_STDCALL name arg
+  #endif
+#endif
+
+
+
+#define IJL_DIB_ALIGN (sizeof(int) - 1)
+
+#define IJL_DIB_UWIDTH(width,nchannels) \
+  ((width) * (nchannels))
+
+#define IJL_DIB_AWIDTH(width,nchannels) \
+  ( ((IJL_DIB_UWIDTH(width,nchannels) + IJL_DIB_ALIGN) & (~IJL_DIB_ALIGN)) )
+
+#define IJL_DIB_PAD_BYTES(width,nchannels) \
+  ( IJL_DIB_AWIDTH(width,nchannels) - IJL_DIB_UWIDTH(width,nchannels) )
+
+
+#define IJL_DIB_SCALE_SIZE(jpgsize,scale) \
+  ( ((jpgsize) + (scale) - 1) / (scale) )
+
+
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJLibVersion
+//
+// Purpose:     Stores library version info.
+//
+// Context:
+//
+// Example:
+//   major           - 1
+//   minor           - 0
+//   build           - 1
+//   Name            - "ijl10.dll"
+//   Version         - "1.0.1 Beta1"
+//   InternalVersion - "1.0.1.1"
+//   BuildDate       - "Sep 22 1998"
+//   CallConv        - "DLL"
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _IJLibVersion
+{
+  int         major;
+  int         minor;
+  int         build;
+  const char* Name;
+  const char* Version;
+  const char* InternalVersion;
+  const char* BuildDate;
+  const char* CallConv;
+
+} IJLibVersion;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJL_RECT
+//
+// Purpose:     Keep coordinates for rectangle region of image
+//
+// Context:     Used to specify roi
+//
+// Fields:
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _IJL_RECT
+{
+  long  left;
+  long  top;
+  long  right;
+  long  bottom;
+
+} IJL_RECT;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJL_HANDLE
+//
+// Purpose:     file handle
+//
+// Context:     used internally
+//
+// Fields:
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef void* IJL_HANDLE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJLIOTYPE
+//
+// Purpose:     Possible types of data read/write/other operations to be
+//              performed by the functions IJL_Read and IJL_Write.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+// Fields:
+//
+//  IJL_JFILE_XXXXXXX   Indicates JPEG data in a stdio file.
+//
+//  IJL_JBUFF_XXXXXXX   Indicates JPEG data in an addressable buffer.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _IJLIOTYPE
+{
+  IJL_SETUP                   = -1,
+
+
+  /* Read JPEG parameters (i.e., height, width, channels, sampling, etc.) */
+  /* from a JPEG bit stream. */
+  IJL_JFILE_READPARAMS        =  0,
+  IJL_JBUFF_READPARAMS        =  1,
+
+  /* Read a JPEG Interchange Format image. */
+  IJL_JFILE_READWHOLEIMAGE    =  2,
+  IJL_JBUFF_READWHOLEIMAGE    =  3,
+
+  /* Read JPEG tables from a JPEG Abbreviated Format bit stream. */
+  IJL_JFILE_READHEADER        =  4,
+  IJL_JBUFF_READHEADER        =  5,
+
+  /* Read image info from a JPEG Abbreviated Format bit stream. */
+  IJL_JFILE_READENTROPY       =  6,
+  IJL_JBUFF_READENTROPY       =  7,
+
+  /* Write an entire JFIF bit stream. */
+  IJL_JFILE_WRITEWHOLEIMAGE   =  8,
+  IJL_JBUFF_WRITEWHOLEIMAGE   =  9,
+
+  /* Write a JPEG Abbreviated Format bit stream. */
+  IJL_JFILE_WRITEHEADER       = 10,
+  IJL_JBUFF_WRITEHEADER       = 11,
+
+  /* Write image info to a JPEG Abbreviated Format bit stream. */
+  IJL_JFILE_WRITEENTROPY      = 12,
+  IJL_JBUFF_WRITEENTROPY      = 13,
+
+
+  /* Scaled Decoding Options: */
+
+  /* Reads a JPEG image scaled to 1/2 size. */
+  IJL_JFILE_READONEHALF       = 14,
+  IJL_JBUFF_READONEHALF       = 15,
+
+  /* Reads a JPEG image scaled to 1/4 size. */
+  IJL_JFILE_READONEQUARTER    = 16,
+  IJL_JBUFF_READONEQUARTER    = 17,
+
+  /* Reads a JPEG image scaled to 1/8 size. */
+  IJL_JFILE_READONEEIGHTH     = 18,
+  IJL_JBUFF_READONEEIGHTH     = 19,
+
+  /* Reads an embedded thumbnail from a JFIF bit stream. */
+  IJL_JFILE_READTHUMBNAIL     = 20,
+  IJL_JBUFF_READTHUMBNAIL     = 21
+
+} IJLIOTYPE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJL_COLOR
+//
+// Purpose:     Possible color space formats.
+//
+//              Note these formats do *not* necessarily denote
+//              the number of channels in the color space.
+//              There exists separate "channel" fields in the
+//              JPEG_CORE_PROPERTIES data structure specifically
+//              for indicating the number of channels in the
+//              JPEG and/or DIB color spaces.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _IJL_COLOR
+{
+  IJL_RGB         = 1,    /* Red-Green-Blue color space. */
+  IJL_BGR         = 2,    /* Reversed channel ordering from IJL_RGB. */
+  IJL_YCBCR       = 3,    /* Luminance-Chrominance color space as defined */
+                          /* by CCIR Recommendation 601. */
+  IJL_G           = 4,    /* Grayscale color space. */
+  IJL_RGBA_FPX    = 5,    /* FlashPix RGB 4 channel color space that */
+                          /* has pre-multiplied opacity. */
+  IJL_YCBCRA_FPX  = 6,    /* FlashPix YCbCr 4 channel color space that */
+                          /* has pre-multiplied opacity. */
+
+  IJL_OTHER       = 255   /* Some other color space not defined by the IJL. */
+                          /* (This means no color space conversion will */
+                          /* be done by the IJL.) */
+
+} IJL_COLOR;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJL_JPGSUBSAMPLING
+//
+// Purpose:     Possible subsampling formats used in the JPEG.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _IJL_JPGSUBSAMPLING
+{
+  IJL_NONE    = 0,    /* Corresponds to "No Subsampling". */
+                      /* Valid on a JPEG w/ any number of channels. */
+  IJL_411     = 1,    /* Valid on a JPEG w/ 3 channels. */
+  IJL_422     = 2,    /* Valid on a JPEG w/ 3 channels. */
+
+  IJL_4114    = 3,    /* Valid on a JPEG w/ 4 channels. */
+  IJL_4224    = 4     /* Valid on a JPEG w/ 4 channels. */
+
+} IJL_JPGSUBSAMPLING;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJL_DIBSUBSAMPLING
+//
+// Purpose:     Possible subsampling formats used in the DIB.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef IJL_JPGSUBSAMPLING IJL_DIBSUBSAMPLING;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        HUFFMAN_TABLE
+//
+// Purpose:     Stores Huffman table information in a fast-to-use format.
+//
+// Context:     Used by Huffman encoder/decoder to access Huffman table
+//              data.  Raw Huffman tables are formatted to fit this
+//              structure prior to use.
+//
+// Fields:
+//  huff_class  0 == DC Huffman or lossless table, 1 == AC table.
+//  ident       Huffman table identifier, 0-3 valid (Extended Baseline).
+//  huffelem    Huffman elements for codes <= 8 bits long;
+//              contains both zero run-length and symbol length in bits.
+//  huffval     Huffman values for codes 9-16 bits in length.
+//  mincode     Smallest Huffman code of length n.
+//  maxcode     Largest Huffman code of length n.
+//  valptr      Starting index into huffval[] for symbols of length k.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _HUFFMAN_TABLE
+{
+  int             huff_class;
+  int             ident;
+  unsigned int    huffelem[256];
+  unsigned short  huffval[256];
+  unsigned short  mincode[17];
+  short           maxcode[18];
+  unsigned short  valptr[17];
+
+} HUFFMAN_TABLE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        JPEGHuffTable
+//
+// Purpose:     Stores pointers to JPEG-binary spec compliant
+//              Huffman table information.
+//
+// Context:     Used by interface and table methods to specify encoder
+//              tables to generate and store JPEG images.
+//
+// Fields:
+//  bits        Points to number of codes of length i (<=16 supported).
+//  vals        Value associated with each Huffman code.
+//  hclass      0 == DC table, 1 == AC table.
+//  ident       Specifies the identifier for this table.
+//              0-3 for extended JPEG compliance.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _JPEGHuffTable
+{
+  unsigned char* bits;
+  unsigned char* vals;
+  unsigned char  hclass;
+  unsigned char  ident;
+
+} JPEGHuffTable;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        QUANT_TABLE
+//
+// Purpose:     Stores quantization table information in a
+//              fast-to-use format.
+//
+// Context:     Used by quantizer/dequantizer to store formatted
+//              quantization tables.
+//
+// Fields:
+//  precision   0 => elements contains 8-bit elements,
+//              1 => elements contains 16-bit elements.
+//  ident       Table identifier (0-3).
+//  elements    Pointer to 64 table elements + 16 extra elements to catch
+//              input data errors that may cause malfunction of the
+//              Huffman decoder.
+//  elarray     Space for elements (see above) plus 8 bytes to align
+//              to a quadword boundary.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _QUANT_TABLE
+{
+  int    precision;
+  int    ident;
+  short* elements;
+  short  elarray [84];
+
+} QUANT_TABLE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        JPEGQuantTable
+//
+// Purpose:     Stores pointers to JPEG binary spec compliant
+//              quantization table information.
+//
+// Context:     Used by interface and table methods to specify encoder
+//              tables to generate and store JPEG images.
+//
+// Fields:
+//  quantizer   Zig-zag order elements specifying quantization factors.
+//  ident       Specifies identifier for this table.
+//              0-3 valid for Extended Baseline JPEG compliance.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _JPEGQuantTable
+{
+  unsigned char* quantizer;
+  unsigned char  ident;
+
+} JPEGQuantTable;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        FRAME_COMPONENT
+//
+// Purpose:     One frame-component structure is allocated per component
+//              in a frame.
+//
+// Context:     Used by Huffman decoder to manage components.
+//
+// Fields:
+//  ident       Component identifier.  The tables use this ident to
+//              determine the correct table for each component.
+//  hsampling   Horizontal subsampling factor for this component,
+//              1-4 are legal.
+//  vsampling   Vertical subsampling factor for this component,
+//              1-4 are legal.
+//  quant_sel   Quantization table selector.  The quantization table
+//              used by this component is determined via this selector.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _FRAME_COMPONENT
+{
+  int ident;
+  int hsampling;
+  int vsampling;
+  int quant_sel;
+
+} FRAME_COMPONENT;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        FRAME
+//
+// Purpose:     Stores frame-specific data.
+//
+// Context:     One Frame structure per image.
+//
+// Fields:
+//  precision       Sample precision in bits.
+//  width           Width of the source image in pixels.
+//  height          Height of the source image in pixels.
+//  MCUheight       Height of a frame MCU.
+//  MCUwidth        Width of a frame MCU.
+//  max_hsampling   Max horiz sampling ratio of any component in the frame.
+//  max_vsampling   Max vert sampling ratio of any component in the frame.
+//  ncomps          Number of components/channels in the frame.
+//  horMCU          Number of horizontal MCUs in the frame.
+//  totalMCU        Total number of MCUs in the frame.
+//  comps           Array of 'ncomps' component descriptors.
+//  restart_interv  Indicates number of MCUs after which to restart the
+//                  entropy parameters.
+//  SeenAllDCScans  Used when decoding Multiscan images to determine if
+//                  all channels of an image have been decoded.
+//  SeenAllACScans  (See SeenAllDCScans)
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _FRAME
+{
+  int              precision;
+  int              width;
+  int              height;
+  int              MCUheight;
+  int              MCUwidth;
+  int              max_hsampling;
+  int              max_vsampling;
+  int              ncomps;
+  int              horMCU;
+  long             totalMCU;
+  FRAME_COMPONENT* comps;
+  int              restart_interv;
+  int              SeenAllDCScans;
+  int              SeenAllACScans;
+
+} FRAME;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        SCAN_COMPONENT
+//
+// Purpose:     One scan-component structure is allocated per component
+//              of each scan in a frame.
+//
+// Context:     Used by Huffman decoder to manage components within scans.
+//
+// Fields:
+//  comp        Component number, index to the comps member of FRAME.
+//  hsampling   Horizontal sampling factor.
+//  vsampling   Vertical sampling factor.
+//  dc_table    DC Huffman table pointer for this scan.
+//  ac_table    AC Huffman table pointer for this scan.
+//  quant_table Quantization table pointer for this scan.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _SCAN_COMPONENT
+{
+  int            comp;
+  int            hsampling;
+  int            vsampling;
+  HUFFMAN_TABLE* dc_table;
+  HUFFMAN_TABLE* ac_table;
+  QUANT_TABLE*   quant_table;
+
+} SCAN_COMPONENT;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        SCAN
+//
+// Purpose:     One SCAN structure is allocated per scan in a frame.
+//
+// Context:     Used by Huffman decoder to manage scans.
+//
+// Fields:
+//  ncomps          Number of image components in a scan, 1-4 legal.
+//  gray_scale      If TRUE, decode only the Y channel.
+//  start_spec      Start coefficient of spectral or predictor selector.
+//  end_spec        End coefficient of spectral selector.
+//  approx_high     High bit position in successive approximation
+//                  Progressive coding.
+//  approx_low      Low bit position in successive approximation
+//                  Progressive coding.
+//  restart_interv  Restart interval, 0 if disabled.
+//  curxMCU         Next horizontal MCU index to be processed after
+//                  an interrupted SCAN.
+//  curyMCU         Next vertical MCU index to be processed after
+//                  an interrupted SCAN.
+//  dc_diff         Array of DC predictor values for DPCM modes.
+//  comps           Array of ncomps SCAN_COMPONENT component identifiers.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _SCAN
+{
+  int             ncomps;
+  int             gray_scale;
+  int             start_spec;
+  int             end_spec;
+  int             approx_high;
+  int             approx_low;
+  unsigned int    restart_interv;
+  int             curxMCU;
+  int             curyMCU;
+  int             dc_diff[4];
+  SCAN_COMPONENT* comps;
+
+} SCAN;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        DCTTYPE
+//
+// Purpose:     Possible algorithms to be used to perform the discrete
+//              cosine transform (DCT).
+//
+// Fields:
+//  IJL_AAN     The AAN (Arai, Agui, and Nakajima) algorithm from
+//              Trans. IEICE, vol. E 71(11), 1095-1097, Nov. 1988.
+//  IJL_IPP     The modified K. R. Rao and P. Yip algorithm from
+//              Intel Performance Primitives Library
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _DCTTYPE
+{
+  IJL_AAN = 0,
+  IJL_IPP = 1
+
+} DCTTYPE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        UPSAMPLING_TYPE
+//
+// Purpose:            -  Possible algorithms to be used to perform upsampling
+//
+// Fields:
+//  IJL_BOX_FILTER      - the algorithm is simple replication of the input pixel
+//                        onto the corresponding output pixels (box filter);
+//  IJL_TRIANGLE_FILTER - 3/4 * nearer pixel + 1/4 * further pixel in each
+//                        dimension
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _UPSAMPLING_TYPE
+{
+  IJL_BOX_FILTER      = 0,
+  IJL_TRIANGLE_FILTER = 1
+
+} UPSAMPLING_TYPE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        SAMPLING_STATE
+//
+// Purpose:     Stores current conditions of sampling. Only for upsampling 
+//              with triangle filter is used now.
+//
+// Fields:
+//  top_row        - pointer to buffer with MCUs, that are located above than
+//                   current row of MCUs;
+//  cur_row        - pointer to buffer with current row of MCUs;
+//  bottom_row     - pointer to buffer with MCUs, that are located below than
+//                   current row of MCUs;
+//  last_row       - pointer to bottom boundary of last row of MCUs
+//  cur_row_number - number of row of MCUs, that is decoding;
+//  user_interrupt - field to store jprops->interrupt, because of we prohibit 
+//                   interrupts while top row of MCUs is upsampling.
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _SAMPLING_STATE
+{
+  short* top_row;
+  short* cur_row;
+  short* bottom_row;
+  short* last_row;
+  int    cur_row_number;
+
+} SAMPLING_STATE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        PROCESSOR_TYPE
+//
+// Purpose:     Possible types of processors.
+//              Note that the enums are defined in ascending order
+//              depending upon their various IA32 instruction support.
+//
+// Fields:
+//
+// IJL_OTHER_PROC
+//      Does not support the CPUID instruction and
+//      assumes no Pentium(R) processor instructions.
+//
+// IJL_PENTIUM_PROC
+//      Corresponds to an Intel(R) Pentium(R) processor
+//      (or a 100% compatible) that supports the
+//      Pentium(R) processor instructions.
+//
+// IJL_PENTIUM_PRO_PROC
+//      Corresponds to an Intel(R) Pentium(R) Pro processor
+//      (or a 100% compatible) that supports the
+//      Pentium(R) Pro processor instructions.
+//
+// IJL_PENTIUM_PROC_MMX_TECH
+//      Corresponds to an Intel(R) Pentium(R) processor
+//      with MMX(TM) technology (or a 100% compatible)
+//      that supports the MMX(TM) instructions.
+//
+// IJL_PENTIUM_II_PROC
+//      Corresponds to an Intel(R) Pentium(R) II processor
+//      (or a 100% compatible) that supports both the
+//      Pentium(R) Pro processor instructions and the
+//      MMX(TM) instructions.
+//
+// IJL_PENTIUM_III_PROC
+//      Corresponds to an Intel(R) Pentium(R) III processor
+//
+// IJL_NEW_PROCESSOR
+//      Correponds to new processor
+//
+//  Any additional processor types that support a superset
+//  of both the Pentium(R) Pro processor instructions and the
+//  MMX(TM) instructions should be given an enum value greater
+//  than IJL_PENTIUM_III_PROC.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _PROCESSOR_TYPE
+{
+  IJL_OTHER_PROC            = 0,
+  IJL_PENTIUM_PROC          = 1,
+  IJL_PENTIUM_PRO_PROC      = 2,
+  IJL_PENTIUM_PROC_MMX_TECH = 3,
+  IJL_PENTIUM_II_PROC       = 4,
+  IJL_PENTIUM_III_PROC      = 5,
+  IJL_PENTIUM_4_PROC        = 6,
+  IJL_NEW_PROCESSOR         = 7
+
+} PROCESSOR_TYPE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        RAW_DATA_TYPES_STATE
+//
+// Purpose:     Stores data types: raw dct coefficients or raw sampled data.
+//              Pointer to structure in JPEG_PROPERTIES is NULL, if any raw
+//              data isn't request (DIBBytes!=NULL).
+//
+// Fields:
+//  short* raw_ptrs[4] - pointers to buffers with raw data; one pointer 
+//                       corresponds one JPG component;
+//  data_type          - 0 - raw dct coefficients, 1 - raw sampled data.
+////////////////////////////////////////////////////////////////////////////
+*D*/
+typedef struct _RAW_DATA_TYPES_STATE
+{
+  int data_type;
+  unsigned short* raw_ptrs[4];
+
+} RAW_DATA_TYPES_STATE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        ENTROPYSTRUCT
+//
+// Purpose:     Stores the decoder state information necessary to "jump"
+//              to a particular MCU row in a compressed entropy stream.
+//
+// Context:     Used to persist the decoder state within Decode_Scan when
+//              decoding using ROIs.
+//
+// Fields:
+//      offset              Offset (in bytes) into the entropy stream
+//                          from the beginning.
+//      dcval1              DC val at the beginning of the MCU row
+//                          for component 1.
+//      dcval2              DC val at the beginning of the MCU row
+//                          for component 2.
+//      dcval3              DC val at the beginning of the MCU row
+//                          for component 3.
+//      dcval4              DC val at the beginning of the MCU row
+//                          for component 4.
+//      bit_buffer_64       64-bit Huffman bit buffer.  Stores current
+//                          bit buffer at the start of a MCU row.
+//                          Also used as a 32-bit buffer on 32-bit
+//                          architectures.
+//      bitbuf_bits_valid   Number of valid bits in the above bit buffer.
+//      unread_marker       Have any markers been decoded but not
+//                          processed at the beginning of a MCU row?
+//                          This entry holds the unprocessed marker, or
+//                          0 if none.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _ENTROPYSTRUCT
+{
+  unsigned int   offset;
+  int            dcval1;
+  int            dcval2;
+  int            dcval3;
+  int            dcval4;
+  IJL_UINT64     bit_buffer_64;
+  int            bitbuf_bits_valid;
+  unsigned char  unread_marker;
+
+} ENTROPYSTRUCT;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        STATE
+//
+// Purpose:     Stores the active state of the IJL.
+//
+// Context:     Used by all low-level routines to store pseudo-global or
+//              state variables.
+//
+// Fields:
+//      bit_buffer_64           64-bit bitbuffer utilized by Huffman
+//                              encoder/decoder algorithms utilizing routines
+//                              designed for MMX(TM) technology.
+//      bit_buffer_32           32-bit bitbuffer for all other Huffman
+//                              encoder/decoder algorithms.
+//      bitbuf_bits_valid       Number of bits in the above two fields that
+//                              are valid.
+//
+//      cur_entropy_ptr         Current position (absolute address) in
+//                              the entropy buffer.
+//      start_entropy_ptr       Starting position (absolute address) of
+//                              the entropy buffer.
+//      end_entropy_ptr         Ending position (absolute address) of
+//                              the entropy buffer.
+//      entropy_bytes_processed Number of bytes actually processed
+//                              (passed over) in the entropy buffer.
+//      entropy_buf_maxsize     Max size of the entropy buffer.
+//      entropy_bytes_left      Number of bytes left in the entropy buffer.
+//      Prog_EndOfBlock_Run     Progressive block run counter.
+//
+//      DIB_ptr                 Temporary offset into the input/output DIB.
+//
+//      unread_marker           If a marker has been read but not processed,
+//                              stick it in this field.
+//      processor_type          (0, 1, or 2) == current processor does not
+//                              support MMX(TM) instructions.
+//                              (3 or 4) == current processor does
+//                              support MMX(TM) instructions.
+//      cur_scan_comp           On which component of the scan are we working?
+//      file                    Process file handle, or
+//                              0x00000000 if no file is defined.
+//      JPGBuffer               Entropy buffer (~4K).
+//
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _STATE
+{
+  /* Bit buffer. */
+  IJL_UINT64     bit_buffer_64;
+  unsigned int   bit_buffer_32;
+  int            bitbuf_bits_valid;
+
+  /* Entropy. */
+  unsigned char* cur_entropy_ptr;
+  unsigned char* start_entropy_ptr;
+  unsigned char* end_entropy_ptr;
+  int            entropy_bytes_processed;
+  int            entropy_buf_maxsize;
+  int            entropy_bytes_left;
+  int            Prog_EndOfBlock_Run;
+
+  /* Input or output DIB. */
+  unsigned char* DIB_ptr;
+
+  /* Control. */
+  unsigned char  unread_marker;
+  PROCESSOR_TYPE processor_type;
+  int            cur_scan_comp;
+  IJL_HANDLE     file;
+  unsigned char  JPGBuffer [JBUFSIZE];
+
+} STATE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        FAST_MCU_PROCESSING_TYPE
+//
+// Purpose:     Advanced Control Option.  Do NOT modify.
+//              WARNING:  Used for internal reference only.
+//
+// Fields:
+//
+//   IJL_(sampling)_(JPEG color space)_(sampling)_(DIB color space)
+//      Decode is read left to right w/ upsampling.
+//      Encode is read right to left w/ subsampling.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _FAST_MCU_PROCESSING_TYPE
+{
+  IJL_NO_CC_OR_US                   = 0,
+
+  IJL_111_YCBCR_111_RGB             = 1,
+  IJL_111_YCBCR_111_BGR             = 2,
+
+  IJL_411_YCBCR_111_RGB             = 3,
+  IJL_411_YCBCR_111_BGR             = 4,
+
+  IJL_422_YCBCR_111_RGB             = 5,
+  IJL_422_YCBCR_111_BGR             = 6,
+
+  IJL_111_YCBCR_1111_RGBA_FPX       = 7,
+  IJL_411_YCBCR_1111_RGBA_FPX       = 8,
+  IJL_422_YCBCR_1111_RGBA_FPX       = 9,
+
+  IJL_1111_YCBCRA_FPX_1111_RGBA_FPX = 10,
+  IJL_4114_YCBCRA_FPX_1111_RGBA_FPX = 11,
+  IJL_4224_YCBCRA_FPX_1111_RGBA_FPX = 12,
+
+  IJL_111_RGB_1111_RGBA_FPX         = 13,
+
+  IJL_1111_RGBA_FPX_1111_RGBA_FPX   = 14,
+
+  IJL_111_OTHER_111_OTHER           = 15,
+  IJL_411_OTHER_111_OTHER           = 16,
+  IJL_422_OTHER_111_OTHER           = 17,
+
+  IJL_YCBYCR_YCBCR                  = 18,
+
+  IJL_YCBCR_YCBYCR                  = 19   // decoding to YCbCr 422 format
+
+} FAST_MCU_PROCESSING_TYPE;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        JPEG_PROPERTIES
+//
+// Purpose:     Stores low-level and control information.  It is used by
+//              both the encoder and decoder.  An advanced external user
+//              may access this structure to expand the interface
+//              capability.
+//
+//              See the Developer's Guide for an expanded description
+//              of this structure and its use.
+//
+// Context:     Used by all interface methods and most IJL routines.
+//
+// Fields:
+//
+//  iotype              IN:     Specifies type of data operation
+//                              (read/write/other) to be
+//                              performed by IJL_Read or IJL_Write.
+//  roi                 IN:     Rectangle-Of-Interest to read from, or
+//                              write to, in pixels.
+//  dcttype             IN:     DCT alogrithm to be used.
+//  fast_processing     OUT:    Supported fast pre/post-processing path.
+//                              This is set by the IJL.
+//  interrupt           IN:     Signals an interrupt has been requested.
+//
+//  DIBBytes            IN:     Pointer to buffer of uncompressed data.
+//  DIBWidth            IN:     Width of uncompressed data.
+//  DIBHeight           IN:     Height of uncompressed data.
+//  DIBPadBytes         IN:     Padding (in bytes) at end of each
+//                              row in the uncompressed data.
+//  DIBChannels         IN:     Number of components in the
+//                              uncompressed data.
+//  DIBColor            IN:     Color space of uncompressed data.
+//  DIBSubsampling      IN:     Required to be IJL_NONE or IJL_422.
+//  DIBLineBytes        OUT:    Number of bytes in an output DIB line
+//                              including padding.
+//
+//  JPGFile             IN:     Pointer to file based JPEG.
+//  JPGBytes            IN:     Pointer to buffer based JPEG.
+//  JPGSizeBytes        IN:     Max buffer size. Used with JPGBytes.
+//                      OUT:    Number of compressed bytes written.
+//  JPGWidth            IN:     Width of JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGHeight           IN:     Height of JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGChannels         IN:     Number of components in JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGColor            IN:     Color space of JPEG image.
+//  JPGSubsampling      IN:     Subsampling of JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGThumbWidth       OUT:    JFIF embedded thumbnail width [0-255].
+//  JPGThumbHeight      OUT:    JFIF embedded thumbnail height [0-255].
+//
+//  cconversion_reqd    OUT:    If color conversion done on decode, TRUE.
+//  upsampling_reqd     OUT:    If upsampling done on decode, TRUE.
+//  jquality            IN:     [0-100] where highest quality is 100.
+//  jinterleaveType     IN/OUT: 0 => MCU interleaved file, and
+//                              1 => 1 scan per component.
+//  numxMCUs            OUT:    Number of MCUs in the x direction.
+//  numyMCUs            OUT:    Number of MCUs in the y direction.
+//
+//  nqtables            IN/OUT: Number of quantization tables.
+//  maxquantindex       IN/OUT: Maximum index of quantization tables.
+//  nhuffActables       IN/OUT: Number of AC Huffman tables.
+//  nhuffDctables       IN/OUT: Number of DC Huffman tables.
+//  maxhuffindex        IN/OUT: Maximum index of Huffman tables.
+//  jFmtQuant           IN/OUT: Formatted quantization table info.
+//  jFmtAcHuffman       IN/OUT: Formatted AC Huffman table info.
+//  jFmtDcHuffman       IN/OUT: Formatted DC Huffman table info.
+//
+//  jEncFmtQuant        IN/OUT: Pointer to one of the above, or
+//                              to externally persisted table.
+//  jEncFmtAcHuffman    IN/OUT: Pointer to one of the above, or
+//                              to externally persisted table.
+//  jEncFmtDcHuffman    IN/OUT: Pointer to one of the above, or
+//                              to externally persisted table.
+//
+//  use_default_qtables IN:     Set to default quantization tables.
+//                              Clear to supply your own.
+//  use_default_htables IN:     Set to default Huffman tables.
+//                              Clear to supply your own.
+//  rawquanttables      IN:     Up to 4 sets of quantization tables.
+//  rawhufftables       IN:     Alternating pairs (DC/AC) of up to 4
+//                              sets of raw Huffman tables.
+//  HuffIdentifierAC    IN:     Indicates what channel the user-
+//                              supplied Huffman AC tables apply to.
+//  HuffIdentifierDC    IN:     Indicates what channel the user-
+//                              supplied Huffman DC tables apply to.
+//
+//  jframe              OUT:    Structure with frame-specific info.
+//  needframe           OUT:    TRUE when a frame has been detected.
+//
+//  jscan               Persistence for current scan pointer when
+//                      interrupted.
+//
+//  state               OUT:    Contains info on the state of the IJL.
+//  SawAdobeMarker      OUT:    Decoder saw an APP14 marker somewhere.
+//  AdobeXform          OUT:    If SawAdobeMarker TRUE, this indicates
+//                              the JPEG color space given by that marker.
+//
+//  rowoffsets          Persistence for the decoder MCU row origins
+//                      when decoding by ROI.  Offsets (in bytes
+//                      from the beginning of the entropy data)
+//                      to the start of each of the decoded rows.
+//                      Fill the offsets with -1 if they have not
+//                      been initalized and NULL could be the
+//                      offset to the first row.
+//
+//  MCUBuf              OUT:    Quadword aligned internal buffer.
+//                              Big enough for the largest MCU
+//                              (10 blocks) with extra room for
+//                              additional operations.
+//  tMCUBuf             OUT:    Version of above, without alignment.
+//
+//  processor_type      OUT:    Determines type of processor found
+//                              during initialization.
+//
+//  raw_coefs           IN:     Place to hold pointers to raw data buffers or
+//                              raw DCT coefficients buffers
+//
+//  progressive_found   OUT:    1 when progressive image detected.
+//  coef_buffer         IN:     Pointer to a larger buffer containing
+//                              frequency coefficients when they
+//                              cannot be decoded dynamically
+//                              (i.e., as in progressive decoding).
+//
+//  upsampling_type     IN:     Type of sampling:
+//                              IJL_BOX_FILTER or IJL_TRIANGLE_FILTER.
+//  SAMPLING_STATE*    OUT:     pointer to structure, describing current
+//                              condition of upsampling
+//
+//  AdobeVersion       OUT      version field, if Adobe APP14 marker detected
+//  AdobeFlags0        OUT      flags0 field, if Adobe APP14 marker detected
+//  AdobeFlags1        OUT      flags1 field, if Adobe APP14 marker detected
+//
+//  jfif_app0_detected OUT:     1 - if JFIF APP0 marker detected,  
+//                              0 - if not
+//  jfif_app0_version  IN/OUT   The JFIF file version
+//  jfif_app0_units    IN/OUT   units for the X and Y densities
+//                              0 - no units, X and Y specify
+//                                  the pixel aspect ratio
+//                              1 - X and Y are dots per inch
+//                              2 - X and Y are dots per cm
+//  jfif_app0_Xdensity IN/OUT   horizontal pixel density
+//  jfif_app0_Ydensity IN/OUT   vertical pixel density
+//
+//  jpeg_comment       IN       pointer to JPEG comments
+//  jpeg_comment_size  IN/OUT   size of JPEG comments, in bytes
+//
+//  raw_coefs          IN/OUT   if !NULL, then pointer to vector of pointers
+//                              (size = JPGChannels) to buffers for raw (short)
+//                              dct coefficients. 1 pointer corresponds to one
+//                              component;
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _JPEG_PROPERTIES
+{
+  /* Compression/Decompression control. */
+  IJLIOTYPE                iotype;               /* default = IJL_SETUP */
+  IJL_RECT                 roi;                  /* default = 0 */
+  DCTTYPE                  dcttype;              /* default = IJL_AAN */
+  FAST_MCU_PROCESSING_TYPE fast_processing;      /* default = IJL_NO_CC_OR_US */
+  int                      interrupt;            /* default = FALSE */
+
+  /* DIB specific I/O data specifiers. */
+  unsigned char*           DIBBytes;             /* default = NULL */
+  int                      DIBWidth;             /* default = 0 */
+  int                      DIBHeight;            /* default = 0 */
+  int                      DIBPadBytes;          /* default = 0 */
+  int                      DIBChannels;          /* default = 3 */
+  IJL_COLOR                DIBColor;             /* default = IJL_BGR */
+  IJL_DIBSUBSAMPLING       DIBSubsampling;       /* default = IJL_NONE */
+  int                      DIBLineBytes;         /* default = 0 */
+
+  /* JPEG specific I/O data specifiers. */
+  const char*              JPGFile;              /* default = NULL */
+  unsigned char*           JPGBytes;             /* default = NULL */
+  int                      JPGSizeBytes;         /* default = 0 */
+  int                      JPGWidth;             /* default = 0 */
+  int                      JPGHeight;            /* default = 0 */
+  int                      JPGChannels;          /* default = 3 */
+  IJL_COLOR                JPGColor;             /* default = IJL_YCBCR */
+  IJL_JPGSUBSAMPLING       JPGSubsampling;       /* default = IJL_411 */
+  int                      JPGThumbWidth;        /* default = 0 */
+  int                      JPGThumbHeight;       /* default = 0 */
+
+  /* JPEG conversion properties. */
+  int                      cconversion_reqd;     /* default = TRUE */
+  int                      upsampling_reqd;      /* default = TRUE */
+  int                      jquality;             /* default = 75 */
+  int                      jinterleaveType;      /* default = 0 */
+  int                      numxMCUs;             /* default = 0 */
+  int                      numyMCUs;             /* default = 0 */
+
+  /* Tables. */
+  int                      nqtables;
+  int                      maxquantindex;
+  int                      nhuffActables;
+  int                      nhuffDctables;
+  int                      maxhuffindex;
+
+  QUANT_TABLE              jFmtQuant[4];
+  HUFFMAN_TABLE            jFmtAcHuffman[4];
+  HUFFMAN_TABLE            jFmtDcHuffman[4];
+
+  short*                   jEncFmtQuant[4];
+  HUFFMAN_TABLE*           jEncFmtAcHuffman[4];
+  HUFFMAN_TABLE*           jEncFmtDcHuffman[4];
+
+  /* Allow user-defined tables. */
+  int                      use_external_qtables;
+  int                      use_external_htables;
+
+  JPEGQuantTable           rawquanttables[4];
+  JPEGHuffTable            rawhufftables[8];
+  char                     HuffIdentifierAC[4];
+  char                     HuffIdentifierDC[4];
+
+  /* Frame specific members. */
+  FRAME                    jframe;
+  int                      needframe;
+
+  /* SCAN persistent members. */
+  SCAN*                    jscan;
+
+  /* State members. */
+  STATE                    state;
+  int                      SawAdobeMarker;
+  int                      AdobeXform;
+
+  /* ROI decoder members. */
+  ENTROPYSTRUCT*           rowoffsets;
+
+  /* Intermediate buffers. */
+  unsigned char*           MCUBuf;
+  unsigned char            tMCUBuf[720*2];
+
+  /* Processor detected. */
+  PROCESSOR_TYPE           processor_type;
+
+  RAW_DATA_TYPES_STATE*    raw_coefs;
+
+  /* Progressive mode members. */
+  int                      progressive_found;
+  short*                   coef_buffer;
+
+  /* Upsampling mode members. */
+  UPSAMPLING_TYPE          upsampling_type;
+  SAMPLING_STATE*          sampling_state_ptr;
+
+  /* Adobe APP14 segment variables */
+  unsigned short           AdobeVersion;         /* default = 100 */
+  unsigned short           AdobeFlags0;          /* default = 0 */
+  unsigned short           AdobeFlags1;          /* default = 0 */
+
+  /* JFIF APP0 segment variables */
+  int                      jfif_app0_detected;
+  unsigned short           jfif_app0_version;    /* default = 0x0101 */
+  unsigned char            jfif_app0_units;      /* default = 0 - pixel */
+  unsigned short           jfif_app0_Xdensity;   /* default = 1 */
+  unsigned short           jfif_app0_Ydensity;   /* default = 1 */
+
+  /* comments related fields */
+  char*                    jpeg_comment;         /* default = NULL */
+  unsigned short           jpeg_comment_size;    /* default = 0 */
+
+} JPEG_PROPERTIES;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        JPEG_CORE_PROPERTIES
+//
+// Purpose:     This is the primary data structure between the IJL and
+//              the external user.  It stores JPEG state information
+//              and controls the IJL.  It is user-modifiable.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+// Context:     Used by all low-level IJL routines to store
+//              pseudo-global information.
+//
+// Fields:
+//
+//  UseJPEGPROPERTIES   Set this flag != 0 if you wish to override
+//                      the JPEG_CORE_PROPERTIES "IN" parameters with
+//                      the JPEG_PROPERTIES parameters.
+//
+//  DIBBytes            IN:     Pointer to buffer of uncompressed data.
+//  DIBWidth            IN:     Width of uncompressed data.
+//  DIBHeight           IN:     Height of uncompressed data.
+//  DIBPadBytes         IN:     Padding (in bytes) at end of each
+//                              row in the uncompressed data.
+//  DIBChannels         IN:     Number of components in the
+//                              uncompressed data.
+//  DIBColor            IN:     Color space of uncompressed data.
+//  DIBSubsampling      IN:     Required to be IJL_NONE or IJL_422.
+//
+//  JPGFile             IN:     Pointer to file based JPEG.
+//  JPGBytes            IN:     Pointer to buffer based JPEG.
+//  JPGSizeBytes        IN:     Max buffer size. Used with JPGBytes.
+//                      OUT:    Number of compressed bytes written.
+//  JPGWidth            IN:     Width of JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGHeight           IN:     Height of JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGChannels         IN:     Number of components in JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGColor            IN:     Color space of JPEG image.
+//  JPGSubsampling      IN:     Subsampling of JPEG image.
+//                      OUT:    After reading (except READHEADER).
+//  JPGThumbWidth       OUT:    JFIF embedded thumbnail width [0-255].
+//  JPGThumbHeight      OUT:    JFIF embedded thumbnail height [0-255].
+//
+//  cconversion_reqd    OUT:    If color conversion done on decode, TRUE.
+//  upsampling_reqd     OUT:    If upsampling done on decode, TRUE.
+//  jquality            IN:     [0-100] where highest quality is 100.
+//
+//  jprops              "Low-Level" IJL data structure.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef struct _JPEG_CORE_PROPERTIES
+{
+  int                UseJPEGPROPERTIES;         /* default = 0 */
+
+  /* DIB specific I/O data specifiers. */
+  unsigned char*     DIBBytes;                  /* default = NULL */
+  int                DIBWidth;                  /* default = 0 */
+  int                DIBHeight;                 /* default = 0 */
+  int                DIBPadBytes;               /* default = 0 */
+  int                DIBChannels;               /* default = 3 */
+  IJL_COLOR          DIBColor;                  /* default = IJL_BGR */
+  IJL_DIBSUBSAMPLING DIBSubsampling;            /* default = IJL_NONE */
+
+  /* JPEG specific I/O data specifiers. */
+  const char*        JPGFile;                   /* default = NULL */
+  unsigned char*     JPGBytes;                  /* default = NULL */
+  int                JPGSizeBytes;              /* default = 0 */
+  int                JPGWidth;                  /* default = 0 */
+  int                JPGHeight;                 /* default = 0 */
+  int                JPGChannels;               /* default = 3 */
+  IJL_COLOR          JPGColor;                  /* default = IJL_YCBCR */
+  IJL_JPGSUBSAMPLING JPGSubsampling;            /* default = IJL_411 */
+  int                JPGThumbWidth;             /* default = 0 */
+  int                JPGThumbHeight;            /* default = 0 */
+
+  /* JPEG conversion properties. */
+  int                cconversion_reqd;          /* default = TRUE */
+  int                upsampling_reqd;           /* default = TRUE */
+  int                jquality;                  /* default = 75 */
+
+  /* Low-level properties. */
+  JPEG_PROPERTIES    jprops;
+
+} JPEG_CORE_PROPERTIES;
+
+
+/*D*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJLERR
+//
+// Purpose:     Listing of possible "error" codes returned by the IJL.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+// Context:     Used for error checking.
+//
+////////////////////////////////////////////////////////////////////////////
+*D*/
+
+typedef enum _IJLERR
+{
+  /* The following "error" values indicate an "OK" condition. */
+  IJL_OK                          = 0,
+  IJL_INTERRUPT_OK                = 1,
+  IJL_ROI_OK                      = 2,
+
+  /* The following "error" values indicate an error has occurred. */
+  IJL_EXCEPTION_DETECTED          =  -1,
+  IJL_INVALID_ENCODER             =  -2,
+  IJL_UNSUPPORTED_SUBSAMPLING     =  -3,
+  IJL_UNSUPPORTED_BYTES_PER_PIXEL =  -4,
+  IJL_MEMORY_ERROR                =  -5,
+  IJL_BAD_HUFFMAN_TABLE           =  -6,
+  IJL_BAD_QUANT_TABLE             =  -7,
+  IJL_INVALID_JPEG_PROPERTIES     =  -8,
+  IJL_ERR_FILECLOSE               =  -9,
+  IJL_INVALID_FILENAME            = -10,
+  IJL_ERROR_EOF                   = -11,
+  IJL_PROG_NOT_SUPPORTED          = -12,
+  IJL_ERR_NOT_JPEG                = -13,
+  IJL_ERR_COMP                    = -14,
+  IJL_ERR_SOF                     = -15,
+  IJL_ERR_DNL                     = -16,
+  IJL_ERR_NO_HUF                  = -17,
+  IJL_ERR_NO_QUAN                 = -18,
+  IJL_ERR_NO_FRAME                = -19,
+  IJL_ERR_MULT_FRAME              = -20,
+  IJL_ERR_DATA                    = -21,
+  IJL_ERR_NO_IMAGE                = -22,
+  IJL_FILE_ERROR                  = -23,
+  IJL_INTERNAL_ERROR              = -24,
+  IJL_BAD_RST_MARKER              = -25,
+  IJL_THUMBNAIL_DIB_TOO_SMALL     = -26,
+  IJL_THUMBNAIL_DIB_WRONG_COLOR   = -27,
+  IJL_BUFFER_TOO_SMALL            = -28,
+  IJL_UNSUPPORTED_FRAME           = -29,
+  IJL_ERR_COM_BUFFER              = -30,
+  IJL_RESERVED                    = -99
+
+} IJLERR;
+
+
+
+
+/* /////////////////////////////////////////////////////////////////////////
+//                     Function Prototypes (API Calls)                    //
+///////////////////////////////////////////////////////////////////////// */
+
+
+/*F*
+////////////////////////////////////////////////////////////////////////////
+// Name:        ijlInit
+//
+// Purpose:     Used to initalize the IJL.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+// Context:     Always call this before anything else.
+//              Also, only call this with a new jcprops structure, or
+//              after calling IJL_Free.  Otherwise, dynamically
+//              allocated memory may be leaked.
+//
+// Returns:     Any IJLERR value.  IJL_OK indicates success.
+//
+// Parameters:
+//  jcprops     Pointer to an externally allocated
+//              JPEG_CORE_PROPERTIES structure.
+//
+////////////////////////////////////////////////////////////////////////////
+*F*/
+
+IJLAPI(IJLERR, ijlInit, ( JPEG_CORE_PROPERTIES* jcprops ));
+
+
+/*F*
+////////////////////////////////////////////////////////////////////////////
+// Name:        ijlFree
+//
+// Purpose:     Used to properly close down the IJL.
+//
+//              See the Developer's Guide for details on appropriate usage.
+//
+// Context:     Always call this when done using the IJL to perform
+//              clean-up of dynamically allocated memory.
+//              Note, IJL_Init will have to be called to use the
+//              IJL again.
+//
+// Returns:     Any IJLERR value.  IJL_OK indicates success.
+//
+// Parameters:
+//  jcprops     Pointer to an externally allocated
+//              JPEG_CORE_PROPERTIES structure.
+//
+////////////////////////////////////////////////////////////////////////////
+*F*/
+
+IJLAPI(IJLERR, ijlFree, ( JPEG_CORE_PROPERTIES* jcprops ));
+
+
+/*F*
+////////////////////////////////////////////////////////////////////////////
+// Name:        IJL_Read
+//
+// Purpose:     Used to read JPEG data (entropy, or header, or both) into
+//              a user-supplied buffer (to hold the image data) and/or
+//              into the JPEG_CORE_PROPERTIES structure (to hold the
+//              header info).
+//
+// Context:     See the Developer's Guide for a detailed description
+//              on the use of this function.  The jcprops main data
+//              members are checked for consistency.
+//
+// Returns:     Any IJLERR value.  IJL_OK indicates success.
+//
+// Parameters:
+//  jcprops     Pointer to an externally allocated
+//              JPEG_CORE_PROPERTIES structure.
+//  iotype      Specifies what type of read operation to perform.
+//
+////////////////////////////////////////////////////////////////////////////
+*F*/
+
+IJLAPI(IJLERR, ijlRead, ( JPEG_CORE_PROPERTIES* jcprops, IJLIOTYPE iotype ));
+
+
+/*F*
+////////////////////////////////////////////////////////////////////////////
+// Name:        ijlWrite
+//
+// Purpose:     Used to write JPEG data (entropy, or header, or both) into
+//              a user-supplied buffer (to hold the image data) and/or
+//              into the JPEG_CORE_PROPERTIES structure (to hold the
+//              header info).
+//
+// Context:     See the Developer's Guide for a detailed description
+//              on the use of this function.  The jcprops main data
+//              members are checked for consistency.
+//
+// Returns:     Any IJLERR value.  IJL_OK indicates success.
+//
+// Parameters:
+//  jcprops     Pointer to an externally allocated
+//              JPEG_CORE_PROPERTIES structure.
+//  iotype      Specifies what type of write operation to perform.
+//
+////////////////////////////////////////////////////////////////////////////
+*F*/
+
+IJLAPI(IJLERR, ijlWrite, ( JPEG_CORE_PROPERTIES* jcprops, IJLIOTYPE iotype ));
+
+
+/*F*
+////////////////////////////////////////////////////////////////////////////
+// Name:        ijlGetLibVersion
+//
+// Purpose:     To identify the version number of the IJL.
+//
+// Context:     Call to get the IJL version number.
+//
+// Returns:     pointer to IJLibVersion struct
+//
+// Parameters:  none
+//
+////////////////////////////////////////////////////////////////////////////
+*F*/
+
+IJLAPI(const IJLibVersion*, ijlGetLibVersion, (void));
+
+
+/*F*
+////////////////////////////////////////////////////////////////////////////
+// Name:        ijlErrorStr
+//
+// Purpose:     Gets the string to describe error code.
+//
+// Context:     Is called to get descriptive string on arbitrary IJLERR code.
+//
+// Returns:     pointer to string
+//
+// Parameters:  IJLERR - IJL error code
+//
+////////////////////////////////////////////////////////////////////////////
+*F*/
+
+IJLAPI(const char*, ijlErrorStr, (IJLERR code));
+
+
+
+
+#if defined( __cplusplus )
+}
+#endif
+
+#endif  /* __IJL_H__ */
diff --git a/src/terralib/jpeg/jpeg.h b/src/terralib/jpeg/jpeg.h
new file mode 100644
index 0000000..848e19b
--- /dev/null
+++ b/src/terralib/jpeg/jpeg.h
@@ -0,0 +1,95 @@
+/*Intel Corporation has released a number of extremely useful libraries and tools as part
+of their performance suite.  These tools are designed to assist developers in taking
+advantage of their advanced processors.
+
+One excellent tool is the Intel Jpeg Library which provides a single small DLL which
+will rapidly compress and decompress Jpeg images, a common graphics file format.
+
+The following code snippet provides a static wrapper class for this library.  The 
+only thing you need besides this code snippet is IJL.H, IJL.LIB, IJL.DLL which can
+be found at the following URL.
+
+
+http://www-cs.intel.com/support/performancetools/libraries/ijl/index.htm
+
+When you see the quantity of code required just to compress or decompress a JPEG image
+using IJL I think you will see the value of the following simplified wrapper layer.
+
+John W. Ratcliff
+jratcliff at verant.com
+*/
+//*** The JPEG.H wrapper layer header file.
+
+#ifndef JPEG_H
+#define JPEG_H
+
+//############################################################################
+//##                                                                        ##
+//##  JPEG.H                                                                ##
+//##                                                                        ##
+//##  Wrapper class to compress or decompress a jpeg from a block of memory ##
+//##  using the Intel Jpeg Library.                                         ##
+//##  OpenSourced 2/4/2000 by John W. Ratcliff                              ##
+//##                                                                        ##
+//##  No warranty expressed or implied.  Released as part of the triangle   ##
+//##  throughput testbed project.                                           ##
+//############################################################################
+//##                                                                        ##
+//##  Contact John W. Ratcliff at jratcliff at verant.com                      ##
+//############################################################################
+
+class Jpeg
+{
+public:
+
+  static bool  ReadFileParams(int &width,
+						int &height,
+						int &nchannels,
+						char *name);
+
+  static bool  ReadFile(int width,
+						int height,
+						int nchannels,
+						char *name,
+						unsigned char *pixbuff);
+
+  static void *ReadImage(int &width,   // width of the image loaded.
+                         int &height,  // height of the image loaded.
+                         int &bpp,     // BYTES (not bits) PER PIXEL.
+                         const void *buffer, // memory address containing jpeg compressed data.
+                         int sizebytes); // size of jpeg compressed data.
+
+
+  static void * Compress(const void *buffer, // address of image in memory
+                         int width, // width of image in pixels
+                         int height, // height of image in pixels.
+                         int bpp, // *BYTES* per pixel of image 1 or 3
+                         int &len, // returns length of compressed data
+                         int quality=75); // image quality as a percentage
+
+  static bool  WriteFile(const void *buffer, // address of image in memory
+                         int width, // width of image in pixels
+                         int height, // height of image in pixels.
+                         int bpp, // *BYTES* per pixel of image 1 or 3
+						 char *name,
+                         int quality=75); // image quality as a percentage
+
+  static bool Compress(const void *source,  // address of image in memory
+					  unsigned char *dest,  // buffer to hold the compressed image
+                      int width, // width of image in pixels
+                      int height, // height of image in pixels
+                      int bpp, // *BYTES* per pixel of image 1 or 3
+                      unsigned long &len, // returns length of compressed data
+                      int quality=75); // image quality as a percentage
+
+  static bool ReadImage(int &width,   // width of the image loaded.
+                         int &height,  // height of the image loaded.
+                         int &bpp,     // BYTES (not bits) PER PIXEL.
+                         const void *buffer, // memory address containing jpeg compressed data.
+                         long sizebytes,   // size of jpeg compressed data.
+   					     unsigned char* dest); // buffer to hold the uncompressed image
+
+};
+
+#endif
+
diff --git a/src/terralib/kernel/TeAkimaInterpolator.cpp b/src/terralib/kernel/TeAkimaInterpolator.cpp
new file mode 100644
index 0000000..ca41677
--- /dev/null
+++ b/src/terralib/kernel/TeAkimaInterpolator.cpp
@@ -0,0 +1,1067 @@
+void TeFitLinearSurface (int idv, vector<TeTinVertex>& xyzd, vector<TePolyCoef>& cfl1)
+{
+// Least squares fit of a linear surface (plane) to z(x,y) values
+// Adapted from SUBROUTINE SDLS1P(NDP,XD,YD,ZD,IPC,NCP,CFL1) by
+// Hiroshi Akima, U.S. Department of Commerce, NTIA/ITS
+// Version of 1995/05
+// This subroutine performs the least squares fit of a linear
+// surface (plane) to a data point set consisting of the data
+// point in question and several data points closest to it.
+// The input arguments are
+//   IDV  = data point number,
+//   XYZD = array of dimension NDP containing the x, y coordinates
+//          and the z values at the data points,
+// The output argument is
+//   CFL1 = two-dimensional array of dimension 2*NDP, where
+//          the coefficients (a10, a01) of the least squares
+//          fit, first-degree polynomial calculated at the
+//          IDPth data point.
+	list<int> ipc;
+	list<int>::iterator vi;
+	TeTin::vertexSecondNeighVertices(idv, ipc);
+	vi = ipc.begin();
+	if ( ipc.size() == 1 )
+	{
+		double x2x1 = xyzd[*vi].x() - xyzd[idp].x();
+		double y2y1 = xyzd[*vi].y() - xyzd[idp].y();
+		double z2z1 = xyzd[*vi].value() - xyzd[idp].value();
+		double daux = z2z1/(x2x1*x2x1 + y2y1*y2y1);
+		cfl1[idv].a10( x2x1*daux );
+		cfl1[idv].a01( y2y1*daux );
+	}
+	else
+	{
+		double sx(0.), sy(0.), sxx(0.), sxy(0.), syy(0.), sz(0.), sxz(0.), syz(0.);
+		double x, y, z;
+		int i, idpi = idv;
+		for (i = 0; i < 10; i++)
+		{
+			if (vi == ipc.end())
+				break;
+			x = xyzd[idpi];
+			y = xyzd[idpi];
+			z = xyzd[idpi];
+			sx += x;
+			sy += y;
+			sxx += (x * x);
+			sxy += (x * y);
+			syy += (y * y);
+			sz += z;
+			sxz += (x * z);
+			syz += (y * z);
+			idpi = *vi;
+			vi++;
+		}
+		double an = (double) (i > ipc.size() ? ipc.size() : 10);
+		double a11 = (an * sxx) - (sx * sx);
+		double a12 = (an * sxy) - (sx * sy);
+		double a22 = (an * syy) - (sy * sy);
+		double b1 = (an * sxz) - (sx * sz);
+		double b2 = (an * syz) - (sy * sz);
+		double dlt = (a11 * a22) - (a12 * a12);
+		cfl1[idv].a10( ((b1 * a22) - (b2 * a12))/dlt );
+		cfl1[idv].a01( ((b2 * a11) - (b1 * a12))/dlt );
+	}
+}
+
+bool TeCalcPolynomialCoef (int idv, vector<TeTinVertex>& xyzd, int** ipc,
+						   vector<TePolyCoef>& cf, vector<int>& ncp, vector<int>& iord )
+{
+// Coefficients of the third-degree polynomial for z(x,y)
+// Adapted from SUBROUTINE SDCF3P(NDP,XD,YD,ZD,IPC,CF,NCP,IORD) by
+// Hiroshi Akima,  U.S. Department of Commerce, NTIA/ITS
+// Version of 1995/05
+// This subroutine calculates, for each data point, coefficients
+// of the third-degree polynomial for z(x,y) fitted to the set of
+// 10 data points consisting of the data point in question and
+// nine data points closest to it.  When the condition number of
+// the matrix associated with the 10 data point set is too large,
+// this subroutine calculates coefficients of the second-degree
+// polynomial fitted to the set of six data points consisting of
+// the data point in question and five data points closest to it.
+// When the condition number of the matrix associated with the six
+// data point set is too large, this subroutine calculates
+// coefficients of the first-degree polynomial fitted to the set of
+// three data points closest to the data point in question.  When
+// the condition number of the matrix associated with the three data
+// point set is too large, this subroutine calculates coefficients
+// of the first-degree polynomial fitted to the set of two data
+// points consisting of the data point in question and one data
+// point closest to it, assuming that the plane represented by the
+// polynomial is horizontal in the direction which is at right
+// angles to the line connecting the two data points.
+// The input arguments are
+//   IDV  = data point number,
+//   XYZD = array containing the x y
+//         coordinates and the z values at the data points,
+// The output arguments are
+//   CF  = coefficients of the polynomial
+//         (a10, a20, a30, a01, a11, a21, a02, a12, a03)
+//         calculated at the IDPth data point.
+//   NCP = integer array of dimension NDP, where the numbers
+//         of the closest points used are to be stored.
+//   IORD = integer array of dimension NDP containing the
+//          degree of the polynomial used to compute PDD.
+// The constant in the first PARAMETER statement below is
+//   CNRMX = maximum value of the ratio of the condition
+//           number of the matrix associated with the point
+//           set to the number of points.
+// The constant value has been selected empirically.
+	double cnrmx = 3.5e+7;	//      PARAMETER        (CNRMX=3.5E+07)
+	cf[idp].Init(0.0);
+	TeMatrix aa;
+	aa.Init( 10, 10 );
+	double cfi[10],	b[10], cn;
+	list<int> ipc;
+	list<int>::iterator vi;
+	TeTin::vertexSecondNeighVertices(idv, ipc);
+	int i, idpi = idv;
+	if (ipc.size >= 9)	// Calculates the coefficients of the set of
+	{	// linear equations with the 10-point data point set.
+		vi = ipc.begin();
+		for (i = 0; i < 10; i++)
+		{
+			x = xyzd[idpi].x();
+			y = xyzd[idpi].y();
+			aa(i,0) = 1.0;
+			aa(i,1) = x;
+			aa(i,2) = x * x;
+			aa(i,3) = x * x * x;
+			aa(i,4) = y;
+			aa(i,5) = x * y;
+			aa(i,6) = x * x * y;
+			aa(i,7) = y * y;
+			aa(i,8) = x * y * y;
+			aa(i,9) = y * y * y;
+			b[i] = xyzd[idpi].value();
+			idpi = *vi;
+			vi++;
+		}
+		if ( ! TeSolveLinearEquations (aa, b, cfi, cn);
+		{
+			if (cn < cnrmx * 10.)
+			{
+				cf[idp].a10 (cfi[1]);
+				cf[idp].a20 (cfi[2]);
+				cf[idp].a30 (cfi[3]);
+				cf[idp].a01 (cfi[4]);
+				cf[idp].a11 (cfi[5]);
+				cf[idp].a21 (cfi[6]);
+				cf[idp].a02 (cfi[7]);
+				cf[idp].a12 (cfi[8]);
+				cf[idp].a03 (cfi[9]);
+				ncp[idp] = 9;
+				iord[idp] = 3;
+			}
+		}
+	}
+	else if (ipc.size() >= 6)	// Calculates the coefficients of the set of
+	{	// linear equations with the 6-point data point set.
+		aa.Init( 6, 6 );
+		idpi = idp;
+		vi = ipc.begin();
+		for ( i = 0; i < 6; i++)
+		{
+			x = xyzd[idpi].x();
+			y = xyzd[idpi].y();
+			aa[i,0] = 1.0;
+			aa[i,1] = x;
+			aa[i,2] = x * x;
+			aa[i,3] = y;
+			aa[i,4] = x * y;
+			aa[i,5] = y * y;
+			b[i] = xyzd[idpi].value();
+			idpi = *vi;
+			vi++;
+		}
+		if ( TeSolveLinearEquations (aa, b, cfi, cn) )
+		{
+			if (cn < cbrmx * 6.)
+			{
+				cf[idv].a10 (cfi[1]);
+				cf[idv].a20 (cfi[2]);
+				cf[idv].a01 (cfi[3]);
+				cf[idv].a11 (cfi[4]);
+				cf[idv].a02 (cfi[5]);
+				ncp[idv] = 5;
+				iord[idv] = 2;
+			}
+		}
+	}
+	else if (ipc.size() >= 3)	// Calculates the coefficients of the set of
+	{	// linear equations/ with the 3-point data point set.
+		aa.Init( 3, 3 );
+		vi = ipc.begin();
+		for (i = 0; i < 3; i++)
+		{
+			idpi = *vi;
+			vi++;
+			x = xyzd[idpi].x();
+			y = xyzd[idpi].y();
+			aa[i,0] = 1.0;
+			aa[i,1] = x;
+			aa[i,2] = y;
+			b[i] = xyzd[idpi].value();
+		}
+		if ( TeSolveLinearEquations (aa, b, cfi, cn) )
+		{
+			if (cn < cbrmx * 3.)
+			{
+				cf[idv].a10 (cfi[1]);
+				cf[idv].a01 (cfi[2]);
+				ncp[idv] = 3;
+				iord[idv] = 1;
+			}
+		}
+	}
+	else if (ipc.size() >= 1)	// Calculates the coefficients of the set of
+	{// linear equations with the 2-point data point set when applicable.
+		double x2x1 = xyzd[*vi].x() - xyzd[idp].x();
+		double y2y1 = xyzd[*vi].y() - xyzd[idp].y();
+		double z2z1 = xyzd[*vi].value() - xyzd[idp].value();
+		double daux = z2z1/(x2x1*x2x1 + y2y1*y2y1);
+		cf[idv].a10( x2x1*daux );
+		cf[idv].a01( y2y1*daux );
+		ncp[idp] = 1;
+		iord[idp] = 0;
+	}
+	else
+		return false;
+	return true;
+}										//      END
+
+void TeCalcPartialDerivatives (int idv, vector<TeTinVertex>& xyzd, vector<TePartialDeriv>& pdd )
+{
+// Partial derivatives for bivariate interpolation and surface
+// fitting for scattered data
+// Adapted from SUBROUTINE SDPD3P(NDP,XD,YD,ZD,PDD,CF3,CFL1,DSQ,IDSQ,IPC,NCP,IORD)
+// by Hiroshi Akima, U.S. Department of Commerce, NTIA/ITS
+// Version of 1995/05
+// This subroutine estimates partial derivatives of the first and
+// second orders at the data points for bivariate interpolation
+// and surface fitting for scattered data.  In most cases, this
+// subroutine has the accuracy of a cubic (third-degree)
+// polynomial.
+//
+// The input arguments are
+//   IDV  = data point number,
+//   XYZD = array containing the x y and the z values
+//          at the data points.
+// The output arguments are
+//   PDD  = estimated zx, zy, zxx, zxy, and zyy values
+//          at the IDV data point.
+// The constant in the first PARAMETER statement below is
+//   NPEMX = maximum number of primary estimates.
+// The constant value has been selected empirically.
+//      PARAMETER        (NPEMX=25)
+	list<int> ipc;
+	list<int>::iterator vi;
+	TeTin::vertexSecondNeighVertices(idv, ipc);
+	vi = ipc.begin();
+	int i, idpi;
+	double x = xyzd[idv].x();
+	double y = xyzd[idv].y();
+	TePartialDeriv pdpe[25];
+	for (i = 0; i < 25; i++)
+	{
+		idpi = *vi;
+		pdpe[i].zx ( cf3[idpi].a10() + x*(2.*cf3[idpi].a20() + x*3.*cf3[idpi].a30()) +
+					 y*(cf3[idpi].a11() + 2.*cf3[idpi].a21()*x + cf3[idpi].a12()*y) );
+		pdpe[i].zy ( cf3[idpi].a01() + y*(2.*cf3[idpi].a02() + y*3.*cf3[idpi].a03()) +
+					 x*(cf3[idpi].a11() + 2.*cf3[idpi].a12()*y + cf3[idpi].a21()*x) );
+		pdpe[i].zxx( 2.*cf3[idpi].a20() + 6.*cf3[idpi].a30()*x + 2.*cf3[idpi].a21()*y );
+		pdpe[i].zxy( cf3[idpi].a11() + 2.*cf3[idpi].a21()*x + 2.*cf3[idpi].a12()*y );
+		pdpe[i].zyy( 2.*cf3[idpi].a02() + 6.*cf3[idpi].a03()*y + 2.*cf3[idpi].a12()*x );
+
+		vi++;
+		if ( vi == ipc.end() )
+			break;
+	}
+	int npe = i;
+	if (npe == 1)	// Only one qualified point set
+		pdd[idv] = pdpe[0];
+	else
+	{	// Weighted values of partial derivatives.
+		TePartialDeriv ampdpe;	// Calculates the probability weight.
+		for (i = 0; i < npe; i++)
+			ampdpe = ampdpe + pdpe[i];
+		ampdpe = ampdpe/(double)npe;
+
+		TePartialDeriv sspdpe;	// Calculates the unbiased estimate of variance
+		for (i = 0 ; i < npe; i++)
+			sspdpe = sspdpe + (pdpe[i]-ampdpe)*(pdpe[i]-ampdpe);
+		sspdpe = sspdpe/(double)(npe-1);
+
+		for (i = 0; i < npe; i++)
+		{
+			double alpwt = 0.;
+			if (sspdpe.zx() != 0.)
+				alpwt += ((pdpe[i].zx()-ampdpe.zx())^2)/sspdpe.zx();
+			if (sspdpe.zy() != 0.)
+				alpwt += ((pdpe[i].zy()-ampdpe.zy())^2)/sspdpe.zy();
+			if (sspdpe.zxx() != 0.)
+				alpwt += ((pdpe[i].zxx()-ampdpe.zxx())^2)/sspdpe.zxx();
+			if (sspdpe.zyy() != 0.)
+				alpwt += ((pdpe[i].zyy()-ampdpe.zyy())^2)/sspdpe.zyy();
+			if (sspdpe.zxy() != 0.)
+				alpwt += ((pdpe[i].zxy()-ampdpe.zxy())^2)/sspdpe.zxy();
+			pwt[i] = exp(-alpwt/2.);
+		}
+	// Calculates the reciprocal of the volatility weight.
+		vi = ipc.begin();
+		for (i = 0; i < npe; i++)
+		{
+			idpi = *vi;
+			zx = cfl1[idpi].a10();
+			zy = cfl1[idpi].a01();
+			rvwt[i] = ((pdpe[i].zx()-zx)*(pdpe[i].zx()-zx) +
+					   (pdpe[i].zy()-zy)*(pdpe[i].zy()-zy))*
+					   (pdpe[i].zxx()*pdpe[i].zxx() +
+					   2.*pdpe[i].zxy()*pdpe[i].zxy() +
+						pdpe[i].zyy()*pdpe[i].zyy());
+			vi++;
+		}
+	// Calculates the weighted values of partial derivatives.
+		TePartialDeriv pddik, pddii;
+		double smwtf = 0., smwti = 0. wtf, wti;
+		for (i = 0; i < npe; i++)
+		{
+			if (rvwt[i] > 1e-38)
+			{
+				wtf = pwt[i]/rvwt[i];
+				pddif = pddif + pdpe[i]*wtf;
+				smwtf = smwtf + wtf;
+			}
+			else
+			{
+				wti = pwt[i];
+				pddii = pddii + pdpe[i]*wti;
+				smwti = smwti + wti;
+			}
+		}
+		if (smwti < 0.)
+			pdd[idv] = pddif/smwtf;
+		else
+			pdd[idv] = pddii/smwti;
+		}
+	}
+}
+
+void TeCalcZPolynomial (int ndp, vector<TeTinVertex>& xyzd, vector<TePartialDeriv>& pdd,
+							   vector<int>& iord )
+{
+//      SUBROUTINE SDPLNL(NDP,XD,YD,ZD,NT,IPT,NL,IPL,PDD,NIP,XI,YI,KTLI,
+//     +                  ITLI,ZI)
+//
+// Polynomials
+// (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+//
+// Hiroshi Akima
+// U.S. Department of Commerce, NTIA/ITS
+// Version of 1995/05
+//
+// This subroutine determines a polynomial in x and y for each
+// triangle or rectangle in the x-y plane and calculates the z
+// value by evaluating the polynomial for the desired points,
+// for bivariate interpolation and surface fitting for scattered
+// data.
+//
+// The input arguments are
+//   NDP  = number of data points,
+//   XD   = array of dimension NDP containing the x
+//          coordinates of the data points,
+//   YD   = array of dimension NDP containing the y
+//          coordinates of the data points,
+//   ZD   = array of dimension NDP containing the z
+//          values at the data points,
+//   NT   = number of triangles,
+//   IPT  = two-dimensional integer array of dimension 3*NT
+//          containing the point numbers of the vertexes of
+//          the triangles,
+//   NL   = number of border line segments,
+//   IPL  = two-dimensional integer array of dimension 2*NL
+//          containing the point numbers of the end points of
+//          the border line segments,
+//   PDD  = two-dimensional array of dimension 5*NDP
+//          containing the partial derivatives at the data
+//          points,
+//   NIP  = number of output points at which interpolation is
+//          to be performed,
+//   XI   = array of dimension NIP containing the x
+//          coordinates of the output points,
+//   YI   = array of dimension NIP containing the y
+//          coordinates of the output points,
+//   KTLI = integer array of dimension NIP, each element
+//          containing the code for the type of the piece of
+//          the plane in which each output point lies
+//        = 1 for a triangle inside the data area
+//        = 2 for a rectangle on the right-hand side of a
+//            border line segment
+//        = 3 for a triangle between two rectangles on the
+//            right-hand side of two consecutive border
+//            line segments
+//        = 4 for the triangle which is an overlap of two
+//            rectangles on the right-hand side of two
+//            consecutive border line segments,
+//   ITLI = integer array of dimension NIP containing the
+//          triangle numbers or the (second) border line
+//          segment numbers corresponding to the output
+//          points.
+//
+// The output argument is
+//   ZI   = array of dimension NIP, where the calculated z
+//          values are to be stored.
+//
+//
+// Specification statements
+//     .. Scalar Arguments ..
+      INTEGER          NDP,NIP,NL,NT
+//     ..
+//     .. Array Arguments ..
+      REAL             PDD(5,NDP),XD(NDP),XI(NIP),YD(NDP),YI(NIP),
+     +                 ZD(NDP),ZI(NIP)
+      INTEGER          IPL(2,NL),IPT(3,NT),ITLI(NIP),KTLI(NIP)
+//     ..
+//     .. Local Scalars ..
+      REAL             A,AA,AB,ACT2,AD,ADBC,AP,B,BB,BC,BDT2,BP,C,CC,CD,
+     +                 CP,D,DD,DLT,DP,DX,DY,E1,E2,G1,G2,H1,H2,H3,LUSQ,
+     +                 LVSQ,P0,P00,P01,P02,P03,P04,P05,P1,P10,P11,P12,
+     +                 P13,P14,P2,P20,P21,P22,P23,P3,P30,P31,P32,P4,P40,
+     +                 P41,P5,P50,SPUV,U,V,WT1,WT2,X0,XII,Y0,YII,Z0,ZII,
+     +                 ZII1,ZII2
+      INTEGER          I,IDP,IIP,ILI,IR,ITLII,ITLIPV,K,KTLII,KTLIPV
+//     ..
+//     .. Local Arrays ..
+      REAL             PD(5,3),X(3),Y(3),Z(3),ZU(3),ZUU(3),ZUV(3),ZV(3),
+     +                 ZVV(3)
+//     ..
+//     .. Intrinsic Functions ..
+      INTRINSIC        MOD
+//     ..
+// Outermost DO-loop with respect to the output point
+	for (iip = 0; iip < nip; iip++)			//      DO 120 IIP = 1,NIP
+	{
+		ktlii = ktli[iip];					//          KTLII = KTLI(IIP)
+		itlii = itli[iip];					//          ITLII = ITLI(IIP)
+		if (iip == 0 )						//          IF (IIP.EQ.1) THEN
+		{
+			ktlipv = 0;						//              KTLIPV = 0
+			itlipv = 0;						//              ITLIPV = 0
+		}
+		else								//          ELSE
+		{
+			ktlipv = ktli[iip-1];			//              KTLIPV = KTLI(IIP-1)
+			itlipv = itli[iip-1];			//              ITLIPV = ITLI(IIP-1)
+		}									//          END IF
+		TeTinPolynomial tinPoly;
+// Part 1.  Calculation of ZII by interpolation
+		switch (ktlii)
+		{
+			case 1:						//          IF (KTLII.EQ.1) THEN
+			{
+				if ( (ktlii != ktlipv) || (itlii != itlipv))//	IF (KTLII.NE.KTLIPV .OR. ITLII.NE.ITLIPV) THEN
+	// Calculates the coefficients when necessary.
+					TeTin::defineTrianglePolynomial ( itlii, tinPoly );
+				xyz[iip].value( tinPoly.Solve( xyzd[iip].location()) );
+			}									//          END IF
+	// Part 2.  Calculation of ZII by extrapolation in the rectangle
+			case 2:						//          IF (KTLII.EQ.2) THEN
+	// Calculates the coefficients when necessary.
+			{
+				if ( (ktlii != ktlipv) || (itlii != itlipv))//	IF (KTLII.NE.KTLIPV .OR. ITLII.NE.ITLIPV) THEN
+					TeTin::defineEdgePolynomial ( itlii, tinPoly );
+				xyz[iip].value( tinPoly.Solve( xyzd[iip].location()) );
+	// Part 3.  Calculation of ZII by extrapolation in the triangle
+			case 3:					//          IF (KTLII.EQ.3) THEN
+			{
+	// Calculates the coefficients when necessary.
+				if ( (ktlii != ktlipv) || (itlii != itlipv))//	IF (KTLII.NE.KTLIPV .OR. ITLII.NE.ITLIPV) THEN
+	// Loads coordinate and partial derivative values at the vertex
+	// of the triangle.
+					TeTin::defineVertexPolynomial ( itlii, tinPoly );
+
+				xyz[iip].value( tinPoly.Solve( xyzd[iip].location()) );
+			}									//          END IF
+
+	// Part 4.  Calculation of ZII by extrapolation in the triangle
+	//          which is an overlap of two rectangles.
+			case 4:						//          IF (KTLII.EQ.4) THEN
+			{
+				int itlim1 = border[(itlii - 1)%nl];
+				TeCoord2D pt0 = TeTin::edge(itlii).from();
+				TeCoord2D pt1 = TeTin::edge(itlii).to();
+				TeCoord2D pt2;
+				if ( TeTin::edge(itlim1).from() == pt0 )
+				{
+					pt2 = TeTin::edge(itlim1).to();
+				}
+				else if ( TeTin::edge(itlim1).to() == pt0 )
+				{
+					pt2 = TeTin::edge(itlim1).to();
+				}
+				else
+				{
+					pt2 = pt0;
+					pt0 = pt1;
+					pt1 = pt2;
+					if ( TeTin::edge(itlim1).from() == pt0 )
+						pt2 = TeTin::edge(itlim1).to();
+					else
+						pt2 = TeTin::edge(itlim1).from();
+				}
+				TeTin::defineEdgePolynomial ( border[itlii], tinPoly );
+				double z1 = tinPoly.Solve( xyzd[iip].location() );
+				double wt1 = ((pt1.x()-pt0.x())*(xyzd[iip].x()-pt0.x())+
+							(pt1.y()-pt0.y())*(xyzd[iip].y()-pt0.x()))^2.;
+
+				TeTin::defineEdgePolynomial ( border[itlim1], tinPoly );
+				double z2 = tinPoly.Solve( xyzd[iip].location() );
+				double wt2 = ((pt2.x()-pt0.x())*(xyzd[iip].x()-pt0.x())+
+							(pt2.y()-pt0.y())*(xyzd[iip].y()-pt0.x()))^2.;
+
+				xyz[iip].value( (wt1*z1 + wt2*z2) / (wt1+wt2) );
+			}								//          END IF
+	}									//  120 CONTINUE
+}										//      END
+
+void TeRegressionMatrixSetRow (double xk, double yk, double zk, double xi,
+							   double yi, double zi, double s1, double s2,
+							   double s3, double w, double* row)
+{
+// Adapted from SUBROUTINE SETRO3(XK,YK,ZK,XI,YI,ZI,S1,S2,S3,W,ROW)
+// from SRFPACK by Robert J. Renka, Dept. of Computer Science,
+// Univ. of North Texas,(817) 565-2767,01/25/97
+//   This subroutine sets up the I-th row of an augmented re-
+// gression matrix for a weighted least squares fit of a
+// cubic function f(x,y) to a set of data values z, where
+// f(XK,YK) = ZK.  The first four columns (cubic terms) are
+// scaled by S3, the next three columns (quadratic terms)
+// are scaled by S2, and the eighth and ninth columns (lin-
+// ear terms) are scaled by S1.
+// On input:
+//       XK,YK = Coordinates of node K.
+//       ZK = Data value at node K to be interpolated by f.
+//       XI,YI,ZI = Coordinates and data value at node I.
+//       S1,S2,S3 = Scale factors.
+//       W = Weight associated with node I.
+// The above parameters are not altered by this routine.
+//       ROW = Array of length 10.
+// On output:
+//       ROW = Array containing a row of the augmented re-
+//             gression matrix.
+	double dx = xi - xk;				//      DX = XI - XK
+	double dy = yi - yk;				//      DY = YI - YK
+	double w1 = s1*w;					//      W1 = S1*W
+	double w2 = s2*w;					//      W2 = S2*W
+	double w3 = s3*w;					//      W3 = S3*W
+	row[0] = dx*dx*dx*w3;				//      ROW(1) = DX*DX*DX*W3
+	row[1] = dx*dx*dy*w3;				//      ROW(2) = DX*DX*DY*W3
+	row[2] = dx*dy*dy*w3;				//      ROW(3) = DX*DY*DY*W3
+	row[3] = dy*dy*dy*w3;				//      ROW(4) = DY*DY*DY*W3
+	row[4] = dx*dx*w2;					//      ROW(5) = DX*DX*W2
+	row[5] = dx*dy*w2;					//      ROW(6) = DX*DY*W2
+	row[6] = dy*dy*w2;					//      ROW(7) = DY*DY*W2
+	row[7] = dx*w1;						//      ROW(8) = DX*W1
+	row[8] = dy*w1;						//      ROW(9) = DY*W1
+	row[9] = (zi-zk)*w;					//      ROW(10) = (ZI-ZK)*W
+}										//      RETURN
+										//      END
+
+void TeGivensRotate (int n, double c, double s, vector<double>& x,
+					 vector<double>& y)
+{
+// Adapted from SUBROUTINE ROTATE(N,C,S,X,Y) from SRFPACK by
+// Robert J. Renka, Dept. of Computer Science, Univ. of North Texas
+// (817) 565-2767 09/01/88
+//   This subroutine applies the Givens rotation  ( C  S)  to
+//                                                (-S  C)
+// the 2 by N matrix  (X(1) ... X(N)) .
+//                    (Y(1) ... Y(N))
+// On input:
+//       N = Number of columns to be rotated.
+//       C,S = Elements of the Givens rotation.  Refer to
+//             subroutine GIVENS.
+// The above parameters are not altered by this routine.
+//       X,Y = Arrays of length .GE. N containing the compo-
+//             nents of the vectors to be rotated.
+// On output:
+//       X,Y = Arrays containing the rotated vectors (not
+//             altered if N < 1).
+	int i;
+	double xi, yi;
+	for (i = 0; i < n; i++)			//      DO 10 I = 1,N
+	{
+		xi = x[i];					//          XI = X(I)
+		yi = y[i];					//          YI = Y(I)
+		x[i] =  c*xi + s*yi;		//          X(I) = C*XI + S*YI
+		y[i] = -s*xi + c*yi;		//          Y(I) = -S*XI + C*YI
+	}								//   10 CONTINUE
+}									//      RETURN
+									//      END
+
+void TeGivensBuild (double& a, double& b, double& c, double& s)
+{
+// Adapted from SUBROUTINE GIVENS(A,B,C,S) from SRFPACK by
+// Robert J. Renka, Dept. of Computer Science, Univ. of North Texas
+// (817) 565-2767 09/01/88
+//   This subroutine constructs the Givens plane rotation,
+//       G = ( C  S) , where C*C + S*S = 1,
+//           (-S  C)
+// which zeros the second component of the vector (A,B)**T
+// (transposed).  Subroutine ROTATE may be called to apply
+// the transformation to a 2 by N matrix.
+// On input:
+//       A,B = Components of the vector defining the rota-
+//             tion.  These are overwritten by values R
+//             and Z (described below) which define C and S.
+// On output:
+//       A = Signed Euclidean norm R of the input vector:
+//           R = +/-SQRT(A*A + B*B)
+//       B = Value Z such that:
+//             C = SQRT(1-Z*Z) and S=Z if ABS(Z) .LE. 1, and
+//             C = 1/Z and S = SQRT(1-C*C) if ABS(Z) > 1.
+//       C = +/-(A/R) or 1 if R = 0.
+//       S = +/-(B/R) or 0 if R = 0.
+	double aa = a;				//      AA = A
+	double bb = b;				//      BB = B
+	if (fabs(aa) > fabs(bb))	//      IF (ABS(AA).LE.ABS(BB)) GO TO 10
+	{	// ABS(A) > ABS(B).
+		u = aa + aa;			//      U = AA + AA
+		v = bb/u;				//      V = BB/U
+		r = sqrt(.25+v*v)*u;	//      R = SQRT(.25+V*V)*U
+		c = aa/r;				//      C = AA/R
+		s = v*(c+c);			//      S = V* (C+C)
+// Note that R has the sign of A, C > 0, and S has
+//   SIGN(A)*SIGN(B).
+		b = s;					//      B = S
+		a = r;					//      A = R
+	}							//      RETURN
+	else
+	{	// ABS(A) .LE. ABS(B).
+		if (bb != 0.)			//   10 IF (BB.EQ.0.) GO TO 20
+		{
+			u = bb + bb;		//      U = BB + BB
+			v = aa/u;			//      V = AA/U
+// Store R in A.
+			a = sqrt(.25+v*v)*u;//      A = SQRT(.25+V*V)*U
+			s = bb/a;			//      S = BB/A
+			c = v*(s+s);		//      C = V* (S+S)
+// Note that R has the sign of B, S > 0, and C has
+//   SIGN(A)*SIGN(B).
+			b = 1.;				//      B = 1.
+			if (c != 0)			//      IF (C.NE.0.) B = 1./C
+				b = 1./c;
+		}						//      RETURN
+		else
+		{	// A = B = 0.
+			c = 1.;				//   20 C = 1.
+			s = 0.;				//      S = 0.
+		}						//      RETURN
+	}
+}								//      END
+
+void TeEstimateCubicDerivatives (int k)
+{
+// Adapted from SUBROUTINE GRADC(K,NCC,LCC,N,X,Y,Z,LIST,LPTR,LEND,DX,DY,DXX,DXY,
+//  DYY,IER) from SRFPACK by Robert J. Renka, Dept. of Computer Science
+//   Univ. of North Texas (817) 565-2816 01/25/97
+//   Given a Delaunay triangulation of N points in the plane
+// with associated data values Z, this subroutine estimates
+// first and second partial derivatives at node K.  The der-
+// ivatives are taken to be the partials at K of a cubic
+// function which interpolates Z(K) and fits the data values
+// at a set of nearby nodes in a weighted least squares
+// sense.  A Marquardt stabilization factor is used if neces-
+// sary to ensure a well-conditioned system.  Thus, a unique
+// solution exists if there are at least 10 noncollinear
+// nodes.
+//       K = Index of the node at which derivatives are to be
+//           estimated.
+//       N = Number of nodes in the triangulation.
+// On output:
+//       DX,DY = Estimated first partial derivatives at node
+//               K unless IER < 0.
+//       DXX,DXY,DYY = Estimated second partial derivatives
+//                     at node K unless IER < 0.
+	TeMatrix a;
+	a.Init( 10, 10 );
+	int lmn = 14, lmx = 30;				//      PARAMETER        (LMN=14,LMX=30)
+	int lmin = min(lmn,n);				//      LMIN = MIN(LMN,N)
+    int lmax = min(lmx,n);				//      LMAX = MIN(LMX,N)
+	double rtol = 1.0e-5, dtol = 0.01;	// Tolerance for detecting an
+										// ill-conditioned system.
+	list<int> npts;	// Indexes of a sequence of nodes ordered by distance from K.
+	TeTin::vertexSecondNeighVertices(k, npts);
+	double sum = 0.;	//Sum of squared distances between node K and
+						// the nodes used in the least squares fit
+	double ds = 0;		//Squared distance between nodes K and NPTS(LNP)
+	double dist2;
+	int i, j;
+	list<int>::iterator vii;
+	vii = npts.begin();
+	for (i = 0; i < 29; i++)
+	{
+		dist2 = TeSquaredDistance ( xyzd[*vii].location() - xyzd[k].location() );
+		vii++;
+		if (i == 11)
+		{
+			ds = dist2;
+			sum += dist2;
+		}
+		else if (i > 11)
+		{
+			if ((dist2-ds)/ds < rtol)
+				sum += dist2;
+			else
+			{
+				i++;
+				break;
+			}
+		}
+		else
+			sum += dist2;
+		if ( vii == npts.end() )
+		{
+			i++;
+			break;
+		}
+	}
+    int lnp = i;
+	double rs = dist2;
+    if (lnp == 29)
+		rs = 1.1 * dist2;
+// There are LNP-2 equations corresponding to nodes NPTS(2),
+//   ...,NPTS(LNP-1).
+	double sfs = (double)(lnp)/sum;	//   40 SFS = REAL(LNP-2)/SUM
+	double sf = sqrt(sfs);				//      SF = SQRT(SFS)
+	double sfc = sf*sfs;				//      SFC = SF*SFS
+	double rin = 1./(sqrt(rs));			//      RIN = 1./SQRT(RS)
+	double xk = xyzd[k].x();			//      XK = X(KK)
+	double yk = xyzd[k].y();			//      YK = Y(KK)
+	double zk = xyzd[k].value();		//      ZK = Z(KK)
+	double w;
+	vii = npts.begin();
+	for (i = 0; i < 9; i++)				//      DO 60 I = 1,9
+	{
+		w = 1./( TeSquaredDistance ( xyzd[*vii].location() - xyzd[k].location() ) - rin;
+//          W = 1./DIST(I+1) - RIN
+		TeRegressionMatrixSetRow (xk, yk, zk, xyzd[*vii].x(), xyzd[*vii].y(),
+								  xyzd[*vii].value(), sf, sfs, sfc, w, a.Row(i));
+		if (i == 0)						//          IF (I.EQ.1) GO TO 60
+			continue;
+		for (j = 0; j < i; j++)		//          DO 50 J = 1,I - 1
+		{
+			TeGivensBuild (a(j,j), a(j,i), c, s);// CALL GIVENS(A(J,J),A(J,I),C,S)
+			TeGivensRotate (10-j, c, s, a(j+1,j), a(j+1,i));
+		}								//   50     CONTINUE
+	}									//   60 CONTINUE
+// Add the additional equations to the system using the last column of A.
+	i = 10;								//      I = 11
+	while (i < lnp)								//      I = 11
+	{
+		i++;
+		w = 1./( TeSquaredDistance ( xyzd[*vii].location() - xyzd[k].location() ) - rin;
+		TeRegressionMatrixSetRow (xk, yk, zk, xyzd[*vii].x(), xyzd[*vii].y(),
+								  xyzd[*vii].value(), sf, sfs, sfc, w, a.Row(9));
+		for (j = 0; j < 9; j++)		//          DO 80 J = 1,9
+		{
+			TeGivensBuild (a(j,j), a(j,9), c, s);
+			TeGivensRotate (10-j, c, s, a(j+1,j), a(j+1,9));
+		}								//   80     CONTINUE
+		vii++;
+		if (i == lnp-1)
+		{
+		// Test the system for ill-conditioning.
+			dmin = fabs(a(0,0));
+			for (j = 0; j < 9; j++)
+				dmin = (fabs(a(j,j) < dmin) ? fabs(a(j,j) : dmin;
+			if ( (dmin/w < dtol) && (lnp < 30) && (vii != npts.end()) )
+			{
+				lnp++;					//     LNP = LNP + 1
+				if (lnp < 30)					//          IF (LNP.LE.LMAX) THEN
+					rs = TeSquaredDistance ( xyzd[*vii].location() - xyzd[k].location() ) - rin;
+				rin = 1./sqrt(1.1*rs);	//          RIN = 1./SQRT(1.1*RS)
+			}
+		}
+	}
+// Stabilize the system by damping third partials -- add
+//   multiples of the first four unit vectors to the first
+//   four equations.
+	stf = w;							//      STF = W
+	for (i = 0; i < 4; i++)				//      DO 110 I = 1,4
+	{
+		a(i,9) = stf;					//          A(I,10) = STF
+		for (j = i+1; j < 10; j++)		//          DO 90 J = I + 1,10
+			a(j,9) = 0.;				//              A(J,10) = 0.
+										//   90     CONTINUE
+		for (j = i; j < 9; j++)			//          DO 100 J = I,9
+		{
+			TeGivensBuild (a(j,j), a(j,9), c, s);
+			TeGivensRotate (10-j, c, s, a(j=1,j), a(j+1,9));
+		}								//  100     CONTINUE
+	}									//  110 CONTINUE
+// Test the damped system for ill-conditioning.
+	dmin = fabs(a(4,4));
+	for (j = 5; j < 9; j++)
+		dmin = (fabs(a(j,j) < dmin) ? fabs(a(j,j) : dmin;
+	//      DMIN = MIN(ABS(A(5,5)),ABS(A(6,6)),ABS(A(7,7)),ABS(A(8,8)),
+	//     +       ABS(A(9,9)))
+	if (dmin/w < dtol)					//      IF (DMIN/W.LT.DTOL) GO TO 140
+	// No unique solution due to collinear nodes.
+			return false;							//      RETURN
+
+// Solve the 9 by 9 triangular system for the last 5
+//   components (first and second partial derivatives).
+	dy =   a(9,8)											/a(8,8);
+	dx =  (a(9,7)								 -a(8,7)*dy)/a(7,7);
+	dyy = (a(9,6)					   -a(7,6)*dx-a(8,6)*dy)/a(6,6);
+	dxy = (a(9,5)			-a(6,5)*dyy-a(7,5)*dx-a(8,5)*dy)/a(5,5);
+	dxx = (a(9,4)-a(5,4)*dxy-a(6,4)*dyy-a(7,4)*dx-a(8,4)*dy)/a(4,4);
+// Scale the solution components.
+	dx = sf*dx;							//      DX = SF*DX
+	dy = sf*dy;							//      DY = SF*DY
+	dxx = 2.*sfs*dxx;					//      DXX = 2.*SFS*DXX
+	dxy = sfs*dxy;						//      DXY = SFS*DXY
+	dyy = 2.*sfs*dyy;					//      DYY = 2.*SFS*DYY
+	return true;
+}										//      RETURN
+										//      END
+/*
+	zz.Init( aa.Nrow(), aa.Ncol() );
+	
+// Calculation of inverse matrix of AA
+	for (ij = 0; ij < n; ij++)			//   DO 110 IJ = 1,N
+	{
+// Finds out the element having the maximum absolute value in the
+// IJ th row.
+		aamx = fabs (aa(ij,ij));		//		AAMX = ABS(AA(IJ,IJ))
+		jmx = ij;						//      JMX = IJ
+		for ( j = ij; j < n; j++)		//      DO 40 J = IJ,N
+		{
+			if ( fabs (aa(ij,j) > aamx )//			IF (ABS(AA(IJ,J)).GT.AAMX) THEN
+			{
+				aamx = fabs (aa(ij,j));	//				AAMX = ABS(AA(IJ,J))
+				jmx = j;				//				JMX = J
+			}							//			END IF
+		}								//40	CONTINUE
+// Switches two columns in such a way that the element with the
+// maximum value is on the diagonal.
+		for (i = 0; i < n; i++)			//      DO 50 I = 1,N
+		{
+			aaijmx = aa(i,ij);			//			AAIJMX = AA(I,IJ)
+			aa(i,ij) = aa (i,jmx);		//          AA(I,IJ) = AA(I,JMX)
+			aa(i,jmx) = aaijmx;			//          AA(I,JMX) = AAIJMX
+		}								//50    CONTINUE
+        kjmx = k[ij];					//		KJMX = K(IJ)
+        k[ij] = k[jmx];					//		K(IJ) = K(JMX)
+        k[jmx] = kjmx;					//		K(JMX) = KJMX
+// Makes the diagonal element to be unity.
+        aaijij = aa(ij,ij);				//		AAIJIJ = AA(IJ,IJ)
+//CHANGED from Valtulina : IF (AAIJIJ.EQ.0.0) GO TO 210
+        if (fabs(aaijij) < 1.0e-8)		//		IF (ABS(AAIJIJ).LT.1.0E-8) GO TO 210 
+        {
+			//GOTO 210
+// Special case where the determinant is zero
+			for (i = 0; i < n; i++)		//210	DO 220 I = 1,N
+				x(i) = 0.0;				//			X(I) = 0.0
+										//220	CONTINUE
+			det = 0.0;					//		DET = 0.0
+			return;						//      RETURN
+		}
+		for (j = ij; j < n; j++)		//		DO 60 J = IJ,N
+			aa(ij,j) = aa(ij,j)/aaijij;	//			AA(IJ,J) = AA(IJ,J)/AAIJIJ
+										//60    CONTINUE
+        for (jj = 0; j < n; j++)		//		DO 70 JJ = 1,N
+			ee(ij,jj) = ee(ij,jj)/aaijij;//			EE(IJ,JJ) = EE(IJ,JJ)/AAIJIJ
+										//70    CONTINUE
+// Eliminates the lower left elements.
+		if (ij < n)						//		IF (IJ.LT.N) THEN
+		{
+			ijp1 = ij + 1;				//			IJP1 = IJ + 1
+            for ( i = ijp1; i < n; i++)	//			DO 100 I = IJP1,N
+            {
+				aaiij = aa (i,ij);		//				AAIIJ = AA(I,IJ)
+                for ( j = ijp1; j < n; j++)	//			DO 80 J = IJP1,N
+					aa(i,j) = aa(i,j) - aa(ij,j)*aaiij; //	AA(I,J) = AA(I,J) - AA(IJ,J)*AAIIJ
+										//80            CONTINUE
+                for (jj = 0; jj < n; jj++)	//			DO 90 JJ = 1,N
+					ee(i,jj)= ee(i,jj) - ee(ij,jj)*aaij;//	EE(I,JJ) = EE(I,JJ) - EE(IJ,JJ)*AAIIJ
+										//90            CONTINUE
+			}							//100       CONTINUE
+		}								//      END IF
+// Calculates the determinant.
+										//DELETED from Valtulina
+										//DELETED          IF (IJ.EQ.1) THEN
+										//DELETED              DET = 0.0
+										//DELETED              SGN = 1.0
+										//DELETED          END IF
+										//DELETED          SGN = SGN* ((-1)** (IJ+JMX))
+										//DELETED          DET = DET + LOG(ABS(AAIJIJ))
+	}									//110 CONTINUE
+										//DELETED      IF (DET.LT.85.0) THEN
+										//DELETED          DET = SGN*EXP(DET)
+										//DELETED      ELSE
+										//DELETED          DET = SGN*1.0E38
+										//DELETED      END IF
+
+//ADDED from Valtulina : at this point DET must be not equal 0
+	det = 1.0;							//		DET=1.0
+// Calculates the elements of the inverse matrix.
+	for (ijr = 0; ijr < n; ijr++)		//		DO 140 IJR = 1,N
+    {
+		ij = n + 1 - ijr;				//			IJ = N + 1 - IJR
+		if (ij < n)						//			IF (IJ.LT.N) THEN
+        {
+			ijp1 = ij + 1;				//				IJP1 = IJ + 1
+			for (j=ijp1; j < n; j++)	//				DO 130 J = IJP1,N
+				for (jj = 0; jj < n; jj++ )//			DO 120 JJ = 1,N
+					ee(ij,jj) = ee(ij,jj) -aa(ij,j)*ee(j,jj)//  EE(IJ,JJ) = EE(IJ,JJ) - AA(IJ,J)*EE(J,JJ)
+										//120				CONTINUE
+										//130           CONTINUE
+		}								//          END IF
+	}									//140	CONTINUE
+	for ( j = 0; j < n; j++ )			//      DO 160 J = 1,N
+    {
+			i = k[j];					//			I = K(J)
+			for ( jj = 0; jj < n; jj++ )//			DO 150 JJ = 1,N
+				zz(i,jj) = ee(j,jj);	//				ZZ(I,JJ) = EE(J,JJ)
+										//150   CONTINUE
+	}									//160	CONTINUE
+*/
+/*
+// Outermost DO-loop with respect to the data point
+	for (idp1 = 0; idp1 < ndp; idp1++)	//      DO 310 IDP1 = 1,NDP
+// Selects data point sets for sets of primary estimates of partial
+// derivatives.
+// - Selects a candidate.
+	{
+		npe = 0;						//          NPE = 0
+		for (idp2 = 0; idp2 < ndp; idp2++)//        DO 80 IDP2 = 1,NDP
+		{
+			ncp2 = ncp[idp2];			//              NCP2 = NCP(IDP2)
+			ncp2p1 = ncp2 + 1;			//              NCP2P1 = NCP2 + 1
+			bool equalfound = true;
+			if (idp2 != idp1)			//              IF (IDP2.EQ.IDP1) GO TO 20
+			{
+				equalfound = false;
+				for (j = 0; j < ncp2; j++)	//              DO 10 J = 1,NCP2
+				{
+					if (ipc[j,idp2] == idp1)//                  IF (IPC(J,IDP2).EQ.IDP1) GO TO 20
+					{
+						equalfound = true;	//GOTO 20
+						break;
+					}
+				}							//   10         CONTINUE
+			}
+			if (! equalfound)				//              GO TO 80
+				continue;					//   80     CONTINUE
+			ipcpe[0,npe+1] = idp2;			//   20         IPCPE(1,NPE+1) = IDP2
+			for (j = 0; j < ncp2; j++)		//              DO 30 J = 1,NCP2
+				ipcpe[j+1,npe+1] = ipc[j,idp2];//               IPCPE(J+1,NPE+1) = IPC(J,IDP2)
+											//   30         CONTINUE
+			for (j1 = 0; j1 < ncp2; j1++)	//              DO 50 J1 = 1,NCP2
+			{
+				jmn = j1;					//                  JMN = J1
+				imn = ipcpe[j1,npe+1];		//                  IMN = IPCPE(JMN,NPE+1)
+				for (j2 = j1; j1 < ncp2p1; j2++)//              DO 40 J2 = J1,NCP2P1
+				{
+					if (ipcpe[j2,npe+1] < imn)//                    IF (IPCPE(J2,NPE+1).LT.IMN) THEN
+					{
+						jmn = j2;			//                          JMN = J2
+						imn = ipcpe[jmn,npe+1];//                       IMN = IPCPE(JMN,NPE+1)
+					}						//                      END IF
+				}							//   40             CONTINUE
+				ipcpe[jmn, npe+1] = ipcpe[j1,npe+1];//          IPCPE(JMN,NPE+1) = IPCPE(J1,NPE+1)
+				ipcpe[j1,npe+1] = imn;		//                  IPCPE(J1,NPE+1) = IMN
+			}								//   50         CONTINUE
+// - Checks whether or not the candidate has already been included.
+			if (npe > 0)					//              IF (NPE.GT.0) THEN
+			{
+				for (ipe1 = 0; ipe1 < npe; ipe1++)//            DO 70 IPE1 = 1,NPE
+				{
+					idppe1 = idppe[ipe1];	//                      IDPPE1 = IDPPE(IPE1)
+					if (ncp2 != ncp[idppe1]	//                      IF (NCP2.NE.NCP(IDPPE1)) GO TO 70
+					{
+						//GOTO 70
+						continue;			//   70             CONTINUE
+					}
+					for (j = 0; j < ncp2p1; j++)//                  DO 60 J = 1,NCP2P1
+					{
+						if (ipcpe[j,npe+1] != ipcpe[j,ipe1] )//         IF (IPCPE(J,NPE+1).NE.
+											//     +                        IPCPE(J,IPE1)) GO TO 70
+						{
+							//GOTO 70
+							break;
+						}
+					}						//   60             CONTINUE
+					if (j != ncp2p1) //GOTO 70
+						continue;			//   70             CONTINUE
+					break;					//                  GO TO 80
+				}							//   70             CONTINUE
+				if (ipe1 != npe)
+					continue;				//                  GO TO 80
+			}								//              END IF
+			npe = npe+1;					//              NPE = NPE + 1
+			idppe[npe] = idp2;				//              IDPPE(NPE) = IDP2
+			if (npe > npemx)				//              IF (NPE.GE.NPEMX) GO TO 90
+			{
+				break;	//GOTO 90
+			}
+		}									//   80     CONTINUE
+											//   90     CONTINUE
+// Adds additional closest data points when necessary.
+		if (npe < npeamn)					//          IF (NPE.LT.NPEAMN) THEN
+		{
+			for (jj = 0; jj < 9; jj++)		//              DO 150 JJ = 1,9
+			{
+				idp2 = ipc[jj,idp1];		//                  IDP2 = IPC(JJ,IDP1)
+				ncp2 = ncp[idp2];			//                  NCP2 = NCP(IDP2)
+				ncp2p1 = ncp2 + 1;			//                  NCP2P1 = NCP2 + 1
+				ipcpe[0,npe+1] = idp2;		//                  IPCPE(1,NPE+1) = IDP2
+				for (j=0; j < ncp2; j++)	//                  DO 100 J = 1,NCP2
+					ipcpe[j+1, npe=1] = ipc[j,idp2];//              IPCPE(J+1,NPE+1) = IPC(J,IDP2)
+											//  100             CONTINUE
+				for (j1=0; j1 < ncp2; j1++)	//                  DO 120 J1 = 1,NCP2
+				{
+					jmn = j1;				//                      JMN = J1
+					imn = ipcpe[jmn,npe+1]	//                      IMN = IPCPE(JMN,NPE+1)
+					for (j2=j1 ; j2 < ncp2p1; j2++)//               DO 110 J2 = J1,NCP2P1
+					{
+						if (ipcpe[j2, npe+1] < imn)//                   IF (IPCPE(J2,NPE+1).LT.IMN) THEN
+						{
+							jmn = j2;		//                              JMN = J2
+							imn = ipcpe[jmn, npe+1]//                       IMN = IPCPE(JMN,NPE+1)
+						}					//                          END IF
+					}						//  110                 CONTINUE
+					ipcpe[jmn, npe+1] = ipcpe[j1, npe+1];//         IPCPE(JMN,NPE+1) = IPCPE(J1,NPE+1)
+					ipcpe[j1,npe+1] = imn;	//                      IPCPE(J1,NPE+1) = IMN
+				}							//  120             CONTINUE
+				if (npe > 0)				//                  IF (NPE.GT.0) THEN
+				{
+					for (ipe1=0; ipe1 < npe; ipe1++)//              DO 140 IPE1 = 1,NPE
+					{
+						idppe1 = idppe[ipe1];//                         IDPPE1 = IDPPE(IPE1)
+						if (ncp2 != ncp[idppe1])//                      IF (NCP2.NE.NCP(IDPPE1)) GO TO 140
+							continue;//GOTO 140-140                 CONTINUE
+						for (j=0; j < ncp2p1; j++)//                    DO 130 J = 1,NCP2P1
+						{
+							if (ipcpe[j,npe+1] != ipcpe[j,ipe1] )
+											//                              IF (IPCPE(J,NPE+1).NE.
+                                            //     +                            IPCPE(J,IPE1)) GO TO 140
+								break;		//  140                 CONTINUE
+						}					//  130                     CONTINUE
+						if (j != ncp2p1)
+							continue;		//  140                 CONTINUE
+						break;				//                          GO TO 150
+					}
+					if (ipe1 != npe)
+						continue;
+				}							//				  END IF
+				npe = npe+1;				//                  NPE = NPE + 1
+				idppe[npe] = idp2;			//                  IDPPE(NPE) = IDP2
+				if (npe > npeamx)			//                  IF (NPE.GE.NPEAMX) GO TO 160
+					break;
+			}								//  150         CONTINUE
+		}									//          END IF
+											//  160     CONTINUE
+*/
\ No newline at end of file
diff --git a/src/terralib/kernel/TeBlockLoader.cpp b/src/terralib/kernel/TeBlockLoader.cpp
new file mode 100644
index 0000000..a0168cb
--- /dev/null
+++ b/src/terralib/kernel/TeBlockLoader.cpp
@@ -0,0 +1,171 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+
+/*
+** ----------------------------------------------------------------------------
+** Includes:
+*/
+
+#include "TeBlockLoader.h"
+
+/*
+** ----------------------------------------------------------------------------
+** Definitions:
+*/
+
+/*
+** ----------------------------------------------------------------------------
+** Methods Implementation:
+*/
+
+TeBlockLoader::TeBlockLoader(const TeBlockLoaderParams& params)
+{
+    params_ = params;
+}
+
+TeBlockLoader::~TeBlockLoader()
+{
+}
+
+bool
+TeBlockLoader::loadBlocks()
+{
+    portal_ = params_.db->getPortal();
+    portal_->freeResult();
+
+    if (!portal_)
+    {
+        return false; // Error opening portal.
+    }
+
+    // Set columns to be retrieved.
+    std::string cols;
+    if (params_.load_all_attrs)
+    {
+        cols = "*";
+    }
+    else
+    {
+        cols = "";
+        std::vector<std::string>::iterator it = params_.attrs.begin();
+        std::vector<std::string>::iterator end = params_.attrs.end();
+        while(it != end)
+        {
+            cols.append(*(it++));
+            if (it != end)
+            {
+                cols.append(", ");
+            }
+        }
+    }
+
+    // Set spatial restrictions.
+    std::string rest;
+    rest += " NOT( ";
+    rest += "lower_x > " + Te2String(params_.selection_box.x2_, 12) + " OR ";
+    rest += "upper_x < " + Te2String(params_.selection_box.x1_, 12) + " OR ";
+    rest += "lower_y > " + Te2String(params_.selection_box.y2_, 12) + " OR ";
+    rest += "upper_y < " + Te2String(params_.selection_box.y1_, 12) + " )";
+
+    // Set block id restrictions.
+    if (params_.dont_load_ids.size() > 0)
+    {
+        std::set<int>::iterator it = params_.dont_load_ids.begin();
+        std::set<int>::iterator end = params_.dont_load_ids.end();
+        while (it != end)
+        {
+            rest += " AND block_id <> " + Te2String(*(it++));
+        }
+    }
+
+    // Set other restrictions.
+    if (params_.attrs_rest.length() > 0)
+    {
+        rest += " AND (" + params_.attrs_rest + ")";
+    }
+
+    // Mount SQL query.
+    std::string sql = "SELECT " + cols + " FROM " + params_.table_name + " WHERE " + rest;
+
+    return portal_->query(sql);
+
+}
+		
+bool
+TeBlockLoader::fetchNext()
+{
+    return portal_->fetchRow();
+}
+
+int
+TeBlockLoader::getID()
+{
+    return portal_->getInt("block_id");
+}
+
+void
+TeBlockLoader::getSpatialData(unsigned char* &data, long& size)
+{
+    portal_->getBlob("spatial_data", data, size);
+}
+
+char*
+TeBlockLoader::getData(const std::string& name)
+{
+    return portal_->getData(name);
+}
+
+int
+TeBlockLoader::getInt(const std::string& name)
+{
+    return portal_->getInt(name);
+}
+
+double
+TeBlockLoader::getDouble(const std::string& name)
+{
+    return portal_->getDouble(name);
+}
+
+bool
+TeBlockLoader::getBool(const std::string& name)
+{
+    return portal_->getBool(name);
+}
+
+TeTime
+TeBlockLoader::getDate(const std::string& name)
+{
+    return portal_->getDate(name);
+}
+
+std::string
+TeBlockLoader::getDateAsString(const std::string& name)
+{
+    return portal_->getDateAsString(name);
+}
+
+/*
+** ----------------------------------------------------------------------------
+** End:
+*/
diff --git a/src/terralib/kernel/TeBlockLoader.h b/src/terralib/kernel/TeBlockLoader.h
new file mode 100644
index 0000000..41b3cc7
--- /dev/null
+++ b/src/terralib/kernel/TeBlockLoader.h
@@ -0,0 +1,95 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file TeBlockLoader.h
+    \brief This file contains structures and definitions for loading data blocks.
+*/
+#ifndef  __TERRALIB_INTERNAL_BLOCKLOADER_H
+#define  __TERRALIB_INTERNAL_BLOCKLOADER_H
+
+/*
+** ----------------------------------------------------------------------------
+** Includes:
+*/
+#include "TeDatabase.h"
+#include "TeBox.h"
+#include "TeTime.h"
+#include <string>
+#include <vector>
+
+/*
+** ----------------------------------------------------------------------------
+** Definitions:
+*/
+
+typedef struct 
+{
+    TeDatabase* db;
+
+    std::string table_name;
+    TeBox selection_box;
+
+    bool load_all_attrs;
+	std::vector<std::string> attrs;
+    std::string attrs_rest;
+
+    std::set<int> dont_load_ids;
+	
+} TeBlockLoaderParams;
+
+class TL_DLL TeBlockLoader
+{
+public:
+
+    /// Default constructor.
+	TeBlockLoader(const TeBlockLoaderParams& params);
+
+    /// Virtual destructor.
+    virtual ~TeBlockLoader();
+
+	bool loadBlocks();
+		
+	bool fetchNext();
+
+    int getID();
+	void getSpatialData(unsigned char* &data, long& size);
+
+    char* getData(const std::string& name);
+    int getInt(const std::string& name);
+    double getDouble(const std::string& name);
+    bool getBool(const std::string& name);
+    TeTime getDate(const std::string& name);
+    std::string getDateAsString(const std::string& name);
+
+protected:
+
+    TeBlockLoaderParams params_;
+    TeDatabasePortal* portal_;
+
+};
+
+#endif // __TERRALIB_INTERNAL_BLOCKLOADER_H
+
+/*
+** ----------------------------------------------------------------------------
+** End:
+*/
\ No newline at end of file
diff --git a/src/terralib/kernel/TeCommunicator.h b/src/terralib/kernel/TeCommunicator.h
new file mode 100644
index 0000000..4bf0719
--- /dev/null
+++ b/src/terralib/kernel/TeCommunicator.h
@@ -0,0 +1,413 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file TeCommunicator.h
+    \brief This file contains  class to deal with inter-class communication.
+	\author Emiliano F. Castejon <castejon at dpi.inpe.br>
+*/
+
+#ifndef TECOMMUNICATOR_H
+  #define TECOMMUNICATOR_H
+  
+  #include "TeMutex.h"
+  #include "TeAgnostic.h"
+
+  #include <list>
+  #include <algorithm>
+  
+  /**
+   * @brief A macro for use when declaring class wrapper functions that will
+   * be connected to a TeCommunicator instance.
+   *
+   * @param function_name The function name.
+   * @param param_type The function pamrameter data type.
+   * @param class_name The function's host class name.
+   * @note The function body must be implemented.
+   */
+  #define TECOMMWRAPPER( function_name, param_type, class_name ) \
+    protected : void function_name( const param_type& x ); \
+    public : static void function_name( const param_type& x, void* objptr ) \
+    { \
+      class_name * casted_ptr = ( class_name * ) objptr; \
+      casted_ptr->function_name( x ); \
+    };
+    
+  /**
+   * @brief This is the template class to deal with inter-class communication.
+   * @note This is a thread-safe class.
+   * @author Emiliano F. Castejon <castejon at dpi.inpe.br>
+   * @ingroup Utils
+   */
+  template< typename DataType >
+  class TeCommunicator 
+  {
+    public :
+    
+      /**
+       * @brief The objects wrapper function pointer.
+       *
+       * @param DataType The data type.
+       * @param void A cast pointer to the active object instance.
+       */        
+      typedef void (*WrapperFuncPtrT)( const DataType&, void* );
+            
+      /**
+       * @brief Default Constructor.
+       *
+       * @param host_obj_ptr A pointer to the active class instance.
+       * @param wrapper_func_ptr A pointer to the class wrapper static
+       * function.
+       * @param enabled_flag The emission/reception enabling/disabling flag.
+       */
+      TeCommunicator( void* host_obj_ptr = 0,
+        WrapperFuncPtrT wrapper_func_ptr = 0,
+        bool enabled_flag = true );
+
+      /**
+       * @brief Default Destructor
+       */
+      ~TeCommunicator();
+      
+      /**
+       * @brief Connects the current instance to a class wrapper function.
+       *
+       * @param host_obj_ptr A pointer to the active class instance.
+       * @param wrapper_func_ptr A pointer to the class wrapper static
+       * function.
+       */      
+      void setHostObj( void* host_obj_ptr = 0, 
+        WrapperFuncPtrT wrapper_func_ptr = 0 );
+      
+      /**
+       * @brief Connects the current instance to another active instance.
+       *
+       * @param external The external active instance reference.
+       * @return true if OK, false on errors.
+       */         
+      bool connect( TeCommunicator< DataType>& external );
+      
+      /**
+       * @brief Disconnects the current instance from all connected instances.
+       */         
+      void disconnect();
+      
+      /**
+       * @brief Disconnects the current instance from another instance.
+       *
+       * @param external The external active instance reference.
+       */        
+      void disconnect( TeCommunicator< DataType>& external );
+      
+      /**
+       * @brief Send data to all connected instances.
+       *
+       * @param data The data to be sent.
+       */        
+      void send( const DataType& data ) const;
+      
+      /**
+       * @brief Enables/disables the data emission and rececption.
+       *
+       * @param enabled_flag The emission/reception enabling/disabling flag.
+       */        
+      void toggle( bool enabled_flag );      
+      
+      /**
+       * @brief Check if this instance emission/reception is enabled.
+       * @return true if enabled, false if disabled.
+       */        
+      bool isEnabled();          
+      
+    protected :
+      
+      /** @typedef TeCommunicator< DataType >* ComPtrT
+       *  Communicator pointer type definition.
+       */
+      typedef TeCommunicator< DataType >* ComPtrT;
+      
+      /** @typedef std::list< ComPtrT > ContainerT
+       *  Connected communicators pointers container type definition.
+       */ 
+      typedef std::list< ComPtrT > ContainerT;
+      
+      /** @typedef typename ContainerT::iterator ContItT
+       *  Connected communicators pointers container iterator type definition.
+       */       
+      typedef typename ContainerT::iterator ContItT;      
+      
+      /**
+       * @brief Used when another active instance requests to be connected to this
+       * instance.
+       *
+       * @param my_pointer The pointer of the active instance.
+       */       
+      void ConnectMe( ComPtrT my_pointer );
+      
+      /**
+       * @brief Used when another active instance requests to be disconnected from 
+       * this instance.
+       *
+       * @param my_pointer The pointer of the active instance.
+       */       
+      void DisconnectMe( ComPtrT my_pointer );
+      
+      /**
+       * @brief Used when another active instance sends data to this instance.
+       *
+       * @param data The sent data.
+       */        
+      inline void Receive( const DataType& data ) const; 
+      
+    private :
+    
+      /**
+       * @brief A flag indication for enabled/disabled.
+       */     
+      bool emission_reception_enabled_;
+    
+      /**
+       * @brief A pointer to the host object wrapper function.
+       */      
+      WrapperFuncPtrT wrapper_func_ptr_;
+      
+      /**
+       * @brief A pointer to the host object active instance.
+       */
+      void* host_obj_ptr_;
+      
+      /**
+       * @brief A list of pointers to the connected active instances.
+       */
+      mutable ContainerT connections_;
+      
+      /** @brief Thread lock instance. */
+      mutable TeMutex lock_instance_;      
+      
+      /**
+       * @brief Copy constructor not allowed.
+       */
+      TeCommunicator( const TeCommunicator< DataType >& ) {};
+      
+      /**
+       * @brief Copy operation not allowed.
+       */
+      const TeCommunicator< DataType >& operator=( 
+        const TeCommunicator< DataType >& ) {};
+      
+  };
+  
+
+  template< typename DataType >  
+  TeCommunicator< DataType >::TeCommunicator( void* host_obj_ptr,
+    WrapperFuncPtrT wrapper_func_ptr, bool enabled_flag )
+  {
+    wrapper_func_ptr_ = 0;
+    host_obj_ptr_ = 0;
+    emission_reception_enabled_ = enabled_flag;
+    
+    setHostObj( host_obj_ptr, wrapper_func_ptr );
+  }
+  
+  
+  template< typename DataType >  
+  TeCommunicator< DataType >::~TeCommunicator()
+  {
+    disconnect();
+  }
+  
+  
+  template< typename DataType >  
+  void TeCommunicator< DataType >::setHostObj( void* host_obj_ptr,
+    WrapperFuncPtrT wrapper_func_ptr )
+  {
+    lock_instance_.lock();
+    
+//   TEAGN_TRUE_OR_THROW( (wrapper_func_ptr != 0), 
+//      ( ( wrapper_func_ptr == 0 ) && ( host_obj_ptr == 0 ) ) || 
+//      ( ( wrapper_func_ptr != 0 ) && ( host_obj_ptr != 0 ) ) ), 
+//      "Invalid receiver_func_ptr/host_obj_ptr parameters" );
+      
+    wrapper_func_ptr_ = wrapper_func_ptr;
+    host_obj_ptr_ = host_obj_ptr;
+    
+    lock_instance_.unLock();
+  }
+  
+  
+  template< typename DataType >
+  bool TeCommunicator< DataType >::connect( 
+    TeCommunicator< DataType>& external )
+  {
+    lock_instance_.lock();
+    
+//    if( ( wrapper_func_ptr_ == 0 ) || ( host_obj_ptr_ == 0 ) ) {
+	  if( wrapper_func_ptr_ == 0 ) {
+      lock_instance_.unLock();
+      
+      TEAGN_LOGERR( "Connecting a inactive communicator instance" );
+      
+      return false;
+    }
+    
+    ContItT it = find( connections_.begin(), connections_.end(),
+      &external );
+
+    if( it == connections_.end() ) {
+      connections_.push_back( &external );
+      external.ConnectMe( this );
+    }
+    
+    lock_instance_.unLock();
+    
+    return true;
+  }
+  
+
+  template< typename DataType >
+  void TeCommunicator< DataType >::disconnect()
+  {
+    lock_instance_.lock();
+    
+    ContItT it = connections_.begin();
+    ContItT it_end = connections_.end();
+
+    while( it != it_end ) {
+      (*it)->DisconnectMe( this );
+      
+      ++it;
+    }
+    
+    connections_.clear();
+    
+    lock_instance_.unLock();
+  }
+  
+  
+  template< typename DataType >
+  void TeCommunicator< DataType >::disconnect( 
+    TeCommunicator< DataType>& external )
+  {
+    lock_instance_.lock();
+    
+    ContItT it = find( connections_.begin(), connections_.end(),
+      &external );
+      
+    if( it != connections_.end() ) {
+      (*it)->DisconnectMe( this );
+      connections_.erase( it );
+    }
+    
+    lock_instance_.unLock();
+  }
+
+  
+  template< typename DataType >
+  void TeCommunicator< DataType >::ConnectMe( 
+    ComPtrT my_pointer )
+  {
+    lock_instance_.lock();
+    
+    ContItT it = find( connections_.begin(), connections_.end(),
+      my_pointer );
+      
+    if( it == connections_.end() ) {
+      connections_.push_back( my_pointer );
+    }
+    
+    lock_instance_.unLock();
+  }
+
+  
+  template< typename DataType >
+  void TeCommunicator< DataType >::DisconnectMe( 
+    ComPtrT my_pointer )
+  {
+    lock_instance_.lock();
+    
+    ContItT it = find( connections_.begin(), connections_.end(),
+      my_pointer );
+      
+    if( it != connections_.end() ) {
+      connections_.erase( it );
+    }
+    
+    lock_instance_.unLock();
+  }
+  
+  
+  template< typename DataType >
+  void  TeCommunicator< DataType >::send( const DataType& data ) const
+  {
+    lock_instance_.lock();
+    
+    if( emission_reception_enabled_ ) {
+      ContItT it = connections_.begin();
+      ContItT it_end = connections_.end();
+      
+      while( it != it_end ) {
+        (*it)->Receive( data );
+        
+        ++it;  
+      }
+    }
+    
+    lock_instance_.unLock();
+  }
+  
+  
+  template< typename DataType >
+  void  TeCommunicator< DataType >::toggle( bool enabled_flag )
+  {
+    lock_instance_.lock();
+    
+    emission_reception_enabled_ = enabled_flag;
+    
+    lock_instance_.unLock();
+  }
+  
+  
+  template< typename DataType >
+  bool TeCommunicator< DataType >::isEnabled()
+  {
+    return emission_reception_enabled_;
+  }  
+
+  
+  template< typename DataType >
+  inline void  TeCommunicator< DataType >::Receive( 
+    const DataType& data ) const
+  {
+    lock_instance_.lock();
+    
+    if( emission_reception_enabled_ && ( wrapper_func_ptr_ != 0 ) ) {
+      wrapper_func_ptr_( data, host_obj_ptr_ );
+    }
+    
+    lock_instance_.unLock();
+  }
+  
+/** @example TeCommunicator_test.cpp
+ *    Shows how to use this class.
+ */  
+    
+#endif
+
diff --git a/src/terralib/kernel/TeConsoleErrorMessage.cpp b/src/terralib/kernel/TeConsoleErrorMessage.cpp
new file mode 100644
index 0000000..a10f646
--- /dev/null
+++ b/src/terralib/kernel/TeConsoleErrorMessage.cpp
@@ -0,0 +1,29 @@
+#include <iostream>
+#include "TeErrorMessage.h"
+
+using namespace std;
+
+class TeConsoleErrorMessage: public TeErrorMessage
+{
+public:
+   
+	TeConsoleErrorMessage(){}
+	~TeConsoleErrorMessage(){}
+	virtual TeMessageReturn apply ( 
+				  const string& appName, 
+				  const string & msgText, 
+				  TeMessageType	/* msgType */,
+				  TeMessageIcon /* iconType */ )
+	{ cout << appName << msgText; return Te_IDOK; }
+
+
+
+};
+
+
+class TeConsoleErrorMessagePrototype: public TeErrorMessagePrototype
+{
+	virtual TeErrorMessage* build()
+	{ return new TeConsoleErrorMessage(); }
+
+}consoleInstance;
diff --git a/src/terralib/kernel/TeConsoleErrorMessage.h b/src/terralib/kernel/TeConsoleErrorMessage.h
new file mode 100644
index 0000000..b96995e
--- /dev/null
+++ b/src/terralib/kernel/TeConsoleErrorMessage.h
@@ -0,0 +1,62 @@
+//***********************************************************************
+//      TerraLib is a GIS Classes and Functions Library that 
+//      strongly explores Spatial Database Technologies 
+//
+//      Copyright � 2002 INPE and Tecgraf/PUC-Rio. 
+//
+//      This library is free software; you can redistribute it 
+//      and/or modify it under the terms of the GNU Lesser General 
+//      Public License as published by the Free Software Foundation
+//      version 2.1.(http://www.opensource.org/licenses/lgpl-license.php)
+//
+//      
+//
+//      Send questions or suggestions about the TerraLib Project 
+//      to terralib at dpi.inpe.br .
+//**************************************************************************//
+/*! \file TeConsoleErrorMessage.h
+    This file deals with the display of error messages in a console
+*/
+#ifndef TeConsoleErrorMessage_H
+#define TeConsoleErrorMessage_H
+
+#include <iostream>
+#include "TeErrorMessage.h"
+
+using namespace std;
+
+//! A class to handle the display of error messages in a console
+class TeConsoleErrorMessage: public TeErrorMessage
+{
+public:
+   
+	//! Constructor
+	TeConsoleErrorMessage()
+	{}
+
+	//! Destructor
+	~TeConsoleErrorMessage()
+	{}
+
+	//! Display the message
+	virtual TeMessageReturn apply ( 
+				  const string& appName, 
+				  const string & msgText, 
+				  TeMessageType	msgType,
+				  TeMessageIcon iconType )
+	{ cout << appName << msgText; return Te_IDOK; }
+
+};
+
+//! A prototype of a Console Error Message handler
+class TeConsoleErrorMessagePrototype: public TeErrorMessagePrototype
+{
+	virtual TeErrorMessage* build()
+	{ return new TeConsoleErrorMessage(); }
+
+};
+
+//! A single instance of the console error message handler
+static TeConsoleErrorMessagePrototype consoleInstance;
+#endif
+
diff --git a/src/terralib/kernel/TeDecoderDatabase.cpp b/src/terralib/kernel/TeDecoderDatabase.cpp
index e83bcd6..2e41faa 100644
--- a/src/terralib/kernel/TeDecoderDatabase.cpp
+++ b/src/terralib/kernel/TeDecoderDatabase.cpp
@@ -30,7 +30,7 @@ of this library and its documentation.
 
 #include <zlib.h>
 
-#ifndef NO_TEJPEG //FAMI
+#ifdef TEJPEG //FAMI
 #include "TeLibJpegWrapper.h"
 #endif
 
@@ -276,7 +276,7 @@ TeDecoderDatabase::getRasterBlock(const string& index, void *block)
 		unsigned long blockLen = params_.blockHeight_ * params_.blockWidth_ * params_.elementSize();	// size after decompression
 		uncompress (reinterpret_cast<unsigned char*>(block),&blockLen,memread_ptr,blobLen);
 	}
-#ifndef NO_TEJPEG //FAMI
+#ifdef TEJPEG //FAMI
 	else if (params_.compression_[band] == TeRasterParams::TeJpeg) //jpeg compression
 	{
 		int nb;
@@ -337,7 +337,7 @@ TeDecoderDatabase::putRasterBlock(const string& index, void *block, long bsize)
 		compress (memAux_, &finalsize,reinterpret_cast<unsigned char*>(block),bsize);
 		return db_->insertRasterBlock(params_.fileName_,index,blockbb.lowerLeft(),blockbb.upperRight(),memAux_,finalsize,band,res,subb);
 	}
-#ifndef NO_TEJPEG //FAMI
+#ifdef TEJPEG //FAMI
 	else if (params_.compression_[band] == TeRasterParams::TeJpeg)	// JPEG compression
 	{
 		int sizec = int(bsize*1.1 + 12.);
@@ -472,7 +472,7 @@ TeDecoderDatabase::getSelectedRasterBlock(TeDecoderMemory* memDec)
 			int status;
 			status = uncompress (reinterpret_cast<unsigned char*>(memDec->data(banda)),&destLen,memAux_,srcLen);
 		}
-#ifndef NO_TEJPEG //FAMI
+#ifdef TEJPEG //FAMI
 		else if (params_.compression_[banda] == TeRasterParams::TeJpeg)
 		{
 			int nb = 1;
diff --git a/src/terralib/kernel/TeDecoderJPEG.cpp b/src/terralib/kernel/TeDecoderJPEG.cpp
new file mode 100644
index 0000000..fb27bd6
--- /dev/null
+++ b/src/terralib/kernel/TeDecoderJPEG.cpp
@@ -0,0 +1,233 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2004 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+#include <TeDecoderJPEG.h>
+#include <TeAsciiFile.h>
+#include <TeUtils.h>
+#include <TeLibJpegWrapper.h>
+
+#include <fstream>
+using std::ifstream;
+using std::ofstream;
+
+TeDecoderJPEG::TeDecoderJPEG():
+	isModified_(false),
+	size_(0),
+	myData_(0)
+{	
+	params_.decoderIdentifier_ = "JPEG";	
+}
+
+
+TeDecoderJPEG::TeDecoderJPEG (const TeRasterParams& par):
+	isModified_(false),
+	size_(0),
+	myData_(0)
+{	
+	params_ = par; 
+	params_.errorMessage_.clear();
+	// 'w' and 'r' modes suppose that the file already exists: try to read the basic information
+	if (params_.mode_ == 'w' || params_.mode_ == 'r')
+	{
+		ifstream dataFile(params_.fileName_.c_str());
+		if (!dataFile)
+		{
+			params_.errorMessage_ = "Fail to access the raster file:" + params_.fileName_;
+			return;
+		}
+		dataFile.close();
+		
+		int nb;
+		if (!Jpeg::ReadFileParams(params_.fileName_, params_.ncols_, params_.nlines_, nb))
+		{
+			params_.errorMessage_ = "Fail to read the parameters from the raster the file.";
+			return;
+		}
+		params_.nBands(nb);
+		params_.setDataType(TeUNSIGNEDCHAR);
+		params_.setPhotometric(TeRasterParams::TeMultiBand);
+		params_.decoderIdentifier_ = "JPEG";
+		params_.blockWidth_ = params_.ncols_;
+		params_.blockHeight_ = params_.nlines_;
+		params_.interleaving_ = TeRasterParams::TePerPixel;
+		TeProjection* proj = new TeNoProjection();
+		params_.projection(proj);
+		delete proj;
+
+		// Try reading navigation parameters from auxiliary file
+		string jgwFile = TeGetName(params_.fileName_.c_str()) +".jgw";
+		try
+		{
+			vector<double> jgw;
+			TeAsciiFile	pFile(jgwFile.c_str());
+			jgw.push_back(pFile.readFloat());
+			jgw.push_back(pFile.readFloat());
+			jgw.push_back(pFile.readFloat());
+			jgw.push_back(pFile.readFloat());
+			jgw.push_back(pFile.readFloat());
+			jgw.push_back(pFile.readFloat());
+			params_.setNavigationParameters(jgw);
+		}
+		catch (...)
+		{
+			// no .jgw inexistent or inconsistent, uses resolution of 1 unit 
+			// and box lower left coordinate of (0.5,0.5)
+			params_.lowerLeftResolutionSize(0.5,0.5,1.0,1.0,params_.ncols_,params_.nlines_,true);
+		}
+	}
+}
+
+TeDecoderJPEG::~TeDecoderJPEG()
+{
+	clear();
+}
+
+
+bool
+TeDecoderJPEG::clear()
+{
+	size_ = 0;
+	if (myData_ == 0)
+	    return true;
+	if ( isModified_ && (params_.mode_ == 'w' || params_.mode_ == 'c') )	// save contents to disk
+	{
+		ofstream dataFile(params_.fileName_.c_str());
+		if (dataFile)
+		{
+			dataFile.close();
+			Jpeg::CompressToFile(myData_, params_.ncols_, params_.nlines_, params_.nBands(), params_.fileName_);
+			isModified_ = false;
+		}
+	}
+	delete [] myData_;
+	myData_ = 0;
+	return true;
+}
+
+
+void
+TeDecoderJPEG::init()
+{
+	params_.status_= TeRasterParams::TeNotReady;
+	params_.interleaving_ = TeRasterParams::TePerPixel;
+
+	// try to allocate enough memory to hold the data
+	if (size_ != params_.nlines_*params_.ncols_*params_.nBands())
+	{
+		size_ = params_.nlines_*params_.ncols_*params_.nBands();
+		if (myData_)
+			delete [] myData_;
+		myData_ = new unsigned char [size_];
+	}
+	if (!myData_)
+		return;
+
+	for (long i=0; i<size_; myData_[i]=static_cast<unsigned char>(params_.dummy_[0]),++i);
+
+	if (params_.mode_ == 'c')	// creating a new file
+	{
+		int nb = params_.nBands();
+		if (nb != 1 && nb != 3)
+		{
+			params_.errorMessage_ = "JPEG files can have only 1 or 3 bands.";
+			return;
+		}
+		ofstream dataFile(params_.fileName_.c_str());
+		if (!dataFile)
+		{
+			params_.errorMessage_ = "Fail to (re)create the raster the file:" + params_.fileName_;
+			return;
+		}
+		dataFile.close();
+		
+		// write navigation file
+		string jgw = TeGetName(params_.fileName_.c_str())+".jgw";
+		try {
+			TeAsciiFile jgwFile(jgw,"w");
+			vector<double> jgw;
+			params_.getNavigationParameters(jgw);
+			for (unsigned int nl=0; nl<6; ++nl)
+			{
+				string line;
+				line = Te2String(jgw[nl]) + "\n";
+				jgwFile.writeString(line);
+			}
+		}
+		catch(...)
+		{}
+		// write initial dummy  data
+		if (!Jpeg::CompressToFile(myData_, params_.ncols_, params_.nlines_, params_.nBands(), params_.fileName_))
+			return;
+		params_.status_ = TeRasterParams::TeReadyToWrite;
+	}
+	else if (params_.mode_ == 'w' || params_.mode_ == 'r')
+	{
+		ifstream dataFile(params_.fileName_.c_str());
+		if (!dataFile)
+		{
+			params_.errorMessage_ = "Fail to open the raster the file:" + params_.fileName_;
+			return;
+		}
+		dataFile.close();
+		
+		int nb;
+		if (!Jpeg::DecompressFile(params_.fileName_.c_str(), myData_, params_.ncols_, params_.nlines_, nb))
+		{
+			params_.errorMessage_ = "Fail to decompress JPEG file.";
+			return;
+		}
+		params_.nBands(nb);
+		if (params_.mode_ == 'w')
+			params_.status_ = TeRasterParams::TeReadyToWrite;
+		else
+			params_.status_ = TeRasterParams::TeReadyToRead;	
+	}
+}
+
+bool 
+TeDecoderJPEG::getElement (int col,int lin, double& val,int band)
+{
+	if (col < 0 || lin < 0 || col >= params_.ncols_ || lin >= params_.nlines_)
+		return false;
+	
+	int position = params_.nBands()*(params_.ncols_*lin+col)+band;
+	val = myData_[position];
+	return true;
+}
+
+bool 
+TeDecoderJPEG::setElement (int col, int lin, double val,int band)
+{
+	if (col < 0 || lin < 0 || col >= params_.ncols_ || lin >= params_.nlines_)
+		return false;
+	int position = params_.nBands()*(params_.ncols_*lin+col)+band;
+	myData_[position] = static_cast<unsigned char>(val);
+	isModified_ = true;
+	return true;
+}
+
+TeDecoderJPEGFactory::TeDecoderJPEGFactory(const string& name): 
+	TeDecoderFactory(name) 
+{
+	TeDecoderFactory::instanceName2Dec()["JPG"]  = "JPEG";	
+	TeDecoderFactory::instanceName2Dec()["JPEG"] = "JPEG";
+}
diff --git a/src/terralib/kernel/TeDecoderJPEG.h b/src/terralib/kernel/TeDecoderJPEG.h
new file mode 100644
index 0000000..4995742
--- /dev/null
+++ b/src/terralib/kernel/TeDecoderJPEG.h
@@ -0,0 +1,81 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2004 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file TeDecoderJPEG.h
+    \brief This file deals with decoding of raster structures in JPEG format
+*/
+#ifndef  __TERRALIB_INTERNAL_DECODERJPEG_H
+#define  __TERRALIB_INTERNAL_DECODERJPEG_H
+
+#include "TeDecoder.h"
+
+//! Implements a decoder for images in JPEG format
+/*  
+	This implementation compress/decompress the entire JPEG image in memory and  
+	access its pixels acessed directly. \par
+	The default file extensions associated to this decoder are ".jpg" and ".jpeg".
+*/
+class TL_DLL TeDecoderJPEG: public TeDecoder
+{
+public:
+	//! Empty constructor
+	TeDecoderJPEG();
+
+	//! Constructor from some parameters
+	TeDecoderJPEG(const TeRasterParams& par);
+
+	//! Destructor
+	~TeDecoderJPEG();
+
+	//! Initializes the internal structures
+	void init();
+
+	//! Releases the internal structures
+	bool clear();
+
+	//! Writes an element
+	bool setElement(int col,int lin, double val, int band=0);
+
+	//! Reads an element
+	bool getElement(int col,int lin, double &val,int band=0);
+
+private:
+	bool isModified_;
+	long size_;
+	unsigned char* myData_;
+};
+
+//! Implements a factory to build decoders to JPEG raster
+class TL_DLL TeDecoderJPEGFactory : public TeDecoderFactory
+{
+public:
+
+	//! Constructor for the factory
+	TeDecoderJPEGFactory(const string& name);
+
+	//! Built the object
+	TeDecoder* build (const TeRasterParams& arg)
+	{  return new TeDecoderJPEG(arg); }
+};
+
+#endif
+
diff --git a/src/terralib/kernel/TeDecoderTIFF.cpp b/src/terralib/kernel/TeDecoderTIFF.cpp
new file mode 100644
index 0000000..dd0cc2b
--- /dev/null
+++ b/src/terralib/kernel/TeDecoderTIFF.cpp
@@ -0,0 +1,1214 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright © 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+
+#include "TeDecoderTIFF.h"
+#include "TeUtils.h"
+#include "TeException.h"
+#include <geovalues.h>
+#include <geo_normalize.h>
+#include <geo_tiffp.h>
+
+#include <fstream>
+#include <cassert>
+using std::ifstream;
+using std::ofstream;
+
+// ---- Public Methods ----- 
+
+TeDecoderTIFF::TeDecoderTIFF(const TeRasterParams& par):
+	tif(0),
+	gtif(0),
+	dataBuffer_(0),
+	nplanes_(0),
+	isGeoTiff_(false),
+	TImage_(0),
+	planar_(PLANARCONFIG_CONTIG),
+	isTiled_(false),
+	tilew_(0),
+	tileh_(0),
+	tilesacross_(0),
+	bytespertile_(0),
+	TCurTile_(-1),
+	rowsperstrip_(0),
+	nstripsperplane_(0),
+	stripsize_(0),
+	TCurStrip_(-1),
+	nBands_(1),
+	data_TeUNSIGNEDCHAR_(0), 
+	data_TeCHAR_(0),   
+	data_TeUNSIGNEDSHORT_(0),  
+	data_TeSHORT_(0),   
+	data_TeINTEGER_(0),   
+	data_TeUNSIGNEDLONG_(0),   
+	data_TeLONG_(0),  
+	data_TeFLOAT_(0), 
+	data_TeDOUBLE_(0)  
+{
+	params_ = par;
+	params_.status_= TeRasterParams::TeNotReady;
+	if (params_.mode_ == 'r')		// file should exists
+	{								// read tiff/geotiff parameters
+		tif=XTIFFOpen(params_.fileName_.c_str(),"r");
+		if (!tif)
+			return;
+
+		gtif = (GTIF*)GTIFNew(tif);
+		readTiffDirectory();
+		if (gtif)
+		{
+			GTIFFree(gtif);
+			gtif = 0;
+		}
+		if (tif)
+		{
+			XTIFFClose(tif); 
+			tif = 0;
+		}
+		params_.decoderIdentifier_ = "TIF";
+	}
+}
+
+void
+TeDecoderTIFF::init()
+{
+	clear();		// reset existent internal structures
+	params_.status_= TeRasterParams::TeNotReady;
+
+	// TIFF image files may not be opened for both reading and writing; 
+	// there is no support for altering the contents of a TIFF file. So
+	// mode == 'w' never initializes this decoder.
+	if (params_.mode_ == 'w')
+	{
+		params_.errorMessage_ = "There is no support for altering the contents of a TIFF file.";
+		return;
+	}
+	if (params_.mode_ != 'r' && params_.mode_ != 'c')	// unknown mode
+	{
+		params_.errorMessage_ = "Invalid access mode.";
+		return;
+	}
+
+	// check the initial permissions on the file
+	if (params_.mode_ == 'c')		// creating a new raster file
+	{
+		ofstream dataFile(params_.fileName_.c_str()); // try to (re)create the file
+		if (!dataFile)
+		{
+			params_.errorMessage_ = "Fail to (re)create the raster the file:" + params_.fileName_;
+			return;
+		}
+		dataFile.close();
+		memManager_.updateParams(params_);
+		memManager_.params().decoderIdentifier_ = "SMARTMEM";
+		memManager_.params().mode_ = 'c';
+		memManager_.init();
+		if (memManager_.params().status_ != TeRasterParams::TeReadyToWrite)
+		{
+			params_.errorMessage_ = "Fail to create the raster the file:" + params_.fileName_;
+			return;
+		}
+		else
+			params_.status_ = TeRasterParams::TeReadyToWrite;
+
+		tif=XTIFFOpen(params_.fileName_.c_str(),"a");
+		if (!tif)
+		{
+			params_.errorMessage_ = "Fail to create a tiff file.";
+			params_.status_= TeRasterParams::TeNotReady;
+			return;
+		}
+
+		// try to create a geotiff instance on the tiff file 
+		gtif = (GTIF*)GTIFNew(tif);
+		if (!gtif)
+		{
+			params_.errorMessage_ = "Fail to instantiate a geotiff file.";
+			params_.status_= TeRasterParams::TeNotReady;
+			return;
+		}
+		return;
+	}
+	
+	ifstream dataFile(params_.fileName_.c_str()); // check if file exists
+	if (!dataFile)
+	{
+		params_.errorMessage_ = "Fail to open the raster the file:" + params_.fileName_;
+		return; 
+	}
+	dataFile.close();				
+	// try to open the tiff file with the desired mode
+	tif=XTIFFOpen(params_.fileName_.c_str(),"r");
+	if (!tif)
+	{
+		params_.errorMessage_ = "Fail to instantiate a tiff file.";
+		return;
+	}
+
+	isTiled_ = TIFFIsTiled(tif) != 0;						// return non-zero if is organized in tiles 
+	TIFFGetField(tif,TIFFTAG_PLANARCONFIG,&planar_);	// storage organization
+	if (isTiled_ && (planar_== PLANARCONFIG_SEPARATE))
+	{
+		XTIFFClose(tif); 
+		tif = 0;
+		params_.errorMessage_ = "There is no support to decode tiff files that are tiled and organized in separate planes.";
+		return;
+	}
+
+	// try to create a geotiff instance on the tiff file 
+	gtif = (GTIF*)GTIFNew(tif);
+	if (!gtif)
+	{
+		XTIFFClose(tif); 
+		tif = 0;
+		params_.errorMessage_ = "Fail to instantiate a geotiff file.";
+		return;
+	}
+	readTiffDirectory();			// read tiff keys
+	getGeoTIFF();					// read geotiff keys
+	params_.errorMessage_.clear();
+	if (allocateWorkMemory())
+		params_.status_ = TeRasterParams::TeReadyToRead;
+	else
+	{
+		XTIFFClose(tif); 
+		tif = 0;
+		GTIFFree(gtif);
+		gtif = 0;
+		params_.errorMessage_ = "Fail to allocate necessary work memory.";
+	}
+}
+
+
+bool 
+TeDecoderTIFF::clear()
+{
+	if (!tif || !gtif)
+		return true;
+    
+  TeRasterParams& mmpars = memManager_.params();  
+
+	if (mmpars.mode_== 'c')
+	{
+		setGeoKeys();
+		int row, col, b;
+		double val=0.0;
+		int nb = mmpars.nBands();
+		long ssize = TIFFScanlineSize(tif);
+		unsigned char* obuf = (unsigned char*)_TIFFmalloc(ssize);
+    
+		for (row=0; row<mmpars.nlines_; ++row)
+		{
+			for (col=0; col<mmpars.ncols_; ++col)
+			{			
+				for (b=0; b<nb; ++b)
+				{
+					if (!memManager_.getElement(col,row,val,b))
+						continue;
+
+					if (mmpars.dataType_[0] == TeDOUBLE)			
+					{
+						((double*)obuf)[col*nb+b] = (double)val;
+					}
+					else if (mmpars.dataType_[0] == TeFLOAT)			
+					{
+						((float*)obuf)[col*nb+b] = (float)val;
+					}
+					else if (mmpars.dataType_[0] == TeLONG)	
+					{
+						((long*)obuf)[col*nb+b] = (long)val;
+					}
+					else if (mmpars.dataType_[0] == TeUNSIGNEDLONG)	
+					{
+						((unsigned long*)obuf)[col*nb+b] = (unsigned long)val;
+					}
+					else if (mmpars.dataType_[0] == TeINTEGER)	
+					{
+						((int*)obuf)[col*nb+b] = (int)val;
+					}
+					else if (mmpars.dataType_[0] == TeUNSIGNEDSHORT)	
+					{
+						((unsigned short*)obuf)[col*nb+b] = (unsigned short)val;
+					}
+					else if (mmpars.dataType_[0] == TeSHORT)	
+					{
+						((short*)obuf)[col*nb+b] = (short)val;
+					}
+					else if (mmpars.dataType_[0] == TeCHAR)											
+					{
+						obuf[col*nb+b] = (char)val;
+					}
+					else											
+					{
+						obuf[col*nb+b] = (unsigned char)val;
+					}
+
+				}
+			}
+			if (!TIFFWriteScanline(tif, obuf, row, 0))
+			{
+				TIFFFlushData(tif);
+				_TIFFfree(obuf);
+				return false;
+			}
+		}
+		TIFFFlushData(tif);
+		_TIFFfree(obuf);
+	}
+	
+	if (dataBuffer_)
+	{
+		for (unsigned int p=0; p<nplanes_; ++p)
+			delete []dataBuffer_[p];
+		delete []dataBuffer_;
+	}
+	dataBuffer_ = 0;
+
+	if (gtif)
+		GTIFFree(gtif);
+	gtif = 0;
+
+	if (tif)
+		XTIFFClose(tif); 
+	tif = 0;
+
+	memManager_.clear();
+	params_.status_ = TeRasterParams::TeNotReady;
+	params_.errorMessage_.clear();
+	return true;
+}
+
+TeDecoderTIFF::~TeDecoderTIFF()
+{
+	clear();
+}
+
+bool
+TeDecoderTIFF::setElement(int col, int lin, double val, int band)
+{
+	return memManager_.setElement(col,lin,val,band);
+}
+
+
+bool
+TeDecoderTIFF::getElement(int col,int lin, double &val,int band)
+{
+	unsigned int pos;
+	unsigned long plane;
+	if (isTiled_)  // tiled organization
+	{
+		if (TCurTile_ != (long)(lin/tileh_))
+		{
+			if (!readTileImageContig(lin/tileh_))
+				return false;
+			else
+				TCurTile_ = (long)(lin/tileh_);
+		}
+		plane = (col/tilew_);
+		lin = lin - TCurTile_*tileh_;
+		col = col - (int)(col/tilew_)*tilew_;
+		pos = lin*tilew_*nBands_+col*nBands_+band; 
+	}	
+	else			// striped organization
+	{
+		if (TCurStrip_ != (long)(lin/rowsperstrip_))
+		{
+			if (!readStrip(lin/rowsperstrip_)) // strip is not in memory
+				return false;
+			else
+				TCurStrip_ = (long)(lin/rowsperstrip_);
+		}
+		lin = lin-(TCurStrip_*rowsperstrip_);
+		plane = 0;
+		if (planar_ == PLANARCONFIG_CONTIG)
+		{
+			pos = lin*params_.ncols_*nBands_+col*nBands_+band;
+		}
+		else
+		{
+			pos = lin*params_.ncols_+col;
+			plane = band;
+		}
+	}
+	(this->*( getelement_ptr_))(plane,pos,val);
+	return true;
+}
+
+
+// --- Internal Methods ---
+void
+TeDecoderTIFF::readTiffDirectory()
+{
+	int ncols=0, nlins = 0;
+	TIFFGetField(tif,TIFFTAG_IMAGEWIDTH,&ncols);
+	TIFFGetField(tif,TIFFTAG_IMAGELENGTH,&nlins);
+	params_.ncols_ = ncols;
+	params_.nlines_ = nlins;
+		
+	short samplesperPixel;
+	if (!TIFFGetField(tif,TIFFTAG_SAMPLESPERPIXEL,&samplesperPixel) )
+		params_.nBands(1);
+	else
+		params_.nBands(samplesperPixel);
+	nBands_ = params_.nBands();
+
+	unsigned long nbitsperpixel_ = 0;
+	if( !TIFFGetField(tif,TIFFTAG_BITSPERSAMPLE,&nbitsperpixel_) )
+	{
+		nbitsperpixel_ = 1;
+		params_.setDataType(TeBIT);
+	}
+	else
+	{
+		short sampleformat;
+		if (!TIFFGetField(tif,TIFFTAG_SAMPLEFORMAT,&sampleformat))
+			sampleformat = 0;
+
+		TeDataType tifType;
+		if (nbitsperpixel_ == 8)
+		{
+			if (sampleformat == SAMPLEFORMAT_INT)
+				tifType = TeCHAR;
+			else 
+				tifType = TeUNSIGNEDCHAR;
+		}
+		else if (nbitsperpixel_ == 16)
+		{
+			if (sampleformat == SAMPLEFORMAT_INT)
+				tifType = TeSHORT;
+			else 
+				tifType = TeUNSIGNEDSHORT;
+		}
+		else if (nbitsperpixel_ == 32)
+		{
+			if (sampleformat == SAMPLEFORMAT_INT)
+				tifType = TeLONG;
+			else if (sampleformat == SAMPLEFORMAT_UINT)
+				tifType = TeUNSIGNEDLONG;
+			else
+				tifType = TeFLOAT;		
+		}
+		else 
+			tifType = TeDOUBLE;
+		params_.setDataType(tifType);
+	}
+	unsigned short	photom_;    // photometric interpretation
+	TIFFGetField(tif,TIFFTAG_PHOTOMETRIC,&photom_);     // photometric interpretation
+	if (samplesperPixel == 3 && 
+	   (photom_ == PHOTOMETRIC_MINISWHITE || 
+	    photom_ == PHOTOMETRIC_MINISBLACK))
+		photom_ = PHOTOMETRIC_RGB;
+	
+	switch (photom_)
+	{
+	case PHOTOMETRIC_PALETTE:
+		params_.setPhotometric(TeRasterParams::TePallete);
+		TImage_ = 2;
+		readLut();
+		break;
+	case PHOTOMETRIC_RGB:
+		params_.setPhotometric(TeRasterParams::TeRGB);
+		TImage_ = 1;
+		break;
+	default:
+		params_.setPhotometric(TeRasterParams::TeMultiBand);
+		TImage_ = 0;
+	}
+	TIFFGetField(tif,TIFFTAG_PLANARCONFIG,&planar_);	// storage organization
+	isTiled_ = TIFFIsTiled(tif) != 0;						// return non-zero if is organized in tiles 
+	if (isTiled_)
+	{
+		TIFFGetField(tif,TIFFTAG_TILEWIDTH,&tilew_);
+		TIFFGetField(tif,TIFFTAG_TILELENGTH,&tileh_);
+		bytespertile_ = TIFFTileSize(tif);
+		tilesacross_ = (params_.ncols_ + tilew_ - 1) / tilew_;
+		params_.blockWidth_ = tilew_;
+		params_.blockWidth_ = tileh_;
+	}
+	else
+	{
+		TIFFGetField(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip_);
+		nstripsperplane_ =  TIFFNumberOfStrips(tif)/nBands_;	
+		stripsize_ = TIFFStripSize(tif);
+	}
+
+	unsigned short compress_;    // photometric interpretation
+	TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress_);
+	if (compress_ != COMPRESSION_NONE)
+		params_.setCompressionMode(TeRasterParams::TeTiffCompression);
+
+	double *minmaxvalues = 0;
+	int count=0;
+	unsigned int b;
+  	if (TIFFGetField(tif, TIFFTAG_MAXSAMPLEVALUE, &count, &minmaxvalues)==1)
+	{
+		for (b=0; b<nBands_; ++b)
+			params_.vmax_[b]=minmaxvalues[b];
+	}
+
+  	if (TIFFGetField(tif, TIFFTAG_MINSAMPLEVALUE, &count, &minmaxvalues)==1)
+	{
+		for (b=0; b<nBands_; ++b)
+			params_.vmin_[b]=minmaxvalues[b];
+	}
+
+	// Read georeference parameters
+	getGeoTIFF();
+	if (!params_.box().isValid())
+		params_.lowerLeftResolutionSize(0.5,0.5,1,1,params_.ncols_,params_.nlines_);
+}
+
+bool 
+TeDecoderTIFF::allocateWorkMemory()
+{
+	if (dataBuffer_ && nplanes_>0)	// release previously used buffer
+	{
+		for (unsigned int p=0; p<nplanes_; ++p)
+			delete []dataBuffer_[p];
+		delete []dataBuffer_;
+	}
+	dataBuffer_ = 0;
+	unsigned long buffersize;
+	if (isTiled_)			
+	{
+		nplanes_ = tilesacross_;
+		buffersize = bytespertile_;
+	}
+	else 
+	{
+		if (planar_ == PLANARCONFIG_SEPARATE)
+			nplanes_ = nBands_;
+		else
+			nplanes_ = 1;
+		buffersize = stripsize_;
+	}
+
+	dataBuffer_ = new unsigned char*[nplanes_];
+	unsigned int i;
+	for (i=0; i<nplanes_; ++i)
+	{
+		dataBuffer_[i] = new unsigned char [buffersize];
+		if (!dataBuffer_[i])
+		{
+			for (unsigned int j=0; j<i; ++j)
+				delete []dataBuffer_[j];
+			delete []dataBuffer_;
+			dataBuffer_=0;
+			return false;
+		}
+	}
+	data_TeUNSIGNEDCHAR_ = (unsigned char**)dataBuffer_;
+	data_TeCHAR_ = (char**)dataBuffer_;
+	data_TeUNSIGNEDSHORT_ = (unsigned short**)dataBuffer_;
+	data_TeSHORT_ = (short**)dataBuffer_;
+	data_TeINTEGER_ = (int**)dataBuffer_;
+	data_TeUNSIGNEDLONG_ = (unsigned long**)dataBuffer_;
+	data_TeLONG_ = (long**)dataBuffer_;
+	data_TeFLOAT_ = (float**)dataBuffer_;
+	data_TeDOUBLE_ = (double**)dataBuffer_;
+
+	switch ( params_.dataType_[0] ) 
+	{
+	case (TeUNSIGNEDCHAR):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeUNSIGNEDCHAR;
+		break;
+	case (TeCHAR) :
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeCHAR;
+		break;
+	case (TeUNSIGNEDSHORT):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeUNSIGNEDSHORT;
+		break;
+	case (TeSHORT):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeSHORT;
+		break;
+	case (TeINTEGER):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeINTEGER;
+		break;
+	case (TeUNSIGNEDLONG):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeUNSIGNEDLONG;
+		break;
+	case (TeLONG):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeLONG;
+		break;
+	case (TeFLOAT):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeFLOAT;
+		break;
+	case (TeDOUBLE):
+		getelement_ptr_ = &TeDecoderTIFF::getElement_TeDOUBLE;
+		break;
+	default:
+		throw TeException( UNKNOWN_ERROR_TYPE, "Invalid raster data type", false );
+	}
+	return true;
+}
+void 
+TeDecoderTIFF::setGeoKeys()
+{
+  TeRasterParams& mmparams = memManager_.params();  
+  
+// Image Size
+	TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, mmparams.ncols_);
+	TIFFSetField(tif, TIFFTAG_IMAGELENGTH, mmparams.nlines_);
+
+// Orientation
+	TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
+
+// Number of bits
+	int nb = mmparams.nbitsperPixel_[0];
+	TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, nb);
+	switch (mmparams.dataType_[0]) 
+	{
+		case TeUNSIGNEDCHAR:
+		case TeUNSIGNEDSHORT:
+		case TeUNSIGNEDLONG:
+			TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
+			break;
+		case TeCHAR:
+		case TeSHORT:
+		case TeINTEGER:
+		case TeLONG:
+			TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_INT);
+			break;
+		case TeFLOAT:
+		case TeDOUBLE:
+			TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
+			break;
+		default:
+			TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_VOID);
+			break;
+	}
+// Number of bands
+	TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, mmparams.nBands() );
+
+// Compression
+	TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
+
+// Planar configuration
+	TIFFSetField(tif,TIFFTAG_PLANARCONFIG,  PLANARCONFIG_CONTIG);
+
+// Photometric type
+	if (mmparams.nBands() == 1) // monobands
+	{
+		if (mmparams.photometric_[0] == TeRasterParams::TePallete)
+		{
+			TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_PALETTE);
+			saveLut();
+			TImage_ = 2;
+		} 
+		else 
+		{
+			TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+			TImage_ = 0;
+		}
+	} 
+	else if (mmparams.nBands() == 3) 
+	{
+		if ( mmparams.photometric_[0] == TeRasterParams::TeRGB ) 
+		{
+			TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
+			TImage_ = 1;
+		} 
+		else 
+		{
+			TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+			TImage_ = 0;
+		}
+	} 
+	else 
+	{
+		TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+		TImage_ = 0;
+	}
+	TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, 1);
+
+	if (mmparams.dxI_ != 0. || mmparams.dyJ_ != 0.) // there is a rotation defined
+	{
+		//	It seems that most viewers are not able to deal with GTIFF_TRANSMATRIX...
+		// ... so let's write a navigation file instead...
+		string tfw = TeGetName(mmparams.fileName_.c_str())+".tfw";
+		FILE* fp = fopen(tfw.c_str(),"w");
+		if (fp)
+		{
+			fprintf(fp,"%.6f\n",mmparams.dxJ_);
+			fprintf(fp,"%.6f\n",mmparams.dyI_);
+			fprintf(fp,"%.6f\n",mmparams.dxI_);
+			fprintf(fp,"%.6f\n",mmparams.dyJ_);
+			fprintf(fp,"%.6f\n",mmparams.x0_);
+			fprintf(fp,"%.6f\n",mmparams.y0_);
+			
+			fclose( fp );
+		}
+	}
+	else // tf there is no rotation use one tie point and pixel scale
+	{
+		double tiepoint[6];
+		tiepoint[0] = 0;
+		tiepoint[1] = 0;
+		tiepoint[2] = 0;
+		tiepoint[3] = mmparams.boundingBox().x1_;
+		tiepoint[4] = mmparams.boundingBox().y2_;
+		tiepoint[5] = 0;
+		TIFFSetField(tif, GTIFF_TIEPOINTS, 6,&tiepoint); 
+
+		double resolution[3];
+		resolution[0] = mmparams.resx_;
+		resolution[1] = mmparams.resy_;
+		resolution[2] = 0;
+		TIFFSetField(tif, GTIFF_PIXELSCALE, 3,&resolution);
+	}
+
+	// projection parameters
+	if (!mmparams.projection() || mmparams.projection()->name() == "NoProjection")
+	{
+		// at least try to write a tfw file
+		string tfw = TeGetName(mmparams.fileName_.c_str())+".tfw";
+		FILE* fp = fopen(tfw.c_str(),"w");
+		if (fp)
+		{
+			vector<double> tfw;
+			mmparams.getNavigationParameters(tfw);
+			for (unsigned int nl=0; nl<6; ++nl)
+				fprintf(fp,"%8.4f\n",tfw[nl]);
+				
+		  fclose( fp );
+		}
+		return;
+	}
+	GTIFKeySet(gtif, GTRasterTypeGeoKey, TYPE_SHORT, 1, RasterPixelIsArea);
+	const TeProjectionParams& paramas = mmparams.projection()->params();
+	const string& projname = mmparams.projection()->name();
+	if (projname == "LatLong")
+	{
+		GTIFKeySet(gtif, GTModelTypeGeoKey, TYPE_SHORT, 1, ModelTypeGeographic);
+		GTIFKeySet(gtif, GeogAngularUnitsGeoKey, TYPE_SHORT, 1, Angular_Degree);
+	}
+	else
+	{
+		GTIFKeySet(gtif, GTModelTypeGeoKey, TYPE_SHORT, 1, ModelTypeProjected);
+		GTIFKeySet(gtif, ProjLinearUnitsGeoKey, TYPE_SHORT, 1,Linear_Meter);
+		if (projname == "UTM")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_TransverseMercator);
+			GTIFKeySet(gtif, ProjNatOriginLatGeoKey, TYPE_DOUBLE,1,paramas.lat0*TeCRD);
+			GTIFKeySet(gtif, ProjNatOriginLongGeoKey, TYPE_DOUBLE,1,paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjScaleAtNatOriginGeoKey, TYPE_DOUBLE,1,paramas.scale);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE,1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey, TYPE_DOUBLE,1,paramas.offy);
+		}
+		else if (projname == "Mercator")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_Mercator);
+			GTIFKeySet(gtif, ProjNatOriginLongGeoKey, TYPE_DOUBLE,1,paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjNatOriginLatGeoKey, TYPE_DOUBLE,1,paramas.stlat1*TeCRD);
+			GTIFKeySet(gtif, ProjScaleAtNatOriginGeoKey, TYPE_DOUBLE,1,paramas.scale);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE,1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey, TYPE_DOUBLE,1,paramas.offy);
+		}
+		else if (projname == "LambertConformal")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_LambertConfConic_2SP);
+			GTIFKeySet(gtif, ProjFalseOriginLatGeoKey,TYPE_DOUBLE, 1, paramas.lat0*TeCRD);
+			GTIFKeySet(gtif, ProjFalseOriginLongGeoKey, TYPE_DOUBLE, 1, paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjStdParallel1GeoKey, TYPE_DOUBLE, 1, paramas.stlat1*TeCRD);
+			GTIFKeySet(gtif, ProjStdParallel2GeoKey, TYPE_DOUBLE, 1, paramas.stlat2*TeCRD);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey,TYPE_DOUBLE, 1,paramas.offy);
+		}
+		else if (projname == "Polyconic")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_Polyconic);
+			GTIFKeySet(gtif, ProjNatOriginLatGeoKey,TYPE_DOUBLE, 1, paramas.lat0*TeCRD);
+			GTIFKeySet(gtif, ProjNatOriginLongGeoKey, TYPE_DOUBLE, 1, paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey,TYPE_DOUBLE, 1,paramas.offy);
+			GTIFKeySet(gtif, ProjScaleAtNatOriginGeoKey, TYPE_DOUBLE,1,paramas.scale);
+		}
+		else if (projname == "CylindricalEquidistant")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_Equirectangular);
+			GTIFKeySet(gtif, ProjCenterLatGeoKey,TYPE_DOUBLE, 1, paramas.stlat1*TeCRD);
+			GTIFKeySet(gtif, ProjCenterLongGeoKey, TYPE_DOUBLE, 1, paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey,TYPE_DOUBLE, 1,paramas.offy);
+		}
+		else if (projname == "PolarStereographic")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_PolarStereographic);
+			GTIFKeySet(gtif, ProjNatOriginLatGeoKey, TYPE_DOUBLE,1,paramas.lat0*TeCRD);
+			GTIFKeySet(gtif, ProjStraightVertPoleLongGeoKey, TYPE_DOUBLE,1,paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjScaleAtNatOriginGeoKey, TYPE_DOUBLE,1,paramas.scale);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE,1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey, TYPE_DOUBLE,1,paramas.offy);
+		}
+		else if (projname == "Albers")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_AlbersEqualArea);
+			GTIFKeySet(gtif, ProjStdParallel1GeoKey, TYPE_DOUBLE, 1, paramas.stlat1*TeCRD);
+			GTIFKeySet(gtif, ProjStdParallel2GeoKey, TYPE_DOUBLE, 1, paramas.stlat2*TeCRD);
+			GTIFKeySet(gtif, ProjNatOriginLatGeoKey,TYPE_DOUBLE, 1, paramas.lat0*TeCRD);
+			GTIFKeySet(gtif, ProjNatOriginLongGeoKey, TYPE_DOUBLE, 1, paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey,TYPE_DOUBLE, 1,paramas.offy);
+		}
+		else if (projname == "Miller")
+		{
+			GTIFKeySet(gtif, ProjCoordTransGeoKey, TYPE_SHORT, 1, CT_MillerCylindrical);
+			GTIFKeySet(gtif, ProjCenterLatGeoKey, TYPE_DOUBLE, 1, paramas.lat0*TeCRD);
+			GTIFKeySet(gtif, ProjCenterLongGeoKey, TYPE_DOUBLE, 1, paramas.lon0*TeCRD);
+			GTIFKeySet(gtif, ProjFalseEastingGeoKey, TYPE_DOUBLE, 1,paramas.offx);
+			GTIFKeySet(gtif, ProjFalseNorthingGeoKey,TYPE_DOUBLE, 1,paramas.offy);
+		}
+	}
+
+	// datum parameters
+	if (paramas.datum.name() == "CorregoAlegre")
+		GTIFKeySet(gtif, GeogGeodeticDatumGeoKey, TYPE_SHORT, 1,Datum_Corrego_Alegre);
+	else if (paramas.datum.name() == "WGS84")
+		GTIFKeySet(gtif, GeogGeodeticDatumGeoKey, TYPE_SHORT, 1,Datum_WGS84);
+	else if (paramas.datum.name() == "SAD69")
+		GTIFKeySet(gtif, GeogGeodeticDatumGeoKey, TYPE_SHORT, 1,Datum_South_American_Datum_1969);
+	else if (paramas.datum.name() == "Aratu")
+		GTIFKeySet(gtif, GeogGeodeticDatumGeoKey, TYPE_SHORT, 1,Datum_Aratu);
+	else
+		GTIFKeySet(gtif, GeogGeodeticDatumGeoKey, TYPE_SHORT, 1,32767);
+
+	GTIFKeySet(gtif, GeogCitationGeoKey, TYPE_ASCII,1,paramas.datum.name().c_str());
+	GTIFKeySet(gtif, GeogSemiMajorAxisGeoKey,TYPE_DOUBLE, 1, paramas.datum.radius());
+	GTIFKeySet(gtif, GeogSemiMinorAxisGeoKey,TYPE_DOUBLE, 1, paramas.datum.radius()*(1-paramas.datum.flattening()));
+	GTIFWriteKeys(gtif);
+}
+
+bool
+TeDecoderTIFF::getGeoTIFF()
+{
+	params_.resx_ = params_.resy_ = 1;
+
+	//---------------- navigation parameters 
+
+	bool isGeoreferenced_ = false;
+	// The three tags defined below may be used for defining the relationship between R (raster space)
+	// and M (model space), and the relationship may be diagrammed as: 
+	//           ModelPixelScaleTag 
+	//           ModelTiepointTag         
+	//    R  ------------ OR --------------> M
+	//  (I,J,K)  ModelTransformationTag   (X,Y,Z)
+
+	double *tiepoints = 0;
+	double *pixel_scale = 0;
+	double *transform   = 0;
+
+	int count=0, tiepoint_count=0, transform_count=0;
+  	TIFFGetField(tif, GTIFF_TIEPOINTS, &tiepoint_count,&tiepoints);
+	TIFFGetField(tif, GTIFF_PIXELSCALE, &count, &pixel_scale); 
+ 	TIFFGetField(tif, GTIFF_TRANSMATRIX, &transform_count, &transform); 
+
+	GTIFDefn defn;
+	int hasGTifDefn;
+	hasGTifDefn = GTIFGetDefn(gtif, &defn);
+	bool isCentreOfPixel = false;
+	if (hasGTifDefn)
+	{
+		short mtype;
+		GTIFKeyGet(gtif,GTRasterTypeGeoKey,&mtype,0,1);
+		if (mtype == RasterPixelIsPoint)
+			isCentreOfPixel = true;
+	}
+
+	if (count >= 3 && tiepoint_count >= 6) // if we have 1 tie point and pixel scale
+	{
+		params_.topLeftResolutionSize(tiepoints[3]-tiepoints[0]*pixel_scale[0],
+			                            tiepoints[4]-tiepoints[1]*pixel_scale[1],
+										pixel_scale[0],pixel_scale[1],
+										params_.ncols_,params_.nlines_,isCentreOfPixel);
+		isGeoreferenced_ = true;
+	}
+	else if (transform_count == 16) // if we have a transformation matrix
+	{
+		vector<double> wf;
+		wf.push_back(transform[0]);
+		wf.push_back(transform[1]);
+		wf.push_back(transform[4]);
+		wf.push_back(transform[5]);
+		wf.push_back(transform[3]);
+		wf.push_back(transform[7]);
+		params_.setNavigationParameters(wf);
+		isGeoreferenced_ = true;
+
+	}
+	// else if (tiepoint_count > 6)
+	// {
+	//		we should use the set of tiepoints to interpolate... not implemented yet...
+	// }
+
+
+	// if we couldn't get the georrefencing information from the tags
+	// try to get if from an external (.tfw) world file
+	if (!isGeoreferenced_) 
+	{
+		size_t dotpos = params_.fileName_.rfind('.');
+		if (dotpos != std::string::npos)
+		{
+			vector<double> wf;
+			wf.resize(6);
+			string tfwfile = params_.fileName_.substr(0,dotpos+1) + "tfw";
+			FILE* fp = fopen(tfwfile.c_str(),"r");
+			if (!fp)
+			{
+				tfwfile = params_.fileName_.substr(0,dotpos+1) + "TFW";
+				fp = fopen(tfwfile.c_str(),"r");
+			}
+
+			if (fp)
+			{
+				isGeoreferenced_ = true;
+				char val[40];
+				for (int ii=0; ii<6; ++ii)
+				{
+					if (fscanf(fp,"%s",val))
+						wf[ii] = TeRoundD(atof(val)); 
+					else
+					{
+						isGeoreferenced_ = false;
+						break;
+					}
+				}
+				fclose(fp);
+			}
+			if (isGeoreferenced_)
+				params_.setNavigationParameters(wf);
+		}
+	}
+
+	//---------------- projection parameters 
+	if (!hasGTifDefn)
+	{
+		if (!params_.projection())
+		{
+			TeProjection* noproj = new TeNoProjection();
+			params_.projection(noproj);
+			delete noproj;
+		}
+		return false;
+	}
+	else
+	{
+		// 1) Get Datum parameters
+		TeDatum mDatum;
+		if (defn.Datum == Datum_South_American_Datum_1969)
+			mDatum = TeDatumFactory::make("SAD69");
+		else if (defn.Datum == Datum_WGS84)
+			mDatum = TeDatumFactory::make("WGS84");
+		else if (defn.Datum == Datum_Corrego_Alegre)
+			mDatum = TeDatumFactory::make("CorregoAlegre");
+		else if (defn.Datum == Datum_Aratu)
+			mDatum = TeDatumFactory::make("Aratu");
+		else
+		{
+			if(params_.projection())
+				mDatum = params_.projection()->datum();
+			else
+            {
+				double TISemiMajor = defn.SemiMajor, TISemiMinor = defn.SemiMinor;
+				// unknown datum... try to find a similar one based on SemiAxis values
+				if (defn.SemiMajor == 0. && defn.SemiMinor == 0.)
+				{
+					TISemiMajor =6.371000e+06;		// default parameter of a spherical ellipsoid
+					TISemiMinor =6.371000e+06;            
+				}
+				if (!findDatum(TISemiMajor,(TISemiMajor - TISemiMinor)/TISemiMajor,mDatum))
+					mDatum = TeDatum("UserDefined",TISemiMajor,(TISemiMajor - TISemiMinor)/TISemiMajor,0.,0.,0.);
+			}
+		}
+
+		// 2) Get projection parameters
+		// if geographical model
+		short mtype;
+		GTIFKeyGet(gtif, GTModelTypeGeoKey,&mtype, 0, 1 );
+		if (mtype == ModelTypeGeographic)	 
+		{
+			TeProjection* latlong = new TeLatLong(mDatum);
+			params_.projection(latlong);
+			delete latlong;
+			return true;
+		}		
+
+		if (mtype != ModelTypeProjected)
+		{
+			if (!params_.projection())
+			{
+				TeProjection* noproj = new TeNoProjection();
+				params_.projection(noproj);
+				delete noproj;
+				return false;
+			}
+			return true;
+		}
+		TeProjectionParams mProjPars;	
+		mProjPars.units = "Meters"; // == not necessarily true... we should check for the units as defined in geotiff	
+		mProjPars.datum = mDatum;
+
+		// just set all parameters available from defn... some of them will not be used by some projections
+		mProjPars.lat0 = defn.ProjParm[0]*defn.UOMAngleInDegrees*TeCDR;
+		mProjPars.lon0 = defn.ProjParm[1]*defn.UOMAngleInDegrees*TeCDR;
+		mProjPars.stlat1 = defn.ProjParm[2]*defn.UOMAngleInDegrees*TeCDR;
+		mProjPars.stlat2 = defn.ProjParm[3]*defn.UOMAngleInDegrees*TeCDR;
+		mProjPars.scale = defn.ProjParm[4];
+		mProjPars.offx = defn.ProjParm[5];
+		mProjPars.offy = defn.ProjParm[6];
+		if (mProjPars.offy > 0)
+			mProjPars.hemisphere = TeSOUTH_HEM;
+		else
+			mProjPars.hemisphere = TeNORTH_HEM;
+
+		// now make the correspondence between geotiff projections and terralib projections
+		switch (defn.CTProjection)
+		{
+			case CT_TransverseMercator : 
+				mProjPars.name = "UTM";
+			break;
+			case CT_Mercator :
+				mProjPars.name = "Mercator";
+			break;
+			case CT_LambertConfConic_2SP :
+				mProjPars.name = "LambertConformal";
+			break;
+			case CT_Polyconic : 
+				mProjPars.name = "Polyconic";
+			break;
+			case CT_Equirectangular :
+				mProjPars.name = "CylindricalEquidistant";
+			break;
+			case CT_PolarStereographic :
+				mProjPars.name = "PolarStereographic";
+			break;
+			case CT_AlbersEqualArea :
+				mProjPars.name = "Albers";
+			break;
+			case CT_MillerCylindrical:
+				mProjPars.name = "Miller";
+			break;
+			case CT_Sinusoidal:
+				mProjPars.name = "TeSinusoidal";
+			break;
+			default:
+				TeBox bb = params_.boundingBox();
+				if (bb.x1_ >= -180 && bb.x1_ <= 180 && bb.y1_ >= -90 && bb.y2_ <= 90)
+					mProjPars.name = "LatLong";
+				else
+				{
+					TeProjection* noproj = TeProjectionFactory::make(mProjPars);
+					params_.projection(noproj);
+					delete noproj;
+					return false;
+				}
+			break;
+		}
+		TeProjection* proj = TeProjectionFactory::make(mProjPars);
+		params_.projection(proj);
+		delete proj;
+		return true;
+	}
+}
+
+bool 
+TeDecoderTIFF::readStrip(unsigned long strip)
+{
+	assert(tif);
+	if (planar_ == PLANARCONFIG_CONTIG)	// for planar config all planes are in the strip
+		return (TIFFReadEncodedStrip(tif, strip, dataBuffer_[0], -1) > 0);
+	
+	for (unsigned int i=0; i<nBands_; ++i)	// for separated config we have to read each plane individually
+	{
+		if (TIFFReadEncodedStrip(tif, (strip+i*nstripsperplane_), dataBuffer_[i],-1) == -1)
+			return false;
+	}
+	return true;
+}
+
+bool 
+TeDecoderTIFF::readTileImageContig(unsigned long tiler) 
+{
+	tiler *= tilesacross_;
+	unsigned long i;
+	for (i=0; i<tilesacross_; ++i)
+	{
+		if (TIFFReadEncodedTile(tif,tiler+i,dataBuffer_[i],-1) == -1)
+			return false;
+	}
+	return true;
+}
+
+// --- To read and set a LUT table ---
+
+static int checkmap(int n, unsigned short *r, unsigned short *g, unsigned short *b,long val)
+{
+    while (n-- >= 0)
+		if (*r++ > val || *g++ > val || *b++ > val)
+			return (16);
+    return (8);
+}
+
+static unsigned short CVT1 (unsigned long x,long value)	//CVT is used in DEC station
+{
+	unsigned long den = (1L << 16) -1L;
+	unsigned short num = (unsigned short)((x*value)/den); // normalize lut value
+	return num;
+}
+
+bool
+TeDecoderTIFF::readLut()
+{
+	unsigned short *rmap,*gmap,*bmap;
+	if (!TIFFGetField(tif, TIFFTAG_COLORMAP, &rmap, &gmap, &bmap))
+		return false;
+	params_.lutr_.clear();
+	params_.lutb_.clear();
+	params_.lutg_.clear();
+
+	unsigned int n = params_.lutr_.size();
+	
+	int nindexes = (1 << params_.nbitsperPixel_[0]);
+	long maxval = (long)pow(2.,params_.nbitsperPixel_[0])-1;
+
+	int x;
+	if (checkmap (nindexes,rmap,gmap,bmap,maxval) == 16)
+	{
+		for(x=0; x<nindexes; ++x)
+		{
+			params_.lutr_.push_back(CVT1(rmap[x],maxval)); 
+			params_.lutg_.push_back(CVT1(gmap[x],maxval));
+			params_.lutb_.push_back(CVT1(bmap[x],maxval));
+		}
+	}
+	else
+	{
+		for(x=0; x<nindexes; ++x)
+		{
+			params_.lutr_.push_back(rmap[x]);
+			params_.lutg_.push_back(gmap[x]);
+			params_.lutb_.push_back(bmap[x]);
+		}
+	}
+	n = params_.lutr_.size();
+	return true;
+}
+
+void
+TeDecoderTIFF::saveLut()
+{
+	if (!tif)
+		return;
+    
+  TeRasterParams& mmparams = memManager_.params();  
+
+	int nentries = mmparams.lutr_.size();
+	if (nentries <= 0) 
+		return;
+
+	unsigned short* lutr = new unsigned short[nentries];
+	unsigned short* lutg = new unsigned short[nentries];
+	unsigned short* lutb = new unsigned short[nentries];
+
+	for (int i=0; i<nentries; i++)
+	{
+		lutr[i] = mmparams.lutr_[i]*255;
+		lutg[i] = mmparams.lutg_[i]*255;
+		lutb[i] = mmparams.lutb_[i]*255;
+	}
+	TIFFSetField(tif, TIFFTAG_COLORMAP,lutr,lutg,lutb);
+	delete [] lutr;
+	delete [] lutg;
+	delete [] lutb;
+}
+
+
+inline void TeDecoderTIFF::getElement_TeUNSIGNEDCHAR(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeUNSIGNEDCHAR_ != 0 );
+	val = (double)data_TeUNSIGNEDCHAR_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeCHAR(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeCHAR_ != 0 );
+	val = (double)data_TeCHAR_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeUNSIGNEDSHORT(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeUNSIGNEDSHORT_ != 0 );
+	val = (double)data_TeUNSIGNEDSHORT_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeSHORT(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeSHORT_ != 0 );
+	val = (double)data_TeSHORT_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeINTEGER(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeINTEGER_ != 0 );
+	val = (double)data_TeINTEGER_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeUNSIGNEDLONG(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeUNSIGNEDLONG_ != 0 );
+	val = (double)data_TeUNSIGNEDLONG_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeLONG(const long& plane, const long& pos,double& val)
+{
+	assert(data_TeLONG_ != 0 );
+	val = (double)data_TeLONG_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeFLOAT(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeFLOAT_ != 0 );
+	val = (double)data_TeFLOAT_[plane][pos];
+}
+
+
+inline void TeDecoderTIFF::getElement_TeDOUBLE(const long& plane, const long& pos, double& val)
+{
+	assert(data_TeDOUBLE_ != 0 );
+	val = (double)data_TeDOUBLE_[plane][pos];
+}
+
+
+TeDecoderTIFFFactory::TeDecoderTIFFFactory(const string& name): 
+	TeDecoderFactory(name) 
+{
+	// Defines the decoder identifiers synonyms
+	TeDecoderFactory::instanceName2Dec()["TIF"] = "TIF";	
+	TeDecoderFactory::instanceName2Dec()["TIFF"] = "TIF";
+}
+
diff --git a/src/terralib/kernel/TeDecoderTIFF.h b/src/terralib/kernel/TeDecoderTIFF.h
new file mode 100644
index 0000000..2a51b2e
--- /dev/null
+++ b/src/terralib/kernel/TeDecoderTIFF.h
@@ -0,0 +1,185 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file TeDecoderTIFF.h
+    \brief This file contais functions to deal with raster images in Tiff/GeoTIFF format.
+*/
+
+#ifndef  __TERRALIB_INTERNAL_DECODERTIFF_H
+#define  __TERRALIB_INTERNAL_DECODERTIFF_H
+
+#include "TeDecoder.h"
+#include "TeDecoderSmartMem.h"
+
+// LibTIFF includes
+#include "geotiff.h"
+#include "xtiffio.h"
+
+
+//! Implements a decoder to a raster in TIFF (Tagged Image File Format) format with or without geographical tags (geotiff)
+/*!
+	Decoder TIFF is based on geotiff libray (http://remotesensing.org/geotiff/geotiff.html).
+	This imposes some restrictions to this decoder. Using libtiff TIFF image files may not 
+	be opened for both reading and writing access, or, there is no support for altering the contents of 
+	a TIFF file. So this decoder is limited to create new tiff files or to read existing ones. \par
+	The default file extensions associated to this decoder are ".tif" or ".tiff". \par
+	\note This decoder doesn't support tiff files that are organizes in tiles and in separated planes.
+*/
+class TL_DLL TeDecoderTIFF: public TeDecoder
+{
+	TIFF 	*tif;       		// TIFF directory structure
+	GTIF	*gtif;			// GEOTIFF directory structure
+
+	unsigned char** dataBuffer_;	// buffer to hold decoded data
+					// for tile data it holds 1 tile
+					// for stripped data it holds 1 strip with all the planes
+
+	unsigned int	nplanes_;	// number of planes or logical division of the data within the files
+
+	bool		isGeoTiff_;	// indicates if the data has geographical information
+	short 		TImage_;	// 0=MONOIMAGE, 1=RGBIMAGE, 2=PALLETE 
+	unsigned short	planar_;	// storage organization : PLANARCONFIG_CONTIG or PLANARCONFIG_SEPARATE
+	
+	bool		isTiled_;	// indicates if the data is organizes in tiles 
+	unsigned long	tilew_,tileh_;	// tile and height
+	unsigned long	tilesacross_;	// number of tiles to compose a row of image
+	unsigned long	bytespertile_;	// number of bytes per tile
+	long		TCurTile_;	// current tile decoded in internal memory
+
+	unsigned long	rowsperstrip_;	// number of rows per strip
+	unsigned long	nstripsperplane_;	// number of strips per plane of data
+	unsigned long	stripsize_;	// number of bytes per strip
+	long		TCurStrip_;	// current line in memory
+	
+	unsigned int	nBands_;		// number of samples per data
+
+	// This is an internal smart manager to support the creation of tiffs 
+	TeDecoderSmartMem memManager_;
+    
+	//	Reads TIFF Directory and fills tif structure
+	void readTiffDirectory();
+
+	// Reads the georeferencing keys of a geotiff data
+	bool getGeoTIFF();
+
+	// Sets the georeferencing keys of a geotiff data
+	void setGeoKeys();
+
+	// Reads LUT information
+	bool readLut();
+
+	// Saves LUT information
+	void saveLut();
+
+	// Reads enough tiles to compose a row of data
+	bool readTileImageContig(unsigned long tiler);
+
+	// Reads a strip
+	bool readStrip(unsigned long strip);
+
+	// Allocates te internal memory
+	bool allocateWorkMemory();
+
+	//! Type definition for the getElement function pointer      
+	typedef void (TeDecoderTIFF::*GetEleFunctPtrT)( const long& plane, const long& pos, double& val );
+
+	//! A pointer to the current getElement method following the current data type
+	GetEleFunctPtrT getelement_ptr_;
+
+	//! A casted pointer to the current data
+	unsigned char** data_TeUNSIGNEDCHAR_;  
+
+	//! A casted pointer to the current data
+	char** data_TeCHAR_;  
+
+	//! A casted pointer to the current data
+	unsigned short** data_TeUNSIGNEDSHORT_;  
+
+	//! A casted pointer to the current data
+	short** data_TeSHORT_;  
+
+	//! A casted pointer to the current data
+	int** data_TeINTEGER_;  
+
+	//! A casted pointer to the current data
+	unsigned long** data_TeUNSIGNEDLONG_;  
+
+	//! A casted pointer to the current data
+	long** data_TeLONG_;  
+
+	//! A casted pointer to the current data
+	float** data_TeFLOAT_;
+
+	//! A casted pointer to the current data
+	double** data_TeDOUBLE_;  
+
+	inline void getElement_TeUNSIGNEDCHAR(const long& plane, const long& pos, double& val );  
+
+	inline void getElement_TeCHAR(const long& plane, const long& pos, double& val );  
+
+	inline void getElement_TeUNSIGNEDSHORT(const long& plane, const long& pos, double& val );
+
+	inline void getElement_TeSHORT(const long& plane, const long& pos, double& val );
+
+	inline void getElement_TeINTEGER(const long& plane, const long& pos, double& val );
+
+	inline void getElement_TeUNSIGNEDLONG( const long& plane, const long& pos, double& val );
+
+	inline void getElement_TeLONG(const long& plane, const long& pos, double& val );
+
+	inline void getElement_TeFLOAT(const long& plane, const long& pos, double& val );
+
+	inline void getElement_TeDOUBLE(const long& plane, const long& pos, double& val );  
+
+public:
+
+	//! Construtor from parameters 
+	TeDecoderTIFF( const TeRasterParams& );
+
+	//!	Normal destructor
+	~TeDecoderTIFF();
+
+	//! Initializes the internal structures
+	void init();
+
+	//! Clear internal structures
+	bool clear();
+
+	//! Reads an element
+	bool setElement (int col,int lin, double val, int band=0);
+
+	//! Writes an element
+	bool getElement (int col,int lin, double &val,int band=0);
+};
+
+//! Implements a tiff decoder factory
+class TL_DLL TeDecoderTIFFFactory : public TeDecoderFactory
+{
+public:
+
+	TeDecoderTIFFFactory(const string& name);
+
+	TeDecoder* build (const TeRasterParams& arg)
+	{  return new TeDecoderTIFF(arg); }
+};
+
+#endif
diff --git a/src/terralib/kernel/TeExternalTheme.cpp b/src/terralib/kernel/TeExternalTheme.cpp
index dde5450..93d46a8 100644
--- a/src/terralib/kernel/TeExternalTheme.cpp
+++ b/src/terralib/kernel/TeExternalTheme.cpp
@@ -533,7 +533,7 @@ bool TeExternalTheme::buildGrouping(const TeGrouping& g, TeChronon chr, vector<m
 		// Insert the attributes in a multimap that relates the attribute 
 		// representation and its statistic type
 		TeGroupingAttr attrMMap;
-		pair<TeAttributeRep, TeStatisticType> attr1 (
+		std::pair<TeAttributeRep, TeStatisticType> attr1 (
 			TeAttributeRep(grouping_.groupAttribute_), statType);
 		attrMMap.push_back(attr1);
 
diff --git a/src/terralib/kernel/TeGeometryAlgorithms.cpp b/src/terralib/kernel/TeGeometryAlgorithms.cpp
index 1f5fb6b..10736aa 100644
--- a/src/terralib/kernel/TeGeometryAlgorithms.cpp
+++ b/src/terralib/kernel/TeGeometryAlgorithms.cpp
@@ -1597,7 +1597,7 @@ void removeDuplicatedCoords(vector<TeCoord2D>& coordSet)
 TePolygon ConvexHull(vector<TeCoord2D>& coordSet)
 {
 	// sorting the coords
-	sort(coordSet.begin(), coordSet.end(), xOrder<TeCoord2D>());
+	std::sort(coordSet.begin(), coordSet.end(), xOrder<TeCoord2D>());
 
 	register unsigned int i = 0;
 	register unsigned int n = coordSet.size();
@@ -2220,7 +2220,7 @@ TeLinearRing TeSimpleClosedPath(const TePointSet& pSet)
 
 	ThetaOrder tr(pSet[0].location());
 
-	sort(l.begin(), l.end(), tr);
+	std::sort(l.begin(), l.end(), tr);
 
 	l.add(l[0]);
 
diff --git a/src/terralib/kernel/TeInitRasterDecoders.cpp b/src/terralib/kernel/TeInitRasterDecoders.cpp
index c0bc4a1..197e29e 100644
--- a/src/terralib/kernel/TeInitRasterDecoders.cpp
+++ b/src/terralib/kernel/TeInitRasterDecoders.cpp
@@ -26,6 +26,9 @@ of this library and its documentation.
 #include "TeDecoderMemory.h"
 #include "TeDecoderSmartMem.h"
 
+#define NO_TETIFF
+#define NO_TEJPEG
+
 #ifndef NO_TETIFF //FAMI
 #include "TeDecoderTIFF.h"
 #endif
diff --git a/src/terralib/kernel/TeProxMatrixConstructionStrategy.cpp b/src/terralib/kernel/TeProxMatrixConstructionStrategy.cpp
index 1c55fc1..dfaa875 100644
--- a/src/terralib/kernel/TeProxMatrixConstructionStrategy.cpp
+++ b/src/terralib/kernel/TeProxMatrixConstructionStrategy.cpp
@@ -691,7 +691,7 @@ TeProxMatrixOpenNetworkStrategy::Construct (TeProxMatrixImplementation* imp)
 	{
 		// Get object1 id and representation
 		string object_id1 = (*itobj1).getObjectId();
-		cout << object_id1 << "id " << id << endl;
+		std::cout << object_id1 << "id " << id << endl;
 
 		TeCoord2D p1; 
 		if (!TeFindObjectCentroid (itobj1->getGeometries(), params_.geom_rep1_, p1))
@@ -823,7 +823,7 @@ TeProxMatrixOpenNetworkStrategy2:: Construct (TeProxMatrixImplementation* imp)
 		{
 			// Get object1 id and representation
 			string object_id1 = (*itobj1).getObjectId();
-					cout << "object1 " << object_id1 << "id" << id << endl;
+					std::cout << "object1 " << object_id1 << "id" << id << endl;
 
 			TeCoord2D p1; 
 			if (!TeFindObjectCentroid (itobj1->getGeometries(), params_.geom_rep1_, p1))
@@ -859,7 +859,7 @@ TeProxMatrixOpenNetworkStrategy2:: Construct (TeProxMatrixImplementation* imp)
 		{
 			// Get object1 id and representation
 			string object_id2 = (*itobj2).getObjectId();
-					cout << "object2 " << object_id2 << "id" << id << endl;
+					std::cout << "object2 " << object_id2 << "id" << id << endl;
 
 			TeCoord2D p2; 
 			if (!TeFindObjectCentroid (itobj1->getGeometries(), params_.geom_rep2_, p2))
diff --git a/src/terralib/kernel/TeProxMatrixImplementation.h b/src/terralib/kernel/TeProxMatrixImplementation.h
index 25088d1..a93c4fa 100644
--- a/src/terralib/kernel/TeProxMatrixImplementation.h
+++ b/src/terralib/kernel/TeProxMatrixImplementation.h
@@ -28,7 +28,7 @@ of this library and its documentation.
 #define TeProxMatrixImplementation_H
 
 #include "TeNeighbours.h"
-#include <graph.h>
+#include "graph.h"
 
 //! An abstract class to represent proximity matrix   
 class TL_DLL TeProxMatrixImplementation  
diff --git a/src/terralib/kernel/TeRedBlackTree.h b/src/terralib/kernel/TeRedBlackTree.h
new file mode 100644
index 0000000..4784284
--- /dev/null
+++ b/src/terralib/kernel/TeRedBlackTree.h
@@ -0,0 +1,763 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file  TeRedBlackTree.h
+    \brief This file contains structures and definitions for a balanced binary search tree.
+    \author Gilberto Ribeiro de Queiroz <gribeiro at dpi.inpe.br>
+*/
+
+#ifndef  __TERRALIB_INTERNAL_RED_BLACK_TREE_H
+#define  __TERRALIB_INTERNAL_RED_BLACK_TREE_H
+
+//STL's include
+#include <string>
+
+//TerraLib's include
+#include "TeUtils.h"
+
+using namespace std;
+
+#define PRINT
+
+/** @brief Contains structures and definitions necessary to deal with a balanced Binary Search Tree
+*/
+namespace TeREDBLACK
+{
+
+	//! Possible values for a node color in a red-black tree
+	enum TeRBNodeColor { TeREDNODE, TeBLACKNODE };
+
+	//! Template class for nodes in a Red-Black tree.
+	/*!
+		This class contains the common attributes to a node
+		used by a binary tree. Only used for commom binary trees,
+		if you want a more sophisticated tree, you can continue
+		using the Red-Black Tree framework defined below, it is possible
+		taking care of some default attributes that a node must
+		have to implement (left_, right_, parent_, data_).
+	*/
+	template<class T>
+	class TeRedBlackNode
+	{
+		public:
+
+			//! Export node's data type.
+			typedef T TeRedBlackNodeData;
+
+			//! Node's data.
+			T data_;
+
+			//! Pointer to the left sub-tree.
+			TeRedBlackNode* left_;
+
+			//! Pointer to the right sub-tree.
+			TeRedBlackNode* right_;
+
+			//! Pointeir to the father's node.
+			TeRedBlackNode* parent_;
+
+			//! Node's color (RED or BLACK).
+			TeRBNodeColor color_;
+
+			//! Constructor.
+			TeRedBlackNode(const TeRBNodeColor& color = TeREDNODE)
+				: left_(0), right_(0), parent_(0), color_(color)
+			{
+			}
+
+			//! Constructor.
+			TeRedBlackNode(T& d, const TeRBNodeColor& color = TeREDNODE)
+				: data_(d), left_(0), right_(0), parent_(0), color_(color)
+			{
+			}
+
+
+		private:
+
+			//! No copy allowed
+			TeRedBlackNode(const TeRedBlackNode& other);
+
+			// No copy allowed
+			TeRedBlackNode& operator=(const TeRedBlackNode& other);
+	};
+
+	//! Template class for Red-Black trees.
+	/*!
+		This class contains the common operations in a Red-Black Tree.
+		It can be used like a framework. Extend the methods like
+		"Insert" and "Search" to walk and to do some usefull things.
+		You will use the methods for Rotation, Insert Propagation,
+		Delete Propagation, Sucessor, Predecessor, IsEmpty, Clear.
+		This tree is based on the algorithm of Cormen's book. The only difference is
+		when a node being deleted has two children its successor node is relinked into its place,
+		rather than copied, so that the only iterators invalidated are those referring to the deleted node.
+		Every data used in nodes must implements a ToString() method.
+	*/
+	template<class NODE>
+	class TeRBTree
+	{
+		private:
+
+			//! No copy allowed.
+			TeRBTree(const TeRBTree& other);
+
+			//! No copy allowed.
+			TeRBTree& operator=(const TeRBTree& other);
+
+		protected:
+
+			NODE* nil_;		//!< Reference node.			
+			NODE* root_;	//!< Tree's root.			
+			unsigned int nodeCount_;	//!< Count the number of nodes in the tree (excluding nil_ node).
+
+		public:
+
+			//! Export node type.
+			typedef NODE* REDBLACKNODEPOINTER;
+
+			//! Export node data type.
+			typedef typename NODE::TeRedBlackNodeData TeRedBlackNodeData;
+
+			//! Constructor.
+			TeRBTree()
+				: nodeCount_(0)
+			{
+				nil_ = new NODE();
+				nil_->color_ = TeBLACKNODE;
+
+				root_ = nil_;
+
+			}
+
+			//! Destructor.
+			virtual ~TeRBTree()
+			{
+				Clear();
+
+				if(nil_)
+					delete nil_;
+			}
+
+			//! Returns true if the tree is empty otherwise returns false.
+			bool IsEmpty(void) const
+			{
+				return root_ == nil_;
+			}
+
+			//! Returns the number of nodes in the tree, excluding the nil_ one.
+			unsigned int Size(void) const
+			{
+				return nodeCount_;
+			}
+
+			//! Removes the node from the tree and do rebalancing.
+			virtual void Delete(NODE* z)
+			{
+				if(z)
+				{
+					// z has at most one non-null child. y == z.
+					// x might be null.
+					// z has exactly one non-null child.  y == z.
+					// x is not null.
+					// z has two non-null children.  Set y to
+					//   z's successor.  x might be null.
+					NODE* y = ((z->left_ == nil_) || (z->right_ == nil_)) ? z : Successor(z);
+					NODE* x = (y->left_  != nil_) ?  y->left_ : y->right_;
+					NODE* x_parent = 0;
+
+					if(y != z)	// relink y in place of z.  y is z's successor
+					{
+						z->left_->parent_ = y;
+						y->left_ = z->left_;
+						if(y != z->right_)
+						{
+							x_parent = y->parent_;
+
+							if(x != nil_)
+								x->parent_ = y->parent_;
+
+							y->parent_->left_ = x;      // y must be a left child
+							y->right_ = z->right_;
+							z->right_->parent_ = y;
+						}
+						else
+							x_parent = y;
+
+						if(root_ == z)
+							root_ = y;
+						else
+							if(z->parent_->left_ == z)
+								z->parent_->left_ = y;
+							else
+								z->parent_->right_ = y;
+
+						y->parent_ = z->parent_;
+
+						TeRBNodeColor aux_color = y->color_;
+						y->color_ = z->color_;
+						z->color_ = aux_color;
+
+						y = z;
+
+						// y now points to node to be actually deleted
+					}
+					else
+					{                        // y == z
+						x_parent = y->parent_;
+						if(x != nil_)
+							x->parent_ = y->parent_;
+
+						if(root_ == z)
+							root_ = x;
+						else
+							if(z->parent_->left_ == z)
+								z->parent_->left_ = x;
+							else
+								z->parent_->right_ = x;
+					}
+
+					if(y->color_ == TeBLACKNODE)
+						DeleteFixUp(x, x_parent, root_);
+
+					delete y;
+
+					nodeCount_--;
+				}
+
+				return;
+			}
+
+			//! Returns the sucessor of a given node or zero if not.
+			virtual NODE* Successor(NODE* x) const
+			{
+				if(x)
+				{
+					if(x->right_ != nil_)
+					{
+						x = x->right_;
+
+						while(x->left_ != nil_)
+							x = x->left_;
+
+						return x;
+					}
+
+					NODE* y = x->parent_;
+
+					while((y != nil_) && (x == y->right_))
+					{
+						x = y;
+						y = y->parent_;
+					}
+
+					if(y == nil_)
+						return 0;
+
+					return y;
+				}
+
+				return 0;
+			}
+
+			//! Returns the predecessor of a given node or zero if not.
+			virtual NODE* Predecessor(NODE* x) const
+			{
+				if(x)
+				{
+					if(x->left_ != nil_)
+					{
+						x = x->left_;
+
+						while(x->right_ != nil_)
+							x = x->right_;
+
+						return x;
+					}
+
+					NODE* y = x->parent_;
+
+					while((y != nil_) && (x == y->left_))
+					{
+						x = y;
+						y = y->parent_;
+					}
+
+					if(y == nil_)
+						return 0;
+
+					return y;
+				}
+
+				return 0;
+			}
+
+			//! Returns the leftmost node in the tree, or zero if not.
+			NODE* First(void) const
+			{
+				if(IsEmpty())
+					return 0;
+
+				NODE *x = root_;
+
+				while(x->left_ != nil_)
+					x = x->left_;
+
+				return x;
+			}
+
+			//! Returns the rightmost node in the tree, or zero if not.
+			NODE* Last(void) const
+			{
+				if(IsEmpty())
+					return 0;
+
+				NODE *x = root_;
+
+				while(x->right_ != nil_)
+					x = x->right_;
+
+				return x;
+			}
+
+			//! Return the first element in the tree and removes it.
+			virtual bool GetFirst(TeRedBlackNodeData& d)
+			{
+				NODE *x = First();
+
+				if(x)
+				{
+						d = x->data_;
+
+						Delete(x);
+
+						return true;
+				}
+
+				return false;
+			}
+
+			//! Removes all nodes from the tree (excepty the nil node). Clear memory.
+			void Clear(void)
+			{
+				if(!IsEmpty())
+				{
+					Erase(root_);
+
+					root_ = nil_;
+				}
+
+				return;
+			}
+
+			//! Write the node's data to a file. The data must implement a methos called: void ToString(void).
+			virtual void WriteToFile(const string& fileName) const
+			{
+				string strRepres = "";
+		
+				WriteToFile(root_, strRepres);
+
+				TeWriteToFile(fileName, strRepres, "w");
+				
+				return;
+			}
+
+		protected:
+
+			//! Left rotation.
+			virtual void LeftRotate(NODE* x, NODE*& root)
+			{
+				NODE* y = x->right_;
+
+				x->right_ = y->left_;
+	
+				if(y->left_ != nil_)
+					y->left_->parent_ = x;
+
+				y->parent_ = x->parent_;
+
+
+				if(x == root)
+					root = y;
+				else
+				{
+					if(x == x->parent_->left_)
+						x->parent_->left_ = y;
+					else
+						x->parent_->right_ = y;
+				}
+
+				y->left_ = x;
+				x->parent_ = y;
+
+				return;
+			}
+
+			//! Right rotation.
+			virtual void RightRotate(NODE* y, NODE*& root)
+			{
+				NODE* x = y->left_;
+
+				y->left_ = x->right_;
+
+				if(x->right_ != nil_)
+					x->right_->parent_ = y;
+
+				x->parent_ = y->parent_;
+
+				if(y == root)
+					root = x;
+				else
+				{
+					if(y == y->parent_->right_)
+						y->parent_->right_ = x;
+					else
+						y->parent_->left_ = x;
+				}
+
+				x->right_ = y;
+				y->parent_ = x;
+			
+				return;
+			}
+
+			//! Must be called after an insert, to fix-up the tree.
+			void InsertFixUp(NODE*& n, NODE*& root)
+			{
+				n->color_ = TeREDNODE;
+
+				NODE* y;
+       
+				while ((n != root) && (n->parent_->color_ == TeREDNODE))
+				{
+					if(n->parent_ == n->parent_->parent_->left_)	
+					{											
+						y = n->parent_->parent_->right_;			
+						if(y->color_ == TeREDNODE)			
+						{							
+							n->parent_->color_ = TeBLACKNODE;
+							y->color_ = TeBLACKNODE;
+							n = n->parent_->parent_;
+							n->color_ = TeREDNODE;
+						}
+						else
+						{
+							if(n == n->parent_->right_)
+							{						
+								n = n->parent_;		
+								LeftRotate(n, root);
+							}
+
+							n->parent_->color_ = TeBLACKNODE;
+							n->parent_->parent_->color_ = TeREDNODE;
+							RightRotate(n->parent_->parent_, root);
+						}
+					}
+					else
+					{
+						y = n->parent_->parent_->left_;
+						if(y->color_ == TeREDNODE)
+						{
+							n->parent_->color_ = TeBLACKNODE;
+							y->color_ = TeBLACKNODE;
+							n = n->parent_->parent_;
+							n->color_ = TeREDNODE;
+						}
+						else
+						{
+							if(n == n->parent_->left_)
+							{
+								n = n->parent_;
+								RightRotate(n, root);
+			                }
+
+							n->parent_->color_ = TeBLACKNODE;
+							n->parent_->parent_->color_ = TeREDNODE;
+							LeftRotate(n->parent_->parent_, root);
+						}
+					}
+				}
+
+				root->color_ = TeBLACKNODE;
+
+				return;
+			}
+
+			//! Must be called after a deletion, to fix-up the tree.
+			void DeleteFixUp(NODE* x, NODE* x_parent, NODE*& root)
+			{
+				while((x != root) && (x == nil_ || x->color_ == TeBLACKNODE))
+				{
+					if(x == x_parent->left_)
+					{
+						NODE *w = x_parent->right_;
+
+						if(w->color_ == TeREDNODE)
+				        {
+							w->color_ = TeBLACKNODE;
+							x_parent->color_ = TeREDNODE;
+							LeftRotate(x_parent, root);
+							w = x_parent->right_;
+				        }
+		            
+						if((w->left_ == nil_ || w->left_->color_ == TeBLACKNODE) && (w->right_ == nil_ || w->right_->color_ == TeBLACKNODE))
+						{
+							w->color_ = TeREDNODE;
+							x = x_parent;
+							x_parent = x_parent->parent_;
+						}
+						else
+				        {
+							if(w->right_ == nil_ || w->right_->color_ == TeBLACKNODE)
+					        {
+								if(w->left_ != nil_)
+									w->left_->color_ = TeBLACKNODE;
+
+								w->color_ = TeREDNODE;
+								RightRotate(w, root);
+								w = x_parent->right_;
+						    }
+						   
+							w->color_ = x_parent->color_;
+							x_parent->color_ = TeBLACKNODE;
+							
+							if(w->right_ != nil_)
+								w->right_->color_ = TeBLACKNODE;
+
+							LeftRotate(x_parent, root);
+
+							break;
+						}
+					}
+					else
+				    {
+						NODE* w = x_parent->left_;
+
+						if(w->color_ == TeREDNODE)
+				        {
+							w->color_ = TeBLACKNODE;
+							x_parent->color_ = TeREDNODE;
+							RightRotate(x_parent, root);
+							w = x_parent->left_;
+						}
+                
+						if((w->left_ == nil_ || w->left_->color_ == TeBLACKNODE) && (w->right_ == nil_ || w->right_->color_ == TeBLACKNODE))
+						{
+							w->color_ = TeREDNODE;
+							x = x_parent;
+							x_parent = x_parent->parent_;
+						}
+						else
+						{
+							if(w->left_ == nil_ || w->left_->color_ == TeBLACKNODE)
+				            {
+								if(w->right_ != nil_)
+									w->right_->color_ = TeBLACKNODE;
+
+								w->color_ = TeREDNODE;
+								LeftRotate(w, root);
+								w = x_parent->left_;
+							}
+						
+							w->color_ = x_parent->color_;
+							x_parent->color_ = TeBLACKNODE;
+							
+							if(w->left_ != nil_)
+								w->left_->color_ = TeBLACKNODE;
+
+							RightRotate(x_parent, root);
+							
+							break;
+						}
+					}
+				}
+
+				if(x != nil_)
+					x->color_ = TeBLACKNODE;
+			}
+
+			//! Only to be used by the public method, walking on the tree.
+			virtual void WriteToFile(NODE* n, string& strRepres) const
+			{
+				if(n != nil_)
+				{
+					WriteToFile(n->left_, strRepres);
+
+					strRepres += n->data_.ToString();
+					strRepres += '\n';
+
+					WriteToFile(n->right_, strRepres);
+				}
+
+				return;
+			}	
+
+			//! Removes the node and all node below it and doesn't do rebalancing. Used to free the memory.
+			void Erase(NODE* n)
+			{
+				if(n != nil_)
+				{
+					Erase(n->left_);
+					Erase(n->right_);
+
+					delete n;
+
+					nodeCount_--;
+				}
+
+				return;
+			}
+
+		public:
+
+			//! Iterators class for the tree. It is used to abstract walking on the tree.
+			template<class Node_i> class internal_iterator
+			{
+				protected:
+
+					//! Pointer to the tree.
+					TeRBTree<Node_i>* tree_;
+
+					//! Pointer to the node.
+					Node_i* node_;
+
+				public:
+
+					//! Makes iterator invalid
+					void invalid(void)
+					{
+						node_ = 0;
+						return;
+					}
+
+					//! Returns node pointer
+					Node_i* getNode(void) const
+					{
+						return node_;
+					}
+
+				public:
+
+					//! Constructor.
+					internal_iterator()
+						: node_(0), tree_(0)
+					{						
+					}
+					
+					//! Constructor
+					internal_iterator(TeRBTree<Node_i>* tree, Node_i* n)
+						: tree_(tree), node_(n)
+					{
+					}
+
+					//! Destructor.
+					virtual ~internal_iterator()
+					{
+					}
+
+					//! Dereference operator.
+					typename Node_i::TeRedBlackNodeData* operator->() const
+					{
+						return &node_->data_;
+					}
+
+					//! Dereference operator.
+					typename Node_i::TeRedBlackNodeData& operator*() const
+					{
+						return node_->data_;
+					}
+
+					//! Operator ++ pre-fixed.
+					internal_iterator& operator++()
+					{
+						node_ = tree_->Successor(node_);
+
+
+						return *this;
+					}
+
+					//! Operator ++ pos-fixed
+					internal_iterator operator++(int)	
+					{
+						internal_iterator temp = *this;
+						++(*this);
+						
+						return temp;
+					}
+
+					//! Operator -- pre-fixed.
+					internal_iterator& operator--()
+					{
+						node_ = tree_->Predecessor(node_);
+
+
+						return *this;
+					}
+
+					//! Operator -- pos-fixed
+					internal_iterator operator--(int)	
+					{
+						internal_iterator temp = *this;
+						--(*this);
+						return temp;
+					}
+
+					//! Operator ==.
+					bool operator==(const internal_iterator& other) const
+					{
+						return (this->node_ == other.node_);
+					}
+
+					//! Operator !=.
+					bool operator!=(const internal_iterator& other) const
+					{
+						return(this->node_ != other.node_);
+					}
+			};
+
+			//! Exports iterator type.
+			typedef internal_iterator<NODE> iterator;
+
+			//! Returns an iterator to the leftmost node of the tree.
+			iterator begin(void)
+			{
+				return iterator(this, First());
+			}			
+
+			//! Returns a reference iterator indicating the end of a tree.
+			iterator end(void)
+			{
+				return iterator(this, 0);
+			}
+
+			//! Erases a node pointed by an interator.
+			void erase(iterator& it)
+			{
+				Delete(it.getNode());
+
+				it.invalid();
+
+				return;
+			}
+	};
+
+}		// end namespace TeREDBLACK
+#endif	// __TERRALIB_INTERNAL_RED_BLACK_TREE_H
diff --git a/src/terralib/kernel/TeSTEvent.cpp b/src/terralib/kernel/TeSTEvent.cpp
index c544c51..4d445ca 100644
--- a/src/terralib/kernel/TeSTEvent.cpp
+++ b/src/terralib/kernel/TeSTEvent.cpp
@@ -60,7 +60,7 @@ bool TeSTEventSet::buildKdTree(const int& n)
     if(kdTree_)
 		delete kdTree_;
 
-	vector<pair<TeCoord2D, TePoint> >	dataSetAux; //auxiliary structure for kdTree
+	vector< std::pair<TeCoord2D, TePoint> >	dataSetAux; //auxiliary structure for kdTree
 	TeSTEventSet::iterator it = this->begin();
 	int index=0;
 	while(it!=this->end())
diff --git a/src/terralib/kernel/TeSparseMatrix.h b/src/terralib/kernel/TeSparseMatrix.h
new file mode 100644
index 0000000..81b04d9
--- /dev/null
+++ b/src/terralib/kernel/TeSparseMatrix.h
@@ -0,0 +1,274 @@
+// k9/a4/sparmat.h, templates for sparse matrices
+#ifndef SPARSEMATRIX_H
+#define SPARSEMATRIX_H SPARSEMATRIX_H
+
+// selection of implementation
+#ifdef STL_map            // defined in main()
+#include<map>
+#include<cassert>
+#else
+#include<hmap.h>
+
+#include "TeDefines.h"
+
+/* If at this point the HMap container is chosen, a function for
+   calculating the hash table addresses is needed. As opposed to the
+   hash functions described up to now, not only one value, but two are
+   used for the calculation. Therefore, the function operator of the
+   PairHashFun class takes a pair as argument. The address calculation
+   itself is simple, but sufficient for our purposes. */
+
+using namespace std;
+
+template<class IndexType>  // int, long or unsigned
+class PairHashFun
+{
+  public:
+    PairHashFun(long prime=65537) // another prime number is possible
+        // e.g. 2111 for smaller Matrizes
+    : tabSize(prime)
+    {}
+
+    // Address calculation with two values
+    long operator()(const pair<IndexType, IndexType>& p) const
+    {
+       return (p.first + p.second) % tabSize;
+    }
+
+    long tableSize() const
+    { 
+       return tabSize;
+    }
+
+  private:
+    long tabSize;
+};
+#endif          //  STL_map
+
+#ifdef _MSC_VER
+#include <utility>
+using namespace std;
+#endif
+
+template<class ValueType, class IndexType, class ContainerType>
+class MatrixElement
+{
+  private:
+    ContainerType& C;
+    typename ContainerType::iterator I;
+    IndexType row, column;
+
+  public:
+    typedef pair<IndexType, IndexType> IndexPair;
+    typedef MatrixElement<ValueType, IndexType,
+                          ContainerType>&  Reference;
+
+    MatrixElement(ContainerType& Cont, IndexType r, IndexType c)
+    : C(Cont), I(C.find(IndexPair(r,c))),
+      row(r), column(c)
+    {}
+
+    /* The constructor initializes the private variables with all
+       information that is needed. The container itself is located in
+       the sparseMatrix class; here, the reference to it is entered.
+       If the passed indices for row and column belong to an element
+       not yet stored in the container, the iterator has the value
+       C.end(). */
+
+    ValueType asValue() const
+    {
+       if(I == C.end())
+           return ValueType(0);
+       else
+           return (*I).second;
+    }
+
+    operator ValueType () const  // type conversion operator
+    {
+       return asValue();
+    }
+
+    /* According to the definition of the sparse matrix, 0 is returned
+       if the element is not present in the container. Otherwise, the
+       result is the second part of the object of type value_type
+       stored in the container. */
+
+    Reference operator=(const ValueType& x)
+    {
+       if(x != ValueType(0))        // not equal 0?
+       {
+         /* If the element does not yet exist, it is put, together
+            with the indices, into an object of type value_type and
+            inserted with insert(): */
+
+          if(I == C.end())
+          {
+             assert(C.size() < C.max_size());
+             I = (C.insert(
+#ifndef _MSC_VER
+			 typename
+#endif
+			 ContainerType::value_type(
+                        IndexPair(row,column), x))
+                 ).first;
+          }
+          else (*I).second = x;
+       }
+
+       /* insert() returns a pair whose first part is an iterator
+          pointing to the inserted object. The second part is of type
+          bool and indicates whether the insertion took place because
+          no element with this key existed. This is, however, not
+          evaluated here because, due to the precondition (I ==
+          C.end()), the second part must always have the value true.
+          If, instead, the element already exists, the value is
+          entered into the second part of the value_type object. If
+          the value is equal 0, in order to save space the element is
+          deleted if it existed. */
+
+       else                    // x = 0
+          if(I != C.end())
+          {
+              C.erase(I);
+              I = C.end();
+          }
+       return *this;
+    }
+
+    /* An assignment operator is required which in turn requires a
+       reference to an object of type MatrixElement. When both the
+       left- and right-hand side are identical, nothing has to happen.
+       Otherwise, as above, it has to be checked whether the value of
+       the right-hand element is 0 or not. The resulting behavior is
+       described together with the above assignment operator, so that
+       here it is simply called: */
+
+    Reference operator=(const Reference rhs)
+    {
+       if(this != &rhs)      // not identical?
+       {
+           return operator=(rhs.asValue());  // see above
+       }
+       return *this;
+    }
+
+};  // class MatrixElement
+
+template<class ValueType, class IndexType>
+class TeSparseMatrix
+{
+   public:
+     typedef pair<IndexType, IndexType> IndexPair;
+
+     // The switch STL_map controls the compilation:
+
+#ifdef STL_map
+     typedef map<IndexPair, ValueType,
+                  less<IndexPair> >       ContainerType;
+#else
+     typedef HMap<IndexPair, ValueType,
+                  PairHashFun<IndexType> > ContainerType;
+#endif
+
+     typedef MatrixElement<ValueType, IndexType,
+                           ContainerType> MatrixElement;
+
+  public:
+    typedef IndexType size_type;
+
+    /* The constructor only initializes the row and column
+       information. The container is created by its standard
+       constructor, where in the case of hash implementation, the size
+       of the container is given by the hash function object of type
+       PairHashFun (see typedef above). */
+
+  private:
+    size_type rows, columns;
+    ContainerType C;
+
+  public:
+    sparseMatrix(size_type r, size_type c)
+    : rows(r), columns(c)
+    {}
+
+   size_type Rows()  const { return rows;}
+   size_type Columns() const { return columns;}
+
+   // usual container type definitions
+   typedef typename ContainerType::iterator iterator;
+   typedef typename ContainerType::const_iterator const_iterator;
+
+   // usual container functions
+   size_type size()       const { return C.size();}
+   size_type max_size()   const { return C.max_size();}
+
+   iterator begin()             { return C.begin();}
+   iterator end()               { return C.end();}
+
+   const_iterator begin() const { return C.begin();}
+   const_iterator end()   const { return C.end();}
+
+   void clear()
+   {
+       C.clear();
+
+   }
+
+   class Aux  // for index operator below
+   {
+     public:
+       Aux(size_type r, size_type maxs, ContainerType& Cont)
+       : Row(r), maxColumns(maxs), C(Cont)
+       {}
+
+       /* After checking the number of columns, the index operator of
+          Aux returns a matrix element which is equipped with all
+          necessary information to carry out a successful assignment.
+        */
+
+       MatrixElement operator[](size_type c)
+       {
+           assert(c >= 0 && c < maxColumns);
+           return MatrixElement(C, Row, c);
+       }
+
+     private:
+       size_type Row, maxColumns;
+       ContainerType& C;
+   };
+
+   /* The index operator of the sparseMatrix class returns the
+       auxiliary object, whose class is defined as nested inside
+       sparseMatrix. */
+   Aux operator[](size_type r)
+   {
+      assert(r >= 0 && r < rows);
+      return Aux(r, columns, C);
+   }
+
+    /* Up to this point, from a functionality point of view, the
+       sparseMatrix class is sufficiently equipped. In order, however,
+       to avoid writing such horrible things as `(*I).first.first' for
+       accessing the elements, some auxiliary functions follow which
+       determine the indices and associated values of an iterator in a
+       more readable way. */
+
+   size_type Index1(iterator& I) const
+   {
+      return (*I).first.first;
+   }
+
+   size_type Index2(iterator& I) const
+   {
+      return (*I).first.second;
+   }
+
+   ValueType Value(iterator& I) const
+   {
+      return (*I).second;
+   }
+};       // class sparseMatrix
+
+#endif   // file sparmat.h
+
+
diff --git a/src/terralib/kernel/TeSpatialOperations.cpp b/src/terralib/kernel/TeSpatialOperations.cpp
index d414e43..b53de29 100644
--- a/src/terralib/kernel/TeSpatialOperations.cpp
+++ b/src/terralib/kernel/TeSpatialOperations.cpp
@@ -921,7 +921,7 @@ bool TeTopologicalRelation(const string& actGeomTable, TeGeomRep actRep, TeKeys&
 	
 	} 
 		
-	sort(actIdsOut.begin(), actIdsOut.end());
+	std::sort(actIdsOut.begin(), actIdsOut.end());
 	unique(actIdsOut.begin(), actIdsOut.end());
 
 	delete portal;
@@ -1004,7 +1004,7 @@ bool TeTopologicalRelation(const string& actGeomTable, TeGeomRep actRep, TeKeys&
 						
 	delete portal;
 	
-	sort(visIdsOut.begin(), visIdsOut.end());
+	std::sort(visIdsOut.begin(), visIdsOut.end());
 	unique(visIdsOut.begin(), visIdsOut.end());
 
 	for (it = vetGeom.begin(); it != vetGeom.end(); it++)
@@ -1039,7 +1039,7 @@ bool TeTopologicalRelation(const string& actGeomTable, TeGeomRep actRep, TeGeome
 
 	delete portal;
 	
-	sort(actIdsOut.begin(), actIdsOut.end());
+	std::sort(actIdsOut.begin(), actIdsOut.end());
 	unique(actIdsOut.begin(), actIdsOut.end());
 
 	return true;
diff --git a/src/terralib/kernel/TeStatistics.h b/src/terralib/kernel/TeStatistics.h
index 6af6390..a3416f2 100644
--- a/src/terralib/kernel/TeStatistics.h
+++ b/src/terralib/kernel/TeStatistics.h
@@ -154,7 +154,7 @@ bool TeCalculateStatistics(const It& itBegin, const It& itEnd, TeStatisticValMap
 	coefVar = (100*stDev)/mean;
 	amplitude = maxValue-minValue;  
 
-	sort(values.begin(), values.end());
+	std::sort(values.begin(), values.end());
 		
 	//calculate median 
 	if((count%2)==0)
@@ -295,7 +295,7 @@ bool TeCalculateStatistics(const It& itBegin, const It& itEnd, TeStatisticValMap
 	coefVar = (100*stDev)/mean;
 	amplitude = maxValue-minValue;  
 
-	sort(values.begin(), values.end());
+	std::sort(values.begin(), values.end());
 		
 	//calculate median 
 	if((count%2)==0)
@@ -420,7 +420,7 @@ bool TeCalculateStatistics(It& itBegin, It& itEnd, TeStatisticsDimensionVect& st
 		coefVar[jj] = (100*stDev[jj])/mean[jj];
 		amplitude[jj] = maxValue[jj]-minValue[jj];
 
-		sort(bandValues[jj].begin(), bandValues[jj].end());
+		std::sort(bandValues[jj].begin(), bandValues[jj].end());
 		
 		//calculate median
 		if((count%2)==0)
diff --git a/src/terralib/kernel/TeTheme.cpp b/src/terralib/kernel/TeTheme.cpp
index 8930063..71ff862 100644
--- a/src/terralib/kernel/TeTheme.cpp
+++ b/src/terralib/kernel/TeTheme.cpp
@@ -520,7 +520,7 @@ TeTheme::buildGrouping(TeDatabase* db, const TeGrouping& g, TeChronon chr, vecto
 		// Insert the attributes in a multimap that relates the attribute 
 		// representation and its statistic type
 		TeGroupingAttr attrMMap;
-		pair<TeAttributeRep, TeStatisticType> attr1 (
+		std::pair<TeAttributeRep, TeStatisticType> attr1 (
 			TeAttributeRep(grouping_.groupAttribute_), statType);
 		attrMMap.push_back(attr1);
 
diff --git a/src/terralib/kernel/dynpq.h b/src/terralib/kernel/dynpq.h
index 5b7f5cf..ebb0a8d 100644
--- a/src/terralib/kernel/dynpq.h
+++ b/src/terralib/kernel/dynpq.h
@@ -106,7 +106,7 @@ namespace br_stl
 	// {
 	assert(idx < csize);   // value still present in the queue?
 
-	if(*c[idx] != k)       // in case of equality, do nothing
+    if(*c[idx] != k) {      // in case of equality, do nothing
 		if(k > *c[idx])
 		{
 			*c[idx] = k;   // enter heavier value
@@ -117,6 +117,7 @@ namespace br_stl
 			*c[idx] = k;   // enter lighter value
 			goUp(idx);     // reorganize heap
 		}
+    }
 	//	 }
 	// else cout << "erro no dynamic_priority_queue<key_type>::changeKeyAt" << idx << csize << k << endl;
 	}
diff --git a/src/terralib/kernel/graph.h b/src/terralib/kernel/graph.h
index 1c21b70..6205ef9 100644
--- a/src/terralib/kernel/graph.h
+++ b/src/terralib/kernel/graph.h
@@ -25,13 +25,13 @@ of this library and its documentation.
 	\note this code came from the book "Desining Components with C++ STL" -
 	Ulrich Breymann - Addison-Wesley - pag 243
 */
-#ifndef GRAPH_H
-#define GRAPH_H
-#include<cassert>
-#include<vector>
-#include<map>
-#include<stack>
-#include<iostream>
+#ifndef TL_GRAPH_H
+#define TL_GRAPH_H
+#include <cassert>
+#include <vector>
+#include <map>
+#include <stack>
+#include <iostream>
 #include <TeDefines.h>
 
 namespace br_stl
diff --git a/src/terralib/utils/TeColorUtils.cpp b/src/terralib/utils/TeColorUtils.cpp
new file mode 100644
index 0000000..9af5ca1
--- /dev/null
+++ b/src/terralib/utils/TeColorUtils.cpp
@@ -0,0 +1,780 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright  2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+#include <TeColorUtils.h>
+#include <TeDatabase.h>
+#include <TeAsciiFile.h>
+
+bool getColors(std::vector<std::string>& ramps, int nc, std::vector<TeColor> &colors)
+{
+	if (ramps.empty())
+		ramps.push_back("RED");
+
+	TeColor	RGB;
+	map<string, TeColor> mapcor;
+
+	RGB.name_ = "RED";
+	RGB.red_ = 240;
+	RGB.green_ = 0;
+	RGB.blue_ = 0;
+	mapcor["RED"] = RGB;
+
+	RGB.name_ = "GREEN";
+	RGB.red_ = 0;
+	RGB.green_ = 240;
+	RGB.blue_ = 0;
+	mapcor["GREEN"] = RGB;
+
+	RGB.name_ = "BLUE";
+	RGB.red_ = 0;
+	RGB.green_ = 0;
+	RGB.blue_ = 240;
+	mapcor["BLUE"] = RGB;
+
+	RGB.name_ = "YELLOW";
+	RGB.red_ = 255;
+	RGB.green_ = 255;
+	RGB.blue_ = 100;
+	mapcor["YELLOW"] = RGB;
+
+	RGB.name_ = "CYAN";
+	RGB.red_ = 100;
+	RGB.green_ = 255;
+	RGB.blue_ = 255;
+	mapcor["CYAN"] = RGB;
+
+	RGB.name_ = "MAGENTA";
+	RGB.red_ = 255;
+	RGB.green_ = 100;
+	RGB.blue_ = 255;
+	mapcor["MAGENTA"] = RGB;
+
+	RGB.name_ = "ORANGE";
+	RGB.red_ = 255;
+	RGB.green_ = 140;
+	RGB.blue_ = 0;
+	mapcor["ORANGE"] = RGB;
+
+	RGB.name_ = "GRAY";
+	RGB.red_ = 240;
+	RGB.green_ = 240;
+	RGB.blue_ = 240;
+	mapcor["GRAY"] = RGB;
+
+	RGB.name_ = "BLACK";
+	RGB.red_ = 0;
+	RGB.green_ = 0;
+	RGB.blue_ = 0;
+	mapcor["BLACK"] = RGB;
+
+	int	ii, jj;
+	int n = 200;
+	
+	TeColor cfrom = mapcor[ramps[0]];
+	TeColor	cto, cor;
+
+	vector<TeColor> allColors;
+	if (ramps.size() == 1)
+	{
+		cto.red_ = cfrom.red_ / 5;
+		cto.green_ = cfrom.green_ / 5;
+		cto.blue_ = cfrom.blue_ / 5;
+		double dr = (double)(cto.red_ - cfrom.red_) / (double)n;
+		double dg = (double)(cto.green_ - cfrom.green_) / (double)n;
+		double db = (double)(cto.blue_ - cfrom.blue_) / (double)n;
+
+		for(jj=0; jj<n; jj++)
+		{
+			cor.red_ = cfrom.red_ + (int)(dr * (double)jj);
+			cor.green_ = cfrom.green_ + (int)(dg * (double)jj);
+			cor.blue_ = cfrom.blue_ + (int)(db * (double)jj);
+			allColors.push_back(cor);
+		}
+	}
+	else
+	{
+		ii = 1;
+		while(ii < (int)ramps.size())
+		{
+			cto = mapcor[ramps[ii]];
+
+			double dr = (double)(cto.red_ - cfrom.red_) / (double)n;
+			double dg = (double)(cto.green_ - cfrom.green_) / (double)n;
+			double db = (double)(cto.blue_ - cfrom.blue_) / (double)n;
+
+			for(jj=0; jj<n; jj++)
+			{
+				cor.red_ = cfrom.red_ + (int)(dr * (double)jj);
+				cor.green_ = cfrom.green_ + (int)(dg * (double)jj);
+				cor.blue_ = cfrom.blue_ + (int)(db * (double)jj);
+				allColors.push_back(cor);
+			}
+			cfrom = cto;
+			ii++;
+		}
+	}
+	double step = 0.;
+	if (nc > 1)
+		step = (double)(allColors.size()) / (double)(nc-1);
+	for (int i=0; i<nc; i++)
+	{
+		int ind = (int)(step * (double)i + .5);
+		if (ind > (int)(allColors.size() - 1))
+			ind = allColors.size() - 1;
+		colors.push_back(allColors[ind]);
+	}
+	allColors.clear();
+	return true;
+}
+
+
+void generateColorBarMap(vector<ColorBar>& inputColorVec, int ncores, map<int, vector<TeColor> >& colorMap)
+{
+	if(inputColorVec.empty())
+	{
+		TeColor c(255, 0, 0);
+		ColorBar b;
+		b.color(c);
+//		b.distance_ = 1.;
+		b.distance_ = 0.;
+		inputColorVec.push_back(b);
+
+		c.init(60, 0, 0);
+		b.color(c);
+		b.distance_ = 1.;
+		inputColorVec.push_back(b);
+	}
+
+	int i, nc;
+	if(inputColorVec.empty())
+		return;
+
+	double totalDistance = inputColorVec[inputColorVec.size()-1].distance_;
+	double dd = (double)ncores / totalDistance;
+
+	colorMap.clear();
+	for(i=0; i<(int)inputColorVec.size()-1; ++i)
+	{
+		nc = TeRound(dd * (fabs(inputColorVec[i+1].distance_) - fabs(inputColorVec[i].distance_)));
+		TeColor corFrom, corTo;
+		hsv2Rgb(corFrom,inputColorVec[i].h_, inputColorVec[i].s_, inputColorVec[i].v_);
+		hsv2Rgb(corTo,inputColorVec[i+1].h_, inputColorVec[i+1].s_, inputColorVec[i+1].v_);
+//		TeColor corFrom = inputColorVec[i].cor_;
+//		TeColor corTo = inputColorVec[i+1].cor_;
+		colorMap[i] = getColors(corFrom, corTo, nc);
+	}
+	vector<TeColor> vv;
+	colorMap[i] = vv;
+}
+
+vector<TeColor> getColors(TeColor cfrom, TeColor cto, int nc)
+{
+	int n = 255, i, j;
+	vector<TeColor> colorVec;
+	TeColor cor;
+
+	vector<TeColor> allColors;
+	double dr = (double)(cto.red_ - cfrom.red_) / (double)n;
+	double dg = (double)(cto.green_ - cfrom.green_) / (double)n;
+	double db = (double)(cto.blue_ - cfrom.blue_) / (double)n;
+
+	for(j=0; j<n; j++)
+	{
+		cor.red_ = cfrom.red_ + (int)(dr * (double)j);
+		cor.green_ = cfrom.green_ + (int)(dg * (double)j);
+		cor.blue_ = cfrom.blue_ + (int)(db * (double)j);
+		allColors.push_back(cor);
+	}
+	double step = 0.;
+	if (nc > 1)
+		step = (double)(allColors.size()) / (double)(nc-1);
+	for (i=0; i<nc; ++i)
+	{
+		int ind = (int)(step * (double)i + .5);
+		if (ind > (int)(allColors.size() - 1))
+			ind = allColors.size() - 1;
+		colorVec.push_back(allColors[ind]);
+	}
+	allColors.clear();
+	return colorVec;
+}
+
+vector<ColorBar>  getColorBarVector(string& groupingColors, const bool& first)
+{
+	vector<ColorBar> cbVec;
+	char	buf[1000];
+	string ss;
+	TeColor	cor(255, 255, 255);
+
+	if(groupingColors.empty())
+		groupingColors = "R-";
+	if(groupingColors.size() == 1)
+		groupingColors += "-";
+
+	size_t t = groupingColors.find(";");
+	string s = groupingColors.c_str();
+
+	if(t == string::npos)
+	{
+		size_t a = s.find("-");
+
+		double dist = -1.;
+		while(a != string::npos)
+		{
+			memset(buf, '\0', 1000);
+			s.copy(buf, a);
+			ss = buf;
+
+			a++;
+			memset(buf, '\0', 1000);
+			s.copy(buf, s.size()-a, a);
+			s = buf;
+			a = s.find("-");
+
+			if("R" == ss)
+				cor.init(240, 0, 0);
+			else if("G" == ss)
+				cor.init(0, 240, 0);
+			else if("B" == ss)
+				cor.init(0, 0, 240);
+			else if("Cy" == ss)
+				cor.init(100, 255, 255);
+			else if("Or" == ss)
+				cor.init(255, 140, 0);
+			else if("Mg" == ss)
+				cor.init(255, 100, 255);
+			else if("Y" == ss)
+				cor.init(255, 255, 100);
+			else
+				cor.init(240, 240, 240);
+
+			ColorBar cb;
+			cb.color(cor);
+			dist += 1.;
+			cb.distance_ = dist;
+
+//			cbVec.push_back(cb);
+//
+//			if(a == string::npos)
+//			{
+//				ss = s;
+//				if("R" == ss)
+//					cor.init(240, 0, 0);
+//				else if("G" == ss)
+//					cor.init(0, 240, 0);
+//				else if("B" == ss)
+//					cor.init(0, 0, 240);
+//				else if("Cy" == ss)
+//					cor.init(100, 255, 255);
+//				else if("Or" == ss)
+//					cor.init(255, 140, 0);
+//				else if("Mg" == ss)
+//					cor.init(255, 100, 255);
+//				else if("Y" == ss)
+//					cor.init(255, 255, 100);
+//				else if("W" == ss)
+//					cor.init(240, 240, 240);
+//				else
+//					cor.init(0, 0, 0);
+//			}
+//			else
+//				cor.init(cor.red_/5, cor.green_/5, cor.blue_/5);
+//
+//			cb.color(cor);
+//			dist += 1.;
+//			cb.distance_ = dist;
+//
+			cbVec.push_back(cb);
+		}
+		if(cbVec.size() == 1)
+		{
+			cor.init(cor.red_/5, cor.green_/5, cor.blue_/5);
+			ColorBar cb;
+			cb.color(cor);
+			dist += 1.;
+			cb.distance_ = dist;
+			cbVec.push_back(cb);
+		}
+	}
+	else
+	{
+		t = groupingColors.find("|");
+		if(first)
+		{
+			if(t != string::npos)
+			{
+				memset(buf, '\0', 1000);
+				s.copy(buf, t, 0);
+				s = buf;
+			}
+		}
+		else
+		{
+			if(t != string::npos)
+			{
+				memset(buf, '\0', 1000);
+				s.copy(buf, s.size()-t-1, t+1);
+				s = buf;
+			}
+			else // error
+			{
+				ColorBar cb;
+				cbVec.clear();
+				TeColor c;
+				hsv2Rgb(c, 0, 255, 255);
+				cb.color(c);
+				cb.distance_ = 0.;
+				cbVec.push_back(cb);
+				hsv2Rgb(c, 240, 255, 255);
+				cb.color(c);
+				cb.distance_ = 1.;
+				cbVec.push_back(cb);
+				return cbVec;
+			}
+		}
+
+		size_t a = s.find("-");
+
+		while(a != string::npos)
+		{
+			if(a == 0) // hue = -1
+				a = s.find("-", 1);
+			int cc = 0;
+			memset(buf, '\0', 1000);
+			s.copy(buf, a);
+			ss = buf;
+
+			a++;
+			memset(buf, '\0', 1000);
+			s.copy(buf, s.size()-a, a);
+			s = buf;
+			a = s.find("-");
+			if(a == 0) // hue = -1
+				a = s.find("-", 1);
+			
+			string sss;
+			vector<double> vVec;
+			size_t aa = ss.find(";");
+			while(aa != string::npos)
+			{
+				cc++;
+				memset(buf, '\0', 1000);
+				ss.copy(buf, aa);
+				sss = buf;
+				double v = atof(sss.c_str());
+				vVec.push_back(v);
+
+				aa++;
+				memset(buf, '\0', 1000);
+				ss.copy(buf, ss.size()-aa, aa);
+				ss = buf;
+				aa = ss.find(";");
+			}
+			ColorBar cb;
+			double brilho, dist = atof(ss.c_str());
+			cb.distance_ = dist;
+
+			if(vVec.empty()) // error in group color
+			{
+				cbVec.clear();
+				TeColor c;
+				hsv2Rgb(c, 0, 255, 255);
+				cb.color(c);
+				cb.distance_ = 0.;
+				cbVec.push_back(cb);
+				hsv2Rgb(c, 240, 255, 255);
+				cb.color(c);
+				cb.distance_ = 1.;
+				cbVec.push_back(cb);
+				return cbVec;
+			}
+
+			if(vVec.size() >= 4)
+			{
+				cor.init((int)vVec[0], (int)vVec[1], (int)vVec[2]);
+				brilho = vVec[3];
+				cb.color(cor);
+			}
+			else
+			{
+				int h = (int)vVec[0];
+				int	s = (int)vVec[1];
+				int v = (int)vVec[2];
+				TeColor c;
+				hsv2Rgb(c, h, s, v);
+				cb.color(c);
+			}
+
+			cbVec.push_back(cb);
+
+			if(a == string::npos)
+			{
+				cc = 0;
+				vVec.clear();
+				ss = s;
+				size_t aa = ss.find(";");
+				while(aa != string::npos)
+				{
+					cc++;
+					memset(buf, '\0', 1000);
+					ss.copy(buf, aa);
+					sss = buf;
+					double v = atof(sss.c_str());
+					vVec.push_back(v);
+
+					aa++;
+					memset(buf, '\0', 1000);
+					ss.copy(buf, ss.size()-aa, aa);
+					ss = buf;
+					aa = ss.find(";");
+				}
+				ColorBar cb;
+				double brilho, dist = atof(ss.c_str());
+				cb.distance_ = dist;
+
+				if(vVec.size() >= 4)
+				{
+					cor.init((int)vVec[0], (int)vVec[1], (int)vVec[2]);
+					brilho = vVec[3];
+					cb.color(cor);
+				}
+				else
+				{
+					int h = (int)vVec[0];
+					int	s = (int)vVec[1];
+					int v = (int)vVec[2];
+					TeColor c;
+					hsv2Rgb(c, h, s, v);
+					cb.color(c);
+				}
+
+				cbVec.push_back(cb);
+			}
+		}
+	}
+	return cbVec;
+}
+
+
+vector<TeColor> getColors(vector<ColorBar>& iVec, int ncores)
+{
+	vector<TeColor> cVec;
+	vector<TeColor> outVec;
+	map<int, vector<TeColor> > colorMap;
+
+	generateColorBarMap(iVec, ncores * 255, colorMap);
+
+	map<int, vector<TeColor> > :: iterator it = colorMap.begin();
+
+	while(it != colorMap.end())
+	{
+		vector<TeColor>& cores = it->second;
+		vector<TeColor> :: iterator i = cores.begin();
+
+		while(i != cores.end())
+		{
+			cVec.push_back(*i);
+			i++;
+		}
+		it++;
+	}
+
+	int s = (int)cVec.size();
+	double d, dd = (double)s /(double)(ncores-1);
+	int	i = 0, j;
+
+	while(i < ncores)
+	{
+		d = dd * (double)i;
+		j = TeRound(d);
+		if(j >= s)
+			j = s - 1;
+		if((int)cVec.size() > j)
+			outVec.push_back(cVec[j]);
+		i++;
+	}
+	return outVec;
+}
+
+string getColors(vector<ColorBar>& aVec, vector<ColorBar>& bVec, int groupingMode)
+{
+	string s, ss;
+	vector<ColorBar> colorBarVec = aVec;
+	vector<ColorBar> :: iterator it;
+
+	int r, g, b;
+	double d;
+//	double br, d;
+
+	it = colorBarVec.begin();
+	while(it != colorBarVec.end())
+	{
+		ColorBar cb = (*it);
+		TeColor cor;
+		hsv2Rgb(cor, cb.h_, cb.s_, cb.v_);
+		r = cor.red_;
+		g = cor.green_;
+		b = cor.blue_;
+		d = cb.distance_;
+
+		s += Te2String(cb.h_) + ";" + Te2String(cb.s_) + ";" + Te2String(cb.v_) + ";" + Te2String(d, 2);
+		if(s.size() > 255)
+		{
+			s = ss;
+			break;
+		}
+
+		ss = s;		
+		it++;
+		if(it != colorBarVec.end())
+			s += "-";
+	}
+
+	if(groupingMode == TeStdDeviation)
+	{
+		s += "|";
+
+		colorBarVec = bVec;
+		it = colorBarVec.begin();
+		while(it != colorBarVec.end())
+		{
+			ColorBar cb = (*it);
+			TeColor cor;
+			hsv2Rgb(cor, cb.h_, cb.s_, cb.v_);
+			r = cor.red_;
+			g = cor.green_;
+			b = cor.blue_;
+			d = cb.distance_;
+
+			s += Te2String(cb.h_) + ";" + Te2String(cb.s_) + ";" + Te2String(cb.v_) + ";" + Te2String(d, 2);
+			if(s.size() > 255)
+			{
+				s = ss;
+				break;
+			}
+
+			ss = s;		
+			it++;
+			if(it != colorBarVec.end())
+				s += "-";
+		}
+	}
+
+	return s;
+}
+
+void rgb2Hsv(const TeColor& c, int& h, int& s, int& v)
+{
+	double r = (double)(c.red_ / 255.);
+	double g = (double)(c.green_ / 255.);
+	double b = (double)(c.blue_ / 255.);
+
+	double hh, ss, vv;
+	RGBtoHSV(r, g, b, hh, ss, vv);
+
+	h = TeRound(hh);
+	s = TeRound(255. * ss);
+	v = TeRound(255. * vv);
+}
+
+// r,g,b values are from 0 to 1
+// h = [0,360], s = [0,1], v = [0,1]
+//		if s == 0, then h = -1 (undefined)
+
+void RGBtoHSV(const double& r, const double& g, const double& b, double& h, double& s, double& v )
+{
+	if(r == g && g == b) // achromatic (grey)
+	{
+		h = - 1;
+		s = 0;
+		v = r;
+		return;
+	}
+
+	double min, max, delta;
+
+	min = MIN(r, g);
+	min = MIN(min, b);
+	max = MAX(r, g);
+	max = MAX(max, b);
+	v = max;				// v
+
+	delta = max - min;
+
+	if( max != 0 )
+		s = delta / max;		// s
+	else {
+		// r = g = b = 0		// s = 0, v is undefined
+		s = 0;
+		h = -1;
+		return;
+	}
+
+	if( r == max )
+		h = ( g - b ) / delta;		// between yellow & magenta
+	else if( g == max )
+		h = 2 + ( b - r ) / delta;	// between cyan & yellow
+	else
+		h = 4 + ( r - g ) / delta;	// between magenta & cyan
+
+	h *= 60;				// degrees
+	if( h < 0 )
+		h += 360;
+
+}
+
+void hsv2Rgb(TeColor& c, const int& h, const int& s, const int& v)
+{
+	double	r, g, b;
+	double hh = (double)h;
+	double ss = (double)s / 255.;
+	double vv = (double)v / 255.;
+
+	HSVtoRGB(r, g, b, hh, ss, vv);
+
+	c.red_ = TeRound(r * 255.);
+	c.green_ = TeRound(g * 255.);
+	c.blue_ = TeRound(b * 255.);
+}
+
+void HSVtoRGB( double& r, double& g, double& b, const double& h, const double& s, const double& v )
+{
+	int i;
+	double f, p, q, t, hh = h;
+
+	if( s == 0 || h == -1) {
+		// achromatic (grey)
+		r = g = b = v;
+		return;
+	}
+
+	hh /= 60;			// sector 0 to 5
+	i = TeRound(floor(hh));
+	f = hh - i;			// factorial part of h
+	p = v * ( 1 - s );
+	q = v * ( 1 - s * f );
+	t = v * ( 1 - s * ( 1 - f ) );
+
+	switch( i ) {
+		case 0:
+			r = v;
+			g = t;
+			b = p;
+			break;
+		case 1:
+			r = q;
+			g = v;
+			b = p;
+			break;
+		case 2:
+			r = p;
+			g = v;
+			b = t;
+			break;
+		case 3:
+			r = p;
+			g = q;
+			b = v;
+			break;
+		case 4:
+			r = t;
+			g = p;
+			b = v;
+			break;
+		default:		// case 5:
+			r = v;
+			g = p;
+			b = q;
+			break;
+	}
+}
+
+
+unsigned int  TeReadColorRampTextFile(const string& fileName, map<string,string>& colorRamps)
+{
+	string name;
+	string rgb;
+	vector<string> aux;
+	double r, g, b;
+	double h, s, v;
+	unsigned int ncolors = 0;
+	unsigned int n;
+	try
+	{
+		TeAsciiFile file(fileName);
+		do
+		{
+			string ramp;
+			try 
+			{
+				name = file.readLine();
+				ncolors = file.readInt();
+				file.findNewLine();
+				for (n=0; n<ncolors-1; ++n)
+				{
+					rgb = file.readLine();
+					aux.clear();
+					TeSplitString(rgb, ",", aux);
+					TeTrim(aux[0]);
+					TeTrim(aux[1]);
+					TeTrim(aux[2]);
+					r = atof(aux[0].c_str());	
+					g = atof(aux[1].c_str());
+					b = atof(aux[2].c_str());
+					RGBtoHSV(r, g, b, h, s, v);
+	                
+					ramp += Te2String(int(h)) + ";";
+					ramp += Te2String(int(s*255.)) + ";";
+					ramp += Te2String(int(v)) + ";";
+					ramp += Te2String(n) + "-";
+				}
+				rgb = file.readLine();
+				aux.clear();
+				TeSplitString(rgb, ",", aux);
+				TeTrim(aux[0]);
+				TeTrim(aux[1]);
+				TeTrim(aux[2]);
+				r = atof(aux[0].c_str());	
+				g = atof(aux[1].c_str());
+				b = atof(aux[2].c_str());
+				RGBtoHSV(r, g, b, h, s, v);
+	            
+				ramp += Te2String(int(h)) + ";";
+				ramp += Te2String(int(s*255.)) + ";";
+				ramp += Te2String(int(v))+ ";";
+				ramp += Te2String(n);
+				++ncolors;
+				TeTrim(name);
+				colorRamps[name]=ramp;
+			}
+			catch(...)
+			{
+				break;
+			}
+		}while(true);
+	}
+	catch(...)
+	{
+		return 0;
+	}
+	return colorRamps.size();
+}
diff --git a/src/terralib/utils/TeColorUtils.h b/src/terralib/utils/TeColorUtils.h
new file mode 100644
index 0000000..625c0f9
--- /dev/null
+++ b/src/terralib/utils/TeColorUtils.h
@@ -0,0 +1,92 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file TeColorUtils.h
+    \brief This file contains functions to manipulate a structure representing a color
+*/
+#ifndef  __TERRALIB_INTERNAL_COLORUTILS_H
+#define  __TERRALIB_INTERNAL_COLORUTILS_H
+
+
+#include "TeVisual.h"
+#include "TeUtils.h"
+
+void rgb2Hsv(const TeColor& c, int& h, int& s, int& v);
+void RGBtoHSV(const double& r, const double& g, const double& b, double& h, double& s, double& v );
+void hsv2Rgb(TeColor& c, const int& h, const int& s, const int& v);
+void HSVtoRGB( double& r, double& g, double& b, const double& h, const double& s, const double& v );
+
+struct ColorBar {
+	TeColor cor_;
+	int		h_;
+	int		s_;
+	int		v_;
+	double	distance_;
+
+	void color(const TeColor& c){cor_ = c; rgb2Hsv(cor_, h_, s_, v_);}
+
+	ColorBar& operator= (const ColorBar& cb)
+	{
+		cor_ = cb.cor_;
+		h_ = cb.h_;
+		s_ = cb.s_;
+		v_ = cb.v_;
+		distance_ = cb.distance_;
+
+		return *this;
+	}
+
+	bool operator<= (const ColorBar& cb) const
+	{
+		return (distance_ <= cb.distance_);
+	}
+
+	bool operator< (const ColorBar& cb) const
+	{
+		return (distance_ < cb.distance_);
+	}
+};
+
+#include <vector>
+#include <string>
+#include <map>
+
+//! Generates a graduated color scale following a sequence of basic colors
+/*!
+	The possible basic colors are "RED", "GREEN", "BLUE", "YELLOW", "CYAN", "MAGENTA", "GRAY" and  "BLACK"
+	\param ramps	vector with the sequence color ramps used to build the scale 
+	\param nc		desired number of colors on the scale
+	\param colors	resulting color scale
+	\returns true if color scale was successfully generated and false otherwise
+*/
+bool getColors(std::vector<std::string>& ramps, int nc, std::vector<TeColor>& colors);
+vector<TeColor> getColors(TeColor cfrom, TeColor cto, int nc);
+vector<TeColor> getColors(vector<ColorBar>& iVec, int ncores);
+string getColors(vector<ColorBar>& aVec, vector<ColorBar>& bVec, int groupingMode);
+void generateColorBarMap(vector<ColorBar>& inputColorVec, int ncores, map<int, vector<TeColor> >& colorMap);
+vector<ColorBar> getColorBarVector(string& scores, const bool& first);
+unsigned int  TeReadColorRampTextFile(const string& fileName, map<string,string>& colorRamps);
+
+#endif
+
+
+
diff --git a/src/terralib/utils/TeDatabaseUtils.cpp b/src/terralib/utils/TeDatabaseUtils.cpp
new file mode 100644
index 0000000..4a3e643
--- /dev/null
+++ b/src/terralib/utils/TeDatabaseUtils.cpp
@@ -0,0 +1,582 @@
+/************************************************************************************
+TerraView - visualization and exploration of geographical databases using TerraLib.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+This file is part of TerraView. TerraView 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.
+
+You should have received a copy of the GNU General Public License
+along with TerraView.
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The software provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use of
+this program and its documentation.
+*************************************************************************************/
+
+#include <TeDatabaseUtils.h>
+#include <TeLayerFunctions.h>
+
+
+bool isTerralibModel(TeDatabase* db)
+{
+	vector<string>::iterator it;
+	vector<string> tables;
+	db->listTables(tables);
+
+	for(unsigned int i = 0; i<tables.size(); i++)
+	{
+		if((it = find(tables.begin(), tables.end(), "te_projection")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_layer")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_layer_table")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_tables_relation")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_representation")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_view")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_theme")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_grouping")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_theme_table")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_legend")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_visual")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_visual_raster")) == tables.end())
+			return false;
+		if((it = find(tables.begin(), tables.end(), "te_database")) == tables.end())
+			return false;
+	}
+	if(tables.size() == 0)
+		return false;
+
+	return true;
+}
+
+
+bool TeCopyDatabase(TeDatabase* dbFrom, TeDatabase* dbTo)
+{
+	// -- Step 1 : copies the external tables
+	TeAttrTableVector externs;
+	dbFrom->getAttrTables(externs,TeAttrExternal);
+	if (!externs.empty())
+	{
+		TeDatabasePortal* portal = dbFrom->getPortal();
+		if (!portal)
+		{
+			// log error here
+			return false;
+		}
+
+		for (unsigned int nt=0; nt < externs.size(); nt++)
+		{
+			TeTable table = externs[nt];
+			table.setId(-1);
+			string sql = "select * from " + table.name();
+			if (!portal->query(sql) || portal->numRows() == 0)
+			{
+				portal->freeResult();
+				continue;
+			}
+			if (!dbTo->createTable(table.name(),table.attributeList()))
+			{
+				portal->freeResult();
+				continue;
+			}
+			unsigned int nr=0;
+			while (portal->fetchRow())
+			{
+				TeTableRow row;
+				for(int i = 0; i < portal->numFields(); i++)
+					row.push_back(portal->getData(i));
+				table.add(row);
+				nr++;
+				if (nr % 200)
+				{
+					dbTo->insertTable(table);
+					table.clear();
+					nr = 0;
+				}
+			}
+			if (table.size() >0)
+				dbTo->insertTable(table);
+				table.clear();	
+			dbTo->insertTableInfo(-1,table);
+			portal->freeResult();
+		}
+		delete portal;
+	}
+
+	// -- Step 2: Copies the layers
+	if(!dbFrom->loadLayerSet())
+	{
+		// log error here
+		return false;
+	}
+
+	TeLayerMap& fromLayerMap = dbFrom->layerMap();
+	TeLayerMap::iterator itFrom = fromLayerMap.begin();
+
+	while(itFrom != fromLayerMap.end())
+	{
+		TeLayer* fromLayer = (*itFrom).second;
+		TeLayer* toLayer = new TeLayer(fromLayer->name(), dbTo, fromLayer->projection());
+		map<string, string> tables;
+		if (!TeCopyLayerToLayer(fromLayer, toLayer, &tables))
+		{
+			// log error here: layer couldn�t be copied
+		}
+		++itFrom;
+	}
+	// -- Set 3: Copies the views and themes
+	if(!dbFrom->loadViewSet(dbFrom->user()))
+	{
+		// log error here
+		return false;
+	}
+
+	if(!dbTo->loadLayerSet())
+	{
+		// log error here
+		return false;
+	}
+
+	TeViewMap&	fromViewMap = dbFrom->viewMap();
+	TeViewMap::iterator itvFrom = fromViewMap.begin();
+	while (itvFrom != fromViewMap.end())
+	{
+		TeView* fromView = (*itvFrom).second;			
+		TeView* toView = new TeView();
+
+		TeProjection* toViewProjection = 0;
+		if (fromView->projection())
+			 toViewProjection = TeProjectionFactory::make(fromView->projection()->params());
+		
+		toView->projection(toViewProjection);
+		toView->name(fromView->name());
+		toView->user(dbTo->user());
+		toView->isVisible(fromView->isVisible());
+
+		TeBox b;
+		toView->setCurrentBox(b);
+		toView->setCurrentTheme(-1);
+
+		if (!dbTo->insertView(toView))
+		{
+			// log error here
+			++itvFrom;
+			continue;
+		}
+		dbTo->insertView(toView);
+		if(dbTo->projectMap().empty() == false)
+		{
+			TeProjectMap& pm = dbTo->projectMap();
+			TeProject* project = pm.begin()->second;
+			project->addView(toView->id());
+		}
+		dbTo->insertProjectViewRel(1, toView->id());
+
+		TeLayerMap& toLayerMap = dbTo->layerMap();			
+		vector<TeViewNode*>& themeVec = fromView->themes();
+		for (unsigned int i = 0; i < themeVec.size(); ++i)
+		{
+			TeTheme* themeFrom = (TeTheme*) themeVec[i];
+			string fromLayerName = themeFrom->layer()->name();
+			TeLayer* toLayer = 0;
+			TeLayerMap::iterator itTo = toLayerMap.begin();
+			while(itTo != toLayerMap.end())
+			{
+				if(itTo->second->name() == fromLayerName)
+				{
+					toLayer = itTo->second;
+					break;
+				}
+				++itTo;
+			}
+
+			if (!toLayer )
+			{
+				// log error here
+				continue;
+			}
+			
+			TeTheme* themeTo = new TeTheme(themeFrom->name(), toLayer);
+			toView->add(themeTo);
+						
+			themeTo->outOfCollectionLegend(themeFrom->outOfCollectionLegend());
+			themeTo->withoutDataConnectionLegend(themeFrom->withoutDataConnectionLegend ());
+			themeTo->defaultLegend(themeFrom->defaultLegend());
+			themeTo->pointingLegend(themeFrom->pointingLegend());
+			themeTo->queryLegend(themeFrom->queryLegend());
+
+			TeAttrTableVector tftablevec = themeFrom->attrTables();
+			TeAttrTableVector tttablevec;
+
+			for (unsigned int nt=0; nt<tftablevec.size(); nt++)
+			{
+				TeTable attTable(tftablevec[nt].name());
+				dbTo->loadTableInfo(attTable);
+				tttablevec.push_back(attTable);
+			}
+			themeTo->setAttTables(tttablevec);
+			themeTo->attributeRest(themeFrom->attributeRest());
+			themeTo->temporalRest(themeFrom->temporalRest());
+			themeTo->spatialRest(themeFrom->spatialRest());
+			themeTo->visibleRep(themeFrom->visibleRep());
+			if(!themeTo->save() || !themeTo->buildCollection())
+			{
+				// log error here
+				continue;
+			}
+			themeTo->generateLabelPositions();
+			
+			if(themeFrom->grouping().groupMode_ != TeNoGrouping)
+			{
+				TeGrouping grouping;
+				grouping = themeFrom->grouping();				
+				themeTo->buildGrouping(grouping);
+				TeLegendEntryVector& legends = themeFrom->legend();
+				for (unsigned int nl=0; nl<legends.size(); nl++)
+					themeTo->setGroupingVisual(nl+1,legends[nl].getVisualMap());
+				if (!themeTo->saveGrouping())
+				{
+						// log error here
+				}
+			}
+		} // end for each theme
+		++itvFrom;
+	} // end for each view
+	return true;
+}
+
+vector<string> getObjects(TeTheme* theme, int sel)
+{
+	vector<string> svec;
+	if(!theme)
+		return svec;
+
+	TeDatabase* db = 0;
+	if(theme->getProductId() == TeEXTERNALTHEME)
+		db = static_cast<TeExternalTheme*>(theme)->getSourceDatabase();
+	else if(theme->getProductId() == TeTHEME)
+		db = static_cast<TeTheme*>(theme)->layer()->database();
+
+	if(db == 0)
+		return svec;
+
+	string C = theme->collectionTable();
+	string CA = theme->collectionAuxTable();
+	string input;
+
+	if(sel == TeSelectedByPointing)
+		input += " WHERE " + C + ".c_object_status = 1 OR " + C + ".c_object_status = 3";
+	else if(sel == TeNotSelectedByPointing)
+		input += " WHERE " + C + ".c_object_status = 0 OR " + C + ".c_object_status = 2";
+	else if(sel == TeSelectedByQuery)
+		input += " WHERE " + C + ".c_object_status = 2 OR " + C + ".c_object_status = 3";
+	else if(sel == TeNotSelectedByQuery)
+		input += " WHERE " + C + ".c_object_status = 0 OR " + C + ".c_object_status = 1";
+	else if(sel == TeSelectedByPointingAndQuery)
+		input += " WHERE " + C + ".c_object_status = 3";
+	else if(sel == TeSelectedByPointingOrQuery)
+		input += " WHERE " + C + ".c_object_status <> 0";
+	else if(sel == TeGrouped)
+		input += " WHERE " + C + ".c_legend_id <> 0";
+	else if(sel == TeNotGrouped)
+		input += " WHERE " + C + ".c_legend_id = 0";
+
+	string query = "SELECT " + C + ".c_object_id FROM " + C + " LEFT JOIN " + CA;
+	query += " ON " + C + ".c_object_id = " + CA + ".object_id" + input;
+
+	TeDatabasePortal* portal = db->getPortal();
+	if (portal->query(query) == false)
+	{
+		delete portal;
+		return svec;
+	}
+	while (portal->fetchRow())
+		svec.push_back(portal->getData(0));
+
+	delete portal;
+	return svec;
+}
+
+vector<string> getItems(TeTheme* theme, int sel)
+{
+	vector<string> svec;
+	if(!theme)
+		return svec;
+
+	TeDatabase* db = 0;
+	if(theme->getProductId() == TeEXTERNALTHEME)
+		db = static_cast<TeExternalTheme*>(theme)->getSourceDatabase();
+	else if(theme->getProductId() == TeTHEME)
+		db = static_cast<TeTheme*>(theme)->layer()->database();
+
+	if(db == 0)
+		return svec;
+
+	string C = theme->collectionTable();
+	string CA = theme->collectionAuxTable();
+	string input;
+
+	if(sel == TeSelectedByPointing)
+		input += " WHERE " + CA + ".grid_status = 1 OR " + CA + ".grid_status = 3";
+	else if(sel == TeNotSelectedByPointing)
+		input += " WHERE " + CA + ".grid_status = 0 OR " + CA + ".grid_status = 2";
+	else if(sel == TeSelectedByQuery)
+		input += " WHERE " + CA + ".grid_status = 2 OR " + CA + ".grid_status = 3";
+	else if(sel == TeNotSelectedByQuery)
+		input += " WHERE " + CA + ".grid_status = 0 OR " + CA + ".grid_status = 1";
+	else if(sel == TeSelectedByPointingAndQuery)
+		input += " WHERE " + CA + ".grid_status = 3";
+	else if(sel == TeSelectedByPointingOrQuery)
+		input += " WHERE " + CA + ".grid_status <> 0";
+	else if(sel == TeGrouped)
+		input += " WHERE " + C + ".c_legend_id <> 0";
+	else if(sel == TeNotGrouped)
+		input += " WHERE " + C + ".c_legend_id = 0";
+
+	string query = "SELECT " + CA + ".unique_id FROM " + C + " LEFT JOIN " + CA;
+	query += " ON " + C + ".c_object_id = " + CA + ".object_id" + input;
+
+	TeDatabasePortal* portal = db->getPortal();
+	if (portal->query(query) == false)
+	{
+		delete portal;
+		return svec;
+	}
+	while (portal->fetchRow())
+		svec.push_back(portal->getData(0));
+
+	delete portal;
+	return svec;
+}
+
+vector<string> getObjects(TeTheme* theme, vector<string>& itens)
+{
+	vector<string> svec;
+	if(!theme)
+		return svec;
+
+	TeDatabase* db = 0;
+	if(theme->getProductId() == TeEXTERNALTHEME)
+		db = static_cast<TeExternalTheme*>(theme)->getSourceDatabase();
+	else if(theme->getProductId() == TeTHEME)
+		db = static_cast<TeTheme*>(theme)->layer()->database();
+
+	if(db == 0)
+		return svec;
+
+	TeDatabasePortal* portal = db->getPortal();
+	string C = theme->collectionTable();
+	string CA = theme->collectionAuxTable();
+
+	string query = "SELECT " + C + ".c_object_id FROM " + C + " LEFT JOIN " + CA;
+	query += " ON " + C + ".c_object_id = " + CA + ".object_id";
+	query += " WHERE " + CA + ".unique_id IN ";
+
+	set<string> idSet;
+  
+  vector< string >::iterator it_begin = itens.begin();
+  vector< string >::iterator it_end = itens.end();
+  
+	vector<string> inVec = generateInClauses(it_begin, it_end, db, false);
+	vector<string>::iterator it;
+	for(it=inVec.begin(); it!=inVec.end(); ++it)
+	{
+		if((*it).empty() == false)
+		{
+			string sel = query + *it;
+			if (portal->query(sel) == false)
+			{
+				delete portal;
+				return svec;
+			}
+			while (portal->fetchRow())
+				idSet.insert(portal->getData(0));
+			portal->freeResult();
+		}
+	}
+	delete portal;
+
+	set<string>::iterator sit;
+	for(sit=idSet.begin(); sit!=idSet.end(); ++sit)
+		svec.push_back(*sit);
+	return svec;
+}
+
+vector<string> getItems(TeTheme* theme, vector<string>& objects)
+{
+	vector<string> svec;
+	if(!theme)
+		return svec;
+
+	TeDatabase* db = 0;
+	if(theme->getProductId() == TeEXTERNALTHEME)
+		db = static_cast<TeExternalTheme*>(theme)->getSourceDatabase();
+	else if(theme->getProductId() == TeTHEME)
+		db = static_cast<TeTheme*>(theme)->layer()->database();
+
+	if(db == 0)
+		return svec;
+
+	TeDatabasePortal* portal = db->getPortal();
+	string C = theme->collectionTable();
+	string CA = theme->collectionAuxTable();
+
+	string query = "SELECT " + CA + ".unique_id FROM " + C + " LEFT JOIN " + CA;
+	query += " ON " + C + ".c_object_id = " + CA + ".object_id";
+	query += " WHERE " + C + ".c_object_id IN ";
+  
+  vector< string >::iterator it_begin = objects.begin();
+  vector< string >::iterator it_end = objects.end();  
+
+	vector<string> inVec = generateInClauses(it_begin, it_end, db);
+	vector<string>::iterator it;
+	for(it=inVec.begin(); it!=inVec.end(); ++it)
+	{
+		if((*it).empty() == false)
+		{
+			string sel = query + *it;
+			if (portal->query(sel) == false)
+			{
+				delete portal;
+				return svec;
+			}
+			while (portal->fetchRow())
+				svec.push_back(portal->getData(0));
+			portal->freeResult();
+		}
+	}
+	delete portal;
+	return svec;
+}
+
+map<string, vector<string> > getObject2ItemsMap(TeTheme* theme, vector<string>& itens)
+{
+	map<string, vector<string> > outMap;
+	if(!theme)
+		return outMap;
+
+	TeDatabase* db = 0;
+	if(theme->getProductId() == TeEXTERNALTHEME)
+		db = static_cast<TeExternalTheme*>(theme)->getSourceDatabase();
+	else if(theme->getProductId() == TeTHEME)
+		db = static_cast<TeTheme*>(theme)->layer()->database();
+
+	if(db == 0)
+		return outMap;
+
+	TeDatabasePortal* portal = db->getPortal();
+	string C = theme->collectionTable();
+	string CA = theme->collectionAuxTable();
+
+	string query = "SELECT " + C + ".c_object_id, " + CA + ".unique_id FROM " + C + " LEFT JOIN " + CA;
+	query += " ON " + C + ".c_object_id = " + CA + ".object_id";
+	query += " WHERE " + CA + ".unique_id IN ";
+  
+  vector< string >::iterator it_begin = itens.begin();
+  vector< string >::iterator it_end = itens.end();   
+
+	vector<string> inVec = generateInClauses(it_begin, it_end, db, false);
+	vector<string>::iterator it;
+	for(it=inVec.begin(); it!=inVec.end(); ++it)
+	{
+		if((*it).empty() == false)
+		{
+			string sel = query + *it;
+			if (portal->query(sel) == false)
+			{
+				delete portal;
+				return outMap;
+			}
+			while (portal->fetchRow())
+				outMap[portal->getData(0)].push_back(portal->getData(1));
+			portal->freeResult();
+		}
+	}
+	delete portal;
+
+	return outMap;
+}
+
+vector<string>
+generateItemsInClauseVec(TeTheme* theme, string& where)
+{
+	vector<string> inClauseVector;
+	TeDatabase* db = 0;
+	string	CT = theme->collectionTable();
+	string	CA = theme->collectionAuxTable();
+	string	from = " FROM " + CT + " LEFT JOIN " + CA + " ON " + CT + ".c_object_id = " + CA + ".object_id";
+
+	if(theme->getProductId()==TeTHEME)
+		db = theme->layer()->database();
+	else if(theme->getProductId()==TeEXTERNALTHEME)
+		db = ((TeExternalTheme*) theme)->getSourceDatabase();
+
+	if(db == 0)
+		return inClauseVector;
+
+	TeDatabasePortal* portal = db->getPortal();
+	string sel = "SELECT " + CT + ".c_object_id, " + CA + ".unique_id " + from;
+
+	if(where.empty() == false)
+		sel += " " + where;
+
+	map<string, vector<string> > objMap;
+	if(portal->query(sel))
+	{
+		while(portal->fetchRow())
+			objMap[portal->getData(0)].push_back(portal->getData(1));
+	}
+
+	map<string, vector<string> >::iterator mit;
+	vector<string>::iterator it;
+
+	int i, chunkSize = 200;
+	string inClause;
+	
+	i = 0;
+	bool chunk = true;
+	for(mit=objMap.begin(); mit!=objMap.end(); ++mit)
+	{
+		if (chunk == true)
+		{
+			chunk = false;
+			if (!inClause.empty())
+			{
+				inClause[inClause.size() - 1] = ')';
+				inClauseVector.push_back(inClause);
+				inClause.clear();
+			}
+			inClause = "(";
+		}
+		for(it=mit->second.begin(); it!=mit->second.end(); ++it)
+		{
+			inClause += *it + ",";
+			i++;
+			if (i%chunkSize == 0)
+				chunk = true;
+		}
+	}
+	if (!inClause.empty())
+	{
+		inClause[inClause.size() - 1] = ')';
+		inClauseVector.push_back(inClause);
+	}
+	return inClauseVector;
+}
+
+
+
diff --git a/src/terralib/utils/TeUpdateDBVersion.cpp b/src/terralib/utils/TeUpdateDBVersion.cpp
new file mode 100644
index 0000000..036709c
--- /dev/null
+++ b/src/terralib/utils/TeUpdateDBVersion.cpp
@@ -0,0 +1,1504 @@
+/************************************************************************************
+TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+
+#include "TeUpdateDBVersion.h"
+
+bool needUpdateDB(TeDatabase* db, string& DBversion)
+{
+	TeDatabasePortal* portal = db->getPortal();
+	if(!portal)
+		return false;
+
+	string sql = " SELECT db_version FROM te_database ";
+	//The database does not have the te_database connection
+	if(!portal->query(sql))
+	{
+		DBversion = "";
+		delete portal;
+		return false;
+	}
+
+	if(!portal->fetchRow())
+	{
+		DBversion = "";
+		delete portal;
+		return true;
+	}
+
+	DBversion = portal->getData(0);
+	if(DBversion==TeDBVERSION)
+	{
+		delete portal;
+		return false;
+	}
+	
+	delete portal;
+	return true;
+}
+
+
+bool updateDBVersion(TeDatabase* db, string& DBversion, string& errorMessage)
+{
+	//from old version to 3.0
+	db->beginTransaction();
+	if(DBversion=="")
+	{
+		if(!updateDB30To301(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+
+		if(!updateDB20To30(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+		
+		DBversion = "3.0.1";
+	}
+
+	//from 3.0 to 3.0.1
+	if(DBversion=="3.0") 
+	{
+		if(!updateDB30To301(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+
+		DBversion = "3.0.1";
+	}
+
+	//from 3.0.1 to 3.0.2
+	if(DBversion=="3.0.1") 
+	{
+		if(!updateDB301To302(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+
+		DBversion = "3.0.2";
+	}
+
+	//from 3.0.2 to 3.1.0
+	if(DBversion=="3.0.2") 
+	{
+		if(!updateDB302To310(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+
+		DBversion = "3.1.0";
+	}
+
+	if(DBversion=="3.1.0")
+	{
+		if(!updateDB310To311(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+
+		DBversion = "3.1.1";
+	}
+
+	if(DBversion=="3.1.1")
+	{
+		if(!updateDB311To320(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+		DBversion = "3.2.0";
+	}
+
+	if(DBversion=="3.2.0")
+	{
+		if(!updateDB320To3201(db, errorMessage))
+		{
+			db->rollbackTransaction();
+			return false;
+		}
+		DBversion = "3.2.0.1";
+	}
+	
+	if(DBversion!=TeDBVERSION)
+	{
+		db->rollbackTransaction();
+		return false;
+	}
+
+	string del= "DELETE FROM te_database"; 
+	if(!db->execute(del))
+	{
+		db->rollbackTransaction();
+		return false;
+	}
+
+	string ins = "INSERT INTO te_database (db_version) VALUES ('"+ TeDBVERSION +"')";
+	if(!db->execute(ins))
+	{
+		db->rollbackTransaction();
+		return false;
+	}
+
+	db->commitTransaction();
+	return true;
+}
+
+
+bool updateDB20To30(TeDatabase* db, string& errorMessage)
+{
+	TeAttribute fattr;
+
+	// ----- te_grouping 
+
+	if(db->columnExist("te_grouping", "grouping_function", fattr) == false)
+	{
+		TeAttributeRep atRep;
+		atRep.type_ = TeSTRING;
+		atRep.name_ = "grouping_function";
+		atRep.numChar_ = 10;
+		if(db->addColumn("te_grouping", atRep) == false)
+		{
+			errorMessage = "The column grouping_function could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+
+		string upd;
+		if(db->columnExist("te_theme_application", "group_function", fattr))
+		{
+			upd =	" UPDATE te_grouping g, te_theme_application ta ";
+			upd +=	" SET g.grouping_function = ta.group_function ";
+			upd +=	" WHERE ta.theme_id = g.theme_id ";
+
+			if(!db->execute (upd))
+			{
+				errorMessage = db->errorMessage();
+				return false;
+			}
+
+			db->deleteColumn("te_theme_application", "group_function");
+		}
+		else
+		{
+			upd =	" UPDATE te_grouping g ";
+			upd +=	" SET g.grouping_function = 'AVG' ";
+			
+			if(!db->execute (upd))
+			{
+				errorMessage = db->errorMessage();
+				return false;
+			}
+		}
+	}
+
+	// ----- te_theme_application
+
+	if(db->columnExist("te_theme_application", "chart_function", fattr) == false)
+	{
+		TeAttributeRep atRep;
+		atRep.type_ = TeSTRING;
+		atRep.name_ = "chart_function";
+		atRep.numChar_ = 10;
+		if(db->addColumn("te_theme_application", atRep) == false)
+		{
+			errorMessage = "The column chart_function could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+		db->execute("UPDATE te_theme_application SET chart_function = 'AVG'");
+	}
+
+	// ----- te_theme 
+	if(db->columnExist("te_theme", "visible_rep", fattr) == false)
+	{
+		TeAttributeRep atRep;
+		atRep.type_ = TeINT;
+		atRep.name_ = "visible_rep";
+		if(db->addColumn("te_theme", atRep) == false)
+		{
+			errorMessage = "The column visible_rep could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+
+		atRep.name_ = "enable_visibility";
+		if(db->addColumn("te_theme", atRep) == false)
+		{
+			errorMessage = "The column enable_visibility could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+
+		string upd = " UPDATE te_theme t, te_theme_application ta ";
+		upd +=       " SET t.visible_rep = ta.visible_rep ";
+		upd +=       " WHERE ta.theme_id = t.theme_id ";
+		if(!db->execute (upd))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+
+		upd =		 " UPDATE te_theme t, te_theme_application ta ";
+		upd +=       " SET t.enable_visibility = ta.enable_visibility ";
+		upd +=       " WHERE ta.theme_id = t.theme_id ";
+		if(!db->execute (upd))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+			
+		db->deleteColumn("te_theme_application", "visible_rep");
+		db->deleteColumn("te_theme_application", "enable_visibility");
+	}
+
+	//if for ADO passar todas as tabelas para aceitar comprimento iguel a zero!!!
+	if(db->dbmsName() == "Ado")
+	{
+		//te_layer 
+		//te_layer_table
+		db->allowEmptyString ("te_layer_table", "attr_initial_time");
+		db->allowEmptyString ("te_layer_table", "attr_final_time");
+		db->allowEmptyString ("te_layer_table", "user_name");
+
+		//te_representation
+		db->allowEmptyString ("te_representation", "description");
+		
+		//te_view
+		db->allowEmptyString ("te_view", "user_name");
+
+		//te_visual
+		db->allowEmptyString ("te_visual", "lib_name");
+		db->allowEmptyString ("te_visual", "contour_lib_name");
+		db->allowEmptyString ("te_visual", "family");
+
+		//te_legend
+		db->allowEmptyString ("te_legend", "lower_value");
+		db->allowEmptyString ("te_legend", "upper_value");
+		db->allowEmptyString ("te_legend", "label");
+		
+		//te_theme
+		db->allowEmptyString ("te_theme", "generate_attribute_where");
+		db->allowEmptyString ("te_theme", "generate_spatial_where");
+		db->allowEmptyString ("te_theme", "generate_temporal_where");
+		db->allowEmptyString ("te_theme", "collection_table");
+
+		//te_grouping
+		db->allowEmptyString ("te_grouping", "grouping_attr");
+		db->allowEmptyString ("te_grouping", "grouping_norm_attr");
+		db->allowEmptyString ("te_grouping", "grouping_function");
+
+		//te_theme_application
+		db->allowEmptyString ("te_theme_application", "refine_attribute_where");
+		db->allowEmptyString ("te_theme_application", "refine_spatial_where");
+		db->allowEmptyString ("te_theme_application", "refine_temporal_where");
+		db->allowEmptyString ("te_theme_application", "grouping_color");
+		db->allowEmptyString ("te_theme_application", "pie_dimension_attr");
+		db->allowEmptyString ("te_theme_application", "text_table");
+		db->allowEmptyString ("te_theme_application", "chart_function");
+	}
+
+	//------------ auxiliary collection  
+	TeDatabasePortal* portal = db->getPortal();
+	if(!portal)
+		return false;
+
+	string sql = " SELECT theme_id, visible_rep FROM te_theme ";
+	if(!portal->query(sql))
+	{
+		delete portal;
+		return true;
+	}
+
+	while(portal->fetchRow ())
+	{
+		string	themeId = portal->getData(0);
+		int		visRep  = atoi(portal->getData(1));
+
+		string collExtTable = "te_collection_"+ themeId +"_aux";
+		
+		if	((db->tableExist("te_collection_"+ themeId)) && 
+			((visRep & TeRASTER) != TeRASTER)			 && 
+			(!db->tableExist(collExtTable)))
+		{
+			TeTheme* theme = new TeTheme();
+			theme->id(atoi(themeId.c_str()));
+			if(!db->loadTheme (theme))
+			{
+				delete portal;
+				return false;
+			}
+
+			string up = "UPDATE " + theme->collectionTable() + " SET c_object_status = 0";
+			up += " WHERE c_object_status <> " + Te2String(theme->pointingLegend().id());
+			up += " AND c_object_status <> " + Te2String(theme->queryLegend().id());
+			up += " AND c_object_status <> " + Te2String(theme->queryAndPointingLegend().id());
+			db->execute(up);
+
+			up = "UPDATE " + theme->collectionTable() + " SET c_object_status = 1";
+			up += " WHERE c_object_status = " + Te2String(theme->pointingLegend().id());
+			db->execute(up);
+
+			up = "UPDATE " + theme->collectionTable() + " SET c_object_status = 2";
+			up += " WHERE c_object_status = " + Te2String(theme->queryLegend().id());
+			db->execute(up);
+
+			up = "UPDATE " + theme->collectionTable() + " SET c_object_status = 3";
+			up += " WHERE c_object_status = " + Te2String(theme->queryAndPointingLegend().id());
+			db->execute(up);
+
+			if ((!theme->createCollectionAuxTable()) || (!theme->populateCollectionAux())) 
+			{
+				errorMessage = "Fail to mount the auxiliary table of the collection!\n";
+				errorMessage += db->errorMessage();
+				delete portal;
+				return false;
+			}
+
+			theme->collectionAuxTable(collExtTable);
+			theme->addThemeTable(collExtTable);
+					
+			string oldTCE = theme->collectionTable() + "_ext";
+			if (db->tableExist(oldTCE))
+			{
+				string delTable = "DROP TABLE " + oldTCE;
+				db->execute(delTable);
+			}
+		}
+		
+	}
+	//------------ end auxiliary collection  
+
+	portal->freeResult();
+
+	//------------ text table  
+	// if text table have not text visual table associated, create it
+	string sel = "SELECT geom_table FROM te_representation WHERE";
+	sel += " geom_type = " + Te2String(TeTEXT);
+	if(portal->query(sel))
+	{
+		while(portal->fetchRow())
+		{
+			string table = portal->getData(0);
+			string tvis = table + "_txvisual";
+			if(!db->tableExist(tvis))
+			{
+				TeAttributeList atl;
+				TeAttribute		at;
+
+				at.rep_.name_ = "geom_id";
+				at.rep_.type_ = TeINT;
+				at.rep_.numChar_ = 0;
+				at.rep_.isPrimaryKey_ = true;
+				atl.push_back(at);
+
+				at.rep_.isPrimaryKey_ = false;
+				at.rep_.name_ = "dot_height";
+				at.rep_.type_ = TeINT;
+				atl.push_back(at);
+
+				at.rep_.name_ = "fix_size";
+				at.rep_.type_ = TeINT;
+				atl.push_back(at);
+
+				at.rep_.name_ = "color";
+				at.rep_.type_ = TeINT;
+				atl.push_back(at);
+
+				at.rep_.name_ = "family";
+				at.rep_.type_ = TeSTRING;
+				at.rep_.numChar_ = 128;
+				atl.push_back(at);
+
+				at.rep_.name_ = "bold";
+				at.rep_.type_ = TeINT;
+				at.rep_.numChar_ = 0;
+				atl.push_back(at);
+
+				at.rep_.name_ = "italic";
+				at.rep_.type_ = TeINT;
+				atl.push_back(at);
+
+				db->createTable(tvis, atl);
+				string fk = "fk_" + tvis;
+				db->createRelation(fk, tvis, "geom_id", table, "geom_id", true);
+				string ins = "INSERT INTO " + tvis + " (geom_id) SELECT geom_id FROM " + table;
+				db->execute(ins);
+
+				string popule = "UPDATE " + tvis;
+				popule += " SET dot_height = 12";
+				popule += ", fix_size = 0";
+				popule += ", color = 16711680";
+				popule += ", family = 'verdana'";
+				popule += ", bold = 1";
+				popule += ", italic = 0";
+				if(!db->execute(popule))
+				{
+					errorMessage = "Fail to generate the text visual table!\n";
+					errorMessage += db->errorMessage();
+					delete portal;
+					return false;;
+				}
+			}
+		}
+	}
+	//------------ end text table  
+	delete portal;
+	return true;
+}
+
+
+bool updateDB30To301(TeDatabase* db, string& errorMessage)
+{
+	TeAttribute fattr;
+
+	TeDatabasePortal* portal = db->getPortal();
+	if(!portal)
+		return false;
+
+	// ----- collection_table
+
+	string sql = " SELECT collection_table FROM te_theme ";   
+	if(!portal->query(sql))
+	{
+		delete portal;
+		return false;
+	}
+
+	while(portal->fetchRow())
+	{
+		string collName = portal->getData(0);
+		if(	(db->tableExist(collName)) && 
+			(!db->columnExist(collName, "c_object_status", fattr)))
+		{
+			TeAttributeRep atRep;
+			atRep.type_ = TeINT;
+			atRep.name_ = "c_object_status";
+			if(db->addColumn(collName, atRep) == false)
+			{
+				errorMessage = "The column c_object_status could not be appended!\n";
+				errorMessage += db->errorMessage();
+				delete portal;
+				return false;
+			}
+
+			string upd = " UPDATE "+collName+" t1, "+collName+" t2 ";
+			upd +=	" SET t1.c_object_status = t2.c_legend_result ";
+			upd +=	" WHERE t1.c_object_id = t2.c_object_id ";
+
+			if(!db->execute (upd))
+			{
+				errorMessage = db->errorMessage();
+				delete portal;
+				return false;
+			}
+
+			db->deleteColumn(collName, "c_legend_result");
+		}
+	}
+
+	delete portal;
+	return true; 
+}
+
+
+bool updateDB301To302(TeDatabase* db, string& errorMessage)
+{
+		
+	TeDatabasePortal* portal = db->getPortal();
+	if(!portal)
+		return false;
+
+	// ----- valid attribute table 
+	
+	TeAttrTableVector attrTableVec;
+	if(db->getAttrTables(attrTableVec))
+	{
+		for(unsigned int i=0; i<attrTableVec.size(); ++i)
+		{
+			TeTable fromTable = attrTableVec[i];
+			bool	flag = false;
+			
+			if(fromTable.tableType()==TeAttrMedia)
+				continue;
+
+			//verify if there is another table with the same name
+			for(unsigned int j=0; j<i; ++j)
+			{
+				if(TeConvertToUpperCase(attrTableVec[j].name())==TeConvertToUpperCase(fromTable.name())) 
+				{
+					flag = true;
+					break;
+				}
+			}
+
+			if(flag)
+				continue;
+			
+			if(db->validTable(fromTable)) //fromTable was modified
+			{
+				TeAttributeList newAttrList = fromTable.attributeList();
+				TeAttributeList oldAttrList = attrTableVec[i].attributeList();
+				TeAttributeList::iterator newAttIt = newAttrList.begin();
+				TeAttributeList::iterator oldAttIt = oldAttrList.begin();
+
+				bool change = false;
+				while(newAttIt!=newAttrList.end())
+				{
+					if(((*oldAttIt).rep_.name_) != ((*newAttIt).rep_.name_))
+					{
+						TeAttributeRep rep = (*newAttIt).rep_;
+						if(db->alterTable(fromTable.name(), rep, (*oldAttIt).rep_.name_))
+							change = true;
+					}
+
+					++newAttIt;
+					++oldAttIt;
+				}
+
+				if(change)
+				{
+					// update te_layer_table
+					string upd = " UPDATE te_layer_table ";
+					upd +=	" SET unique_id = '"+ fromTable.uniqueName() +"'";
+					upd +=  ", attr_link = '"+ fromTable.linkName() +"'";
+					upd +=	" WHERE attr_table = '"+ fromTable.name() +"'";
+
+					if(!db->execute (upd))
+					{
+						delete portal;
+						errorMessage = "Error updating te_layer_table!\n";
+						errorMessage += db->errorMessage();
+						return false;
+					}
+				}
+			}//if
+		}//for
+		portal->freeResult();
+	}
+
+	// ----- te_grouping table
+
+	string sel = " SELECT theme_id, grouping_attr, grouping_attr_type FROM te_grouping ";
+	if(!portal->query(sel))
+	{
+		delete portal;
+		return false;
+	}
+
+	while(portal->fetchRow())
+	{
+		string themeId, gAttr;
+		themeId = portal->getData(0);
+		gAttr = portal->getData(1);
+		int gTypr = portal->getInt(2);
+		
+		if(((gAttr.empty()) || (gAttr=="NONE")) && (gTypr==0))
+		{
+			string del = " DELETE FROM te_grouping WHERE theme_id = "+ themeId; 
+			db->execute(del);
+		}
+	}
+
+	// ----- te_grouping table
+
+	delete portal;
+	return true; 
+}
+
+bool PostgreSQLUpdateDB302To310(TeDatabase* db, TeGeomRep rep, const string& geomTableName)
+{
+	string geomColumnName = "spatial_box";
+
+	if(rep & TeRASTER)
+		geomColumnName = "block_box";
+
+	TeAttribute attr;
+
+// verifies if table already has a box column
+	if(db->columnExist(geomTableName, geomColumnName, attr))
+		return true;
+
+// add box column
+	string sql  = "ALTER TABLE " + geomTableName;
+			sql += " ADD COLUMN " + geomColumnName + " BOX";
+
+	if(!db->execute(sql))
+		return false;
+
+// make sure box column exist	
+	if(!db->columnExist(geomTableName, geomColumnName, attr))
+		return false;
+
+// populate column with values from older one
+	sql  = "UPDATE " + geomTableName;
+
+	if(rep & TePOINTS)
+		sql += " SET " + geomColumnName + " = box(point(x, y), point(x, y))";
+	else
+		sql += " SET " + geomColumnName + " = box(point(upper_x, upper_y), point(lower_x, lower_y))";
+
+	if(!db->execute(sql))
+		return false;
+
+// check if there is no null values
+	sql  = "SELECT * FROM " + geomTableName;
+	sql += " WHERE " + geomColumnName + " IS NULL";
+
+	TeDatabasePortal* p = db->getPortal();
+
+	if(!p)
+		return false;
+
+	 if(!p->query(sql))
+	 {
+		 delete p;
+
+		 return false;
+	 }
+
+     if(p->fetchRow())
+     {
+         delete p;
+
+         return false;
+	 }
+
+     delete p;
+
+// add not null for box column
+	sql  = "ALTER TABLE " + geomTableName;
+	sql += " ALTER COLUMN " + geomColumnName + " SET NOT NULL";
+
+	if(!db->execute(sql))
+		return false;
+	
+// create GiST index
+	if(!db->createSpatialIndex(geomTableName, geomColumnName))
+		return false;
+
+// for points is enough
+	if(rep & TePOINTS)
+		return true;
+
+// drop older B-Tree index
+	sql = "DROP INDEX " +  geomTableName + "_idx_box";
+
+	if(!db->execute(sql))
+		return false;
+
+// drop older box column
+	sql  = "ALTER TABLE " + geomTableName;
+	sql += " DROP COLUMN lower_x";
+
+	if(!db->execute(sql))
+		return false;
+
+	sql  = "ALTER TABLE " + geomTableName;
+	sql += " DROP COLUMN lower_y";
+
+	if(!db->execute(sql))
+		return false;
+
+	sql  = "ALTER TABLE " + geomTableName;
+	sql += " DROP COLUMN upper_x";
+
+	if(!db->execute(sql))
+		return false;
+
+	sql  = "ALTER TABLE " + geomTableName;
+	sql += " DROP COLUMN upper_y";
+
+	if(!db->execute(sql))
+		return false;
+
+	return true;
+}
+
+bool updateDB302To310(TeDatabase* db, string& errorMessage)
+{
+	// Append the column "grouping_chronon" in the "te_grouping"
+	// table if he column doesn�t exist
+	TeAttribute attr;
+	if(db->columnExist("te_grouping", "grouping_chronon", attr) == false)
+	{
+		TeAttributeRep atRep;
+		atRep.type_ = TeINT;
+		atRep.name_ = "grouping_chronon";
+		if(db->addColumn("te_grouping", atRep) == false)
+		{
+			errorMessage = "The column grouping_chronon could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+
+		// Set the new column "grouping_chronon" to no chronon
+		string upd = " UPDATE te_grouping ";
+		upd +=	" SET grouping_chronon = 0 ";	
+		if(!db->execute (upd))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+
+	}
+
+	if(db->dbmsName() == "MySQL")
+	{
+		TeAttributeRep rep;
+		rep.name_ = "visible_rep";
+		rep.type_ = TeINT;
+		
+		if (db->alterTable("te_theme", rep) == false)
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+	}
+	else if(db->dbmsName() == "PostgreSQL")
+	{
+		if(!db->execute("BEGIN TRANSACTION"))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+
+		if(!db->loadLayerSet())
+		{
+			db->execute("ROLLBACK TRANSACTION");
+			return false;
+		}
+
+		TeLayerMap& layerMap = db->layerMap();
+
+		TeLayerMap::iterator itLayer = layerMap.begin();
+
+//		for each layer, find representations to update box columns
+		while(itLayer != layerMap.end())
+		{
+// update point geometry table
+			TeRepresentation* rep = itLayer->second->getRepresentation(TePOINTS);
+
+			if(rep)
+			{
+				string geomTableName = rep->tableName_;
+
+				if(!PostgreSQLUpdateDB302To310(db, TePOINTS, geomTableName))
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+			}
+
+// update line geometry table
+			rep = itLayer->second->getRepresentation(TeLINES);
+
+			if(rep)
+			{
+				string geomTableName = rep->tableName_;
+
+				if(!PostgreSQLUpdateDB302To310(db, TeLINES, geomTableName))
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+			}
+
+// update polygon geometry table
+			rep = itLayer->second->getRepresentation(TePOLYGONS);
+
+			if(rep)
+			{
+				string geomTableName = rep->tableName_;
+
+				if(!PostgreSQLUpdateDB302To310(db, TePOLYGONS, geomTableName))
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+			}
+
+// update raster geometry table
+			rep = itLayer->second->getRepresentation(TeRASTER);
+
+			if(rep)
+			{
+				string rasterGeomTableName = rep->tableName_;
+
+				string sql = "SELECT raster_table FROM " + rasterGeomTableName;
+
+				TeDatabasePortal* p = db->getPortal();
+
+				if(!p)
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+
+				if(!p->query(sql))
+				{
+					delete p;
+
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+
+				while(p->fetchRow())
+				{
+					string geomTableName = p->getData(0);
+
+					if(!PostgreSQLUpdateDB302To310(db, TeRASTER, geomTableName))
+					{
+						delete p;
+
+						db->execute("ROLLBACK TRANSACTION");
+
+						return false;
+					}
+				}
+
+				delete p;
+			}
+
+// update cell geometry table
+			rep = itLayer->second->getRepresentation(TeCELLS);
+
+			if(rep)
+			{
+				string geomTableName = rep->tableName_;
+
+				if(!PostgreSQLUpdateDB302To310(db, TeCELLS, geomTableName))
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+			}
+
+// update node geometry table
+			rep = itLayer->second->getRepresentation(TeNODES);
+
+			if(rep)
+			{
+				string geomTableName = rep->tableName_;
+
+				if(!PostgreSQLUpdateDB302To310(db, TeNODES, geomTableName))
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+			}
+
+			++itLayer;
+		}
+
+		if(!db->execute("COMMIT TRANSACTION"))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+	}
+	else if(db->dbmsName() == "PostGIS")
+	{
+		if(!db->execute("BEGIN TRANSACTION"))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+
+		if(!db->loadLayerSet())
+		{
+			db->execute("ROLLBACK TRANSACTION");
+
+			return false;
+		}
+
+		TeLayerMap& layerMap = db->layerMap();
+
+		TeLayerMap::iterator itLayer = layerMap.begin();
+
+//		for each layer, find representations to update box columns
+		while(itLayer != layerMap.end())
+		{
+// update raster geometry table
+			TeRepresentation* rep = itLayer->second->getRepresentation(TeRASTER);
+
+			if(rep)
+			{
+				string rasterGeomTableName = rep->tableName_;
+
+				string sql = "SELECT raster_table FROM " + rasterGeomTableName;
+
+				TeDatabasePortal* p = db->getPortal();
+
+				if(!p)
+				{
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+
+				if(!p->query(sql))
+				{
+					delete p;
+
+					db->execute("ROLLBACK TRANSACTION");
+
+					return false;
+				}
+
+				while(p->fetchRow())
+				{
+					string geomTableName = p->getData(0);
+
+					if(!PostgreSQLUpdateDB302To310(db, TeRASTER, geomTableName))
+					{
+						delete p;
+
+						db->execute("ROLLBACK TRANSACTION");
+
+						return false;
+					}
+				}
+
+				delete p;
+			}
+
+			++itLayer;
+		}
+
+		if(!db->execute("COMMIT TRANSACTION"))
+		{
+			errorMessage = db->errorMessage();
+			return false;
+		}
+	}
+
+	return true;
+}
+
+bool updateDB310To311(TeDatabase* db, string& errorMessage)
+{
+	string sql = " SELECT collection_table FROM te_theme ";
+	TeDatabasePortal* portal = db->getPortal();
+	if(!portal)
+		return false;
+
+	if(!portal->query(sql))
+	{
+		delete portal;
+		return false;
+	}
+
+	while(portal->fetchRow())
+	{
+		string tableName = portal->getData(0);
+		if(!db->tableExist(tableName+"_aux"))
+			continue;
+
+		TeDatabasePortal* portal2 = db->getPortal();
+		if(!portal2)
+		{
+			delete portal;
+			return false;
+		}
+
+		sql = " SELECT * FROM "+ tableName+"_aux WHERE 1=2";
+		if(!portal2->query(sql))
+		{
+			delete portal;
+			delete portal2;
+			return false;
+		}
+
+		TeAttributeList attrList;
+		for(int i=0; i<portal2->numFields(); ++i)
+		{
+			if(TeConvertToUpperCase(portal2->getAttribute(i).rep_.name_) != "UNIQUE_ID" )
+				attrList.push_back(portal2->getAttribute(i));
+		}
+
+        delete portal2;
+
+		//add new autonumber column
+		TeAttribute attr;
+		attr.rep_.name_= "unique_id" ;
+		attr.rep_.type_= TeINT;
+		attr.rep_.isAutoNumber_ = true;
+		attr.rep_.isPrimaryKey_ = true;
+		attrList.push_back(attr);
+		
+		//create new table 
+		if(!db->createTable(tableName+"_aux2", attrList))
+		{
+			errorMessage = "Error creating table "+ tableName+"_aux2 !\n";
+			errorMessage += db->errorMessage();
+			delete portal;
+			return false;
+		}
+
+		//insert records
+		string ins = " INSERT INTO "+ tableName +"_aux2 ( ";
+		string ins2 ="";
+		for(unsigned int j=0; j<(attrList.size()-1); ++j)
+		{
+			if(j>0)
+				ins2 += ",";
+			ins2 += attrList[j].rep_.name_;
+		}
+		ins += ins2 +" ) SELECT "+ ins2;
+		ins += " FROM "+ tableName+"_aux";
+		if(!db->execute(ins))
+		{
+			errorMessage = "Error inserting table "+ tableName+"_aux2 !\n";
+			errorMessage += db->errorMessage();
+			delete portal;
+			return false;
+		}
+
+		sql = " DROP TABLE "+ tableName+"_aux";
+		if(db->tableExist(tableName+"_aux"))
+		{
+			if(!db->execute(sql))
+			{
+				errorMessage = "Error dropping table "+ tableName+"_aux2 !\n";
+				errorMessage += db->errorMessage();
+				delete portal;
+				return false;
+			}
+		}
+		
+		if(!db->alterTable(tableName+"_aux2", tableName+"_aux"))
+		{
+			errorMessage = "Error renaming table "+ tableName+"_aux2 !\n";
+			errorMessage += db->errorMessage();
+			delete portal;
+			return false;
+		}
+	}
+
+	delete portal;
+	return true;
+}
+
+bool updateDB311To320(TeDatabase* db, string& errorMessage)
+{
+	if (!db->tableExist("te_project"))
+	{
+		if (!db->createProjectTable())
+		{
+			errorMessage = "Error creating te_project table\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+
+	if (!db->tableExist("te_project_view"))
+	{
+		if (!db->createProjectViewTable())
+ 		{
+			errorMessage = "Error creating te_project_view table\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	
+	//remove columns of the table te_visual
+	TeAttribute	attr;
+	attr.rep_.name_ = "lib_name";
+	attr.rep_.type_ = TeSTRING;
+		
+	if(db->columnExist("te_visual", attr.rep_.name_,attr))
+	{
+        //remove column lib_name
+		if(!db->deleteColumn("te_visual", attr.rep_.name_))
+		{
+			errorMessage = "Error removing a column of the te_visual table\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+
+	attr.rep_.name_ = "contour_lib_name";
+	if(db->columnExist("te_visual", attr.rep_.name_,attr))
+	{
+        //remove column lib_name
+		if(!db->deleteColumn("te_visual", attr.rep_.name_))
+		{
+			errorMessage = "Error removing a column of the te_visual table\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+
+	return true;
+}
+
+bool updateDB320To3201(TeDatabase* db, string& errorMessage)
+{
+	//--- remove the table te_color_scheme
+	db->deleteTable("te_color_scheme");	
+	
+	//--- store the theme box 
+	//verify if the theme box is stored 
+	TeAttribute	attr;
+	attr.rep_.name_ = "lower_x";
+	attr.rep_.type_ = TeREAL;
+
+	TeAttributeRep atRep;
+	if(!db->columnExist("te_theme", attr.rep_.name_,attr))
+	{
+		//create the columns
+		TeAttributeRep atRep;
+		atRep.type_ = TeREAL;
+		atRep.name_ = "lower_x";
+		atRep.decimals_ = 15;
+		atRep.defaultValue_ = "0.0";
+		if(db->addColumn("te_theme", atRep) == false)
+		{
+			errorMessage = "The theme box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	attr.rep_.name_ = "lower_y";
+	if(!db->columnExist("te_theme", attr.rep_.name_,attr))
+	{
+		atRep.name_ = "lower_y";
+		if(db->addColumn("te_theme", atRep) == false)
+		{
+			errorMessage = "The theme box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	attr.rep_.name_ = "upper_x";
+	if(!db->columnExist("te_theme", attr.rep_.name_,attr))
+	{
+		atRep.name_ = "upper_x";
+		if(db->addColumn("te_theme", atRep) == false)
+		{
+			errorMessage = "The theme box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	attr.rep_.name_ = "upper_y";
+	if(!db->columnExist("te_theme", attr.rep_.name_,attr))
+	{
+		atRep.name_ = "upper_y";
+		if(db->addColumn("te_theme", atRep) == false)
+		{
+			errorMessage = "The theme box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	
+	//fill the box theme
+	string sql = "SELECT te_theme.name, te_view.user_name ";
+	sql += " FROM te_theme INNER JOIN te_view ON te_theme.view_id = te_view.view_id ";
+	TeDatabasePortal* portal = db->getPortal();
+	if(!portal)
+		return false;
+	
+	if(!portal->query(sql))
+	{
+		delete portal;
+		return false;
+	}
+
+	string originalUser = db->user();
+	while(portal->fetchRow())
+	{
+		string themeName = string(portal->getData(0));
+		string userName = string(portal->getData(1));
+		db->user(userName);
+
+		TeTheme theme(themeName);
+		if(!db->loadTheme(&theme))
+		{
+			delete portal;
+			errorMessage = "Error updating theme box!";
+			return false;
+		}
+
+		if(theme.type()==TeTREE)
+			continue;
+
+		//select the theme box
+		TeBox bb;
+		if (theme.layer()->hasGeometry(TeRASTER))
+			bb = theme.layer()->box();
+
+		if (theme.layer()->hasGeometry(TeRASTERFILE))
+			updateBox(bb,theme.layer()->getRepresentation(TeRASTERFILE)->box_);
+
+		string colTabName = theme.collectionTable();
+		if (!colTabName.empty())
+		{
+			string sqlfrom;
+			string geomTable;
+			if (theme.layer()->hasGeometry(TePOINTS))
+			{
+				geomTable = theme.layer()->tableName(TePOINTS);
+				sqlfrom = colTabName + " LEFT JOIN " + geomTable;
+				sqlfrom += " ON " + colTabName + ".c_object_id = " + geomTable + ".object_id";
+				TeBox bpt;
+				if(db->getMBRSelectedObjects(geomTable,"spatial_data", sqlfrom, "","",TePOINTS,bpt))
+					updateBox(bb,bpt);
+			}
+			if (theme.layer()->hasGeometry(TeLINES))
+			{
+				geomTable = theme.layer()->tableName(TeLINES);
+				sqlfrom = colTabName + " LEFT JOIN " + geomTable;
+				sqlfrom += " ON " + colTabName + ".c_object_id = " + geomTable + ".object_id";
+				TeBox bln;
+				if (db->getMBRSelectedObjects(geomTable,"spatial_data", sqlfrom, "","",TeLINES,bln))
+					updateBox(bb,bln);
+			}
+			if (theme.layer()->hasGeometry(TePOLYGONS))
+			{
+				geomTable = theme.layer()->tableName(TePOLYGONS);
+				sqlfrom = colTabName + " LEFT JOIN " + geomTable;
+				sqlfrom += " ON " + colTabName + ".c_object_id = " + geomTable + ".object_id";
+				TeBox bpol;
+				if (db->getMBRSelectedObjects(geomTable,"spatial_data", sqlfrom, "","",TePOLYGONS,bpol))
+					updateBox(bb,bpol);
+			}
+
+			if (theme.layer()->hasGeometry(TeCELLS))
+			{
+				geomTable = theme.layer()->tableName(TeCELLS);
+				sqlfrom = colTabName + " LEFT JOIN " + geomTable;
+				sqlfrom += " ON " + colTabName + ".c_object_id = " + geomTable + ".object_id";
+				TeBox bpol;
+				if (db->getMBRSelectedObjects(geomTable,"spatial_data", sqlfrom, "","",TeCELLS,bpol))
+					updateBox(bb,bpol);
+			}
+
+			if (theme.layer()->hasGeometry(TeTEXT))
+			{
+				geomTable = theme.layer()->tableName(TeTEXT);
+				sqlfrom = colTabName + " LEFT JOIN " + geomTable;
+				sqlfrom += " ON " + colTabName + ".c_object_id = " + geomTable + ".object_id";
+				TeBox bpol;
+				if (db->getMBRSelectedObjects(geomTable,"spatial_data", sqlfrom, "","",TeTEXT,bpol))
+					updateBox(bb,bpol);
+			}	
+		}
+					
+		//update theme box
+		string update = "UPDATE te_theme SET ";
+		update += "  lower_x = " + Te2String(bb.x1(), 15); 
+		update += ", lower_y = " + Te2String(bb.y1(), 15); 
+		update += ", upper_x = " + Te2String(bb.x2(), 15); 
+		update += ", upper_y = " + Te2String(bb.y2(), 15); 
+		update += " WHERE theme_id=" + Te2String (theme.id());
+		if(!db->execute(update))
+		{
+			delete portal;
+			errorMessage = "Error updating theme box!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+    }
+
+	db->clear();
+	portal->freeResult();
+	db->user(originalUser);
+	
+	//--- store the view box and current theme 
+	//verify if the view box is stored 
+	attr.rep_.name_ = "lower_x";
+	attr.rep_.type_ = TeREAL;
+
+	//create the columns
+	if(!db->columnExist("te_view", attr.rep_.name_,attr))
+	{
+		atRep.type_ = TeREAL;
+		atRep.name_ = "lower_x";
+		atRep.decimals_ = 15;
+		atRep.defaultValue_ = "0.0";
+		if(db->addColumn("te_view", atRep) == false)
+		{
+			delete portal;
+			errorMessage = "The view box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	attr.rep_.name_ = "lower_y";
+	if(!db->columnExist("te_view", attr.rep_.name_,attr))
+	{
+		atRep.name_ = "lower_y";
+		if(db->addColumn("te_view", atRep) == false)
+		{
+			delete portal;
+			errorMessage = "The view box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	attr.rep_.name_ = "upper_x";
+	if(!db->columnExist("te_view", attr.rep_.name_,attr))
+	{
+		atRep.name_ = "upper_x";
+		if(db->addColumn("te_view", atRep) == false)
+		{
+			delete portal;
+			errorMessage = "The view box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	attr.rep_.name_ = "upper_y";
+	if(!db->columnExist("te_view", attr.rep_.name_,attr))
+	{
+		atRep.name_ = "upper_y";
+		if(db->addColumn("te_view", atRep) == false)
+		{
+			delete portal;
+			errorMessage = "The view box could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+	atRep.type_ = TeINT;
+	atRep.name_ = "current_theme";
+	atRep.decimals_ = 0;
+	attr.rep_.name_ = "current_theme";
+	if(!db->columnExist("te_view", attr.rep_.name_,attr))
+	{
+		if(db->addColumn("te_view", atRep) == false)
+		{
+			delete portal;
+			errorMessage = "The view current theme could not be appended!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+		//create foreign key
+		if (!db->createRelation("fk_view_current_theme", "te_view", "current_theme", "te_theme", "theme_id", true))
+		{
+			delete portal;
+			errorMessage = "Error creating foreign key in the view table!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+	}
+
+	//fill the box view
+	sql = "SELECT view_id, MIN(lower_x), MIN(lower_y), MAX(upper_x), MAX(upper_y) ";
+	sql += " FROM te_theme GROUP BY view_id ";
+	
+	if(!portal->query(sql))
+	{
+		delete portal;
+		return false;
+	}
+
+	while(portal->fetchRow())
+	{
+		string viewId = string(portal->getData(0));
+		string update = " UPDATE te_view SET ";
+		update += " lower_x = "+ string(portal->getData(1));
+		update += ", lower_y = "+ string(portal->getData(2));
+		update += ", upper_x = "+ string(portal->getData(3));
+		update += ", upper_y = "+ string(portal->getData(4));
+		update += ", current_theme = NULL ";
+		update += " WHERE view_id = "+ viewId;
+
+		if(!db->execute(update))
+		{
+			delete portal;
+			errorMessage = "Error updating view box!\n";
+			errorMessage += db->errorMessage();
+			return false;
+		}
+    }
+
+	//------ Project information
+	attr.rep_.name_ = "current_view";
+	attr.rep_.type_ = TeINT;
+
+	//if there is the column "current_view", delete it and create it again 
+	if(db->columnExist("te_project", attr.rep_.name_, attr))
+		db->deleteColumn("te_project", attr.rep_.name_);
+	
+	attr.rep_.defaultValue_ = "0";
+	if(!db->addColumn("te_project", attr.rep_))
+	{
+		delete portal;
+		errorMessage = "The project view could not be appended!\n";
+		errorMessage += db->errorMessage();
+		return false;
+	}
+	
+	TeProject project;
+	project.setName("TV_Project");
+	project.setDescription("TerraView_Default_Project");
+	project.setCurrentViewId(-1); // not have project
+	if(!db->insertProject(&project))
+	{
+		delete portal;
+		errorMessage = "Error inserting terraView default project!\n";
+		errorMessage += db->errorMessage();
+		return false;
+	}
+
+	portal->freeResult();
+	if(!portal->query("SELECT view_id FROM te_view"))
+	{
+		errorMessage = db->errorMessage();
+		delete portal;
+		return false;
+	}
+	while(portal->fetchRow())
+	{
+		string viewId = string(portal->getData(0));
+		string ins = "INSERT INTO te_project_view (project_id, view_id) VALUES (";
+		ins += Te2String(project.id()) +  "," + viewId + ")";
+		if(!db->execute(ins))
+		{
+			errorMessage = db->errorMessage();
+			delete portal;
+			return false;
+		}
+	}
+
+	delete portal;
+	return true;
+}
+
+
diff --git a/src/terralib/utils/TeUpdateDBVersion.h b/src/terralib/utils/TeUpdateDBVersion.h
new file mode 100644
index 0000000..1ebd340
--- /dev/null
+++ b/src/terralib/utils/TeUpdateDBVersion.h
@@ -0,0 +1,60 @@
+/************************************************************************************
+ TerraLib - a library for developing GIS applications.
+Copyright � 2001-2007 INPE and Tecgraf/PUC-Rio.
+
+This code is part of the TerraLib library.
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library.
+
+The authors reassure the license terms regarding the warranties.
+They specifically disclaim any warranties, including, but not limited to,
+the implied warranties of merchantability and fitness for a particular purpose.
+The library provided hereunder is on an "as is" basis, and the authors have no
+obligation to provide maintenance, support, updates, enhancements, or modifications.
+In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
+indirect, special, incidental, or consequential damages arising out of the use
+of this library and its documentation.
+*************************************************************************************/
+/*! \file TeUpdateDBVersion.h
+    \brief This file contains the routines to update a TerraLib database to its different versions
+*/
+
+#ifndef  __TERRALIB_INTERNAL_UPDATEDBVERSION_H
+#define  __TERRALIB_INTERNAL_UPDATEDBVERSION_H
+
+#include "TeDatabase.h"
+
+//! verify if the database needs update 
+bool needUpdateDB(TeDatabase* db, string& DBversion);
+
+//! update database version 
+bool updateDBVersion(TeDatabase* db, string& DBversion, string& errorMessage);
+
+//! update database from release 2.0 to release 3.0
+bool updateDB20To30(TeDatabase* db, string& errorMessage);
+
+//! update database from release 3.0 to release 3.0.1
+bool updateDB30To301(TeDatabase* db, string& errorMessage);
+
+//! update database from release 3.0.1 to release 3.0.2 (3.0 Plus)
+bool updateDB301To302(TeDatabase* db, string& errorMessage); 
+ 
+//! update database from release 3.0.2 to release 3.1.0
+bool updateDB302To310(TeDatabase* db, string& errorMessage); 
+
+//! update database from release 3.1.0 to release 3.1.1
+bool updateDB310To311(TeDatabase* db, string& errorMessage); 
+
+//! update database from release 3.1.1 to release 3.2.0
+bool updateDB311To320(TeDatabase* db, string& errorMessage); 
+
+//! update database from release 3.2.0 to release 3.2.0.1
+bool updateDB320To3201(TeDatabase* db, string& errorMessage);
+
+#endif
+
diff --git a/src/terralib/utils/mtrand.cpp b/src/terralib/utils/mtrand.cpp
new file mode 100644
index 0000000..e6a8807
--- /dev/null
+++ b/src/terralib/utils/mtrand.cpp
@@ -0,0 +1,50 @@
+// mtrand.cpp, see include file mtrand.h for information
+
+#include "mtrand.h"
+// non-inline function definitions and static member definitions cannot
+// reside in header file because of the risk of multiple declarations
+
+// initialization of static private members
+unsigned long MTRand_int32::state[n] = {0x0UL};
+int MTRand_int32::p = 0;
+bool MTRand_int32::init = false;
+
+void MTRand_int32::gen_state() { // generate new state vector
+  for (int i = 0; i < (n - m); ++i)
+    state[i] = state[i + m] ^ twiddle(state[i], state[i + 1]);
+  for (int i = n - m; i < (n - 1); ++i)
+    state[i] = state[i + m - n] ^ twiddle(state[i], state[i + 1]);
+  state[n - 1] = state[m - 1] ^ twiddle(state[n - 1], state[0]);
+  p = 0; // reset position
+}
+
+void MTRand_int32::seed(unsigned long s) {  // init by 32 bit seed
+  state[0] = s & 0xFFFFFFFFUL; // for > 32 bit machines
+  for (int i = 1; i < n; ++i) {
+    state[i] = 1812433253UL * (state[i - 1] ^ (state[i - 1] >> 30)) + i;
+// see Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier
+// in the previous versions, MSBs of the seed affect only MSBs of the array state
+// 2002/01/09 modified by Makoto Matsumoto
+    state[i] &= 0xFFFFFFFFUL; // for > 32 bit machines
+  }
+  p = n; // force gen_state() to be called for next random number
+}
+
+void MTRand_int32::seed(const unsigned long* array, int size) { // init by array
+  seed(19650218UL);
+  int i = 1, j = 0;
+  for (int k = ((n > size) ? n : size); k; --k) {
+    state[i] = (state[i] ^ ((state[i - 1] ^ (state[i - 1] >> 30)) * 1664525UL))
+      + array[j] + j; // non linear
+    state[i] &= 0xFFFFFFFFUL; // for > 32 bit machines
+    ++j; j %= size;
+    if ((++i) == n) { state[0] = state[n - 1]; i = 1; }
+  }
+  for (int k = n - 1; k; --k) {
+    state[i] = (state[i] ^ ((state[i - 1] ^ (state[i - 1] >> 30)) * 1566083941UL)) - i;
+    state[i] &= 0xFFFFFFFFUL; // for > 32 bit machines
+    if ((++i) == n) { state[0] = state[n - 1]; i = 1; }
+  }
+  state[0] = 0x80000000UL; // MSB is 1; assuring non-zero initial array
+  p = n; // force gen_state() to be called for next random number
+}
diff --git a/src/terralib/utils/mtrand.h b/src/terralib/utils/mtrand.h
new file mode 100644
index 0000000..0f49489
--- /dev/null
+++ b/src/terralib/utils/mtrand.h
@@ -0,0 +1,153 @@
+// mtrand.h
+// C++ include file for MT19937, with initialization improved 2002/1/26.
+// Coded by Takuji Nishimura and Makoto Matsumoto.
+// Ported to C++ by Jasper Bedaux 2003/1/1 (see http://www.bedaux.net/mtrand/).
+// The generators returning floating point numbers are based on
+// a version by Isaku Wada, 2002/01/09
+//
+// Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+//
+// 3. The names of its contributors may not be used to endorse or promote
+//    products derived from this software without specific prior written
+//    permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Any feedback is very welcome.
+// http://www.math.keio.ac.jp/matumoto/emt.html
+// email: matumoto at math.keio.ac.jp
+//
+// Feedback about the C++ port should be sent to Jasper Bedaux,
+// see http://www.bedaux.net/mtrand/ for e-mail address and info.
+
+#ifndef MTRAND_H
+#define MTRAND_H
+
+class MTRand_int32 { // Mersenne Twister random number generator
+public:
+// default constructor: uses default seed only if this is the first instance
+  MTRand_int32() { if (!init) seed(5489UL); init = true; }
+// constructor with 32 bit int as seed
+  MTRand_int32(unsigned long s) { seed(s); init = true; }
+// constructor with array of size 32 bit ints as seed
+  MTRand_int32(const unsigned long* array, int size) { seed(array, size); init = true; }
+// the two seed functions
+  void seed(unsigned long); // seed with 32 bit integer
+  void seed(const unsigned long*, int size); // seed with array
+// overload operator() to make this a generator (functor)
+  unsigned long operator()() { return rand_int32(); }
+// 2007-02-11: made the destructor virtual; thanks "double more" for pointing this out
+  virtual ~MTRand_int32() {} // destructor
+protected: // used by derived classes, otherwise not accessible; use the ()-operator
+  unsigned long rand_int32(); // generate 32 bit random integer
+private:
+  static const int n = 624, m = 397; // compile time constants
+// the variables below are static (no duplicates can exist)
+  static unsigned long state[n]; // state vector array
+  static int p; // position in state array
+  static bool init; // true if init function is called
+// private functions used to generate the pseudo random numbers
+  unsigned long twiddle(unsigned long, unsigned long); // used by gen_state()
+  void gen_state(); // generate new state
+// make copy constructor and assignment operator unavailable, they don't make sense
+  MTRand_int32(const MTRand_int32&); // copy constructor not defined
+  void operator=(const MTRand_int32&); // assignment operator not defined
+};
+
+// inline for speed, must therefore reside in header file
+inline unsigned long MTRand_int32::twiddle(unsigned long u, unsigned long v) {
+  return (((u & 0x80000000UL) | (v & 0x7FFFFFFFUL)) >> 1)
+    ^ ((v & 1UL) ? 0x9908B0DFUL : 0x0UL);
+}
+
+inline unsigned long MTRand_int32::rand_int32() { // generate 32 bit random int
+  if (p == n) gen_state(); // new state vector needed
+// gen_state() is split off to be non-inline, because it is only called once
+// in every 624 calls and otherwise irand() would become too big to get inlined
+  unsigned long x = state[p++];
+  x ^= (x >> 11);
+  x ^= (x << 7) & 0x9D2C5680UL;
+  x ^= (x << 15) & 0xEFC60000UL;
+  return x ^ (x >> 18);
+}
+
+// generates double floating point numbers in the half-open interval [0, 1)
+class MTRand : public MTRand_int32 {
+public:
+  MTRand() : MTRand_int32() {}
+  MTRand(unsigned long seed) : MTRand_int32(seed) {}
+  MTRand(const unsigned long* seed, int size) : MTRand_int32(seed, size) {}
+  ~MTRand() {}
+  double operator()() {
+    return static_cast<double>(rand_int32()) * (1. / 4294967296.); } // divided by 2^32
+private:
+  MTRand(const MTRand&); // copy constructor not defined
+  void operator=(const MTRand&); // assignment operator not defined
+};
+
+// generates double floating point numbers in the closed interval [0, 1]
+class MTRand_closed : public MTRand_int32 {
+public:
+  MTRand_closed() : MTRand_int32() {}
+  MTRand_closed(unsigned long seed) : MTRand_int32(seed) {}
+  MTRand_closed(const unsigned long* seed, int size) : MTRand_int32(seed, size) {}
+  ~MTRand_closed() {}
+  double operator()() {
+    return static_cast<double>(rand_int32()) * (1. / 4294967295.); } // divided by 2^32 - 1
+private:
+  MTRand_closed(const MTRand_closed&); // copy constructor not defined
+  void operator=(const MTRand_closed&); // assignment operator not defined
+};
+
+// generates double floating point numbers in the open interval (0, 1)
+class MTRand_open : public MTRand_int32 {
+public:
+  MTRand_open() : MTRand_int32() {}
+  MTRand_open(unsigned long seed) : MTRand_int32(seed) {}
+  MTRand_open(const unsigned long* seed, int size) : MTRand_int32(seed, size) {}
+  ~MTRand_open() {}
+  double operator()() {
+    return (static_cast<double>(rand_int32()) + .5) * (1. / 4294967296.); } // divided by 2^32
+private:
+  MTRand_open(const MTRand_open&); // copy constructor not defined
+  void operator=(const MTRand_open&); // assignment operator not defined
+};
+
+// generates 53 bit resolution doubles in the half-open interval [0, 1)
+class MTRand53 : public MTRand_int32 {
+public:
+  MTRand53() : MTRand_int32() {}
+  MTRand53(unsigned long seed) : MTRand_int32(seed) {}
+  MTRand53(const unsigned long* seed, int size) : MTRand_int32(seed, size) {}
+  ~MTRand53() {}
+  double operator()() {
+    return (static_cast<double>(rand_int32() >> 5) * 67108864. + 
+      static_cast<double>(rand_int32() >> 6)) * (1. / 9007199254740992.); }
+private:
+  MTRand53(const MTRand53&); // copy constructor not defined
+  void operator=(const MTRand53&); // assignment operator not defined
+};
+
+#endif // MTRAND_H
diff --git a/src/visualisers/Akima474MethodAttributes.h b/src/visualisers/Akima474MethodAttributes.h
deleted file mode 100644
index 4e163cc..0000000
--- a/src/visualisers/Akima474MethodAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file Akima474MethodAttributes.h
-    \brief Definition of Akima474Method Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef Akima474MethodAttributes_H
-#define Akima474MethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class Akima474MethodAttributes 
-{
-public:
-//  --  constructor
-    Akima474MethodAttributes();
-    
-//  --  destructor
-    virtual ~Akima474MethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const Akima474MethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double resolutionX_;
-	double resolutionY_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const Akima474MethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/Akima760.cc b/src/visualisers/Akima760.cc
index 4af3343..50bdee4 100644
--- a/src/visualisers/Akima760.cc
+++ b/src/visualisers/Akima760.cc
@@ -25,8 +25,8 @@
     
 */
 
-#include "Akima760Method.h"
 #include "MagLog.h"
+#include "Akima760Method.h"
 #include "Timer.h"
 
 using namespace magics;
@@ -151,44 +151,7 @@ double Akima760::regular_row(int i) const
 
 
 double Akima760::row(int i, int j) const {
-	return this->real_row(regular_row(i), regular_column(j));
-	/*
-	double r = regular_row(i);
-	double c = regular_column(j);
-	
-	
-	int r1 = abs(r);
-	int c1 = abs(c); 
-	int r2 = abs(r);
-	int c2 = abs(c+1);
-	int r3 = abs(r+1);
-	int c3 = abs(c);	
-	int r4 = abs(r+1);
-	int c4 = abs(c+1);
-	
-	double row1 = this->real_row(r1, c1);
-	double row2 = this->real_row(r2, c2);
-	double row3 = this->real_row(r3, c3);
-	double row4 = this->real_row(r4, c4);
-
-	double w1 = (c2-c)/(c2-c1);
-	double w2 = (c-c1)/(c2-c1);
-	double row12 = 	(row1*w1) + (row2*w2);
-	
-	double w3 = (c4-c)/(c4-c3);
-	double w4 = (c-c3)/(c4-c3);
-	
-	double row34 = 	(row3*w3) + (row4*w4);
-	
-	double w5 = (r1-r)/(r3-r1);
-	double w6 = (r-r3)/(r3-r1);
-	
-	double row = (row12*w5) +  (row34*w6);
-
-	return row;
-    	
-    	*/
-    
+	return regular_row(i);
 }
 
 
@@ -205,42 +168,8 @@ double Akima760::regular_column(int j) const
 
 double Akima760::column(int i, int j) const {
 	
-	return this->real_column(regular_row(i), regular_column(j));
-	/*
-	double row = regular_row(i);
-	double column = regular_column(j);
-	
-	
-	int r1 = abs(row);
-	int c1 = abs(column);
-	int r2 = abs(row);
-	int c2 = abs(column+1);
-	int r3 = abs(row+1);
-	int c3 = abs(column);	
-	int r4 = abs(row+1);
-	int c4 = abs(column+1);
-	
-	double row1 = this->real_column(r1, c1);
-	double row2 = this->real_column(r2, c2);
-	double row3 = this->real_column(r3, c3);
-	double row4 = this->real_column(r4, c4);
-
-	double w1 = (c2-column)/(c2-c1);
-	double w2 = (column-c1)/(c2-c1);
-	double row12 = 	(row1*w1) + (row2*w2);
+	return regular_column(j);
 	
-	double w3 = (c4-column)/(c4-c3);
-	double w4 = (column-c3)/(c4-c3);
-	
-	double row34 = 	(row3*w3) + (row4*w4);
-	
-	double w5 = (r1-row)/(r3-r1);
-	double w6 = (row-r3)/(r3-r1);
-	
-	row = (row12*w5) + ( row34*w6);
-
-	return row;
-    */	
 }
 
 double Akima760::operator()(int  i, int  j) const
diff --git a/src/visualisers/Akima760Method.cc b/src/visualisers/Akima760Method.cc
new file mode 100644
index 0000000..5a3eec9
--- /dev/null
+++ b/src/visualisers/Akima760Method.cc
@@ -0,0 +1,52 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Akima760Method.cc
+    \brief Implementation of the Template class Akima760Method.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 11-Mar-2004
+    
+    Changes:
+    
+*/
+
+#include "Akima760Method.h"
+
+using namespace magics;
+
+template <class P>
+Akima760Method<P>::Akima760Method() 
+{
+}
+
+template <class P>
+Akima760Method<P>::~Akima760Method() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/	
+template <class P>	
+void Akima760Method<P>::print(ostream& out)  const
+{
+	out << "Akima760Method<P>";
+}
+
diff --git a/src/visualisers/Akima760MethodAttributes.h b/src/visualisers/Akima760MethodAttributes.h
deleted file mode 100644
index ad1219e..0000000
--- a/src/visualisers/Akima760MethodAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file Akima760MethodAttributes.h
-    \brief Definition of Akima760Method Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef Akima760MethodAttributes_H
-#define Akima760MethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class Akima760MethodAttributes 
-{
-public:
-//  --  constructor
-    Akima760MethodAttributes();
-    
-//  --  destructor
-    virtual ~Akima760MethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const Akima760MethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double resolutionX_;
-	double resolutionY_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const Akima760MethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/Akima761.cc b/src/visualisers/Akima761.cc
new file mode 100644
index 0000000..a500b4d
--- /dev/null
+++ b/src/visualisers/Akima761.cc
@@ -0,0 +1,3408 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Akima761.cc
+    Implementation of Akima761 class.
+    
+    Magics Team - ECMWF 2004
+   
+    Created: Fri 12-Mar-2004
+    
+*/
+
+#include "Akima761Method.h"
+#include "MagLog.h"
+#include "Timer.h"
+#include "PointsHandler.h"
+
+using namespace magics;
+template <class P> 
+class PPrint
+{
+public:
+	PPrint() {}
+	~PPrint() {}
+	void operator()(const P& point) {
+		MagLog::debug() << "[" << point.x() << ", " << point.y() << "]\n";
+	}
+	
+};
+
+
+template <class P>	
+//Akima761<P>::Akima761(const  AbstractPoints<P>& points, const Akima761Attributes& attr) : 
+Akima761<P>::Akima761(const  AbstractPoints<P>& points, const Akima761Attributes& ) : 
+	MatrixHandler<P>(matrix_)
+{
+    	MagLog::debug() << "Akima761 Constructor" << "\n";
+    	
+    	PPrint<P> tool;
+    	const_cast<AbstractPoints<P>*>(&points)->for_each(tool);
+
+	// Calculate bounding box
+	minX_ = points.minX();
+	maxX_ = points.maxX();
+//	minY_ = const_cast<AbstractPoints<P>*>(&points)->minY();
+	minY_ = points.minY();
+	maxY_ = points.maxY();
+MagLog::dev()<< minX_ << " " << maxX_ << " " << minY_ << " " << maxY_ << endl;
+
+        // Compute matrix output sizes
+        ncols_ = int( ((maxX_ - minX_) / attr_.getResolutionX()) + 1 );
+        nrows_ = int( ((maxY_ - minY_) / attr_.getResolutionY()) + 1 );
+
+	// retrieve data 
+	// IT IS DUPLICATING MEMORY ALLOCATION
+	// PLEASE HAVE A LOOK IT LATER ????????????????
+	int size = points.size();
+MagLog::dev()<< "size=" << size << endl;
+	double* xxd = new double[size];
+	double* yyd = new double[size];
+	double* val = new double[size];
+
+	points.setToFirst();
+	int il=0;
+	while ( const_cast<AbstractPoints<P>*>(&points)->more() )
+	{
+		xxd[il] = points.current().x();
+		yyd[il] = points.current().y();
+		val[il] = points.current().value();
+		points.advance();
+		il++;
+	}
+
+for (int i=0;i<size;i++)
+	MagLog::dev()<< xxd[i] << ",  " << yyd[i] << ",  " << val[i] << "," << endl;
+	// Initialize input data
+        Init(size,xxd,yyd,val);
+
+	MagLog::dev()<< "END CONSTRUCTOR" << endl;
+}
+
+template <class P>
+double Akima761<P>::row(int i) const
+{
+//Remove later. Why this function is called so many times ???
+//static long itest=0;
+//MagLog::debug() << "Akima760 row=" << itest++ << "\n";
+
+	return (i*attr_.getResolutionY() + minY_);
+}
+
+template <class P>
+double Akima761<P>::column(int j) const
+{ 
+//Remove later. Why this function is called so many times ???
+//static long jtest=0;
+//MagLog::debug() << "Akima760 column=" << jtest++ << "\n";
+
+	return (j*attr_.getResolutionX() + minX_);
+}
+
+template <class P>	
+double Akima761<P>::operator()(int  i, int  j) const
+{
+	double zi;
+
+	SDBI3P(column(j),row(i),zi);
+
+	return zi;
+}
+
+//======================================================
+//Terralib
+// This is the Akima761 algorithm converted from Fortran to C++ (C style)
+//
+// The range of the array indexes follows the Fortran syntax 
+// language, eg., from 1:N . This is because the algorithm uses 
+// the negative value of the indexes to distinguish between 
+// interior and boundary nodes.
+//
+// Aditional files: tripack.cc
+//
+
+template <class P>
+int Akima761<P>::Init (int ndp,double* xd,double* yd,double* zd,int nrow)
+{
+     printf("\nAkima761 Init\n");
+
+     int i;
+
+     // Variables initialization
+     NDP_  = ndp;
+     MD_   = 1;
+     NROW_ = nrow;
+     if (NDP_ <= 9) // number of data points must be 10 or greater
+     {
+	   printf("\n*** Error 1: NDP = 9 or less, NDP = %d",NDP_);
+	   return -1;
+     }
+
+     // Memory allocation
+     int NDP1  = NDP_+1;  //c++ arrays
+     int NROW1 = NROW_+1; //c++ arrays
+     LIST_  = new int [NDP1*6];
+     LPTR_  = new int [NDP1*6];
+     LEND_  = new int [NDP1];
+     LIST1_ = new int [NDP1*6];
+     LPTR1_ = new int [NDP1*6];
+     LEND1_ = new int [NDP1];
+     ITL_   = new int [NDP_];
+     IORD_  = new int [NDP_];
+     IDSQ_  = new int [NDP_];
+     NCP_   = new int [NDP_];
+
+     for (i = 0; i < 3; i++)
+	     IPT_[i] = new int [2*NDP_];
+
+     for (i = 0; i < 2; i++)
+	     IPL_[i] = new int [NDP_];
+
+     for (i = 0; i < 9; i++)
+	     IPC_[i] = new int [NDP_];
+
+     LTRI_ = new int* [NROW1];
+     for (i = 0; i < NROW1; i++)
+	     LTRI_[i] = new int [2*NDP1];
+
+     XD_  = new double [NDP1];
+     YD_  = new double [NDP1];
+     ZD_  = new double [NDP1];
+     DSQ_ = new double [NDP_];
+
+     for (i = 0; i < 5; i++)
+	     PDD_[i] = new double [NDP_];
+
+     for (i = 0; i < 9; i++)
+	     CF3_[i] = new double [NDP_];
+
+     for (i = 0; i < 2; i++)
+	     CFL1_[i] = new double [NDP_];
+
+     // Copy x,y,z coordinates
+     memcpy(&XD_[1],xd,NDP_*sizeof(double));
+     memcpy(&YD_[1],yd,NDP_*sizeof(double));
+     memcpy(&ZD_[1],zd,NDP_*sizeof(double));
+
+     // Initialize working arrays
+     return InitWorkingArrays();
+}
+
+template <class P>
+Akima761<P>::~Akima761()
+{
+     printf("\nAkima761 Destructor\n");
+
+     int i;
+
+     // release memory
+     delete [] LIST_;   LIST_  = NULL;
+     delete [] LPTR_;   LPTR_  = NULL;
+     delete [] LEND_;   LEND_  = NULL;
+     delete [] LIST1_;  LIST1_ = NULL;
+     delete [] LPTR1_;  LPTR1_ = NULL;
+     delete [] LEND1_;  LEND1_ = NULL;
+     delete [] ITL_;    ITL_   = NULL;
+     delete [] IORD_;   IORD_  = NULL;
+     delete [] IDSQ_;   IDSQ_  = NULL;
+     delete [] NCP_;    NCP_   = NULL;
+
+     for (i = 0; i < 3; i++)
+     {
+	     delete [] IPT_[i];
+	     IPT_[i] = NULL;
+     }
+     for (i = 0; i < 2; i++)
+     {
+	     delete [] IPL_[i];
+	     IPL_[i] = NULL;
+     }
+
+     for (i = 0; i < 9; i++)
+     {
+	     delete [] IPC_[i];
+	     IPC_[i] = NULL;
+     }
+
+     int NROW1 = NROW_ + 1;
+     for (i = 0; i < NROW1; i++)
+     {
+	     delete [] LTRI_[i];
+	     LTRI_[i] = NULL;
+     }
+     delete [] LTRI_; LTRI_ = NULL;
+
+     delete [] XD_;   XD_  = NULL;
+     delete [] YD_;   YD_  = NULL;
+     delete [] ZD_;   ZD_  = NULL;
+     delete [] DSQ_;  DSQ_ = NULL;
+
+     for (i = 0; i < 5; i++)
+     {
+	     delete [] PDD_[i];
+	     PDD_[i] = NULL;
+     }
+     for (i = 0; i < 9; i++)
+     {
+	     delete [] CF3_[i];
+	     CF3_[i] = NULL;
+     }
+     for (i = 0; i < 2; i++)
+     {
+	     delete [] CFL1_[i];
+	     CFL1_[i] = NULL;
+     }
+}
+
+template <class P>
+int Akima761<P>:: InitWorkingArrays()
+{
+      double PDX,PDXX,PDXY,PDY,PDYY;
+      int    K,L,LNEW;
+      int    LCC[1];
+
+      // This routine must be called only once
+      if (MD_ != 1)
+      {
+	   printf("\nInternal error in Akima761::Init, MD_ must be 1\n");
+	   return 9;
+      }
+      MD_=3;
+
+
+//    CALL TRMESH(NDP,XD,YD,IWK(1,1),IWK(1,7),IWK(1,13),LNEW,IERT)
+      if ( TRMESH(LNEW) < 0 )
+      {
+	   printf("\nError detected in TRMESH\n");
+	   return 9;
+      }
+
+//IS THIS ICOPY NEEDED ? IF IWK(1,1) DOES NOT CHANGE INSIDE SDTRAN
+// THEN WE CAN DEFINE A UNIQUE VARIABLE LIST (THE SAME FOR LPTR AND LEND)
+      //* Copies triangulation data structure to IWK(1,26).
+//    CALL ICOPY(LNEW-1,IWK(1,1),IWK(1,26))
+//    CALL ICOPY(LNEW-1,IWK(1,7),IWK(1,32))
+//    CALL ICOPY(NDP,IWK(1,13),IWK(1,38))
+      int NDP1 = NDP_ + 1;
+      memcpy(LIST1_,LIST_,LNEW*sizeof(int)); //LNEW points to the first empty location,
+      memcpy(LPTR1_,LPTR_,LNEW*sizeof(int)); //in c++ these arrays are not using position 0
+      memcpy(LEND1_,LEND_,NDP1*sizeof(int));
+
+      //IERT = SDTRAN(NDP,XD,YD,NT,&IWK[0][0],NL,&IWK[0][6],&IWK[0][0],&IWK[0][6],&IWK[0][12],&IWK[0][13],&IWK[0][8]);
+      if (SDTRAN(NT_,NL_) > 0)
+      {
+	  printf("\nError detected in SDTRAN called by SDBI3P\n");
+	  return 9;
+      }
+
+      //* Estimates partial derivatives at all data points
+      // SDPD3P(NDP,XD,YD,ZD,WK(1,1),WK(1,6),WK(1,15),WK(1,17),IWK(1,9),IWK(1,10),IWK(1,19),IWK(1,39)      
+      SDPD3P();
+
+#if 0
+MagLog::dev()<< " PDD" << endl;
+for (K= 0; K < NDP_; K++)
+	MagLog::dev()<< K << " " << PDD_[0][K] << " " << PDD_[1][K] << " " <<PDD_[2][K] << " " <<PDD_[3][K] << " " <<PDD_[4][K] << endl;
+
+MagLog::dev()<< "IORD" << endl;
+for (K= 0; K < NDP_; K++)
+	MagLog::dev()<< K << " " << IORD_[K] << endl;
+#endif
+
+      //* If non-cubic order at node, replace with cubic from GRADC
+      L = 0;
+      for (K = 0; K < NDP_; K++)
+      {
+	   if (IORD_[K] < 3)
+	   {
+		   if ( GRADC(K+1,0,LCC,NDP_,PDX,PDY,PDXX,PDXY,PDYY) >= 0) //c++
+		   {
+		       //J = L/NDP;
+		       //I = L-NDP*J;
+		       //J = J + 1;
+		       //WK[I+1,...,I+5][J] = ...
+		       PDD_[0][K] = PDX;
+		       PDD_[1][K] = PDY;
+		       PDD_[2][K] = PDXX;
+		       PDD_[3][K] = PDXY;
+		       PDD_[4][K] = PDYY;
+		   }
+	     }
+//	     L = L + 5;
+      }
+
+MagLog::dev()<< " PDD FINAL" << endl;
+for (K= 0; K < NDP_; K++)
+	MagLog::dev()<< K << " " << PDD_[0][K] << " " << PDD_[1][K] << " " <<PDD_[2][K] << " " <<PDD_[3][K] << " " <<PDD_[4][K] << endl;
+
+      return 0;
+}
+
+// SDBI3P routine
+//*********************************************************************
+//* Scattered-data bivariate interpolation
+//* (a master subroutine of the SDBI3P/SDSF3P subroutine package)
+//*
+//* Hiroshi Akima
+//* U.S. Department of Commerce, NTIA/ITS
+//* Version of 1995/05
+//*
+//* This subroutine performs bivariate interpolation when the data
+//* points are scattered in the x-y plane.  It is based on the
+//* revised Akima method that has the accuracy of a cubic (third-
+//* degree) polynomial.
+//*
+//* The input arguments are
+//*   MD  = mode of computation
+//*       = 1 for new XD-YD (default)
+//*       = 2 for old XD-YD, new ZD
+//*       = 3 for old XD-YD, old ZD,
+//*   NDP = number of data points (must be 10 or greater),
+//*   XD  = array of dimension NDP containing the x coordinates
+//*         of the data points,
+//*   YD  = array of dimension NDP containing the y coordinates
+//*         of the data points,
+//*   ZD  = array of dimension NDP containing the z values at
+//*         the data points,
+//*   NIP = number of output points at which interpolation is
+//*         to be performed (must be 1 or greater),
+//*   XI  = array of dimension NIP containing the x coordinates
+//*         of the output points,
+//*   YI  = array of dimension NIP containing the y coordinates
+//*         of the output points.
+//*
+//* The output arguments are
+//*   ZI  = array of dimension NIP, where interpolated z values
+//*         are to be stored,
+//*   IER = error flag
+//*       = 0 for no errors
+//*       = 1 for NDP = 9 or less
+//*       = 2 for NDP not equal to NDPPV
+//*       = 3 for NIP = 0 or less
+//*       = 9 for errors in SDTRAN called by this subroutine.
+//*
+//* The other arguments are
+//*   WK  = two-dimensional array of dimension NDP*17 used
+//*         internally as a work area,
+//*   IWK = two-dimensional integer array of dimension NDP*39
+//*         used internally as a work area.
+//*
+//* The very first call to this subroutine and the call with a new
+//* NDP value or new XD and YD arrays must be made with MD=1.  The
+//* call with MD=2 must be preceded by another call with the same
+//* NDP value and same XD and YD arrays.  The call with MD=3 must
+//* be preceded by another call with the same NDP value and same
+//* XD, YD, and ZD arrays.  Between the call with MD=2 and its
+//* preceding call, the IWK array must not be disturbed.  Between
+//* the call with MD=3 and its preceding call, the WK and IWK
+//* arrays must not be disturbed.
+//*
+//* The constant in the PARAMETER statement below is
+//*   NIPIMX = maximum number of output points to be processed
+//*            at a time.
+//* The constant value has been selected empirically.
+//*
+//* This subroutine calls the SDTRAN, SDPD3P, SDLCTN, and SDPLNL
+//* subroutines.
+//*
+//* Comments added to Remark:
+//*
+//* It also calls TRMESH from the TRIPACK package of ACM Algorithm
+//* 751 by R. J. Renka.  The TRMESH subroutine in turn calls either
+//* directly or indirectly 12 other subprograms included in the
+//* package.  In addition, a newly added routine, GRADC, is called
+//* to compute partial derivatives at those nodes for which the
+//* cubic fit failed due to ill-conditioning.
+//*
+//*******************************************************************
+//SDBI3P(MD,NDP,XD,YD,ZD,NIP,XI,YI,ZI,IER,WK,IWK)
+template <class P>
+int Akima761<P>::SDBI3P(double XI, double YI, double& ZI) const
+{
+      int ITLI,KTLI;
+
+      // Data structure should be initialized previously
+      if (MD_ == 1) return -1;
+
+      //* Locates point at which interpolation is to be performed
+      //* and interpolates the ZI value
+      SDLCTN(1,&XI,&YI,&KTLI,&ITLI);
+
+      SDPLNL(1,&XI,&YI,&KTLI,&ITLI,&ZI);
+
+      return 0;
+}
+
+// SDTRAN routine
+/*******************************************************************
+* Triangulation of the data area in a plane with a scattered data
+* point set
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine triangulates the data area in the x-y plane with
+* a scattered data point set.  It divides the data area into a
+* number of triangles and determines line segments that form the
+* border of the data area.
+*
+* This subroutine consists of the following two steps, i.e.,
+* (1) basic triangulation in the convex hull of the data points,
+* and (2) removal of thin triangles along the border line of the
+* data area.  It calls the SDTRCH and SDTRTT subroutines, that
+* correspond to Steps (1) and (2), respectively.
+*
+* The SDTRCH subroutine depends on the TRIPACK package of ACM
+* Algorithm XXX by R. J. Renka.  It calls the TRLIST subroutine
+* included in the package.
+*
+* The input arguments are
+*   NDP  = number of data points (must be greater than 3),
+*   XD   = array of dimension NDP containing the x
+*          coordinates of the data points,
+*   YD   = array of dimension NDP containing the y
+*          coordinates of the data points.
+*   LIST = integer array of dimension 6*NDP returned by TRMESH.
+*   LPTR = integer array of dimension 6*NDP returned by TRMESH.
+*   LEND = integer array of dimension NDP returned by TRMESH.
+*
+* The output arguments are
+*   NT   = number of triangles (its maximum is 2*NDP-5),
+*   IPT  = two-dimensional integer array of dimension
+*          (3,NT), where the point numbers of the vertexes
+*          of the ITth triangle are to be stored counter-
+*          clockwise in the ITth column, where IT = 1, 2,
+*          ..., NT,
+*   NL   = number of border line segments (its maximum is
+*          NDP),
+*   IPL  = two-dimensional integer array of dimension
+*          (2,NL), where the point numbers of the end
+*          points of the (IL)th border line segment are to
+*          be stored counterclockwise in the ILth column,
+*          where IL = 1, 2, ..., NL, with the line segments
+*          stored counterclockwise,
+*   IERT = error flag
+*        = 0 for no errors
+*        = 1 for NDP = 3 or less
+*        = 2 for identical data points
+*        = 3 for all collinear data points.
+*
+* The other arguments are
+*   LTRI = two-dimensional integer array of dimension 12*NDP
+*          used internally as a work area.
+*   ITL  = integer array of dimension NDP used internally as
+*          a work area.
+*******************************************************************/
+//SUBROUTINE SDTRAN(NDP,XD,YD,NT,IPT,NL,IPL,IERT,LIST,LPTR,LEND,LTRI,ITL)
+
+template <class P>
+int Akima761<P>::SDTRAN(int& NT,int& NL)
+{
+      int IERTL;
+
+      // Basic triangulation
+      IERTL = SDTRCH(NT,NL);
+      if (IERTL == 0)
+      {
+	    // Removal of thin triangles that share border line segments
+	      SDTRTT(NT,NL);
+      }
+      else  //Error exit
+      {
+	    if (IERTL == 1)
+	    {
+		 IERTL = 4;
+		 printf("\n*** SDTRAN Error 4: NDP outside its valid range: %d\n",NDP_);
+	    }
+	    else if (IERTL == 2)
+	    {
+		 IERTL = 5;
+		 printf("\n*** SDTRAN Error 5:Invalid data structure (LIST,LPTR,LEND)\n");
+	    }
+      }
+
+#if 0
+MagLog::dev()<< "NT=" << NT << endl;
+int I;
+for (I=0;I<2*NDP_;I++)
+	MagLog::dev()<< I << ' ' << IPT_[0][I] << " " << IPT_[1][I] << " " << IPT_[2][I] << endl;
+
+MagLog::dev()<< "NL=" << NL << endl;
+for (I=0;I<NL;I++)
+	MagLog::dev()<< I << ' ' << IPL_[0][I] << " " << IPL_[1][I] << endl;
+#endif
+
+      return IERTL;
+}
+
+// SDTRCH routine
+/*******************************************************************
+* Basic triangulation in the convex hull of a scattered data point
+* set in a plane
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine triangulates the data area that is a convex hull
+* of the scattered data points in the x-y plane.  It divides the
+* data area into a number of triangles and determines line segments
+* that form the border of the data area.
+*
+* This subroutine depends on the TRIPACK package of ACM Algorithm
+* 751 by R. J. Renka.  It calls the TRLIST subroutine included in
+* the package.
+*
+* The input arguments are
+*   NDP   = number of data points (must be greater than 3),
+*   LIST = integer array of dimension 6*NDP returned by TRMESH.
+*   LPTR = integer array of dimension 6*NDP returned by TRMESH.
+*   LEND = integer array of dimension NDP returned by TRMESH.
+*
+* The output arguments are
+*   NT    = number of triangles (its maximum is 2*NDP-5),
+*   IPT   = two-dimensional integer array of dimension
+*           (3,NT), where the point numbers of the vertexes
+*           of the ITth triangle are to be stored counter-
+*           clockwise in the ITth column, where IT = 1, 2,
+*           ..., NT,
+*   NL    = number of border line segments (its maximum is
+*           NDP),
+*   IPL   = two-dimensional integer array of dimension
+*           (2,NL), where the point numbers of the end
+*           points of the (IL)th border line segment are to
+*           be stored counterclockwise in the ILth column,
+*           where IL = 1, 2, ..., NL, with the line segments
+*           stored counterclockwise,
+*   IERTL = error flag from the TRLIST subroutine,
+*         = 0 for no errors
+*         = 1 for invalid NCC, NDP, or NROW value.
+*         = 2 for invalid data structure (LIST,LPTR,LEND).
+*
+* The other arguments are
+*   LTRI  = two-dimensional integer array of dimension 12*NDP
+*           used internally as a work area.
+*******************************************************************/
+// SUBROUTINE SDTRCH(NDP,NT,IPT,NL,IPL,IERTL,LIST,LPTR,LEND,LTRI)
+template <class P>
+int Akima761<P>::SDTRCH(int& NT,int& NL)
+{
+#define NCCF 0
+
+      int I,I1,I2,IL,IL1,IL2,IPL11,IPL21,J,IERTL;
+      int LCC[1],LCT[1];
+
+      // Performs basic triangulation
+      // CALL TRLIST(NCC,LCC,NDP,LIST,LPTR,LEND,NROW,NT,LTRI,LCT,IERTL)
+      IERTL = TRLIST(NCCF,LCC,NDP_,LIST_,LPTR_,LEND_,NROW_,NT,LCT);
+      if (IERTL != 0) return IERTL;
+
+//for (J=0;J<2*(NDP_+1);J++)
+//{
+//  MagLog::dev()<< J << " ";
+//for (I=0;I<NROW_+1;I++)
+//	  MagLog::dev()<< LTRI_[I][J] << " ";
+//  MagLog::dev()<< endl;
+//}
+
+      // Extracts the triangle data from the LTRI array and set the IPT array
+      for (J = 0; J < NT; J++)
+      {
+	   for (I = 0; I < 3; I++)
+		   IPT_[I][J] = LTRI_[I+1][J+1];  //????
+      }
+
+      // Extracts the border-line-segment data from the LTRI array and
+      // set the IPL array
+      IL = -1; //c++
+      for (J = 1; J <= NT; J++) //???
+      {
+	   for (I = 1; I <= 3; I++) //???
+	   {
+		  if (LTRI_[I+3][J] <= 0)
+		  {
+			  IL = IL + 1;
+			  //I1 = MOD(I,3) + 1;
+			  //I2 = MOD(I+1,3) + 1
+			  I1 = I%3 + 1;
+			  I2 = (I+1)%3 + 1;
+			  IPL_[0][IL] = LTRI_[I1][J];
+			  IPL_[1][IL] = LTRI_[I2][J];
+		  }
+	   }
+      }
+      NL = IL+1; //???
+
+      // Sorts the IPL array
+      for (IL1 = 0; IL1 < NL - 1; IL1++)
+      {
+	  for (IL2 = IL1 + 1; IL2 < NL; IL2++)
+		  if (IPL_[0][IL2] == IPL_[1][IL1]) break;
+
+          IPL11 = IPL_[0][IL1+1];
+          IPL21 = IPL_[1][IL1+1];
+          IPL_[0][IL1+1] = IPL_[0][IL2];
+          IPL_[1][IL1+1] = IPL_[1][IL2];
+          IPL_[0][IL2] = IPL11;
+          IPL_[1][IL2] = IPL21;
+      }
+//MagLog::dev()<< "IL=" << IL << endl;
+//for (I=0;I<IL+1;I++)
+//	MagLog::dev()<< I << ' ' << IPL_[0][I] << " " << IPL_[1][I] << endl;
+
+
+      return 0;
+}
+
+// SDTRTT routine
+/*********************************************************************
+* Removal of thin triangles along the border line of triangulation
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine removes thin triangles along the border line of
+* triangulation.
+*
+* The input arguments are
+*   NDP = number of data points (must be greater than 3),
+*   XD  = array of dimension NDP containing the x
+*         coordinates of the data points,
+*   YD  = array of dimension NDP containing the y
+*         coordinates of the data points.
+*
+* The input and output arguments are
+*   NT  = number of triangles (its maximum is 2*NDP-5),
+*   IPT = two-dimensional integer array of dimension
+*         (3,NT), where the point numbers of the vertexes
+*         of the ITth triangle are to be stored counter-
+*         clockwise in the ITth column, where IT = 1, 2,
+*         ..., NT,
+*   NL  = number of border line segments (its maximum is
+*         NDP),
+*   IPL = two-dimensional integer array of dimension
+*         (2,NL), where the point numbers of the end
+*         points of the (IL)th border line segment are to
+*         be stored counterclockwise in the ILth column,
+*         where IL = 1, 2, ..., NL, with the line segments
+*         stored counterclockwise.
+*
+* The other argument is
+*   ITL = integer array of dimension NDP used internally as
+*         a work area.
+*
+* The constants in the PARAMETER statement below are
+*   HBRMN = minimum value of the height-to-bottom ratio of a
+*           triangle along the borde line of the data area,
+*   NRRTT = number of repetitions in thin triangle removal.
+* The constant values have been selected empirically.
+***************************************************************/
+//SUBROUTINE SDTRTT(NDP,XD,YD,NT,IPT,NL,IPL,ITL)
+template <class P>
+void Akima761<P>::SDTRTT(int& NT,int& NL)
+{
+#define HBRMN 0.10
+#define NRRTT 5
+#define DSQF(U1,V1,U2,V2,U3,V3) (pow(((U2-U1)/U3),2.) + pow(((V2-V1)/V3),2.))
+#define VPDT1(U1,V1,U2,V2,U3,V3,U4,V4) (((V3-V1)/V4)* ((U2-U1)/U4) - ((U3-U1)/U4)* ((V2-V1)/V4))
+
+      double DXA,DYA,HBR;
+      int    IL,IL0,IL00,IL1,ILP1,ILR1,IP1,IP2,IP3,IPL1,IPL2,
+	     IREP,IT,IT0,IV,IVP1,MODIF,NL0;
+
+      // Triangle numbers of triangles that share line segments with the
+      // border line
+      for (IL = 0; IL < NL; IL++)
+      {
+	  IPL1 = IPL_[0][IL];
+          IPL2 = IPL_[1][IL];
+          for (IT = 0; IT < NT; IT++)
+	  {
+              if (IPL1 == IPT_[0][IT] || IPL1 == IPT_[1][IT] || IPL1 == IPT_[2][IT])
+	      {
+                  if (IPL2 == IPT_[0][IT] || IPL2 == IPT_[1][IT] || IPL2 == IPT_[2][IT])
+		  {
+			  ITL_[IL] = IT;
+			  break;
+		  }
+	      }
+	  }
+      }
+
+#if 0
+int I;
+MagLog::dev()<< "NT=" << NT << endl;
+for (I=0;I<2*NDP_;I++)
+	MagLog::dev()<< I << ' ' << IPT_[0][I] << " " << IPT_[1][I] << " " << IPT_[2][I] << endl;
+MagLog::dev()<< "NL=" << NL << endl;
+for (I=0;I<NDP_;I++)
+	MagLog::dev()<< I << ' ' << IPL_[0][I] << " " << IPL_[1][I] << endl;
+MagLog::dev()<< "ITL" << endl;
+for (I=0;I<NDP_;I++)
+	MagLog::dev()<< I << ' ' << ITL_[I] << endl;
+#endif
+
+      // Average delta x and y for boundary line segments
+      DXA = 0.0;
+      DYA = 0.0;
+      for (IL = 0; IL < NL; IL++)
+      {
+	      IP1 = IPL_[0][IL];
+	      IP2 = IPL_[1][IL];
+	      DXA = DXA + fabs(XD_[IP1]-XD_[IP2]);
+	      DYA = DYA + fabs(YD_[IP1]-YD_[IP2]);
+      }
+      DXA = DXA/double(NL);
+      DYA = DYA/double(NL);
+
+      // Removes thin triangles that share line segments with the border line
+      for (IREP = 1; IREP <= NRRTT; IREP++)
+      {
+	  MODIF = 0;
+          NL0 = NL;
+          IL = -1; //c++
+          for (IL0 = 1; IL0 <= NL0; IL0++)
+	  {
+	      IL = IL + 1;
+              IP1 = IPL_[0][IL];
+              IP2 = IPL_[1][IL];
+              IT = ITL_[IL];
+
+	      // Calculates the height-to-bottom ratio of the triangle
+              if (IPT_[0][IT] != IP1 && IPT_[0][IT] != IP2)
+		  IP3 = IPT_[0][IT];
+              else if (IPT_[1][IT] != IP1 && IPT_[1][IT] != IP2)
+		  IP3 = IPT_[1][IT];
+              else
+		  IP3 = IPT_[2][IT];
+
+              HBR = VPDT1(XD_[IP1],YD_[IP1],XD_[IP2],YD_[IP2],XD_[IP3],YD_[IP3],DXA,DYA) / DSQF(XD_[IP1],YD_[IP1],XD_[IP2],YD_[IP2],DXA,DYA);
+
+              if (HBR >= HBRMN) continue; //for(IL0)
+
+              MODIF = 1;
+
+	      // Removes this triangle when applicable
+              for (IT0 = IT+1; IT0 < NT; IT0++)
+	      {
+		    IPT_[0][IT0-1] = IPT_[0][IT0];
+		    IPT_[1][IT0-1] = IPT_[1][IT0];
+		    IPT_[2][IT0-1] = IPT_[2][IT0];
+	      }
+
+              NT = NT - 1;
+              for (IL00 = 0; IL00 < NL; IL00++)
+		    if (ITL_[IL00] > IT) ITL_[IL00]--;
+
+	      // Replaces the border line segment with two new line segments
+              if (IL < NL-1) //c++
+	      {
+		    ILP1 = IL + 1;
+                    for (ILR1 = ILP1; ILR1 < NL; ILR1++)
+		    {
+			    IL1 = NL + ILP1 - ILR1 -1; //c++
+                          IPL_[0][IL1+1] = IPL_[0][IL1];
+                          IPL_[1][IL1+1] = IPL_[1][IL1];
+                          ITL_[IL1+1] = ITL_[IL1];
+		    }
+	      }
+
+	      // Adds the first new line segment
+              IPL_[0][IL] = IP1;
+	      IPL_[1][IL] = IP3;
+	      bool flag = false;
+              for (IT0 = 0; IT0 < NT; IT0++)
+	      {
+		    for (IV = 0; IV < 3; IV++)
+		    {    
+                         if (IPT_[IV][IT0] == IP1 || IPT_[IV][IT0] == IP3)
+			 {
+			      IVP1 = (IV+1)%3; //???
+                              if (IPT_[IVP1][IT0] == IP1 || IPT_[IVP1][IT0] == IP3)
+			      {
+				     flag = true;
+				     break;
+			      }
+			  }
+		    }
+		    if (flag) break;
+	      }
+
+	      ITL_[IL] = IT0;
+
+	      // Adds the second new line segment
+              IL = IL + 1;
+              IPL_[0][IL] = IP3;
+	      IPL_[1][IL] = IP2;
+	      flag = false;
+              for (IT0 = 0; IT0 < NT; IT0++)
+	      { 
+		   for (IV = 0; IV < 3; IV++)
+		   {
+                        if (IPT_[IV][IT0] == IP3 || IPT_[IV][IT0] == IP2)
+			{
+			      IVP1 = (IV+1)%3;
+                              if (IPT_[IVP1][IT0] == IP3 || IPT_[IVP1][IT0] == IP2)
+			      {
+				    flag = true;
+				    break;
+			      }
+			 }
+		    }
+		    if (flag) break;
+	      }
+
+              ITL_[IL] = IT0;
+              NL++;
+
+#if 0
+MagLog::dev()<< "NT=" << NT << endl;
+for (I=0;I<2*NDP_;I++)
+	MagLog::dev()<< I << ' ' << IPT_[0][I] << " " << IPT_[1][I] << " " << IPT_[2][I] << endl;
+MagLog::dev()<< "NL=" << NL << endl;
+for (I=0;I<NDP_;I++)
+	MagLog::dev()<< I << ' ' << IPL_[0][I] << " " << IPL_[1][I] << endl;
+MagLog::dev()<< "ITL" << endl;
+for (I=0;I<NDP_;I++)
+	MagLog::dev()<< I << ' ' << ITL_[I] << endl;
+#endif
+
+          } //for(IL0)
+
+          if (MODIF == 0) return;
+
+      } //for(IREP)
+
+      return;
+}
+
+// SDPD3P routine
+/*****************************************************************
+* Partial derivatives for bivariate interpolation and surface
+* fitting for scattered data
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine estimates partial derivatives of the first and
+* second orders at the data points for bivariate interpolation
+* and surface fitting for scattered data.  In most cases, this
+* subroutine has the accuracy of a cubic (third-degree)
+* polynomial.
+*
+* The input arguments are
+*   NDP  = number of data points,
+*   XD   = array of dimension NDP containing the x
+*          coordinates of the data points,
+*   YD   = array of dimension NDP containing the y
+*          coordinates of the data points,
+*   ZD   = array of dimension NDP containing the z values
+*          at the data points.
+*
+* The output arguments are
+*   PDD  = two-dimensional array of dimension 5*NDP, where
+*          the estimated zx, zy, zxx, zxy, and zyy values
+*          at the IDPth data point are to be stored in the
+*          IDPth row, where IDP = 1, 2, ..., NDP.
+*   IORD = integer array of dimension NDP containing the
+*          degree of the polynomial used to compute PDD.
+*
+* The other arguments are
+*   CF3  = two-dimensional array of dimension 9*NDP used
+*          internally as a work area,
+*   CFL1 = two-dimensional array of dimension 2*NDP used
+*          internally as a work area,
+*   DSQ  = array of dimension NDP used internally as a work
+*          area,
+*   IDSQ = integer array of dimension NDP used internally
+*          as a work area,
+*   IPC  = two-dimensional integer array of dimension 9*NDP
+*          used internally as a work area,
+*   NCP  = integer array of dimension NDP used internally
+*          as a work area.
+*
+* The constant in the first PARAMETER statement below is
+*   NPEMX = maximum number of primary estimates.
+* The constant value has been selected empirically.
+*
+* The constants in the second PARAMETER statement below are
+*   NPEAMN = minimum number of primary estimates,
+*   NPEAMX = maximum number of primary estimates when
+*            additional primary estimates are added.
+* The constant values have been selected empirically.
+*
+* This subroutine calls the SDCLDP, SDCF3P, and SDLS1P
+* subroutines.
+*
+*****************************************************************/
+//SUBROUTINE SDPD3P(NDP,XD,YD,ZD,PDD,CF3,CFL1,DSQ,IDSQ,IPC,NCP,IORD)
+
+template <class P>
+void Akima761<P>::SDPD3P()
+{
+#define NPEMX 25
+#define NPEAMN 3
+#define NPEAMX 6
+
+      bool   flag1,flag2;
+      double A01,A02,A03,A10,A11,A12,A20,A21,A30,ALPWT,ANPE,
+	     ANPEM1,SMWTF,SMWTI,WTF,WTI,X,Y,ZX,ZY;
+      int    IDP1,IDP2,IDPI,IDPPE1,IMN,IPE,IPE1,J,J1,J2,JJ,
+	     JMN,K,NCP2,NCP2P1,NPE;
+
+      double AMPDPE[5],PDDIF[5],PDDII[5],PDPE[5][NPEMX],
+	     PWT[NPEMX],RVWT[NPEMX],SSPDPE[5];
+      int    IDPPE[NPEMX],IPCPE[10][NPEMX];
+
+      // Selects, at each of the data points, nine data points closest
+      // to the data point in question
+      SDCLDP();
+
+#if 0
+MagLog::dev()<< "IPC" << endl;
+int i,j;
+for (i=0;i<NDP_;i++)
+{
+	MagLog::dev()<< i << " ";
+	for(j=0;j<9;j++)
+		    MagLog::dev()<< IPC_[j][i] << " ";
+     MagLog::dev()<< endl;
+ }
+MagLog::dev()<< "IDSQ" << endl;
+for (i=0;i<NDP_;i++)
+	MagLog::dev()<< i << " " << IDSQ_[i] << endl;
+MagLog::dev()<< "DSQ" << endl;
+for (i=0;i<NDP_;i++)
+	MagLog::dev()<< i << " " << DSQ_[i] << endl;
+#endif
+
+      // Fits, at each of the data points, a cubic (third-degree)
+      // polynomial to z values at the 10 data points that consist of
+      // the data point in question and 9 data points closest to it
+      SDCF3P();
+
+#if 0
+MagLog::dev()<< "CF3" << endl;
+for (i=0;i<NDP_;i++)
+{	
+	MagLog::dev()<< i << " ";
+	for(j=0;j<9;j++)
+		    MagLog::dev()<< CF3_[j][i] << " ";
+     MagLog::dev()<< endl;
+ }
+ MagLog::dev()<< "NCP" << endl;
+for (i=0;i<NDP_;i++)
+	MagLog::dev()<< i << " " << NCP_[i] << endl;
+ MagLog::dev()<< "IORD" << endl;
+for (i=0;i<NDP_;i++)
+	MagLog::dev()<< i << " " << IORD_[i] << endl;
+#endif
+
+     // Performs, at each of the data points, the least-squares fit of
+      // a plane to z values at the 10 data points.
+      SDLS1P();
+
+#if 0
+ MagLog::dev()<< "CFL1" << endl;
+for (i=0;i<NDP_;i++)
+	MagLog::dev()<< i << " " << CFL1_[0][i] << " " << CFL1_[1][i] <<endl;
+#endif
+
+      // Outermost DO-loop with respect to the data point
+      for (IDP1 = 0; IDP1 < NDP_; IDP1++)
+      {
+	  // Selects data point sets for sets of primary estimates
+	  // of partial derivatives
+	  // Selects a candidate
+	  NPE = -1; //c++
+          for (IDP2 = 0; IDP2 < NDP_; IDP2++)
+	  {
+	      NCP2 = NCP_[IDP2];
+              NCP2P1 = NCP2 + 1;
+              if (IDP2 != IDP1)
+	      {
+		  bool found=false;
+		  for (J = 0; J < NCP2; J++)
+		  {
+		       if(IPC_[J][IDP2] == IDP1)
+		       {
+			    found = true;
+			    break;
+		       }
+		  }
+		  if ( !found ) continue; //for(IDP2)
+	      }
+
+              IPCPE[0][NPE+1] = IDP2;
+              for (J = 0; J < NCP2; J++)
+		   IPCPE[J+1][NPE+1] = IPC_[J][IDP2];
+
+              for (J1 = 0; J1 < NCP2; J1++)
+	      {
+		  JMN = J1;
+                  IMN = IPCPE[JMN][NPE+1];
+                  for (J2 = J1; J2 < NCP2P1; J2++)
+		  {
+                      if (IPCPE[J2][NPE+1] < IMN)
+		      {
+			  JMN = J2;
+                          IMN = IPCPE[JMN][NPE+1];
+		      }
+		  }
+                  IPCPE[JMN][NPE+1] = IPCPE[J1][NPE+1];
+                  IPCPE[J1][NPE+1] = IMN;
+	      }
+
+	      // Checks whether or not the candidate has already been included
+	      flag2 = false;
+	      if (NPE >= 0) //c++
+	      {
+		   for (IPE1 = 0; IPE1 <= NPE; IPE1++)
+		   {
+		      IDPPE1 = IDPPE[IPE1];
+                      if (NCP2 != NCP_[IDPPE1]) continue;
+
+		      flag1 = false;
+		      for (J = 0; J < NCP2P1; J++)
+		      {
+			   if (IPCPE[J][NPE+1] != IPCPE[J][IPE1])
+			   {
+				flag1 = true;
+				break; //for(J)
+			   }
+		      }
+		      if (flag1) continue; //for(IPE1)
+
+		      flag2 = true;
+		      break; //for(IPE1)
+		   } //for(IPE1)
+              }
+
+	      if (flag2) continue; //for(IDP2)
+
+              NPE = NPE + 1;
+              IDPPE[NPE] = IDP2;
+	      if (NPE >= NPEMX-1) break;  //c++
+	  } //for(IDP2) 80
+
+#if 0
+ MagLog::dev()<< "IPCPE" << endl;
+for (i=0;i<25;i++)
+{
+	MagLog::dev()<< i << " ";
+	for (j=0;j<10;j++)
+		     MagLog::dev()<< IPCPE[j][i] << " ";
+	MagLog::dev()<< endl;
+}
+ MagLog::dev()<< "IDPPE" << endl;
+for (i=0;i<NPEMX;i++)
+	MagLog::dev()<< i << " " << IDPPE[i] << endl;
+#endif
+
+	  // Adds additional closest data points when necessary
+	  if (NPE < NPEAMN-1) //c++
+	  {
+	       for (JJ = 0; JJ < 9; JJ++)
+	       {
+		  IDP2 = IPC_[JJ][IDP1];
+                  NCP2 = NCP_[IDP2];
+                  NCP2P1 = NCP2 + 1;
+		  IPCPE[0][NPE+1] = IDP2;
+                  for (J = 0; J < NCP2; J++)
+		       IPCPE[J+1][NPE+1] = IPC_[J][IDP2];
+
+                  for (J1 = 0; J1 < NCP2; J1++)
+		  {
+		      JMN = J1;
+                      IMN = IPCPE[JMN][NPE+1];
+                      for (J2 = J1; J2 < NCP2P1; J2++)
+		      {
+                          if (IPCPE[J2][NPE+1] < IMN)
+			  {
+			      JMN = J2;
+                              IMN = IPCPE[JMN][NPE+1];
+			  }
+		      }
+                      IPCPE[JMN][NPE+1] = IPCPE[J1][NPE+1];
+                      IPCPE[J1][NPE+1] = IMN;
+		  } //for(J1) 120
+
+		  flag2 = false;
+		  if (NPE >= 0) //c++
+		  {
+		      for (IPE1 = 0; IPE1 <= NPE; IPE1++)
+		      {
+			  IDPPE1 = IDPPE[IPE1];
+                          if (NCP2 != NCP_[IDPPE1]) continue;
+
+			  flag1 = false;
+                          for (J = 0; J < NCP2P1; J++)
+			  {
+                              if (IPCPE[J][NPE+1] != IPCPE[J][IPE1])
+			      {
+				      flag1 = true;
+				      break;
+			      }
+			  }
+			  if (flag1) continue; //for(IPE1)
+
+			  flag2 = true;
+			  break; //for(IPE1)
+		      } //for(IPE1) 140
+                  }
+		  if (flag2) continue; //for(JJ)
+
+                  NPE = NPE + 1;
+                  IDPPE[NPE] = IDP2;
+		  if (NPE >= NPEAMX-1) break; //c++
+	       } //for(JJ) 150
+	  }
+
+	  //Calculates the primary estimates of partial derivatives
+	  X = XD_[IDP1+1]; //c++
+          Y = YD_[IDP1+1];
+          for (IPE = 0; IPE <= NPE; IPE++)
+	  {
+	      IDPI = IDPPE[IPE];
+              A10 = CF3_[0][IDPI];
+              A20 = CF3_[1][IDPI];
+              A30 = CF3_[2][IDPI];
+              A01 = CF3_[3][IDPI];
+              A11 = CF3_[4][IDPI];
+              A21 = CF3_[5][IDPI];
+              A02 = CF3_[6][IDPI];
+              A12 = CF3_[7][IDPI];
+              A03 = CF3_[8][IDPI];
+              PDPE[0][IPE] = A10 + X* (2.0*A20+X*3.0*A30) + Y* (A11+2.0*A21*X+A12*Y);
+              PDPE[1][IPE] = A01 + Y* (2.0*A02+Y*3.0*A03) + X* (A11+2.0*A12*Y+A21*X);
+              PDPE[2][IPE] = 2.0*A20 + 6.0*A30*X + 2.0*A21*Y;
+              PDPE[3][IPE] = A11 + 2.0*A21*X + 2.0*A12*Y;
+              PDPE[4][IPE] = 2.0*A02 + 6.0*A03*Y + 2.0*A12*X;
+	  }
+
+#if 0
+MagLog::dev()<< "PDPE" << endl;
+for (i=0;i<=NPE;i++)
+	MagLog::dev()<< i << " " << PDPE[0][i] << " " << PDPE[1][i] << " "<< PDPE[2][i] << " "<< PDPE[3][i] << " "<< PDPE[4][i] << endl;
+#endif
+
+          if (NPE == 0) //c++
+	  {
+	      // Only one qualified point set
+	      for (K = 0; K < 5; K++)
+		      PDD_[K][IDP1] = PDPE[K][0];
+
+	      continue; //for(IDP1)
+	  }
+
+	  //Weighted values of partial derivatives
+	  // Calculates the probability weight
+	  ANPE = double(NPE) + 1.; //c++
+          ANPEM1 = double(NPE);    //c++
+          for (K = 0; K < 5; K++)
+	  {
+	      AMPDPE[K] = 0.0;
+	      //*DELETED from Valtulina  SSPDPE(K) = 0.0
+	      for (IPE = 0; IPE <= NPE; IPE++)
+		      AMPDPE[K] = AMPDPE[K] + PDPE[K][IPE];
+
+	      //*DELETED from Valtulina  SSPDPE(K) = SSPDPE(K) + PDPE(K,IPE)**2
+	      AMPDPE[K] = AMPDPE[K]/ANPE;
+	      //*DELETED from Valtulina  SSPDPE(K) = (SSPDPE(K)-ANPE*AMPDPE(K)**2)/ANPEM1
+	  }
+
+#if 0
+MagLog::dev()<< "AMPDPE" << endl;
+for (i=0;i<5;i++)
+	MagLog::dev()<< i << " " << AMPDPE[i] << endl;
+#endif
+
+	  //* ADDED from Valtulina
+	  //* Calculates the unbiased estimate of variance
+	  for (K = 0; K < 5; K++)
+	  {
+	      SSPDPE[K] = 0.0;
+	      for (IPE = 0; IPE <= NPE; IPE++)
+		      SSPDPE[K] = SSPDPE[K] + pow(PDPE[K][IPE]-AMPDPE[K],2.);
+
+              SSPDPE[K] = SSPDPE[K]/ANPEM1;
+	  }
+
+#if 0
+MagLog::dev()<< "SSPDPE" << endl;
+for (i=0;i<5;i++)
+	MagLog::dev()<< i << " " << SSPDPE[i] << endl;
+#endif
+
+	  for (IPE = 0; IPE <= NPE; IPE++) //c++
+	  {
+	      ALPWT = 0.0;
+              for (K = 0; K < 5; K++)
+	      {
+                  if (SSPDPE[K] != 0.0)
+			  ALPWT = ALPWT + pow(PDPE[K][IPE]-AMPDPE[K],2.)/SSPDPE[K];
+	      }
+              PWT[IPE] = exp(-ALPWT/2.0);
+	  }
+
+#if 0
+MagLog::dev()<< "PWT" << endl;
+for (i=0;i<=NPE;i++)
+	MagLog::dev()<< i << " " << PWT[i] << endl;
+#endif
+
+	  // Calculates the reciprocal of the volatility weight
+	  for (IPE = 0; IPE <= NPE; IPE++)
+	  {
+	      IDPI = IDPPE[IPE];
+              ZX = CFL1_[0][IDPI];
+              ZY = CFL1_[1][IDPI];
+              RVWT[IPE] = (pow(PDPE[0][IPE]-ZX,2.) + pow(PDPE[1][IPE]-ZY,2.)) * (pow(PDPE[2][IPE],2.) + 2.0*pow(PDPE[3][IPE],2.) + pow(PDPE[4][IPE],2.));
+
+	      //*ZXX=0.0
+              //*ZXY=0.0
+	      //*ZYY=0.0
+	      //*RVWT(IPE)=((PDPE(1,IPE)-ZX)**2+(PDPE(2,IPE)-ZY)**2)
+	      //*    1             *((PDPE(3,IPE)-ZXX)**2+2.0*(PDPE(4,IPE)-ZXY)**2
+             // *    2              +(PDPE(5,IPE)-ZYY)**2)
+	  }
+
+	  // Calculates the weighted values of partial derivatives
+	  for (K = 0; K < 5; K++)
+	  {
+	      PDDIF[K] = 0.0;
+              PDDII[K] = 0.0;
+	  }
+
+          SMWTF = 0.0;
+          SMWTI = 0.0;
+	  for (IPE = 0; IPE <= NPE; IPE++)  //c++
+	  {
+	      //*CHANGED from Valtulina : IF (RVWT(IPE).GT.0.0) THEN
+              if (RVWT[IPE] > 1.0E-38)
+	      {
+		  WTF = PWT[IPE]/RVWT[IPE];
+                  for (K = 0; K < 5; K++)
+			  PDDIF[K] = PDDIF[K] + PDPE[K][IPE]*WTF;
+
+                  SMWTF = SMWTF + WTF;
+	      }
+              else
+	      {
+		  WTI = PWT[IPE];
+                  for (K = 0; K < 5; K++)
+			  PDDII[K] = PDDII[K] + PDPE[K][IPE]*WTI;
+
+                  SMWTI = SMWTI + WTI;
+	      }
+	  }
+
+          if (SMWTI <= 0.0)
+	  {
+              for (K = 0; K < 5; K++)
+		      PDD_[K][IDP1] = PDDIF[K]/SMWTF;
+	  }
+          else
+	  {
+              for (K = 0; K < 5; K++)
+		      PDD_[K][IDP1] = PDDII[K]/SMWTI;
+	  }
+
+      } //for(IDP1)
+
+      return;
+}
+
+// SDCLDP routine
+/***********************************************************************
+* Closest data points
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine selects, at each of the data points, nine data
+* points closest to it.
+*
+* The input arguments are
+*   NDP  = number of data points,
+*   XD   = array of dimension NDP containing the x
+*          coordinates of the data points,
+*   YD   = array of dimension NDP containing the y
+*          coordinates of the data points.
+*
+* The output argument is
+*   IPC  = two-dimensional integer array of dimension 9*NDP,
+*          where the point numbers of nine data points closest
+*          to the IDPth data point, in an ascending order of
+*          the distance from the IDPth point, are to be
+*          stored in the IDPth column, where IDP = 1, 2,
+*          ..., NDP.
+*
+* The other arguments are
+*   DSQ  = array of dimension NDP used as a work area,
+*   IDSQ = integer array of dimension NDP used as a work
+*          area.
+********************************************************************/
+//SUBROUTINE SDCLDP(NDP,XD,YD,IPC,DSQ,IDSQ)
+template <class P>
+void Akima761<P>::SDCLDP()
+{
+      double DSQMN;
+      int    IDP,IDP1,IDSQMN,JDP,JDP1,JDPMN,JDSQMN,JIPC,JIPCMX;
+
+      // DO-loop with respect to the data point number
+      for (IDP = 0; IDP < NDP_; IDP++)
+      {
+	  IDP1 = IDP+1;
+	  // Calculates the distance squared for all data points from the
+	  // IDPth data point and stores the data point number and the
+	  // calculated results in the IDSQ and DSQ arrays, respectively
+	  for (JDP = 0; JDP < NDP_; JDP++)
+	  {
+	       JDP1 = JDP+1;
+	       IDSQ_[JDP] = JDP;
+	       DSQ_[JDP] = pow(XD_[JDP1]-XD_[IDP1],2.) + pow(YD_[JDP1]-YD_[IDP1],2.);
+	  }
+
+	  // Sorts the IDSQ and DSQ arrays in such a way that the IDPth
+	  // point is in the first element in each array
+          IDSQ_[IDP] = 0; //??? c++
+          DSQ_[IDP] = DSQ_[0]; //c++
+          IDSQ_[0] = IDP;     //c++
+          DSQ_[0] = 0.0;      //c++
+
+	  // Selects nine data points closest to the IDPth data point and
+	  // stores the data point numbers in the IPC array
+          JIPCMX = MIN(NDP_-1,10);
+          for (JIPC = 1; JIPC < JIPCMX; JIPC++) //c++
+	  {
+	      JDSQMN = JIPC;
+              DSQMN = DSQ_[JIPC];
+	      JDPMN = JIPC + 1;
+              for (JDP = JDPMN; JDP < NDP_; JDP++)
+	      {
+                  if (DSQ_[JDP] < DSQMN)
+		  {
+		      JDSQMN = JDP;
+                      DSQMN = DSQ_[JDP];
+		  }
+	      }
+              IDSQMN = IDSQ_[JDSQMN];
+              IDSQ_[JDSQMN] = IDSQ_[JIPC];
+              DSQ_[JDSQMN] = DSQ_[JIPC];
+              IDSQ_[JIPC] = IDSQMN;
+	  }
+
+          for (JIPC = 0; JIPC < 9; JIPC++)
+		  IPC_[JIPC][IDP] = IDSQ_[JIPC+1];
+
+      } //for(IDP)
+
+      return;
+}
+
+// SDCF3P routine
+/**********************************************************************
+* Coefficients of the third-degree polynomial for z(x,y)
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine calculates, for each data point, coefficients
+* of the third-degree polynomial for z(x,y) fitted to the set of
+* 10 data points consisting of the data point in question and
+* nine data points closest to it.  When the condition number of
+* the matrix associated with the 10 data point set is too large,
+* this subroutine calculates coefficients of the second-degree
+* polynomial fitted to the set of six data points consisting of
+* the data point in question and five data points closest to it.
+* When the condition number of the matrix associated with the six
+* data point set is too large, this subroutine calculates
+* coefficients of the first-degree polynomial fitted to the set of
+* three data points closest to the data point in question.  When
+* the condition number of the matrix associated with the three data
+* point set is too large, this subroutine calculates coefficients
+* of the first-degree polynomial fitted to the set of two data
+* points consisting of the data point in question and one data
+* point closest to it, assuming that the plane represented by the
+* polynomial is horizontal in the direction which is at right
+* angles to the line connecting the two data points.
+*
+* The input arguments are
+*   NDP = number of data points,
+*   XD  = array of dimension NDP containing the x
+*         coordinates of the data points,
+*   YD  = array of dimension NDP containing the y
+*         coordinates of the data points,
+*   ZD  = array of dimension NDP containing the z values
+*         at the data points,
+*   IPC = two-dimensional integer array of dimension
+*         9*NDP containing the point numbers of 9 data
+*         points closest to the IDPth data point in the
+*         IDPth column, where IDP = 1, 2, ..., NDP.
+*
+* The output arguments are
+*   CF  = two-dimensional array of dimension 9*NDP,
+*         where the coefficients of the polynomial
+*         (a10, a20, a30, a01, a11, a21, a02, a12, a03)
+*         calculated at the IDPth data point are to be
+*         stored in the IDPth column, where IDP = 1, 2,
+*         ..., NDP,
+*   NCP = integer array of dimension NDP, where the numbers
+*         of the closest points used are to be stored.
+*   IORD = integer array of dimension NDP containing the
+*          degree of the polynomial used to compute PDD.
+*
+* The constant in the first PARAMETER statement below is
+*   CNRMX = maximum value of the ratio of the condition
+*           number of the matrix associated with the point
+*           set to the number of points.
+* The constant value has been selected empirically.
+*
+* The N1, N2, and N3 constants in the second PARAMETER statement
+* are the numbers of the data points used to determine the first-,
+* second-, and third-degree polynomials, respectively.
+*
+* This subroutine calls the SDLEQN subroutine.
+******************************************************************/
+//SUBROUTINE SDCF3P(NDP,XD,YD,ZD,IPC,CF,NCP,IORD)
+template <class P>
+void Akima761<P>::SDCF3P()
+{
+//*CHANGED from Valtulina : PARAMETER        (CNRMX=1.5E+04)
+#define CNRMX 3.5E+07
+
+      double CN,DET,X,X1,X2,Y,Y1,Y2,Z1,Z2;
+      int I,IDP,IDPI,J;
+
+//      double AA1[N1_][N1_],AA2[N2_][N2_];
+      double AA3[N3_][N3_],B[N3_],CFI[N3_];
+
+      // Main DO-loop with respect to the data point
+      for (IDP = 0; IDP < NDP_; IDP++)
+      {
+	  for (J = 0; J < 9; J++)
+	       CF3_[J][IDP] = 0.0;
+
+#if 0
+MagLog::dev()<< "CF3_" << endl;
+for (I = 0; I < NDP_; I++)
+{
+	MagLog::dev()<< I << " " ;
+	for(J=0;J<9;J++)
+		MagLog::dev()<< CF3_[J][I] << " " ;
+	MagLog::dev()<< endl;
+}
+MagLog::dev()<< "dummy" << endl;
+#endif
+
+	  // Calculates the coefficients of the set of linear equations
+	  // with the 10-point data point set
+          for (I = 0; I < N3_; I++)
+	  {
+              if (I == 0)
+		  IDPI = IDP + 1; //c++
+              else
+		      IDPI = IPC_[I-1][IDP] + 1; //c++
+
+              X = XD_[IDPI];
+              Y = YD_[IDPI];
+              AA3[I][0] = 1.0;
+              AA3[I][1] = X;
+              AA3[I][2] = X*X;
+              AA3[I][3] = X*X*X;
+              AA3[I][4] = Y;
+              AA3[I][5] = X*Y;
+              AA3[I][6] = X*X*Y;
+              AA3[I][7] = Y*Y;
+              AA3[I][8] = X*Y*Y;
+              AA3[I][9] = Y*Y*Y;
+	      B[I] = ZD_[IDPI];
+	  }
+
+#if 0
+MagLog::dev()<< "AA3" << endl;
+for (I = 0; I < N3_; I++)
+{
+	MagLog::dev()<< I << " " ;
+	for(J=0;J<N3_;J++)
+		MagLog::dev()<< AA3[J][I] << " " ;
+	MagLog::dev()<< endl;
+}
+MagLog::dev()<< "B" << endl;
+for (I = 0; I < N3_; I++)
+	MagLog::dev()<< I << " " << B[I] << endl;
+#endif
+
+	  // Solves the set of linear equations
+          SDLEQN(N3_,AA3,B,CFI,DET,CN);
+
+#if 0
+MagLog::dev()<< "CFI" << endl;
+MagLog::dev()<< DET << " " << CN << endl;
+for (I = 0; I < N3_; I++)
+	MagLog::dev()<< I << " " << CFI[I] << endl;
+#endif
+
+	  // Stores the calculated results as the coefficients of the
+	  // third-degree polynomial when applicable
+          if (DET != 0.0)
+	  {
+              if (CN <= CNRMX*double(N3_))
+	      {
+		  for (J = 1; J < N3_; J++)
+		       CF3_[J-1][IDP] = CFI[J];
+
+                  NCP_[IDP] = N3_ - 1;
+                  IORD_[IDP] = 3;
+                  continue; //for(IDP)
+	      }
+	  }
+
+	  // Calculates the coefficients of the set of linear equations
+	  // with the 6-point data point set.
+          for (I = 0; I < N2_; I++)
+	  {
+              if (I == 0)
+		      IDPI = IDP + 1; //c++
+              else
+		      IDPI = IPC_[I-1][IDP] + 1; //c++
+
+              X = XD_[IDPI];
+              Y = YD_[IDPI];
+              AA3[I][0] = 1.0;
+              AA3[I][1] = X;
+              AA3[I][2] = X*X;
+              AA3[I][3] = Y;
+              AA3[I][4] = X*Y;
+              AA3[I][5] = Y*Y;
+              B[I] = ZD_[IDPI];
+	  }
+
+	  // Solves the set of linear equations
+          SDLEQN(N2_,AA3,B,CFI,DET,CN);
+
+	  // Stores the calculated results as the coefficients of the
+	  // second-degree polynomial when applicable
+          if (DET != 0.0)
+	  {
+              if (CN <= CNRMX*double(N2_))
+	      {
+		  CF3_[0][IDP] = CFI[1];
+		  CF3_[1][IDP] = CFI[2];
+                  CF3_[3][IDP] = CFI[3];
+                  CF3_[4][IDP] = CFI[4];
+                  CF3_[6][IDP] = CFI[5];
+                  NCP_[IDP] = N2_ - 1;
+                  IORD_[IDP] = 2;
+                  continue; //for(IDP)
+	      }
+	  }
+
+	  // Calculates the coefficients of the set of linear equations
+	  // with the 3-point data point set
+          for (I = 0; I < N1_; I++)
+	  {
+	      IDPI = IPC_[I][IDP] + 1; //c++
+              X = XD_[IDPI];
+              Y = YD_[IDPI];
+              AA3[I][0] = 1.0;
+              AA3[I][1] = X;
+              AA3[I][2] = Y;
+              B[I] = ZD_[IDPI];
+	  }
+
+	  // Solves the set of linear equations
+          SDLEQN(N1_,AA3,B,CFI,DET,CN);
+
+	  // Stores the calculated results as the coefficients of the
+	  // first-degree polynomial when applicable
+          if (DET != 0.0)
+	  {
+              if (CN <= CNRMX*double(N1_))
+	      {
+		  CF3_[0][IDP] = CFI[1]; //c++
+                  CF3_[3][IDP] = CFI[2]; //c++
+                  NCP_[IDP] = N1_;
+                  IORD_[IDP] = 1;
+                  continue; //for(IDP)
+	      }
+	  }
+
+	  // Calculates the coefficients of the set of linear equations
+	  // with the 2-point data point set when applicable
+          IDPI = IDP+1; //c++
+          X1 = XD_[IDPI];
+          Y1 = YD_[IDPI];
+          Z1 = ZD_[IDPI];
+          IDPI = IPC_[0][IDP];
+          X2 = XD_[IDPI];
+          Y2 = YD_[IDPI];
+          Z2 = ZD_[IDPI];
+          CF3_[0][IDP] = (X2-X1)* (Z2-Z1)/ (pow(X2-X1,2.)+ pow(Y2-Y1,2.));
+          CF3_[3][IDP] = (Y2-Y1)* (Z2-Z1)/ (pow(X2-X1,2.)+ pow(Y2-Y1,2.));
+          NCP_[IDP]   = 1;
+          IORD_[NDP_]  = 0;
+
+      } //for(IDP)
+
+#if 0
+MagLog::dev()<< "CF3_ END" << endl;
+for (I = 0; I < NDP_; I++)
+{
+	MagLog::dev()<< I << " " ;
+	for(J=0;J<9;J++)
+		MagLog::dev()<< CF3_[J][I] << " " ;
+	MagLog::dev()<< endl;
+}
+MagLog::dev()<< "dummy" << endl;
+#endif
+
+      return;
+}
+
+// SDLEQN routine
+/*********************************************************************
+* Solution of a set of linear equations
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine solves a set of linear equations.
+*
+* The input arguments are
+*   N   = number of linear equations,
+*   AA  = two-dimensional array of dimension N*N
+*         containing the coefficients of the equations,
+*   B   = array of dimension N containing the constant
+*         values in the right-hand side of the equations.
+*
+* The output arguments are
+*   X   = array of dimension N, where the solution is
+*         to be stored,
+*   DET = determinant of the AA array,
+*   CN  = condition number of the AA matrix.
+*
+* The other arguments are
+*   K   = integer array of dimension N used internally
+*         as the work area,
+*   EE  = two-dimensional array of dimension N*N used
+*         internally as the work area,
+*   ZZ  = two-dimensional array of dimension N*N used
+*         internally as the work area.
+*******************************************************************/
+// SUBROUTINE SDLEQN(N,AA,B,X,DET,CN,K,EE,ZZ)
+
+template <class P>
+void Akima761<P>::SDLEQN(int N,double AA[N3_][N3_],double B[N3_],double X[N3_],double& DET,double& CN)
+{
+      float EE[N3_][N3_],ZZ[N3_][N3_];
+      int K[N3_];
+
+      float AANORM, ASOM, ZSOM, ZZNORM;
+      float AAIIJ,AAIJIJ,AAIJMX,AAMX;
+      int    I,IJ,IJP1,IJR,J,JJ,JMX,KJMX;
+
+
+#if 0
+MagLog::dev()<< "AA IN " << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< AA[J][I] << " ";
+MagLog::dev()<< endl;
+}
+MagLog::dev()<< "dummy" << endl;
+#endif
+
+      // Calculation
+      // Initial setting
+      for (J = 0; J < N; J++)
+	   K[J] = J;
+
+      // ADDED from Valtulina : calculation of AANORM=NORMinf(AA)
+      AANORM=0.0;
+      for (I = 0; I < N; I++)
+      {
+	  ASOM=0.0;
+          for (J = 0; J < N; J++)
+	  {
+	      EE[I][J] = 0.0;
+              ASOM = ASOM + fabs(AA[I][J]);
+	  }
+          EE[I][I] = 1.0;
+          if (ASOM > AANORM) AANORM=ASOM;
+      }
+
+      // Calculation of inverse matrix of AA
+      for (IJ = 0; IJ < N; IJ++)
+      {
+	  // Finds out the element having the maximum absolute value
+	  // in the IJ th row
+	  AAMX = fabs(AA[IJ][IJ]);
+          JMX = IJ;
+          for (J = IJ; J < N; J++)
+	  {
+              if (fabs(AA[IJ][J]) > AAMX)
+	      {
+		  AAMX = fabs(AA[IJ][J]);
+                  JMX = J;
+	      }
+	  }
+
+	  // Switches two columns in such a way that the element with the
+	  // maximum value is on the diagonal
+          for (I = 0; I < N; I++)
+	  {
+	      AAIJMX = AA[I][IJ];
+              AA[I][IJ] = AA[I][JMX];
+              AA[I][JMX] = AAIJMX;
+	  }
+          KJMX = K[IJ];
+          K[IJ] = K[JMX];
+          K[JMX] = KJMX;
+
+#if 0
+MagLog::dev()<< "AA " << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< AA[J][I] << " ";
+MagLog::dev()<< endl;
+}
+MagLog::dev()<< "K " << endl;
+for (I = 0; I < N; I++)
+MagLog::dev()<< I << " " << K[I] << endl;
+#endif
+
+	  // Makes the diagonal element to be unity
+          AAIJIJ = AA[IJ][IJ];
+
+	  //*CHANGED from Valtulina : IF (AAIJIJ.EQ.0.0) GO TO 210
+          if (fabs(AAIJIJ) < 1.0E-8)
+	  {
+	       // Special case where the determinant is zero
+	       for (I = 0; I < N; I++)
+		       X[I] = 0.0;
+
+	       DET = 0.0;
+	       return;
+	  }
+
+	  for (J = IJ; J < N; J++)
+	       AA[IJ][J] = AA[IJ][J]/AAIJIJ;
+
+          for (JJ = 0; JJ < N; JJ++)
+	       EE[IJ][JJ] = EE[IJ][JJ]/AAIJIJ;
+
+#if 0
+MagLog::dev()<< "AA " << endl;
+for (I = 0; I < N; I++)
+	MagLog::dev()<< IJ << " " << I << " " << AA[IJ][I] << endl;
+
+MagLog::dev()<< "EE " << AAIJIJ << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< EE[J][I] << " ";
+MagLog::dev()<< endl;
+}
+#endif
+
+	  // Eliminates the lower left elements
+          if (IJ < N-1) //c++
+	  {
+	      IJP1 = IJ + 1;
+              for (I = IJP1; I < N; I++)
+	      {
+		  AAIIJ = AA[I][IJ];
+                  for (J = IJP1; J < N; J++)
+		      AA[I][J] = AA[I][J] - AA[IJ][J]*AAIIJ;
+
+                  for (JJ = 0; JJ < N; JJ++)
+		      EE[I][JJ] = EE[I][JJ] - EE[IJ][JJ]*AAIIJ;
+	      }
+
+#if 0
+MagLog::dev()<< "AA IN " << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< AA[J][I] << " ";
+MagLog::dev()<< endl;
+}
+#endif
+	  }
+
+#if 0
+MagLog::dev()<< "EE" << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< EE[J][I] << " ";
+MagLog::dev()<< endl;
+}
+MagLog::dev()<< "dummy" << endl;
+#endif
+
+	  //* Calculates the determinant
+	  /**DELETED from Valtulina
+	   *DELETED          IF (IJ.EQ.1) THEN
+	   *DELETED              DET = 0.0
+	   *DELETED              SGN = 1.0
+	   *DELETED          END IF
+	   *DELETED          SGN = SGN* ((-1)** (IJ+JMX))
+	   *DELETED          DET = DET + LOG(ABS(AAIJIJ))
+	   */
+      } //for(IJ)
+
+#if 0
+MagLog::dev()<< "AA" << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< AA[J][I] << " ";
+MagLog::dev()<< endl;
+}
+MagLog::dev()<< "EE" << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< EE[J][I] << " ";
+MagLog::dev()<< endl;
+}
+MagLog::dev()<< "K" << endl;
+for (I = 0; I < N; I++)
+	MagLog::dev()<< I << " " << K[I] << endl;
+#endif
+
+
+      //*DELETED      IF (DET.LT.85.0) THEN
+      //*DELETED          DET = SGN*EXP(DET)
+      //*DELETED      ELSE
+      //*DELETED          DET = SGN*1.0E38
+      //*DELETED      END IF
+      //*ADDED from Valtulina : at this point DET must be not equal 0
+      DET=1.0;
+
+      // Calculates the elements of the inverse matrix
+      for (IJR = 0; IJR < N; IJR++)
+      {
+	  //F IJ = N + 1 - IJR 
+	  IJ = N - 1 - IJR; //c++
+          if (IJ < N-1)     //c++
+	  {
+	      IJP1 = IJ + 1;
+              for (J = IJP1; J < N; J++)
+	      {
+		  for (JJ = 0; JJ < N; JJ++)
+		       EE[IJ][JJ] = EE[IJ][JJ] - AA[IJ][J]*EE[J][JJ];
+	      }
+	  }
+      }
+
+#if 0
+MagLog::dev()<< "EE" << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< EE[J][I] << " ";
+MagLog::dev()<< endl;
+}
+#endif
+
+      for (J = 0; J < N; J++)
+      {
+	  I = K[J];
+          for (JJ = 0; JJ < N; JJ++)
+	       ZZ[I][JJ] = EE[J][JJ];
+      }
+
+#if 0
+MagLog::dev()<< "ZZ" << endl;
+for (I = 0; I < N; I++)
+{
+	MagLog::dev()<< I << " ";
+for (J = 0; J < N; J++)
+	MagLog::dev()<< ZZ[J][I] << " ";
+MagLog::dev()<< endl;
+}
+#endif
+
+      // Calculation of the condition number of AA
+      // *ADDED from Valtulina : calculation of ZZNORM=NORMinf(ZZ)
+      // *DELETED      SA = 0.0
+      // *DELETED      SZ = 0.0
+      ZZNORM=0.0;
+      for (I = 0; I < N; I++)
+      {
+	  ZSOM=0.0;
+          for (J = 0; J < N; J++)
+	  {
+	       //*DELETED     SA = SA + AA(I,J)*AA(J,I)
+	       //*DELETED     SZ = SZ + ZZ(I,J)*ZZ(J,I)
+	       ZSOM=ZSOM+fabs(ZZ[I][J]);
+	  }
+          if (ZSOM > ZZNORM) ZZNORM=ZSOM;
+      }
+
+      // *DELETED      CN = SQRT(ABS(SA*SZ))
+      CN=AANORM*ZZNORM;
+
+      // Calculation of X vector
+      for (I = 0; I < N; I++)
+      {
+	  X[I] = 0.0;
+          for (J = 0; J < N; J++)
+	       X[I] = X[I] + ZZ[I][J]*B[J];
+      }
+
+#if 0
+MagLog::dev()<< "X" << endl;
+for (I = 0; I < N; I++)
+	MagLog::dev()<< I << " " << X[I] << endl;
+#endif
+
+      return;
+}
+
+// SDLS1P routine
+/*******************************************************************
+* Least squares fit of a linear surface (plane) to z(x,y) values
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine performs the least squares fit of a linear
+* surface (plane) to a data point set consisting of the data
+* point in question and several data points closest to it used
+* in the SDCF3P subroutine.
+*
+* The input arguments are
+*   NDP  = number of data points,
+*   XD   = array of dimension NDP containing the x coordinates
+*          of the data points,
+*   YD   = array of dimension NDP containing the y coordinates
+*          of the data points,
+*   ZD   = array of dimension NDP containing the z values at
+*          the data points,
+*   IPC  = two-dimensional integer array of dimension 9*NDP
+*          containing, in the IDPth column, point numbers of
+*          nine data points closest to the IDPth data point,
+*          where IDP = 1, 2, ..., NDP,
+*   NCP  = integer array of dimension NDP containing the
+*          numbers of the closest points used in the SDCF3P
+*          subroutine.
+*
+* The output argument is
+*   CFL1 = two-dimensional array of dimension 2*NDP, where
+*          the coefficients (a10, a01) of the least squares
+*          fit, first-degree polynomial calculated at the
+*          IDPth data point are to be stored in the IDPth
+*          column, where IDP = 1, 2, ..., NDP.
+*
+* Before this subroutine is called, the SDCF3P subroutine must
+* have been called.
+*************************************************************/
+// SUBROUTINE SDLS1P(NDP,XD,YD,ZD,IPC,NCP,CFL1)
+template <class P>
+void Akima761<P>::SDLS1P()
+{
+      double A11,A12,A22,AN,B1,B2,DLT,SX,SXX,SXY,SXZ,SY,SYY,
+	     SYZ,SZ,X,X1,X2,Y,Y1,Y2,Z,Z1,Z2;
+      int    I,IDP,IDPI,NPLS;
+
+      // DO-loop with respect to the data point
+      for (IDP = 0; IDP < NDP_; IDP++)
+      {
+	  NPLS = NCP_[IDP] + 1;
+          if (NPLS != 2)
+	  {
+	       // Performs the least squares fit of a plane.
+	       SX  = SY  = 0.0;
+	       SXX = SXY = SYY = 0.0;
+	       SZ  = SXZ = SYZ = 0.0;
+	       for (I = 0; I < NPLS; I++)
+	       {
+		     if (I == 0)
+			  IDPI = IDP+1; //c++
+		     else
+			  IDPI = IPC_[I-1][IDP] + 1; //c++
+
+		     X = XD_[IDPI];
+		     Y = YD_[IDPI];
+		     Z = ZD_[IDPI];
+		     SX = SX + X;
+		     SY = SY + Y;
+		     SXX = SXX + X*X;
+		     SXY = SXY + X*Y;
+		     SYY = SYY + Y*Y;
+		     SZ = SZ + Z;
+		     SXZ = SXZ + X*Z;
+		     SYZ = SYZ + Y*Z;
+	       }
+
+	       AN = NPLS;
+	       A11 = AN*SXX - SX*SX;
+	       A12 = AN*SXY - SX*SY;
+	       A22 = AN*SYY - SY*SY;
+	       B1 = AN*SXZ - SX*SZ;
+	       B2 = AN*SYZ - SY*SZ;
+	       DLT = A11*A22 - A12*A12;
+	       CFL1_[0][IDP] = (B1*A22-B2*A12)/DLT;
+	       CFL1_[1][IDP] = (B2*A11-B1*A12)/DLT;
+          }
+	  else
+	  {
+	       IDPI = IDP+1;  //c++
+	       X1 = XD_[IDPI];
+	       Y1 = YD_[IDPI];
+	       Z1 = ZD_[IDPI];
+	       IDPI = IPC_[0][IDP] + 1; //c++
+	       X2 = XD_[IDPI];
+	       Y2 = YD_[IDPI];
+	       Z2 = ZD_[IDPI];
+	       CFL1_[0][IDP] = (X2-X1)* (Z2-Z1)/ (pow(X2-X1,2.)+ pow(Y2-Y1,2.));
+	       CFL1_[1][IDP] = (Y2-Y1)* (Z2-Z1)/ (pow(X2-X1,2.)+ pow(Y2-Y1,2.));
+	   }
+      }
+
+      return;
+}
+
+// GRADC routine
+/************************************************************
+*
+*                                               From SRFPACK
+*                                            Robert J. Renka
+*                                  Dept. of Computer Science
+*                                       Univ. of North Texas
+*                                             (817) 565-2816
+*                                                   01/25/97
+*
+*   Given a Delaunay triangulation of N points in the plane
+* with associated data values Z, this subroutine estimates
+* first and second partial derivatives at node K.  The der-
+* ivatives are taken to be the partials at K of a cubic
+* function which interpolates Z(K) and fits the data values
+* at a set of nearby nodes in a weighted least squares
+* sense.  A Marquardt stabilization factor is used if neces-
+* sary to ensure a well-conditioned system.  Thus, a unique
+* solution exists if there are at least 10 noncollinear
+* nodes.
+*
+*   The triangulation may include constraints introduced by
+* subroutine ADDCST, in which case the derivative estimates
+* are influenced by the nonconvex geometry of the domain.
+* Refer to subroutine GETNP.  If data values at the con-
+* straint nodes are not known, subroutine ZGRADL, which
+* computes approximate data values at constraint nodes along
+* with gradients, should be called in place of this routine.
+*
+*   An alternative routine, GRADG, employs a global method
+* to compute the first partial derivatives at all of the
+* nodes at once.  That method is usually more efficient
+* (when all first partials are needed) and may be more ac-
+* curate, depending on the data.
+*
+* On input:
+*
+*       K = Index of the node at which derivatives are to be
+*           estimated.  1 .LE. K .LE. N.
+*
+*       NCC = Number of constraint curves (refer to TRIPACK
+*             subroutine ADDCST).  NCC .GE. 0.
+*
+*       LCC = Array of length NCC (or dummy array of length
+*             1 if NCC = 0) containing the index of the
+*             first node of constraint I in LCC(I).  For I =
+*             1 to NCC, LCC(I+1)-LCC(I) .GE. 3, where
+*             LCC(NCC+1) = N+1.
+*
+*       N = Number of nodes in the triangulation.
+*           N .GE. 10.
+*
+*       X,Y = Arrays of length N containing the coordinates
+*             of the nodes with non-constraint nodes in the
+*             first LCC(1)-1 locations, followed by NCC se-
+*             quences of constraint nodes.
+*
+*       Z = Array of length N containing data values associ-
+*           ated with the nodes.
+*
+*       LIST,LPTR,LEND = Data structure defining the trian-
+*                        gulation.  Refer to TRIPACK
+*                        Subroutine TRMESH.
+*
+* Input parameters are not altered by this routine.
+*
+* On output:
+*
+*       DX,DY = Estimated first partial derivatives at node
+*               K unless IER < 0.
+*
+*       DXX,DXY,DYY = Estimated second partial derivatives
+*                     at node K unless IER < 0.
+*
+*       IER = Error indicator:
+*             IER = L > 0 if no errors were encountered and
+*                         L nodes (including node K) were
+*                         employed in the least squares fit.
+*             IER = -1 if K, NCC, an LCC entry, or N is
+*                      outside its valid range on input.
+*             IER = -2 if all nodes are collinear.
+*
+* TRIPACK modules required by GRADC:  GETNP, INTSEC
+*
+* SRFPACK modules required by GRADC:  GIVENS, ROTATE, SETRO3
+*
+* Intrinsic functions called by GRADC:  ABS, MIN, REAL, SQRT
+*
+**********************************************************************
+* Local parameters:
+*
+* A =         Transpose of the augmented regression matrix
+* C =         First component of the plane rotation deter-
+*               mined by subroutine GIVENS
+* DIST =      Array containing the distances between K and
+*               the elements of NPTS (refer to GETNP)
+* DMIN =      Minimum of the magnitudes of the diagonal
+*               elements of the regression matrix after
+*               zeros are introduced below the diagonal
+* DS =        Squared distance between nodes K and NPTS(LNP)
+* DTOL =      Tolerance for detecting an ill-conditioned
+*               system.  The system is accepted when DMIN/W
+*               .GE. DTOL.
+* I =         DO-loop index
+* IERR =      Error flag for calls to GETNP
+* J =         DO-loop index
+* JP1 =       J+1
+* KK =        Local copy of K
+* L =         Number of columns of A**T to which a rotation
+*               is applied
+* LMAX,LMIN = Min(LMX,N), Min(LMN,N)
+* LMN,LMX =   Minimum and maximum values of LNP for N
+*               sufficiently large.  In most cases LMN-1
+*               nodes are used in the fit.  4 .LE. LMN .LE.
+*               LMX.
+* LM1 =       LMIN-1 or LNP-1
+* LNP =       Length of NPTS
+* NP =        Element of NPTS to be added to the system
+* NPTS =      Array containing the indexes of a sequence of
+*               nodes ordered by distance from K.  NPTS(1)=K
+*               and the first LNP-1 elements of NPTS are
+*               used in the least squares fit.  Unless LNP
+*               exceeds LMAX, NPTS(LNP) determines R.
+* RIN =       Inverse of the distance R between node K and
+*               NPTS(LNP) or some point further from K than
+*               NPTS(LMAX) if NPTS(LMAX) is used in the fit.
+*               R is a radius of influence which enters into
+*               the weight W.
+* RS =        R*R
+* RTOL =      Tolerance for determining R.  If the relative
+*               change in DS between two elements of NPTS is
+*               not greater than RTOL, they are treated as
+*               being the same distance from node K.
+* S =         Second component of the plane rotation deter-
+*               mined by subroutine GIVENS
+* SF =        Scale factor for the linear terms (columns 8
+*               and 9) in the least squares fit -- inverse
+*               of the root-mean-square distance between K
+*               and the nodes (other than K) in the least
+*               squares fit
+* SFS =       Scale factor for the quadratic terms (columns
+*               5, 6, and 7) in the least squares fit --
+*               SF*SF
+* SFC =       Scale factor for the cubic terms (first 4
+*               columns) in the least squares fit -- SF**3
+* STF =       Marquardt stabilization factor used to damp
+*               out the first 4 solution components (third
+*               partials of the cubic) when the system is
+*               ill-conditioned.  As STF increases, the
+*               fitting function approaches a quadratic
+*               polynomial.
+* SUM =       Sum of squared distances between node K and
+*               the nodes used in the least squares fit
+* W =         Weight associated with a row of the augmented
+*               regression matrix -- 1/D - 1/R, where D < R
+*               and D is the distance between K and a node
+*               entering into the least squares fit
+* XK,YK,ZK =  Coordinates and data value associated with K
+*
+************************************************************/
+// SUBROUTINE GRADC(K,NCC,LCC,N,X,Y,Z,LIST,LPTR,LEND,DX,DY,DXX,DXY,DYY,IER)
+
+template <class P>
+int Akima761<P>::GRADC(int K,int NCC,int* LCC,int N,double& DX,double& DY,double& DXX,double& DXY,double& DYY)
+{
+#define LMN 14
+#define LMX 30
+#define RTOL 1.E-5
+#define DTOL 0.01
+
+      bool   flag;
+      double C1,DMIN,DS,RIN,RS;
+      double S1;
+      double SF,SFC;
+      double SFS,STF,SUM,W,XK,YK,ZK;
+      int    I,IERR,J,JP1,KK,L,LM1,LMAX,LMIN,LNP,NP;
+
+      double A[10][10];
+      double DIST[LMX+1]; //c++
+      int    NPTS[LMX+1]; //c++
+
+      KK = K;
+
+      // Test for errors and initialize LMIN and LMAX
+      if (KK < 1 || KK > N || NCC < 0 || N < 10) return -1;
+
+      LMIN = MIN(LMN,N);
+      LMAX = MIN(LMX,N);
+
+      // Compute NPTS, DIST, LNP, SF, SFS, SFC, and RIN --
+      // Set NPTS to the closest LMIN-1 nodes to K
+      SUM = 0.;
+      NPTS[1] = KK;
+      DIST[1] = 0.;
+      LM1 = LMIN - 1;
+      for (LNP = 2; LNP <= LM1; LNP++)
+      {
+	  IERR = GETNP(NCC,LCC,N,XD_,YD_,LIST1_,LPTR1_,LEND1_,LNP,NPTS,DIST);
+          if (IERR != 0) return -1;
+
+	  DS = pow(DIST[LNP],2.);
+          SUM = SUM + DS;
+      }
+
+      // Add additional nodes to NPTS until the relative increase
+      // in DS is at least RTOL
+      flag = false;
+      for (LNP = LMIN; LNP <= LMAX; LNP++)
+      {
+	  GETNP(NCC,LCC,N,XD_,YD_,LIST1_,LPTR1_,LEND1_,LNP,NPTS,DIST);
+          RS = pow(DIST[LNP],2.);
+          if ( ((RS-DS)/DS) > RTOL)
+	  {
+	       if (LNP > 10)
+	       {
+		       flag = true;
+		       break;
+	       }
+	  }
+          SUM = SUM + RS;
+      }
+
+      if (!flag)
+      {
+	   // Use all LMAX nodes in the least squares fit.  RS is
+	   // arbitrarily increased by 10 per cent
+	      RS = 1.1*RS;
+	      LNP = LMAX + 1;
+      }
+
+      // There are LNP-2 equations corresponding to nodes NPTS(2),
+      // ...,NPTS(LNP-1)
+      SFS = double(LNP-2)/SUM;
+      SF = sqrt(SFS);
+      SFC = SF*SFS;
+      RIN = 1./sqrt(RS);
+      XK = XD_[KK];
+      YK = YD_[KK];
+      ZK = ZD_[KK];
+
+      // A Q-R decomposition is used to solve the least squares
+      // system.  The transpose of the augmented regression
+      // matrix is stored in A with columns (rows of A) defined
+      // as follows:  1-4 are the cubic terms, 5-7 are the quadratic
+      // terms with coefficients DXX/2, DXY, and DYY/2,
+      // 8 and 9 are the linear terms with coefficients DX and
+      // DY, and the last column is the right hand side.
+
+      // Set up the first 9 equations and zero out the lower triangle
+      // with Givens rotations
+      for (I = 1; I <= 9; I++)
+      {
+	  NP = NPTS[I+1];
+          W = 1./DIST[I+1] - RIN;
+          SETRO3(XK,YK,ZK,XD_[NP],YD_[NP],ZD_[NP],SF,SFS,SFC,W,&A[I-1][0]); //c++
+
+	  if (I == 1) continue;
+          for (J = 1; J <= I-1; J++)
+	  {
+	      JP1 = J + 1;
+              L = 10 - J;
+	      GIVENS(A[J-1][J-1],A[I-1][J-1],C1,S1);         //c++
+              ROTATE(L,C1,S1,&A[J-1][JP1-1],&A[I-1][JP1-1]); //c++
+	  }
+      }
+
+#if 0
+MagLog::dev()<< SFS << " " << SF << " " << RIN << " " << XK << " " << YK << " " << ZK << endl;
+MagLog::dev()<< " AA " << endl;
+for (I = 0; I < 10; I++)
+{
+     MagLog::dev()<< I << " ";
+     for (J = 0; J < 10; J++)
+	     MagLog::dev()<< A[I][J] << " ";
+     MagLog::dev()<< endl;
+}
+#endif
+
+      // Add the additional equations to the system using
+      // the last column of A.  I .LE. LNP
+      flag = false;
+      I = 11;
+      for (;;) //loop 70
+      {
+	  while (I < LNP)
+	  {
+	       NP = NPTS[I];
+	       W = 1./DIST[I] - RIN;
+	       SETRO3(XK,YK,ZK,XD_[NP],YD_[NP],ZD_[NP],SF,SFS,SFC,W,&A[9][0]);
+
+#if 0
+for (int Ii = 0; Ii < 10; Ii++)
+{
+     MagLog::dev()<< Ii << " ";
+     for (int Ji = 0; Ji < 10; Ji++)
+	     MagLog::dev()<< A[Ii][Ji] << " ";
+     MagLog::dev()<< endl;
+}
+MagLog::dev()<< "dummy" << endl;
+#endif
+
+	       for (J = 1; J <= 9; J++)
+	       {
+		    JP1 = J + 1;
+		    L = 10 - J;
+		    GIVENS(A[J-1][J-1],A[9][J-1],C1,S1);      //c++
+		    ROTATE(L,C1,S1,&A[J-1][JP1-1],&A[9][JP1-1]);//c++
+
+#if 0
+for (int Ii = 0; Ii < 10; Ii++)
+{
+     MagLog::dev()<< Ii << " ";
+     for (int Ji = 0; Ji < 10; Ji++)
+	     MagLog::dev()<< A[Ii][Ji] << " ";
+     MagLog::dev()<< endl;
+}
+#endif
+	       }
+	       I = I + 1;
+
+#if 0
+for (int Ii = 0; Ii < 10; Ii++)
+{
+     MagLog::dev()<< Ii << " ";
+     for (int Ji = 0; Ji < 10; Ji++)
+	     MagLog::dev()<< A[Ii][Ji] << " ";
+     MagLog::dev()<< endl;
+}
+#endif
+
+	  }
+
+#if 0
+MagLog::dev()<< " AA " << endl;
+for (I = 0; I < 10; I++)
+{
+     MagLog::dev()<< I << " ";
+     for (J = 0; J < 10; J++)
+	     MagLog::dev()<< A[I][J] << " ";
+     MagLog::dev()<< endl;
+}
+#endif
+
+	  // Test the system for ill-conditioning
+	  DMIN = MIN( fabs(A[0][0]), fabs(A[1][1]) );
+	  DMIN = MIN( DMIN, fabs(A[2][2]) );
+	  DMIN = MIN( DMIN, fabs(A[3][3]) );
+	  DMIN = MIN( DMIN, fabs(A[4][4]) );
+	  DMIN = MIN( DMIN, fabs(A[5][5]) );
+	  DMIN = MIN( DMIN, fabs(A[6][6]) );
+	  DMIN = MIN( DMIN, fabs(A[7][7]) );
+	  DMIN = MIN( DMIN, fabs(A[8][8]) );
+	  if ((DMIN/W) >= DTOL)
+	  {
+	       flag = true;
+	       break; //for(;;) loop 70
+	  }
+
+	  if (LNP > LMAX) break; //for(;;) loop 70
+
+	  // Add another node to the system and increase R.
+	  // Note that I = LNP
+          LNP = LNP + 1;
+          if (LNP <= LMAX)
+	  {
+	      GETNP(NCC,LCC,N,XD_,YD_,LIST1_,LPTR1_,LEND1_,LNP,NPTS,DIST);
+              RS = pow(DIST[LNP],2.);
+	  }
+          RIN = 1./sqrt(1.1*RS);
+      } //for(;;) loop 70
+
+      if (!flag)
+      {
+	   // Stabilize the system by damping third partials -- add
+	   // multiples of the first four unit vectors to the first
+	   // four equations
+	   STF = W;
+	   for (I = 1; I <= 4; I++)
+	   {
+		A[9][I-1] = STF;
+		for (J = I + 1; J <= 10; J++)
+			A[9][J-1] = 0.;
+
+	        for (J = I; J <= 9; J++)
+	        {
+		     JP1 = J + 1;
+		     L = 10 - J;
+		     GIVENS(A[J-1][J-1],A[9][J-1],C1,S1);         //c++
+		     ROTATE(L,C1,S1,&A[J-1][JP1-1],&A[9][JP1-1]); //c++
+	        }
+	   }
+
+           // Test the damped system for ill-conditioning
+           DMIN = MIN( fabs(A[4][4]), fabs(A[5][5]) );
+           DMIN = MIN( DMIN, fabs(A[6][6]) );
+           DMIN = MIN( DMIN, fabs(A[7][7]) );
+           DMIN = MIN( DMIN, fabs(A[8][8]) );
+	   if ((DMIN/W) < DTOL)
+		return -2; // No unique solution due to collinear nodes
+      }
+
+      // Solve the 9 by 9 triangular system for the last 5
+      // components (first and second partial derivatives)
+      DY = A[8][9]/A[8][8];
+      DX = (A[7][9]-A[7][8]*DY) / A[7][7];
+      DYY = (A[6][9]-A[6][7]*DX-A[6][8]*DY) / A[6][6];
+      DXY = (A[5][9]-A[5][6]*DYY-A[5][7]*DX-A[5][8]*DY) / A[5][5];
+      DXX = (A[4][9]-A[4][5]*DXY-A[4][6]*DYY-A[4][7]*DX-A[4][8]*DY) / A[4][4];
+
+      // Scale the solution components
+      DX = SF*DX;
+      DY = SF*DY;
+      DXX = 2.*SFS*DXX;
+      DXY = SFS*DXY;
+      DYY = 2.*SFS*DYY;
+      
+      return (LNP - 1);
+}
+
+// SETRO3 routine
+/************************************************************
+*
+*                                               From SRFPACK
+*                                            Robert J. Renka
+*                                  Dept. of Computer Science
+*                                       Univ. of North Texas
+*                                             (817) 565-2767
+*                                                   01/25/97
+*
+*   This subroutine sets up the I-th row of an augmented re-
+* gression matrix for a weighted least squares fit of a
+* cubic function f(x,y) to a set of data values z, where
+* f(XK,YK) = ZK.  The first four columns (cubic terms) are
+* scaled by S3, the next three columns (quadratic terms)
+* are scaled by S2, and the eighth and ninth columns (lin-
+* ear terms) are scaled by S1.
+*
+* On input:
+*
+*       XK,YK = Coordinates of node K.
+*
+*       ZK = Data value at node K to be interpolated by f.
+*
+*       XI,YI,ZI = Coordinates and data value at node I.
+*
+*       S1,S2,S3 = Scale factors.
+*
+*       W = Weight associated with node I.
+*
+* The above parameters are not altered by this routine.
+*
+*       ROW = Array of length 10.
+*
+* On output:
+*
+*       ROW = Array containing a row of the augmented re-
+*             gression matrix.
+*
+* Modules required by SETRO3:  None
+*
+************************************************************/
+//SUBROUTINE SETRO3(XK,YK,ZK,XI,YI,ZI,S1,S2,S3,W,ROW)
+
+template <class P>
+void Akima761<P>::SETRO3(double XK,double YK,double ZK,double XI,double YI,double ZI,double S1,double S2,double S3,double W,double* ROW)
+{
+      double DX,DY,W1,W2,W3;
+
+      DX = XI - XK;
+      DY = YI - YK;
+      W1 = S1*W;
+      W2 = S2*W;
+      W3 = S3*W;
+      ROW[0] = DX*DX*DX*W3;
+      ROW[1] = DX*DX*DY*W3;
+      ROW[2] = DX*DY*DY*W3;
+      ROW[3] = DY*DY*DY*W3;
+      ROW[4] = DX*DX*W2;
+      ROW[5] = DX*DY*W2;
+      ROW[6] = DY*DY*W2;
+      ROW[7] = DX*W1;
+      ROW[8] = DY*W1;
+      ROW[9] = (ZI-ZK)*W;
+
+      return;
+}
+
+// GIVENS routine
+/************************************************************
+*
+*                                               From SRFPACK
+*                                            Robert J. Renka
+*                                  Dept. of Computer Science
+*                                       Univ. of North Texas
+*                                             (817) 565-2767
+*                                                   09/01/88
+*
+*   This subroutine constructs the Givens plane rotation,
+*
+*           ( C  S)
+*       G = (     ) , where C*C + S*S = 1,
+*           (-S  C)
+*
+* which zeros the second component of the vector (A,B)**T
+* (transposed).  Subroutine ROTATE may be called to apply
+* the transformation to a 2 by N matrix.
+*
+*   This routine is identical to subroutine SROTG from the
+* LINPACK BLAS (Basic Linear Algebra Subroutines).
+*
+* On input:
+*
+*       A,B = Components of the vector defining the rota-
+*             tion.  These are overwritten by values R
+*             and Z (described below) which define C and S.
+*
+* On output:
+*
+*       A = Signed Euclidean norm R of the input vector:
+*           R = +/-SQRT(A*A + B*B)
+*
+*       B = Value Z such that:
+*             C = SQRT(1-Z*Z) and S=Z if ABS(Z) .LE. 1, and
+*             C = 1/Z and S = SQRT(1-C*C) if ABS(Z) > 1.
+*
+*       C = +/-(A/R) or 1 if R = 0.
+*
+*       S = +/-(B/R) or 0 if R = 0.
+*
+* Modules required by GIVENS:  None
+*
+* Intrinsic functions called by GIVENS:  ABS, SQRT
+*
+************************************************************/
+// SUBROUTINE GIVENS(A,B,C,S)
+
+template <class P>
+void Akima761<P>::GIVENS(double& A1,double& B1,double& C1,double& S1)
+{
+      // AA,BB = Local copies of A and B
+      // R =     C*A + S*B = +/-SQRT(A*A+B*B)
+      // U,V =   Variables used to scale A and B for computing R
+      
+	double AA,BB,R,U,V;
+
+      AA = A1;
+      BB = B1;
+      if (fabs(AA) > fabs(BB))
+      {
+	   U = AA + AA;
+	   V = BB/U;
+	   R = sqrt(.25+V*V)*U;
+	   C1 = AA/R;
+	   S1 = V* (C1+C1);
+
+	   // Note that R has the sign of A, C > 0, and S has
+	   // SIGN(A)*SIGN(B)
+	   B1 = S1;
+	   A1 = R;
+	   return;
+      }
+      else
+      {
+	   if (BB == 0.)
+	   {
+		   C1 = 1.;
+		   S1 = 0.;
+		   return;
+	   }
+	   else
+	   {
+		   U = BB + BB;
+		   V = AA/U;
+
+		   // Store R in A
+		   A1 = sqrt(.25+V*V)*U;
+		   S1 = BB/A1;
+		   C1 = V* (S1+S1);
+
+		   // Note that R has the sign of B, S > 0, and C has
+		   // SIGN(A)*SIGN(B)
+		   B1 = 1.;
+		   if (C1 != 0.) B1 = 1./C1;
+		   return;
+	   }
+      }
+}
+
+// ROTATE routine
+/************************************************************
+*
+*                                               From SRFPACK
+*                                            Robert J. Renka
+*                                  Dept. of Computer Science
+*                                       Univ. of North Texas
+*                                             (817) 565-2767
+*                                                   09/01/88
+*
+*                                                ( C  S)
+*   This subroutine applies the Givens rotation  (     )  to
+*                                                (-S  C)
+*                    (X(1) ... X(N))
+* the 2 by N matrix  (             ) .
+*                    (Y(1) ... Y(N))
+*
+*   This routine is identical to subroutine SROT from the
+* LINPACK BLAS (Basic Linear Algebra Subroutines).
+*
+* On input:
+*
+*       N = Number of columns to be rotated.
+*
+*       C,S = Elements of the Givens rotation.  Refer to
+*             subroutine GIVENS.
+*
+* The above parameters are not altered by this routine.
+*
+*       X,Y = Arrays of length .GE. N containing the compo-
+*             nents of the vectors to be rotated.
+*
+* On output:
+*
+*       X,Y = Arrays containing the rotated vectors (not
+*             altered if N < 1).
+*
+* Modules required by ROTATE:  None
+*
+************************************************************/
+// SUBROUTINE ROTATE(N,C,S,X,Y)
+
+template <class P>
+void Akima761<P>::ROTATE(int N,double C1,double S1,double* X,double* Y)
+{
+      double XI,YI;
+      int    I;
+
+#if 0
+MagLog::dev()<< "ROTATE" << endl;
+for (I = 0; I < N; I++)
+	MagLog::dev()<< I << " " << X[I] << " " << Y[I] << endl;
+#endif
+
+      for (I = 0; I < N; I++)
+      {
+	      XI = X[I];
+	      YI = Y[I];
+	      X[I] = C1*XI + S1*YI;
+	      Y[I] = -S1*XI + C1*YI;
+      }
+      return;
+}
+
+// SDLCTN routine
+/*********************************************************************
+* Locating points in a scattered data point set
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine locates points in a scattered data point set in
+* the x-y plane, i.e., determines to which triangle each of the
+* points to be located belongs.  When a point to be located does
+* not lie inside the data area, this subroutine determines the
+* border line segment when the point lies in an outside rectangle,
+* in an outside triangle, or in the overlap of two outside
+* rectangles.
+*
+* The input arguments are
+*   NDP  = number of data points,
+*   XD   = array of dimension NDP containing the x
+*          coordinates of the data points,
+*   YD   = array of dimension NDP containing the y
+*          coordinates of the data points,
+*   NT   = number of triangles,
+*   IPT  = two-dimensional integer array of dimension 3*NT
+*          containing the point numbers of the vertexes of
+*          the triangles,
+*   NL   = number of border line segments,
+*   IPL  = two-dimensional integer array of dimension 2*NL
+*          containing the point numbers of the end points of
+*          the border line segments,
+*   NIP  = number of points to be located,
+*   XI   = array of dimension NIP containing the x
+*          coordinates of the points to be located,
+*   YI   = array of dimension NIP containing the y
+*          coordinates of the points to be located.
+*
+* The output arguments are
+*   KTLI = integer array of dimension NIP, where the code
+*          for the type of the piece of plane in which each
+*          interpolated point lies is to be stored
+*        = 1 for a triangle inside the data area
+*        = 2 for a rectangle on the right-hand side of a
+*            border line segment
+*        = 3 for a triangle between two rectangles on the
+*            right-hand side of two consecutive border line
+*            segments
+*        = 4 for a triangle which is an overlap of two
+*            rectangles on the right-hand side of two
+*            consecutive border line segments,
+*   ITLI = integer array of dimension NIP, where the
+*          triangle numbers or the (second) border line
+*          segment numbers corresponding to the points to
+*          be located are to be stored.
+******************************************************************/
+//SUBROUTINE SDLCTN(NDP,XD,YD,NT,IPT,NL,IPL,NIP,XI,YI,KTLI,ITLI)
+
+template <class P>
+void Akima761<P>::SDLCTN(int NIP,double* XI,double* YI,int* KTLI,int* ITLI) const
+{
+#define SPDT(U1,V1,U2,V2,U3,V3) (U1-U3)* (U2-U3) + (V1-V3)* (V2-V3)
+#define VPDT(U1,V1,U2,V2,U3,V3) (U1-U3)* (V2-V3) - (V1-V3)* (U2-U3)
+
+      bool goto40;
+      double X0,X1,X2,X3,Y0,Y1,Y2,Y3;
+      int    IIP,IL1,IL2,ILII,IP1,IP2,IP3,ITII,ITLIPV,KTLIPV;
+
+      // Outermost DO-loop with respect to the points to be located
+      for (IIP = 0; IIP < NIP; IIP++)
+      {
+	  X0 = XI[IIP];
+          Y0 = YI[IIP];
+          if (IIP == 0)
+	  {
+	      KTLIPV = 0;
+              ITLIPV = 0;
+	  }
+          else
+	  {
+	      KTLIPV = KTLI[IIP-1];
+              ITLIPV = ITLI[IIP-1];
+          }
+
+	  // Checks if in the same inside triangle as previous
+          if (KTLIPV == 1)
+	  {
+	      ITII = ITLIPV;
+              IP1 = IPT_[0][ITII-1]; //c++
+              IP2 = IPT_[1][ITII-1]; //c++
+              IP3 = IPT_[2][ITII-1]; //c++
+              X1 = XD_[IP1];
+              Y1 = YD_[IP1];
+              X2 = XD_[IP2];
+              Y2 = YD_[IP2];
+              X3 = XD_[IP3];
+              Y3 = YD_[IP3];
+              if ((VPDT(X1,Y1,X2,Y2,X0,Y0) >= 0.0) &&
+                  (VPDT(X2,Y2,X3,Y3,X0,Y0) >= 0.0) &&
+                  (VPDT(X3,Y3,X1,Y1,X0,Y0) >= 0.0))
+	      {
+		  KTLI[IIP] = 1;
+                  ITLI[IIP] = ITII;
+                  continue; //for(IIP); goto 40
+	      }
+	  }
+
+	  // Locates inside the data area
+	  goto40 = false;
+          for (ITII = 0; ITII < NT_; ITII++)
+	  {
+	      IP1 = IPT_[0][ITII];
+              IP2 = IPT_[1][ITII];
+              IP3 = IPT_[2][ITII];
+              X1 = XD_[IP1];
+              Y1 = YD_[IP1];
+              X2 = XD_[IP2];
+              Y2 = YD_[IP2];
+              X3 = XD_[IP3];
+              Y3 = YD_[IP3];
+              if ((VPDT(X1,Y1,X2,Y2,X0,Y0) >= 0.0) &&
+                  (VPDT(X2,Y2,X3,Y3,X0,Y0) >= 0.0) &&
+                  (VPDT(X3,Y3,X1,Y1,X0,Y0) >= 0.0))
+	      {
+		  KTLI[IIP] = 1;
+                  ITLI[IIP] = ITII+1; //c++
+                  goto40 = true;
+		  break;
+              }
+	  }
+
+	  if (goto40) continue; //for(IIP)
+
+	  // Locates outside the data area
+          for (ILII = 0; ILII < NL_; ILII++)
+	  {
+	      IL1 = ILII;
+	      // IL2 = MOD(IL1,NL_) + 1
+	      IL2 = (IL1+1)%NL_;
+              IP1 = IPL_[0][IL1];
+              IP2 = IPL_[0][IL2];
+              IP3 = IPL_[1][IL2];
+              X1 = XD_[IP1];
+              Y1 = YD_[IP1];
+              X2 = XD_[IP2];
+              Y2 = YD_[IP2];
+              X3 = XD_[IP3];
+              Y3 = YD_[IP3];
+              if (VPDT(X1,Y1,X3,Y3,X0,Y0) <= 0.0)
+	      {
+                  if (VPDT(X1,Y1,X3,Y3,X2,Y2) <= 0.0)
+		  {
+                      if ((SPDT(X1,Y1,X0,Y0,X2,Y2) <= 0.0) &&
+                          (SPDT(X3,Y3,X0,Y0,X2,Y2) <= 0.0))
+		      {
+			  KTLI[IIP] = 3;
+                          ITLI[IIP] = IL2+1; //c++
+			  goto40 = true;
+			  break; //for(ILII)
+		      }
+		  }
+                  if (VPDT(X1,Y1,X3,Y3,X2,Y2) >= 0.0)
+		  {
+                      if ((SPDT(X1,Y1,X0,Y0,X2,Y2) >= 0.0) &&
+                          (SPDT(X3,Y3,X0,Y0,X2,Y2) >= 0.0))
+		      {
+			  KTLI[IIP] = 4;
+                          ITLI[IIP] = IL2+1; //c++
+                          goto40 = true;
+	                  break; //for(ILII)
+                      }
+		  }
+	      }
+	  }
+
+	  if (goto40) continue; //for(IIP)
+
+          for (ILII = 0; ILII < NL_; ILII++)
+	  {
+	      IL2 = ILII;
+              IP2 = IPL_[0][IL2];
+              IP3 = IPL_[1][IL2];
+              X2 = XD_[IP2];
+              Y2 = YD_[IP2];
+              X3 = XD_[IP3];
+              Y3 = YD_[IP3];
+              if (VPDT(X2,Y2,X3,Y3,X0,Y0) <= 0.0)
+	      {
+                  if ((SPDT(X3,Y3,X0,Y0,X2,Y2) >= 0.0) &&
+                      (SPDT(X2,Y2,X0,Y0,X3,Y3) >= 0.0))
+		  {
+		      KTLI[IIP] = 2;
+                      ITLI[IIP] = IL2+1; //c++
+	              break;
+                  }
+	      }
+	  }
+
+      } //for(IIP) loop 40
+
+      return;
+}
+
+// SDPLNL routine
+/**************************************************************************
+* Polynomials
+* (a supporting subroutine of the SDBI3P/SDSF3P subroutine package)
+*
+* Hiroshi Akima
+* U.S. Department of Commerce, NTIA/ITS
+* Version of 1995/05
+*
+* This subroutine determines a polynomial in x and y for each
+* triangle or rectangle in the x-y plane and calculates the z
+* value by evaluating the polynomial for the desired points,
+* for bivariate interpolation and surface fitting for scattered
+* data.
+*
+* The input arguments are
+*   NDP  = number of data points,
+*   XD   = array of dimension NDP containing the x
+*          coordinates of the data points,
+*   YD   = array of dimension NDP containing the y
+*          coordinates of the data points,
+*   ZD   = array of dimension NDP containing the z
+*          values at the data points,
+*   NT   = number of triangles,
+*   IPT  = two-dimensional integer array of dimension 3*NT
+*          containing the point numbers of the vertexes of
+*          the triangles,
+*   NL   = number of border line segments,
+*   IPL  = two-dimensional integer array of dimension 2*NL
+*          containing the point numbers of the end points of
+*          the border line segments,
+*   PDD  = two-dimensional array of dimension 5*NDP
+*          containing the partial derivatives at the data
+*          points,
+*   NIP  = number of output points at which interpolation is
+*          to be performed,
+*   XI   = array of dimension NIP containing the x
+*          coordinates of the output points,
+*   YI   = array of dimension NIP containing the y
+*          coordinates of the output points,
+*   KTLI = integer array of dimension NIP, each element
+*          containing the code for the type of the piece of
+*          the plane in which each output point lies
+*        = 1 for a triangle inside the data area
+*        = 2 for a rectangle on the right-hand side of a
+*            border line segment
+*        = 3 for a triangle between two rectangles on the
+*            right-hand side of two consecutive border
+*            line segments
+*        = 4 for the triangle which is an overlap of two
+*            rectangles on the right-hand side of two
+*            consecutive border line segments,
+*   ITLI = integer array of dimension NIP containing the
+*          triangle numbers or the (second) border line
+*          segment numbers corresponding to the output
+*          points.
+*
+* The output argument is
+*   ZI   = array of dimension NIP, where the calculated z
+*          values are to be stored.
+*******************************************************************/
+// SUBROUTINE SDPLNL(NDP,XD,YD,ZD,NT,IPT,NL,IPL,PDD,NIP,XI,YI,KTLI,ITLI,ZI)
+
+template <class P>
+void Akima761<P>::SDPLNL(int NIP,double* XI,double* YI,int* KTLI,int* ITLI,double* ZI) const
+{
+      double A,AA,AB,ACT2,AD,ADBC,AP,B,BB,BC,BDT2,BP,C,CC,CD,
+             CP,DF,DD,DLT,DP,DX,DY,E1,E2,G1,G2,H1,H2,H3,LUSQ,
+             LVSQ,P0,P00,P01,P02,P03,P04,P05,P1,P10,P11,P12,
+             P13,P14,P2,P20,P21,P22,P23,P3,P30,P31,P32,P4,P40,
+             P41,P5,P50,SPUV,U,V,WT1,WT2,X0,XII,Y0,YII,Z0,ZII,
+	     ZII1,ZII2;
+      int    I,IDP,IIP,ILI,IR,ITLII,ITLIPV,K,KTLII,KTLIPV;
+
+      double PD[5][3],X[3],Y[3],Z[3],ZU[3],ZUU[3],ZUV[3],ZV[3],ZVV[3];
+
+      // Outermost DO-loop with respect to the output point
+      for (IIP = 0; IIP < NIP; IIP++)
+      {
+	  XII = XI[IIP];
+          YII = YI[IIP];
+          KTLII = KTLI[IIP];
+          ITLII = ITLI[IIP];
+          if (IIP == 0)
+	  {
+	      KTLIPV = 0;
+              ITLIPV = 0;
+	  }
+          else
+	  {
+	      KTLIPV = KTLI[IIP-1];
+              ITLIPV = ITLI[IIP-1];
+          }
+
+	  // Part 1.  Calculation of ZII by interpolation
+          if (KTLII == 1)
+	  {
+	      // Calculates the coefficients when necessary
+              if (KTLII != KTLIPV || ITLII != ITLIPV)
+	      {
+		  //Loads coordinate and partial derivative values at the vertexes
+		  for (I = 0; I < 3; I++)
+		  {
+		      IDP = IPT_[I][ITLII-1]; //c++
+                      X[I] = XD_[IDP];
+                      Y[I] = YD_[IDP];
+                      Z[I] = ZD_[IDP];
+                      for (K = 0; K < 5; K++)
+			      PD[K][I] = PDD_[K][IDP-1];  //c++
+		  }
+
+		  // Determines the coefficients for the coordinate system
+		  // transformation from the x-y system to the u-v system
+		  // and vice versa
+                  X0 = X[0];
+                  Y0 = Y[0];
+                  A = X[1] - X0;
+                  B = X[2] - X0;
+                  C = Y[1] - Y0;
+                  DF = Y[2] - Y0;
+                  AD = A*DF;
+                  BC = B*C;
+                  DLT = AD - BC;
+                  AP = DF/DLT;
+                  BP = -B/DLT;
+                  CP = -C/DLT;
+                  DP = A/DLT;
+
+		  // Converts the partial derivatives at the vertexes of the
+		  // triangle for the u-v coordinate system
+                  AA = A*A;
+                  ACT2 = 2.0*A*C;
+                  CC = C*C;
+                  AB = A*B;
+                  ADBC = AD + BC;
+                  CD = C*DF;
+                  BB = B*B;
+                  BDT2 = 2.0*B*DF;
+                  DD = DF*DF;
+                  for (I = 0; I < 3; I++)
+		  {
+		      ZU[I]  = A*PD[0][I] + C*PD[1][I];
+                      ZV[I]  = B*PD[0][I] + DF*PD[1][I];
+                      ZUU[I] = AA*PD[2][I] + ACT2*PD[3][I] + CC*PD[4][I];
+                      ZUV[I] = AB*PD[2][I] + ADBC*PD[3][I] + CD*PD[4][I];
+                      ZVV[I] = BB*PD[2][I] + BDT2*PD[3][I] + DD*PD[4][I];
+		  }
+
+		  // Calculates the coefficients of the polynomial
+                  P00 = Z[0];
+                  P10 = ZU[0];
+                  P01 = ZV[0];
+                  P20 = 0.5*ZUU[0];
+                  P11 = ZUV[0];
+                  P02 = 0.5*ZVV[0];
+                  H1 = Z[1] - P00 - P10 - P20;
+                  H2 = ZU[1] - P10 - ZUU[0];
+                  H3 = ZUU[1] - ZUU[0];
+                  P30 = 10.0*H1 - 4.0*H2 + 0.5*H3;
+                  P40 = -15.0*H1 + 7.0*H2 - H3;
+                  P50 = 6.0*H1 - 3.0*H2 + 0.5*H3;
+                  H1 = Z[2] - P00 - P01 - P02;
+                  H2 = ZV[2] - P01 - ZVV[0];
+                  H3 = ZVV[2] - ZVV[0];
+                  P03 = 10.0*H1 - 4.0*H2 + 0.5*H3;
+                  P04 = -15.0*H1 + 7.0*H2 - H3;
+                  P05 = 6.0*H1 - 3.0*H2 + 0.5*H3;
+                  LUSQ = AA + CC;
+                  LVSQ = BB + DD;
+                  SPUV = AB + CD;
+                  P41 = 5.0*SPUV/LUSQ*P50;
+                  P14 = 5.0*SPUV/LVSQ*P05;
+                  H1 = ZV[1] - P01 - P11 - P41;
+                  H2 = ZUV[1] - P11 - 4.0*P41;
+                  P21 = 3.0*H1 - H2;
+                  P31 = -2.0*H1 + H2;
+                  H1 = ZU[2] - P10 - P11 - P14;
+                  H2 = ZUV[2] - P11 - 4.0*P14;
+                  P12 = 3.0*H1 - H2;
+                  P13 = -2.0*H1 + H2;
+                  E1 = (LVSQ-SPUV)/ ((LVSQ-SPUV)+ (LUSQ-SPUV));
+                  E2 = 1.0 - E1;
+                  G1 = 5.0*E1 - 2.0;
+                  G2 = 1.0 - G1;
+                  H1 = 5.0* (E1* (P50-P41)+E2* (P05-P14)) + (P41+P14);
+                  H2 = 0.5*ZVV[1] - P02 - P12;
+                  H3 = 0.5*ZUU[2] - P20 - P21;
+                  P22 = H1 + G1*H2 + G2*H3;
+                  P32 = H2 - P22;
+                  P23 = H3 - P22;
+	      }
+
+	      // Converts XII and YII to u-v system
+              DX = XII - X0;
+              DY = YII - Y0;
+              U = AP*DX + BP*DY;
+              V = CP*DX + DP*DY;
+
+	      // Evaluates the polynomial
+              P0 = P00 + V* (P01+V* (P02+V* (P03+V* (P04+V*P05))));
+              P1 = P10 + V* (P11+V* (P12+V* (P13+V*P14)));
+              P2 = P20 + V* (P21+V* (P22+V*P23));
+              P3 = P30 + V* (P31+V*P32);
+              P4 = P40 + V*P41;
+              P5 = P50;
+              ZI[IIP] = P0 + U* (P1+U* (P2+U* (P3+U* (P4+U*P5))));
+	  }
+
+	  // Part 2.  Calculation of ZII by extrapolation in the rectangle
+          if (KTLII == 2)
+	  {
+	      // Calculates the coefficients when necessary
+              if (KTLII != KTLIPV || ITLII != ITLIPV)
+	      {
+		  // Loads coordinate and partial derivative values at the end
+		  // points of the border line segment
+		  for (I = 0; I < 2; I++)
+		  {
+		      IDP = IPL_[I][ITLII-1]; //c++
+                      X[I] = XD_[IDP];
+                      Y[I] = YD_[IDP];
+                      Z[I] = ZD_[IDP];
+                      for (K = 0; K < 5; K++)
+			      PD[K][I] = PDD_[K][IDP-1];
+		  }
+
+		  // Determines the coefficients for the coordinate system
+		  // transformation from the x-y system to the u-v system
+		  // and vice versa
+                  X0 = X[0];
+                  Y0 = Y[0];
+                  A = Y[1] - Y[0];
+                  B = X[1] - X[0];
+                  C = -B;
+                  DF = A;
+                  AD = A*DF;
+                  BC = B*C;
+                  DLT = AD - BC;
+                  AP = DF/DLT;
+                  BP = -B/DLT;
+                  CP = -BP;
+                  DP = AP;
+
+		  // Converts the partial derivatives at the end points of the
+		  // border line segment for the u-v coordinate system
+                  AA = A*A;
+                  ACT2 = 2.0*A*C;
+                  CC = C*C;
+                  AB = A*B;
+                  ADBC = AD + BC;
+                  CD = C*DF;
+                  BB = B*B;
+                  BDT2 = 2.0*B*DF;
+                  DD = DF*DF;
+                  for (I = 0; I < 2; I++)
+		  {
+		      ZU[I]  = A*PD[0][I] + C*PD[1][I];
+                      ZV[I]  = B*PD[0][I] + DF*PD[1][I];
+                      ZUU[I] = AA*PD[2][I] + ACT2*PD[3][I] + CC*PD[4][I];
+                      ZUV[I] = AB*PD[2][I] + ADBC*PD[3][I] + CD*PD[4][I];
+                      ZVV[I] = BB*PD[2][I] + BDT2*PD[3][I] + DD*PD[4][I];
+		  }
+
+		  // Calculates the coefficients of the polynomial
+                  P00 = Z[0];
+                  P10 = ZU[0];
+                  P01 = ZV[0];
+                  P20 = 0.5*ZUU[0];
+                  P11 = ZUV[0];
+                  P02 = 0.5*ZVV[0];
+                  H1 = Z[1] - P00 - P01 - P02;
+                  H2 = ZV[1] - P01 - ZVV[0];
+                  H3 = ZVV[1] - ZVV[0];
+                  P03 = 10.0*H1 - 4.0*H2 + 0.5*H3;
+                  P04 = -15.0*H1 + 7.0*H2 - H3;
+                  P05 = 6.0*H1 - 3.0*H2 + 0.5*H3;
+                  H1 = ZU[1] - P10 - P11;
+                  H2 = ZUV[1] - P11;
+                  P12 = 3.0*H1 - H2;
+                  P13 = -2.0*H1 + H2;
+                  P21 = 0.5* (ZUU[1]-ZUU[0]);
+              }
+
+	      // Converts XII and YII to u-v system
+              DX = XII - X0;
+              DY = YII - Y0;
+              U = AP*DX + BP*DY;
+              V = CP*DX + DP*DY;
+
+	      // Evaluates the polynomial
+              P0 = P00 + V* (P01+V* (P02+V* (P03+V* (P04+V*P05))));
+              P1 = P10 + V* (P11+V* (P12+V*P13));
+              P2 = P20 + V*P21;
+              ZI[IIP] = P0 + U* (P1+U*P2);
+          }
+
+	  // Part 3.  Calculation of ZII by extrapolation in the triangle
+          if (KTLII == 3)
+	  {
+	      // Calculates the coefficients when necessary
+              if (KTLII != KTLIPV || ITLII != ITLIPV)
+	      {
+		  // Loads coordinate and partial derivative values at the vertex
+		  // of the triangle
+		  IDP = IPL_[0][ITLII-1]; //c++
+                  X0 = XD_[IDP];
+                  Y0 = YD_[IDP];
+                  Z0 = ZD_[IDP];
+                  for (K = 0; K < 5; K++)
+			  PD[K][0] = PDD_[K][IDP-1]; //c++
+
+		  // Calculates the coefficients of the polynomial
+                  P00 = Z0;
+                  P10 = PD[0][0];
+                  P01 = PD[1][0];
+                  P20 = 0.5*PD[2][0];
+                  P11 = PD[3][0];
+                  P02 = 0.5*PD[4][0];
+              }
+
+	      // Converts XII and YII to U-V system
+              U = XII - X0;
+              V = YII - Y0;
+
+	      // Evaluates the polynomial
+              P0 = P00 + V* (P01+V*P02);
+              P1 = P10 + V*P11;
+              ZI[IIP] = P0 + U* (P1+U*P20);
+	  }
+
+	  // Part 4.  Calculation of ZII by extrapolation in the triangle
+	  // which is an overlap of two rectangles
+          if (KTLII == 4)
+	  {
+	      // Calculates the coefficients
+	      for (IR = 1; IR <= 2; IR++)
+	      {
+                  if (IR == 1)
+		      // ILI = MOD(ITLII+NL-2,NL) + 1
+		      ILI = ((ITLII+NL_-2)%NL_) + 1;
+                  else
+		      ILI = ITLII;
+
+		  // Loads coordinate and partial derivative values at the end
+		  // points of the border line segment
+                  for (I = 0; I < 2; I++)
+		  {
+		      IDP = IPL_[I][ILI-1]; //c++
+                      X[I] = XD_[IDP];
+                      Y[I] = YD_[IDP];
+                      Z[I] = ZD_[IDP];
+                      for (K = 0; K < 5; K++)
+			      PD[K][I] = PDD_[K][IDP-1]; //c++
+		  }
+
+		  // Determines the coefficients for the coordinate system
+		  // transformation from the x-y system to the u-v system
+		  // and vice versa
+                  X0 = X[0];
+                  Y0 = Y[0];
+                  A = Y[1] - Y[0];
+                  B = X[1] - X[0];
+                  C = -B;
+                  DF = A;
+                  AD = A*DF;
+                  BC = B*C;
+                  DLT = AD - BC;
+                  AP = DF/DLT;
+                  BP = -B/DLT;
+                  CP = -BP;
+                  DP = AP;
+
+		  // Converts the partial derivatives at the end points of the
+		  // border line segment for the u-v coordinate system
+                  AA = A*A;
+                  ACT2 = 2.0*A*C;
+                  CC = C*C;
+                  AB = A*B;
+                  ADBC = AD + BC;
+                  CD = C*DF;
+                  BB = B*B;
+                  BDT2 = 2.0*B*DF;
+                  DD = DF*DF;
+                  for (I = 0; I < 2; I++)
+		  {
+		      ZU[I]  = A*PD[0][I] + C*PD[1][I];
+                      ZV[I]  = B*PD[0][I] + DF*PD[1][I];
+                      ZUU[I] = AA*PD[2][I] + ACT2*PD[3][I] + CC*PD[4][I];
+                      ZUV[I] = AB*PD[2][I] + ADBC*PD[3][I] + CD*PD[4][I];
+                      ZVV[I] = BB*PD[2][I] + BDT2*PD[3][I] + DD*PD[4][I];
+		  }
+
+		  // Calculates the coefficients of the polynomial
+                  P00 = Z[0];
+                  P10 = ZU[0];
+                  P01 = ZV[0];
+                  P20 = 0.5*ZUU[0];
+                  P11 = ZUV[0];
+                  P02 = 0.5*ZVV[0];
+                  H1 = Z[1] - P00 - P01 - P02;
+                  H2 = ZV[1] - P01 - ZVV[0];
+                  H3 = ZVV[1] - ZVV[0];
+                  P03 = 10.0*H1 - 4.0*H2 + 0.5*H3;
+                  P04 = -15.0*H1 + 7.0*H2 - H3;
+                  P05 = 6.0*H1 - 3.0*H2 + 0.5*H3;
+                  H1 = ZU[1] - P10 - P11;
+                  H2 = ZUV[1] - P11;
+                  P12 = 3.0*H1 - H2;
+                  P13 = -2.0*H1 + H2;
+                  P21 = 0.5* (ZUU[1]-ZUU[0]);
+
+		  // Converts XII and YII to u-v system
+                  DX = XII - X0;
+                  DY = YII - Y0;
+                  U = AP*DX + BP*DY;
+                  V = CP*DX + DP*DY;
+
+		  // Evaluates the polynomial
+                  P0 = P00 + V* (P01+V* (P02+V* (P03+V* (P04+V*P05))));
+                  P1 = P10 + V* (P11+V* (P12+V*P13));
+                  P2 = P20 + V*P21;
+                  ZII = P0 + U* (P1+U*P2);
+                  if (IR == 1)
+		  {
+		      ZII1 = ZII;
+                      WT2 = pow((X[0]-X[1])* (XII-X[1])+
+				 (Y[0]-Y[1])* (YII-Y[1]),2.);
+		  }
+                  else
+		  {
+		      ZII2 = ZII;
+                      WT1 = pow((X[1]-X[0])* (XII-X[0])+
+				(Y[1]-Y[0])* (YII-Y[0]),2.);
+		  }
+
+	       } //for(IR); loop 110
+
+              ZI[IIP] = (WT1*ZII1+WT2*ZII2)/ (WT1+WT2);
+	  }
+
+      } //for (IIP); loop 120
+
+      return;
+}
diff --git a/src/visualisers/Akima761Method.cc b/src/visualisers/Akima761Method.cc
new file mode 100644
index 0000000..5528efc
--- /dev/null
+++ b/src/visualisers/Akima761Method.cc
@@ -0,0 +1,52 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Akima761Method.cc
+    \brief Implementation of the Template class Akima761Method.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 11-Mar-2004
+    
+    Changes:
+    
+*/
+
+#include "Akima761Method.h"
+
+using namespace magics;
+
+template <class P>
+Akima761Method<P>::Akima761Method() 
+{
+}
+
+template <class P>
+Akima761Method<P>::~Akima761Method() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/	
+template <class P>	
+void Akima761Method<P>::print(ostream& out)  const
+{
+	out << "Akima761Method<P>";
+}
+
diff --git a/src/visualisers/ArrowPlotting.cc b/src/visualisers/ArrowPlotting.cc
index 1453644..646f82c 100644
--- a/src/visualisers/ArrowPlotting.cc
+++ b/src/visualisers/ArrowPlotting.cc
@@ -32,17 +32,19 @@
 
 using namespace magics;
 
-void ArrowPlotting::operator()(const UserPoint& geo, const PaperPoint& point, double x, double y, double val) 
+void ArrowPlotting::operator()(bool north, const PaperPoint& point, double x, double y, double val)
 { 
    const double speed = this->speed(x, y, val);
    if ( maxVelocity_ < speed )
        maxVelocity_ = speed;
-   if (speed < this->min_speed_ || speed > this->max_speed_) return;
+
+   if ( !levels_->empty() && (speed < levels_->front() || speed > levels_->back()) ) return;
+   if ( speed < min_speed_ || speed > max_speed_ ) return;
 
    if ((*this->calm_)(point, x, y)) return; 
 
    Colour colour = this->colour(*colour_, x, y, val);
-   if ( geo.y() >= 0 ) 
+   if ( north )
 	   northArrow(colour)->push_back(ArrowPoint(x, y, point));
    else 
 	   southArrow(colour)->push_back(ArrowPoint(x, y, point));
@@ -98,6 +100,9 @@ void ArrowPlotting::prepare(BasicGraphicsObjectContainer& out)
    (*this->calm_).height(this->calm_indicator_size_);
    (*this->calm_).below(this->calm_below_);
    (*this->calm_).prepare(out);
+   // We also empty the containers to get a clean new plot
+   northArrows_.clear();
+   southArrows_.clear();
 }
 
 void ArrowPlotting::prepare(BasicGraphicsObjectContainer& out, double res)
@@ -110,11 +115,8 @@ void ArrowPlotting::prepare(BasicGraphicsObjectContainer& out, double res)
 
    if ( magCompare(unit_system_, "automatic") ) {
 	   // adjust the scaling factor!
-	   MagLog::dev() << "res-->" << res << endl;
-	   MagLog::dev() << "befor unit_velocity_-->" << this->unit_velocity_ << endl;
-	   double unit = res * out.transformation().unitToCm(out.absoluteWidth(), out.absoluteHeight());
-	   MagLog::dev() << "unit to cm -->" << out.transformation().unitToCm(out.absoluteWidth(), out.absoluteHeight()) << " unit->" << unit << endl;
-	   if(!zero(unit)) this->unit_velocity_ /= unit;
+
+	   this->unit_velocity_ /= res;
 	   MagLog::dev() << "unit_velocity_-->" << this->unit_velocity_ << endl;
    }
    else if ( magCompare(unit_system_, "paper") ) {
@@ -124,12 +126,11 @@ void ArrowPlotting::prepare(BasicGraphicsObjectContainer& out, double res)
    }
 
    this->maxVelocity_ = -1;
-/*
-   for (map<Colour, Arrow*>::iterator arrow = northArrows_.begin(); arrow != northArrows_.end(); ++ arrow)
-	   out.push_back(arrow->second);
-   for (map<Colour, Arrow*>::iterator arrow = southArrows_.begin(); arrow != southArrows_.end(); ++ arrow)
-   	   out.push_back(arrow->second);
- */
+
+   // We also empty the containers to get a clean new plot
+   northArrows_.clear();
+   southArrows_.clear();
+
 }
 
 
@@ -145,7 +146,12 @@ struct SortHelper
 
 void ArrowPlotting::finish(BasicGraphicsObjectContainer& out)
 {	
-	if ( this->legend_only_) return;
+	if ( legendOnly_) {
+		// and now we reset
+		northArrows_.clear();
+		southArrows_.clear();
+		return;
+	}
 	unit_velocity_ = (  unit_velocity_ == 0 ) ? maxVelocity_ :  unit_velocity_;
 	vector<Arrow*> arrows;
 	for ( map<Colour, Arrow*>::iterator arrow = northArrows_.begin(); arrow != northArrows_.end(); ++arrow) 
@@ -163,9 +169,7 @@ void ArrowPlotting::finish(BasicGraphicsObjectContainer& out)
 		     out.push_back(*arrow);
 		}
 	}
-	// and now we reset 
-	northArrows_.clear();
-	southArrows_.clear();
+
 }
 
 
@@ -227,4 +231,4 @@ void ArrowPlotting::visit(Data& data, PointsHandler& points, HistoVisitor& visit
     
     Histogram helper;
     helper.visit(beans, data, points, visitor);
-}  
\ No newline at end of file
+}  
diff --git a/src/visualisers/ArrowPlotting.h b/src/visualisers/ArrowPlotting.h
index 318b341..8472742 100644
--- a/src/visualisers/ArrowPlotting.h
+++ b/src/visualisers/ArrowPlotting.h
@@ -39,10 +39,10 @@
 namespace magics {
 
 
-class ArrowPlotting: public WindPlotting, public ArrowPlottingAttributes{
+class ArrowPlotting: public WindPlotting, public ArrowPlottingAttributes {
 
 public:
-	ArrowPlotting()  {}
+	ArrowPlotting()  { }
 	virtual ~ArrowPlotting() {}
 
 	virtual void set(const map<string, string>& map) 
@@ -64,10 +64,14 @@ public:
 	
 	Arrow* southArrow(const Colour&);
 	Arrow* northArrow(const Colour&);
+	double minSpeed() { return min_speed_; }
+	double maxSpeed() { return max_speed_; }
 	
+
+
 	
 
-	virtual void operator()(const UserPoint&, const PaperPoint& point, double x, double y, double val);
+	virtual void operator()(bool, const PaperPoint& point, double x, double y, double val);
 
 	virtual void prepare(BasicGraphicsObjectContainer& out, double res);	
 	virtual void prepare(BasicGraphicsObjectContainer&);	
diff --git a/src/visualisers/Axis.cc b/src/visualisers/Axis.cc
index e1cfeb1..203d9a8 100644
--- a/src/visualisers/Axis.cc
+++ b/src/visualisers/Axis.cc
@@ -317,8 +317,9 @@ void HorizontalAxis::label(HorizontalAxisVisitor& axis)
 		font.colour(newcolour);
 		font.style(label_font_style_);
 	    font.size( height );
-
+	    (*x)->setFont(font);
 	    text->setFont(font);
+
 	    text->setText(label);
 	    text->setJustification(justification);
 	    text->setVerticalAlign(MBOTTOM);
@@ -411,6 +412,7 @@ void VerticalAxis::label(VerticalAxisVisitor& axis)
 		font.colour(newcolour);
 		font.style(label_font_style_);
 		font.size(height);
+		(*y)->setFont(font);
 		text->setFont(font);
 		text->setText(label);
 		text->setJustification(justification);
@@ -510,6 +512,7 @@ void VerticalAxis::title(VerticalAxisVisitor& out)
 {
 	if ( !title_ )
 		return;
+	out.frameIt();
 	double angle = out.angleTitle();
 	double x = title_position_;
 
diff --git a/src/visualisers/AxisAttributes.cc b/src/visualisers/AxisAttributes.cc
deleted file mode 100644
index d40e0e0..0000000
--- a/src/visualisers/AxisAttributes.cc
+++ /dev/null
@@ -1,463 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file AxisAttributes.cc
-    \brief Implementation of Axis Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "AxisAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-AxisAttributes::AxisAttributes():
-	orientation_(ParameterManager::getString("axis_orientation")),
-	position_(ParameterManager::getString("axis_position")),
-	method_(MagTranslator<string, AxisMethod>().magics("axis_type")),
-	interval_(ParameterManager::getDouble("axis_tick_interval")),
-	positions_(ParameterManager::getDoubleArray("axis_tick_position_list")),
-	line_(ParameterManager::getBool("axis_line")),
-	line_colour_(MagTranslator<string, Colour>().magics("axis_line_colour")),
-	line_style_(MagTranslator<string, LineStyle>().magics("axis_line_style")),
-	line_thickness_(ParameterManager::getInt("axis_line_thickness")),
-	grid_(ParameterManager::getBool("axis_grid")),
-	grid_colour_(MagTranslator<string, Colour>().magics("axis_grid_colour")),
-	grid_style_(MagTranslator<string, LineStyle>().magics("axis_grid_line_style")),
-	grid_thickness_(ParameterManager::getInt("axis_grid_thickness")),
-	grid_reference_level_(ParameterManager::getDouble("axis_grid_reference_level")),
-	grid_reference_colour_(MagTranslator<string, Colour>().magics("axis_grid_reference_colour")),
-	grid_reference_style_(MagTranslator<string, LineStyle>().magics("axis_grid_reference_line_style")),
-	grid_reference_thickness_(ParameterManager::getInt("axis_grid_reference_thickness")),
-	title_(ParameterManager::getBool("axis_title")),
-	title_text_(ParameterManager::getString("axis_title_text")),
-	title_orientation_(ParameterManager::getString("axis_title_orientation")),
-	title_colour_(MagTranslator<string, Colour>().magics("axis_title_colour")),
-	title_height_(ParameterManager::getDouble("axis_title_height")),
-	title_font_(ParameterManager::getString("axis_title_font")),
-	title_font_style_(ParameterManager::getString("axis_title_font_style")),
-	tick_(ParameterManager::getBool("axis_tick")),
-	tick_position_(ParameterManager::getString("axis_tick_position")),
-	tick_colour_(MagTranslator<string, Colour>().magics("axis_tick_colour")),
-	tick_length_(ParameterManager::getDouble("axis_tick_size")),
-	tick_thickness_(ParameterManager::getInt("axis_tick_thickness")),
-	label_(ParameterManager::getBool("axis_tick_label")),
-	label_type_(ParameterManager::getString("axis_tick_label_type")),
-	label_frequency_(ParameterManager::getInt("axis_tick_label_frequency")),
-	label_first_(ParameterManager::getBool("axis_tick_label_first")),
-	label_last_(ParameterManager::getBool("axis_tick_label_last")),
-	label_position_(ParameterManager::getString("axis_tick_label_position")),
-	label_orientation_(ParameterManager::getString("axis_tick_label_orientation")),
-	label_font_(ParameterManager::getString("axis_tick_label_font")),
-	label_font_style_(ParameterManager::getString("axis_tick_label_font_style")),
-	label_colour_(MagTranslator<string, Colour>().magics("axis_tick_label_colour")),
-	label_height_(ParameterManager::getDouble("axis_tick_label_height")),
-	label_labels_(ParameterManager::getStringArray("axis_tick_label_list")),
-	label_format_(ParameterManager::getString("axis_tick_label_format")),
-	minor_tick_(ParameterManager::getBool("axis_minor_tick")),
-	minor_tick_count_(ParameterManager::getInt("axis_minor_tick_count")),
-	minor_tick_colour_(MagTranslator<string, Colour>().magics("axis_minor_tick_colour")),
-	minor_tick_thickness_(ParameterManager::getInt("axis_minor_tick_thickness")),
-	tip_(ParameterManager::getBool("axis_tip_title")),
-	tip_text_(ParameterManager::getString("axis_tip_title_text")),
-	tip_colour_(MagTranslator<string, Colour>().magics("axis_tip_title_colour")),
-	tip_height_(ParameterManager::getDouble("axis_tip_title_height")),
-	tip_quality_(ParameterManager::getString("axis_tip_title_quality"))
-{
-} 
-
-
-
-AxisAttributes::~AxisAttributes()
-{
-}
-
-    
-void AxisAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(0);
-
-	setAttribute(prefix, "axis_orientation", orientation_, params);
-	setAttribute(prefix, "axis_position", position_, params);
-	setMember(prefix, "axis_type", method_, params);
-	setAttribute(prefix, "axis_tick_interval", interval_, params);
-	setAttribute(prefix, "axis_tick_position_list", positions_, params);
-	setAttribute(prefix, "axis_line", line_, params);
-	setAttribute(prefix, "axis_line_colour", line_colour_, params);
-	setAttribute(prefix, "axis_line_style", line_style_, params);
-	setAttribute(prefix, "axis_line_thickness", line_thickness_, params);
-	setAttribute(prefix, "axis_grid", grid_, params);
-	setAttribute(prefix, "axis_grid_colour", grid_colour_, params);
-	setAttribute(prefix, "axis_grid_line_style", grid_style_, params);
-	setAttribute(prefix, "axis_grid_thickness", grid_thickness_, params);
-	setAttribute(prefix, "axis_grid_reference_level", grid_reference_level_, params);
-	setAttribute(prefix, "axis_grid_reference_colour", grid_reference_colour_, params);
-	setAttribute(prefix, "axis_grid_reference_line_style", grid_reference_style_, params);
-	setAttribute(prefix, "axis_grid_reference_thickness", grid_reference_thickness_, params);
-	setAttribute(prefix, "axis_title", title_, params);
-	setAttribute(prefix, "axis_title_text", title_text_, params);
-	setAttribute(prefix, "axis_title_orientation", title_orientation_, params);
-	setAttribute(prefix, "axis_title_colour", title_colour_, params);
-	setAttribute(prefix, "axis_title_height", title_height_, params);
-	setAttribute(prefix, "axis_title_font", title_font_, params);
-	setAttribute(prefix, "axis_title_font_style", title_font_style_, params);
-	setAttribute(prefix, "axis_tick", tick_, params);
-	setAttribute(prefix, "axis_tick_position", tick_position_, params);
-	setAttribute(prefix, "axis_tick_colour", tick_colour_, params);
-	setAttribute(prefix, "axis_tick_size", tick_length_, params);
-	setAttribute(prefix, "axis_tick_thickness", tick_thickness_, params);
-	setAttribute(prefix, "axis_tick_label", label_, params);
-	setAttribute(prefix, "axis_tick_label_type", label_type_, params);
-	setAttribute(prefix, "axis_tick_label_frequency", label_frequency_, params);
-	setAttribute(prefix, "axis_tick_label_first", label_first_, params);
-	setAttribute(prefix, "axis_tick_label_last", label_last_, params);
-	setAttribute(prefix, "axis_tick_label_position", label_position_, params);
-	setAttribute(prefix, "axis_tick_label_orientation", label_orientation_, params);
-	setAttribute(prefix, "axis_tick_label_font", label_font_, params);
-	setAttribute(prefix, "axis_tick_label_font_style", label_font_style_, params);
-	setAttribute(prefix, "axis_tick_label_colour", label_colour_, params);
-	setAttribute(prefix, "axis_tick_label_height", label_height_, params);
-	setAttribute(prefix, "axis_tick_label_list", label_labels_, params);
-	setAttribute(prefix, "axis_tick_label_format", label_format_, params);
-	setAttribute(prefix, "axis_minor_tick", minor_tick_, params);
-	setAttribute(prefix, "axis_minor_tick_count", minor_tick_count_, params);
-	setAttribute(prefix, "axis_minor_tick_colour", minor_tick_colour_, params);
-	setAttribute(prefix, "axis_minor_tick_thickness", minor_tick_thickness_, params);
-	setAttribute(prefix, "axis_tip_title", tip_, params);
-	setAttribute(prefix, "axis_tip_title_text", tip_text_, params);
-	setAttribute(prefix, "axis_tip_title_colour", tip_colour_, params);
-	setAttribute(prefix, "axis_tip_title_height", tip_height_, params);
-	setAttribute(prefix, "axis_tip_title_quality", tip_quality_, params);
-}
-
-void AxisAttributes::copy(const AxisAttributes& other)
-{
-	orientation_ = other.orientation_;
-	position_ = other.position_;
-	method_ = auto_ptr<AxisMethod>(other.method_->clone());
-	interval_ = other.interval_;
-	positions_ = other.positions_;
-	line_ = other.line_;
-	line_colour_ = auto_ptr<Colour>(other.line_colour_->clone());
-	line_style_ = other.line_style_;
-	line_thickness_ = other.line_thickness_;
-	grid_ = other.grid_;
-	grid_colour_ = auto_ptr<Colour>(other.grid_colour_->clone());
-	grid_style_ = other.grid_style_;
-	grid_thickness_ = other.grid_thickness_;
-	grid_reference_level_ = other.grid_reference_level_;
-	grid_reference_colour_ = auto_ptr<Colour>(other.grid_reference_colour_->clone());
-	grid_reference_style_ = other.grid_reference_style_;
-	grid_reference_thickness_ = other.grid_reference_thickness_;
-	title_ = other.title_;
-	title_text_ = other.title_text_;
-	title_orientation_ = other.title_orientation_;
-	title_colour_ = auto_ptr<Colour>(other.title_colour_->clone());
-	title_height_ = other.title_height_;
-	title_font_ = other.title_font_;
-	title_font_style_ = other.title_font_style_;
-	tick_ = other.tick_;
-	tick_position_ = other.tick_position_;
-	tick_colour_ = auto_ptr<Colour>(other.tick_colour_->clone());
-	tick_length_ = other.tick_length_;
-	tick_thickness_ = other.tick_thickness_;
-	label_ = other.label_;
-	label_type_ = other.label_type_;
-	label_frequency_ = other.label_frequency_;
-	label_first_ = other.label_first_;
-	label_last_ = other.label_last_;
-	label_position_ = other.label_position_;
-	label_orientation_ = other.label_orientation_;
-	label_font_ = other.label_font_;
-	label_font_style_ = other.label_font_style_;
-	label_colour_ = auto_ptr<Colour>(other.label_colour_->clone());
-	label_height_ = other.label_height_;
-	label_labels_ = other.label_labels_;
-	label_format_ = other.label_format_;
-	minor_tick_ = other.minor_tick_;
-	minor_tick_count_ = other.minor_tick_count_;
-	minor_tick_colour_ = auto_ptr<Colour>(other.minor_tick_colour_->clone());
-	minor_tick_thickness_ = other.minor_tick_thickness_;
-	tip_ = other.tip_;
-	tip_text_ = other.tip_text_;
-	tip_colour_ = auto_ptr<Colour>(other.tip_colour_->clone());
-	tip_height_ = other.tip_height_;
-	tip_quality_ = other.tip_quality_;
-} 
-
-
-bool AxisAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "axis")  )
-		return true;
-
-	if ( acceptNode(node, method_) )
-		return true;
-	return false;
-}
-
-void AxisAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "axis") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), method_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), method_, *(*elt)); 
-	}
-}
-
-void AxisAttributes::print(ostream& out)  const
-{
-	out << "AxisAttributes[";
-	out << "orientation = " << orientation_;
-	out << ", position = " << position_;
-	out << ", method = " << *method_;
-	out << ", interval = " << interval_;
-	out << ", positions = " << positions_;
-	out << ", line = " << line_;
-	out << ", line_colour = " << *line_colour_;
-	out << ", line_style = " << line_style_;
-	out << ", line_thickness = " << line_thickness_;
-	out << ", grid = " << grid_;
-	out << ", grid_colour = " << *grid_colour_;
-	out << ", grid_style = " << grid_style_;
-	out << ", grid_thickness = " << grid_thickness_;
-	out << ", grid_reference_level = " << grid_reference_level_;
-	out << ", grid_reference_colour = " << *grid_reference_colour_;
-	out << ", grid_reference_style = " << grid_reference_style_;
-	out << ", grid_reference_thickness = " << grid_reference_thickness_;
-	out << ", title = " << title_;
-	out << ", title_text = " << title_text_;
-	out << ", title_orientation = " << title_orientation_;
-	out << ", title_colour = " << *title_colour_;
-	out << ", title_height = " << title_height_;
-	out << ", title_font = " << title_font_;
-	out << ", title_font_style = " << title_font_style_;
-	out << ", tick = " << tick_;
-	out << ", tick_position = " << tick_position_;
-	out << ", tick_colour = " << *tick_colour_;
-	out << ", tick_length = " << tick_length_;
-	out << ", tick_thickness = " << tick_thickness_;
-	out << ", label = " << label_;
-	out << ", label_type = " << label_type_;
-	out << ", label_frequency = " << label_frequency_;
-	out << ", label_first = " << label_first_;
-	out << ", label_last = " << label_last_;
-	out << ", label_position = " << label_position_;
-	out << ", label_orientation = " << label_orientation_;
-	out << ", label_font = " << label_font_;
-	out << ", label_font_style = " << label_font_style_;
-	out << ", label_colour = " << *label_colour_;
-	out << ", label_height = " << label_height_;
-	out << ", label_labels = " << label_labels_;
-	out << ", label_format = " << label_format_;
-	out << ", minor_tick = " << minor_tick_;
-	out << ", minor_tick_count = " << minor_tick_count_;
-	out << ", minor_tick_colour = " << *minor_tick_colour_;
-	out << ", minor_tick_thickness = " << minor_tick_thickness_;
-	out << ", tip = " << tip_;
-	out << ", tip_text = " << tip_text_;
-	out << ", tip_colour = " << *tip_colour_;
-	out << ", tip_height = " << tip_height_;
-	out << ", tip_quality = " << tip_quality_;
-	out << "]" << "\n";
-}
-
-
-void AxisAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"axis\"";
-	 out << ", \"axis_orientation\":";
-	 niceprint(out,orientation_);
-	 out << ", \"axis_position\":";
-	 niceprint(out,position_);
-	 out << ", \"axis_type\":";
-	 method_->toxml(out);
-	 out << ", \"axis_tick_interval\":";
-	 niceprint(out,interval_);
-	 out << ", \"axis_tick_position_list\":";
-	 niceprint(out,positions_);
-	 out << ", \"axis_line\":";
-	 niceprint(out,line_);
-	 out << ", \"axis_line_colour\":";
-	 niceprint(out, *line_colour_);
-	 out << ", \"axis_line_style\":";
-	 niceprint(out,line_style_);
-	 out << ", \"axis_line_thickness\":";
-	 niceprint(out,line_thickness_);
-	 out << ", \"axis_grid\":";
-	 niceprint(out,grid_);
-	 out << ", \"axis_grid_colour\":";
-	 niceprint(out, *grid_colour_);
-	 out << ", \"axis_grid_line_style\":";
-	 niceprint(out,grid_style_);
-	 out << ", \"axis_grid_thickness\":";
-	 niceprint(out,grid_thickness_);
-	 out << ", \"axis_grid_reference_level\":";
-	 niceprint(out,grid_reference_level_);
-	 out << ", \"axis_grid_reference_colour\":";
-	 niceprint(out, *grid_reference_colour_);
-	 out << ", \"axis_grid_reference_line_style\":";
-	 niceprint(out,grid_reference_style_);
-	 out << ", \"axis_grid_reference_thickness\":";
-	 niceprint(out,grid_reference_thickness_);
-	 out << ", \"axis_title\":";
-	 niceprint(out,title_);
-	 out << ", \"axis_title_text\":";
-	 niceprint(out,title_text_);
-	 out << ", \"axis_title_orientation\":";
-	 niceprint(out,title_orientation_);
-	 out << ", \"axis_title_colour\":";
-	 niceprint(out, *title_colour_);
-	 out << ", \"axis_title_height\":";
-	 niceprint(out,title_height_);
-	 out << ", \"axis_title_font\":";
-	 niceprint(out,title_font_);
-	 out << ", \"axis_title_font_style\":";
-	 niceprint(out,title_font_style_);
-	 out << ", \"axis_tick\":";
-	 niceprint(out,tick_);
-	 out << ", \"axis_tick_position\":";
-	 niceprint(out,tick_position_);
-	 out << ", \"axis_tick_colour\":";
-	 niceprint(out, *tick_colour_);
-	 out << ", \"axis_tick_size\":";
-	 niceprint(out,tick_length_);
-	 out << ", \"axis_tick_thickness\":";
-	 niceprint(out,tick_thickness_);
-	 out << ", \"axis_tick_label\":";
-	 niceprint(out,label_);
-	 out << ", \"axis_tick_label_type\":";
-	 niceprint(out,label_type_);
-	 out << ", \"axis_tick_label_frequency\":";
-	 niceprint(out,label_frequency_);
-	 out << ", \"axis_tick_label_first\":";
-	 niceprint(out,label_first_);
-	 out << ", \"axis_tick_label_last\":";
-	 niceprint(out,label_last_);
-	 out << ", \"axis_tick_label_position\":";
-	 niceprint(out,label_position_);
-	 out << ", \"axis_tick_label_orientation\":";
-	 niceprint(out,label_orientation_);
-	 out << ", \"axis_tick_label_font\":";
-	 niceprint(out,label_font_);
-	 out << ", \"axis_tick_label_font_style\":";
-	 niceprint(out,label_font_style_);
-	 out << ", \"axis_tick_label_colour\":";
-	 niceprint(out, *label_colour_);
-	 out << ", \"axis_tick_label_height\":";
-	 niceprint(out,label_height_);
-	 out << ", \"axis_tick_label_list\":";
-	 niceprint(out,label_labels_);
-	 out << ", \"axis_tick_label_format\":";
-	 niceprint(out,label_format_);
-	 out << ", \"axis_minor_tick\":";
-	 niceprint(out,minor_tick_);
-	 out << ", \"axis_minor_tick_count\":";
-	 niceprint(out,minor_tick_count_);
-	 out << ", \"axis_minor_tick_colour\":";
-	 niceprint(out, *minor_tick_colour_);
-	 out << ", \"axis_minor_tick_thickness\":";
-	 niceprint(out,minor_tick_thickness_);
-	 out << ", \"axis_tip_title\":";
-	 niceprint(out,tip_);
-	 out << ", \"axis_tip_title_text\":";
-	 niceprint(out,tip_text_);
-	 out << ", \"axis_tip_title_colour\":";
-	 niceprint(out, *tip_colour_);
-	 out << ", \"axis_tip_title_height\":";
-	 niceprint(out,tip_height_);
-	 out << ", \"axis_tip_title_quality\":";
-	 niceprint(out,tip_quality_);
-}
-static MagicsParameter<string> axis_orientation("axis_orientation", "horizontal", "");
-static MagicsParameter<string> axis_position("axis_position", "automatic", "");
-static MagicsParameter<string> axis_type("axis_type", "regular", "");
-static MagicsParameter<double> axis_tick_interval("axis_tick_interval", INT_MAX, "Default changed from '1/7 of axis length' to'INT_MAX' ");
-static MagicsParameter<floatarray> axis_tick_position_list("axis_tick_position_list", floatarray(), "Units have changed from 'cm' to user coordinates");
-static MagicsParameter<string> axis_line("axis_line", "on", "");
-static MagicsParameter<string> axis_line_colour("axis_line_colour", "automatic", "");
-static MagicsParameter<string> axis_line_style("axis_line_style", "solid", "");
-static MagicsParameter<int> axis_line_thickness("axis_line_thickness", 2, "");
-static MagicsParameter<string> axis_grid("axis_grid", "off", "");
-static MagicsParameter<string> axis_grid_colour("axis_grid_colour", "yellow", "2.13.5 - Default changed fronm YELLOW to BLACK");
-static MagicsParameter<string> axis_grid_line_style("axis_grid_line_style", "solid", "");
-static MagicsParameter<int> axis_grid_thickness("axis_grid_thickness", 1, "");
-static MagicsParameter<double> axis_grid_reference_level("axis_grid_reference_level", INT_MAX, "");
-static MagicsParameter<string> axis_grid_reference_colour("axis_grid_reference_colour", "automatic", "");
-static MagicsParameter<string> axis_grid_reference_line_style("axis_grid_reference_line_style", "solid", "");
-static MagicsParameter<int> axis_grid_reference_thickness("axis_grid_reference_thickness", 2, "");
-static MagicsParameter<string> axis_title("axis_title", "on", "");
-static MagicsParameter<string> axis_title_text("axis_title_text", "", "");
-static MagicsParameter<string> axis_title_orientation("axis_title_orientation", "parallel", "");
-static MagicsParameter<string> axis_title_colour("axis_title_colour", "automatic", "");
-static MagicsParameter<double> axis_title_height("axis_title_height", 0.4, "");
-static MagicsParameter<string> axis_title_font("axis_title_font", "sansserif", "");
-static MagicsParameter<string> axis_title_font_style("axis_title_font_style", "normal", "");
-static MagicsParameter<string> axis_tick("axis_tick", "on", "");
-static MagicsParameter<string> axis_tick_position("axis_tick_position", "out", "");
-static MagicsParameter<string> axis_tick_colour("axis_tick_colour", "automatic", "");
-static MagicsParameter<double> axis_tick_size("axis_tick_size", 0.175, "");
-static MagicsParameter<int> axis_tick_thickness("axis_tick_thickness", 2, "");
-static MagicsParameter<string> axis_tick_label("axis_tick_label", "on", "");
-static MagicsParameter<string> axis_tick_label_type("axis_tick_label_type", "number", "");
-static MagicsParameter<int> axis_tick_label_frequency("axis_tick_label_frequency", 1, "");
-static MagicsParameter<string> axis_tick_label_first("axis_tick_label_first", "on", "");
-static MagicsParameter<string> axis_tick_label_last("axis_tick_label_last", "on", "");
-static MagicsParameter<string> axis_tick_label_position("axis_tick_label_position", "on_tick", "");
-static MagicsParameter<string> axis_tick_label_orientation("axis_tick_label_orientation", "horizontal", "");
-static MagicsParameter<string> axis_tick_label_font("axis_tick_label_font", "sansserif", "");
-static MagicsParameter<string> axis_tick_label_font_style("axis_tick_label_font_style", "", "");
-static MagicsParameter<string> axis_tick_label_colour("axis_tick_label_colour", "automatic", "");
-static MagicsParameter<double> axis_tick_label_height("axis_tick_label_height", 0.3, "");
-static MagicsParameter<stringarray> axis_tick_label_list("axis_tick_label_list", stringarray(), "");
-static MagicsParameter<string> axis_tick_label_format("axis_tick_label_format", "(automatic)", "");
-static MagicsParameter<string> axis_minor_tick("axis_minor_tick", "off", "");
-static MagicsParameter<int> axis_minor_tick_count("axis_minor_tick_count", 2, "");
-static MagicsParameter<string> axis_minor_tick_colour("axis_minor_tick_colour", "automatic", "");
-static MagicsParameter<int> axis_minor_tick_thickness("axis_minor_tick_thickness", 1, "");
-static MagicsParameter<string> axis_tip_title("axis_tip_title", "off", "");
-static MagicsParameter<string> axis_tip_title_text("axis_tip_title_text", " ", "");
-static MagicsParameter<string> axis_tip_title_colour("axis_tip_title_colour", "automatic", "");
-static MagicsParameter<double> axis_tip_title_height("axis_tip_title_height", 0.4, "");
-static MagicsParameter<string> axis_tip_title_quality("axis_tip_title_quality", "medium", "");
-#include "AxisMethod.h"
-#include "DateAxis.h"
-static SimpleObjectMaker<AxisMethod, AxisMethod> regular_AxisMethod("regular");
-static SimpleObjectMaker<PositionListAxisMethod, AxisMethod> position_list_PositionListAxisMethod("position_list");
-static SimpleObjectMaker<LogarithmicAxisMethod, AxisMethod> logarithmic_LogarithmicAxisMethod("logarithmic");
-static SimpleObjectMaker<DateAxisMethod, AxisMethod> date_DateAxisMethod("date");
-static SimpleObjectMaker<HyperAxisMethod, AxisMethod> geoline_HyperAxisMethod("geoline");
diff --git a/src/visualisers/AxisAttributes.h b/src/visualisers/AxisAttributes.h
deleted file mode 100644
index 781aacd..0000000
--- a/src/visualisers/AxisAttributes.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file AxisAttributes.h
-    \brief Definition of Axis Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:26 2013
-*/
-   
-
-#ifndef AxisAttributes_H
-#define AxisAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "AxisMethod.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class AxisAttributes 
-{
-public:
-//  --  constructor
-    AxisAttributes();
-    
-//  --  destructor
-    virtual ~AxisAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const AxisAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string orientation_;
-	string position_;
-	auto_ptr<AxisMethod> method_;
-	double interval_;
-	floatarray positions_;
-	bool line_;
-	auto_ptr<Colour> line_colour_;
-	LineStyle line_style_;
-	int line_thickness_;
-	bool grid_;
-	auto_ptr<Colour> grid_colour_;
-	LineStyle grid_style_;
-	int grid_thickness_;
-	double grid_reference_level_;
-	auto_ptr<Colour> grid_reference_colour_;
-	LineStyle grid_reference_style_;
-	int grid_reference_thickness_;
-	bool title_;
-	string title_text_;
-	string title_orientation_;
-	auto_ptr<Colour> title_colour_;
-	double title_height_;
-	string title_font_;
-	string title_font_style_;
-	bool tick_;
-	string tick_position_;
-	auto_ptr<Colour> tick_colour_;
-	double tick_length_;
-	int tick_thickness_;
-	bool label_;
-	string label_type_;
-	int label_frequency_;
-	bool label_first_;
-	bool label_last_;
-	string label_position_;
-	string label_orientation_;
-	string label_font_;
-	string label_font_style_;
-	auto_ptr<Colour> label_colour_;
-	double label_height_;
-	stringarray label_labels_;
-	string label_format_;
-	bool minor_tick_;
-	int minor_tick_count_;
-	auto_ptr<Colour> minor_tick_colour_;
-	int minor_tick_thickness_;
-	bool tip_;
-	string tip_text_;
-	auto_ptr<Colour> tip_colour_;
-	double tip_height_;
-	string tip_quality_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const AxisAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/AxisControl.cc b/src/visualisers/AxisControl.cc
new file mode 100644
index 0000000..cd9fd1a
--- /dev/null
+++ b/src/visualisers/AxisControl.cc
@@ -0,0 +1,77 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisControl.cc
+    \brief Implementation of the Template class AxisControl.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Thu 13-Oct-2005
+    
+    Changes:
+    
+*/
+
+
+#include "AxisControl.h"
+#include "Transformation.h"
+#include "AxisMethod.h"
+
+using namespace magics;
+
+AxisControl::AxisControl() 
+{
+}
+
+
+AxisControl::~AxisControl() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisControl::print(ostream& out)  const
+{
+	out << "AxisControl[";
+	out << "]";
+}
+
+void AutomaticAxisControl::horizontal(Layout& layout, Transformation& transformation, AxisMethod& method)
+{
+    transformation.adjustXAxis(layout);
+    method.updateX(transformation);
+}
+
+
+void AutomaticAxisControl::vertical(Layout& layout, Transformation& transformation, AxisMethod& method)
+{
+    transformation.adjustYAxis(layout);
+    method.updateY(transformation);  
+}
+
+void AxisControl::vertical(Layout& , Transformation& transformation, AxisMethod& method)
+{
+    method.updateY(transformation);  
+}
+
+void AxisControl::horizontal(Layout& , Transformation& transformation, AxisMethod& method)
+{
+    method.updateX(transformation);
+}
+
diff --git a/src/visualisers/AxisControl.h b/src/visualisers/AxisControl.h
new file mode 100644
index 0000000..bcb16e7
--- /dev/null
+++ b/src/visualisers/AxisControl.h
@@ -0,0 +1,115 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisControl.h
+    \brief Definition of the Template class AxisControl.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Thu 13-Oct-2005
+    
+    Changes:
+    
+*/
+
+#ifndef AxisControl_H
+#define AxisControl_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+
+
+namespace magics {
+
+
+class Layout;
+class Transformation;
+class AxisMethod;
+
+class AxisControl {
+
+
+
+public:
+	AxisControl();
+	virtual ~AxisControl();
+    
+    virtual void set(const XmlNode&) { }
+    virtual void set(const map<string, string>&) {}
+    virtual bool accept(const string&) { return false; }
+    virtual AxisControl* clone() const {
+        MagLog::dev() << "(const map<string, string&)---> to be checked!...\n";
+        return new AxisControl();
+    }
+     virtual void toxml(ostream&)  const {}
+    
+    virtual void vertical(Layout&, Transformation&, AxisMethod&);
+    virtual void horizontal(Layout&, Transformation&, AxisMethod&);
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	AxisControl(const AxisControl&);
+    //! Overloaded << operator to copy - No copy allowed
+	AxisControl& operator=(const AxisControl&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisControl& p)
+		{ p.print(s); return s; }
+
+};
+
+class AutomaticAxisControl : public AxisControl
+{
+public:
+	AutomaticAxisControl() {}
+	~AutomaticAxisControl() {}
+	
+protected:
+	virtual AxisControl* clone() const {
+        return new AutomaticAxisControl();
+    }
+    virtual void vertical(Layout&, Transformation&, AxisMethod&);
+    virtual void horizontal(Layout&, Transformation&, AxisMethod&);
+};
+
+template <>
+class MagTranslator<string, AxisControl> { 
+public:
+	AxisControl* operator()(const string& val)
+	{
+		return SimpleObjectMaker<AxisControl>::create(val);
+	}     
+
+	AxisControl* magics(const string& param)
+	{
+		AxisControl* object;
+		ParameterManager::update(param, object);
+		return object;
+		
+	}
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisGrid.cc b/src/visualisers/AxisGrid.cc
new file mode 100644
index 0000000..82b7e8a
--- /dev/null
+++ b/src/visualisers/AxisGrid.cc
@@ -0,0 +1,125 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisGrid.cc
+    \brief Implementation of the Template class AxisGrid.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Fri 7-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "AxisGrid.h"
+#include "MagLog.h"
+#include "PaperPoint.h"
+#include "Polyline.h"
+#include "Transformation.h"
+
+using namespace magics;
+
+AxisGrid::AxisGrid() 
+{
+}
+
+
+AxisGrid::~AxisGrid() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisGrid::print(ostream& out)  const
+{
+	out << "AxisGrid[";
+	AxisGridAttributes::print(out);
+	out << "]";
+}
+
+
+
+void AxisGrid::vertical(const AxisItems& ticks, DrawingVisitor& out) const
+{
+	
+	
+	double bottom =out.minY();
+	double top = out.maxY();
+	double pos;
+	
+	const Transformation& transformation = out.transformation();
+	for (AxisItems::const_iterator x = ticks.begin(); x != ticks.end(); ++x)
+    {
+    	if (!(*x)->filter(*this) ) continue;
+    	pos = (*x)->position();
+    	if ( !transformation.inX(pos) ) continue;
+		Polyline* grid = new Polyline();
+		grid->push_back(PaperPoint(transformation.x(pos), bottom));
+		grid->push_back(PaperPoint(transformation.x(pos), top));
+		if ( pos == reference_level_  ) {
+			Colour colour = !reference_colour_->automatic() ? *reference_colour_ : *colour_;
+			grid->setColour(colour);
+			grid->setLineStyle(M_SOLID);
+			grid->setThickness(reference_thickness_);
+		}
+		else {
+			grid->setColour(*colour_);
+			grid->setLineStyle(style_);
+			grid->setThickness(thickness_);
+		}
+		
+		out.push_back(grid);
+    }
+}
+
+void AxisGrid::horizontal(const AxisItems& ticks, DrawingVisitor& out) const
+{
+	
+	double left = out.minX();
+	double right =  out.maxX();
+	double pos;
+	const Transformation& transformation = out.transformation();
+	for (AxisItems::const_iterator y = ticks.begin(); y != ticks.end(); ++y)
+    {
+    	if (!(*y)->filter(*this) ) continue;
+    	pos = (*y)->position();
+    	if ( !transformation.inY(pos) ) continue;
+    	Polyline* grid = new Polyline();
+		grid->push_back(PaperPoint(left, transformation.y(pos)));
+		grid->push_back(PaperPoint(right, transformation.y(pos)));
+		if ( pos == reference_level_  ) {
+				Colour colour = !reference_colour_->automatic() ? *reference_colour_ : *colour_;
+				grid->setColour(colour);
+				grid->setLineStyle(reference_style_);
+				grid->setThickness(reference_thickness_);
+		}
+		else {
+				grid->setColour(*colour_);
+				grid->setLineStyle(style_);
+				grid->setThickness(thickness_);
+		}
+		out.push_back(grid);
+		 }
+}
+
+    
+
diff --git a/src/visualisers/AxisGrid.h b/src/visualisers/AxisGrid.h
new file mode 100644
index 0000000..375df68
--- /dev/null
+++ b/src/visualisers/AxisGrid.h
@@ -0,0 +1,125 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisGrid.h
+    \brief Definition of the Template class AxisGrid.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Fri 7-May-2004
+    
+    Changes:
+    
+*/
+
+#ifndef AxisGrid_H
+#define AxisGrid_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+#include "AxisGridAttributes.h"
+#include "AxisItem.h"
+
+
+namespace magics {
+
+
+class XmlNode;
+class Transformation; 
+class DrawingVisitor;
+class HorizontalAxisVisitor;
+class VerticalAxisVisitor;
+
+class AxisGrid: public AxisGridAttributes {
+
+public:
+	AxisGrid();
+	virtual ~AxisGrid();
+	
+	void set(const map<string, string>& map) { AxisGridAttributes::set(map); }
+	void set(const XmlNode& node) { AxisGridAttributes::set(node); }
+
+	AxisGrid* clone()
+	{
+		AxisGrid* grid = new AxisGrid();
+		grid->copy(*this);
+		return grid;
+	}
+
+    virtual void vertical(const AxisItems&, DrawingVisitor& out) const;
+	virtual void horizontal(const AxisItems&,  DrawingVisitor& out) const;
+	virtual void  vertical(const AxisItems&, HorizontalAxisVisitor&) const {}
+	virtual void  vertical(const AxisItems&, VerticalAxisVisitor&) const {}	
+	virtual void  horizontal(const AxisItems&, HorizontalAxisVisitor&) const {}
+	virtual void  horizontal(const AxisItems&, VerticalAxisVisitor&) const {}
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	AxisGrid(const AxisGrid&);
+    //! Overloaded << operator to copy - No copy allowed
+	AxisGrid& operator=(const AxisGrid&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisGrid& p)
+		{ p.print(s); return s; }
+
+};
+
+class NoAxisGrid : public AxisGrid
+{
+public :
+	NoAxisGrid() {}
+	~NoAxisGrid() {}
+
+	virtual void vertical(const AxisItems&, DrawingVisitor& ) const {}
+	virtual void horizontal(const AxisItems&,  DrawingVisitor& ) const {}
+
+	AxisGrid* clone()
+	{
+		AxisGrid* grid = new NoAxisGrid();
+		return grid;
+	}
+};
+
+
+template<>
+class MagTranslator<string, AxisGrid> { 
+public:
+	AxisGrid* operator()(const string& val )
+	{
+		return SimpleObjectMaker<AxisGrid>::create(val);
+	}
+
+	AxisGrid* magics(const string& param)
+	{
+		AxisGrid* object;
+		ParameterManager::update(param, object);
+		return object;
+	}
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisItem.cc b/src/visualisers/AxisItem.cc
index b25a471..9014ec1 100644
--- a/src/visualisers/AxisItem.cc
+++ b/src/visualisers/AxisItem.cc
@@ -33,35 +33,43 @@
 #include <DateTime.h>
 #include "MagLog.h"
 #include <cfloat>
-#include <Axis.h>
+#include "Axis.h"
+#include "MagFont.h"
+#include "MagicsFormat.h"
+
 using namespace magics;
 
-AxisItem::AxisItem(double position, const string label, int level) :
-	position_(position), label_(label), level_(level), colour_("undef"), height_(DBL_MIN) 
+AxisItem::AxisItem(double position, const string& label, int level) :
+	position_(position), label_(label), level_(level), colour_("undef"), height_(DBL_MIN), font_("undef"), style_("undef")
 {
 	
 }
 
-AxisItem::AxisItem(double position, const string label, int level, const string& colour, double height) :
-	position_(position), label_(label), level_(level), colour_(colour), height_(height)
+AxisItem::AxisItem(double position, const string& label, int level, const string& colour, double height) :
+	position_(position), label_(label), level_(level), colour_(colour), height_(height), font_("undef"), style_("undef")
 {
 	
 }
-AxisItem::AxisItem(double position) :
-	position_(position), label_(tostring(position)), level_(0),  colour_("undef"), height_(DBL_MIN)
+AxisItem::AxisItem(double position, const string& format) :
+	position_(position), label_(tostring(position)), level_(0),
+	colour_("undef"), height_(DBL_MIN), font_("undef"), style_("undef")
 {
 	if ( same(position_, 0) ) position_ = 0;
-	char tmp[1024];
 
-	sprintf(tmp, "%g", position_);
 
-	label_ = string(tmp);
+
+	ostringstream nice;
+
+	nice << MagicsFormat(format.empty() ? "(automatic)" : format, position);
+
+
+	label_ = nice.str();
 
 }
 
 
 
-AxisHyperItem::AxisHyperItem(double position, vector<double>& values) : AxisItem(position)	
+AxisHyperItem::AxisHyperItem(double position, vector<double>& values) : AxisItem(position, "")
 {
 	// Specialised in lat/lon axis!!!
 	double lat = values[1];
@@ -136,4 +144,15 @@ bool AxisDateItem::sunday() const
 	return  (label_ == "0" );
 }
 
+void AxisItem::setFont(MagFont& font)
+{
+	if ( font_ != "undef" )
+		font.name(font_);
+	if ( colour_ != "undef" )
+			font.colour(colour_);
+	if ( style_ != "undef" )
+				font.style(style_);
+	if ( height_ != DBL_MIN)
+		font.size(height_);
 
+}
diff --git a/src/visualisers/AxisItem.h b/src/visualisers/AxisItem.h
index f412d35..c7f8626 100644
--- a/src/visualisers/AxisItem.h
+++ b/src/visualisers/AxisItem.h
@@ -39,14 +39,15 @@
 namespace magics {
 
 class Axis;
+class MagFont;
 
 class AxisItem 
 {
 
 public:
-	AxisItem(double position, const string label, int level = 0);
-	AxisItem(double position, const string label, int level, const string& colour, double height);
-	AxisItem(double x);
+	AxisItem(double position, const string& label, int level);
+	AxisItem(double position, const string& label, int level, const string& colour, double height);
+	AxisItem(double x, const string& fmt);
 	virtual ~AxisItem();
 	virtual AxisItem* clone() const { 
 		AxisItem* item = new AxisItem(position_, label_, level_, colour_, height_); 
@@ -71,9 +72,11 @@ public:
 	void  colour(const string& colour)   { colour_ = colour; } 
 	void  resetColour() const { colour_ = "undef"; }
 	double height() const                { return height_; }
-	void   height(double height) const   { height_ = height; }
+	void   height(double height, const string& font, const string& style) const
+		{ height_ = height; font_ = font; style_ = style; }
 	void   label(const string& label) { label_ = label; }
 
+	void setFont(MagFont& font);
 	
 	int         level()  { return level_; }
 	void           level(int level)  { level_ = level;  }
@@ -91,7 +94,8 @@ protected:
      int  level_;
      mutable string  colour_;
      mutable double  height_;
-    
+     mutable string font_;
+     mutable string style_;
 private:
     //! Copy constructor - No copy allowed
 	AxisItem(const AxisItem&);
@@ -116,7 +120,7 @@ public:
 class AxisTickItem : public AxisItem
 {
 public:
-	AxisTickItem(double pos) : AxisItem(pos) { label_ = ""; }
+	AxisTickItem(double pos, const string& format) : AxisItem(pos, format) { label_ = ""; }
 	~AxisTickItem() {}
 	bool isLabel() const { return false; }
 
@@ -154,7 +158,7 @@ protected:
 class AxisMinorTickItem : public AxisItem
 {
 public:
-	AxisMinorTickItem(double pos) : AxisItem(pos) { label_ = ""; }
+	AxisMinorTickItem(double pos) : AxisItem(pos, "") { label_ = ""; }
 	~AxisMinorTickItem() {}
 	bool isTick() const   { return false; }
 	bool isLabel() const { return false; }
diff --git a/src/visualisers/AxisLine.cc b/src/visualisers/AxisLine.cc
new file mode 100644
index 0000000..e93ff43
--- /dev/null
+++ b/src/visualisers/AxisLine.cc
@@ -0,0 +1,119 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisLine.cc
+    \brief Implementation of the Template class AxisLine.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Fri 7-Oct-2005
+    
+    Changes:
+    
+*/
+
+
+#include "AxisLine.h"
+#include "PaperPoint.h"
+#include "Polyline.h"
+#include "Polyline.h"
+#include "Transformation.h"
+using namespace magics;
+
+AxisLine::AxisLine() 
+{
+}
+
+
+AxisLine::~AxisLine() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisLine::print(ostream& out)  const
+{
+	out << "AxisLine[";
+	out << "]";
+}
+
+Colour AxisLine::colour()
+{
+	return colour_->automatic() ? *default_colour_ : *colour_; 
+}
+
+Polyline* AxisLine::line() const 
+{
+	Polyline* axis = new Polyline();
+		  
+		    	axis->setColour(colour_->automatic() ? *default_colour_ : *colour_);
+		    	axis->setThickness(thickness_);
+		    	axis->setLineStyle(style_);
+     return axis;
+}
+
+void AxisLine::horizontal(TopAxisVisitor& out) const
+{	
+	    PaperPoint from(out.minX(), out.minY());
+	    PaperPoint to(out.maxX(), out.minY());
+	    	
+	    Polyline* axis = line();
+	    axis->push_back(from);
+	    axis->push_back(to);
+	    out.push_back(axis);
+}
+
+void AxisLine::horizontal(BottomAxisVisitor& out) const
+{
+	PaperPoint from(out.minX(), out.maxY());
+		    PaperPoint to(out.maxX(), out.maxY());
+		    	
+		    Polyline* axis = line();
+		    axis->push_back(from);
+		    axis->push_back(to);
+		    out.push_back(axis);
+}
+
+
+
+
+
+void AxisLine::vertical(LeftAxisVisitor& out) const
+{
+	PaperPoint from(out.maxX(), out.minY());
+			    PaperPoint to(out.maxX(), out.maxY());
+			    	
+			    Polyline* axis = line();
+			    axis->push_back(from);
+			    axis->push_back(to);
+			    out.push_back(axis);
+}
+
+void AxisLine::vertical(RightAxisVisitor& out) const
+{
+	PaperPoint from(out.minX(), out.minY());
+			    PaperPoint to(out.minX(), out.maxY());
+			    	
+			    Polyline* axis = line();
+			    axis->push_back(from);
+			    axis->push_back(to);
+			    out.push_back(axis);
+}
+
+
diff --git a/src/visualisers/AxisLine.h b/src/visualisers/AxisLine.h
new file mode 100644
index 0000000..578c078
--- /dev/null
+++ b/src/visualisers/AxisLine.h
@@ -0,0 +1,129 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisLine.h
+    \brief Definition of the Template class AxisLine.
+    \author Meteorological Visualisation Section, ECMWF
+
+    Started: Fri 7-Oct-2005
+
+    Changes:
+
+*/
+
+#ifndef AxisLine_H
+#define AxisLine_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+
+#include "AxisLineAttributes.h"
+
+namespace magics {
+
+class Transformation;
+class RightAxisVisitor;
+class LeftAxisVisitor;
+class TopAxisVisitor;
+class BottomAxisVisitor;
+class PaperPoint;
+class Polyline;
+
+class AxisLine: public AxisLineAttributes {
+
+public:
+	AxisLine();
+	virtual ~AxisLine();
+
+    virtual void set(const XmlNode& node) {
+        AxisLineAttributes::set(node);
+    }
+    virtual void set(const map<string, string>& map) {
+        AxisLineAttributes::set(map);
+    }
+    virtual AxisLine* clone() const {
+    	AxisLine* line = new AxisLine();
+    	line->copy(*this); 
+        return line;
+    }
+
+    Colour colour();
+    
+    Polyline* line() const; 
+
+    virtual void horizontal(TopAxisVisitor& out) const;
+    virtual void horizontal(BottomAxisVisitor& out) const;
+   
+   
+    virtual void vertical(LeftAxisVisitor& out) const; 
+    virtual void vertical(RightAxisVisitor& out) const;
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	AxisLine(const AxisLine&);
+    //! Overloaded << operator to copy - No copy allowed
+	AxisLine& operator=(const AxisLine&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisLine& p)
+		{ p.print(s); return s; }
+};
+
+class NoAxisLine : public AxisLine
+{
+public:
+	NoAxisLine() {}
+	~NoAxisLine() {}
+	AxisLine* clone() const { return new NoAxisLine(); }
+	virtual void horizontal(TopAxisVisitor&) const {}
+	virtual void horizontal(BottomAxisVisitor&) const {}
+	virtual void horizontal(LeftAxisVisitor&) const {}
+	virtual void horizontal(RightAxisVisitor&) const {}
+	virtual void vertical(TopAxisVisitor&) const {}
+	 virtual void vertical(BottomAxisVisitor&) const {}
+	    virtual void vertical(LeftAxisVisitor&) const {}
+	    virtual void vertical(RightAxisVisitor&) const {}
+};
+
+
+template <>
+class MagTranslator<string, AxisLine> { 
+public:
+	AxisLine* operator()(const string& val )
+	{
+		return SimpleObjectMaker<AxisLine>::create(val);
+	}
+
+	AxisLine* magics(const string& param)
+	{
+		AxisLine* object;
+		ParameterManager::update(param, object);
+		return object;
+	}
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisMethod.cc b/src/visualisers/AxisMethod.cc
index 0b46f28..4943033 100644
--- a/src/visualisers/AxisMethod.cc
+++ b/src/visualisers/AxisMethod.cc
@@ -82,7 +82,7 @@ void LogarithmicAxisMethod::prepare(const Axis& axis,  AxisItems& items)
 
 	        	double x;
 	        	if ( !reduce || ( reduce && i > -4)  ) {
-	        		x = (*f) * exp10(i);
+	        		x = (*f) * pow(10.,i);
 	        		if ( from <= x  && x <= to && x != 0 )
 	        			ticks.insert(x);
 	        		x = -x;
@@ -90,7 +90,7 @@ void LogarithmicAxisMethod::prepare(const Axis& axis,  AxisItems& items)
 	        			ticks.insert(x);
 	        	}
 	        	if ( !reduce || ( reduce && -i > -4   )) {
-	        		x = (*f) * exp10(-i);
+	        		x = (*f) * pow(10.,-i);
 	        		if ( from <= x  && x <= to && x != 0 )
 	        			ticks.insert(x);
 	        		x = -x;
@@ -103,7 +103,7 @@ void LogarithmicAxisMethod::prepare(const Axis& axis,  AxisItems& items)
 
 
 	for ( std::set<double>::const_iterator step = ticks.begin(); step != ticks.end(); ++step) {
-		items.push_back(new AxisItem(*step));
+		items.push_back(new AxisItem(*step, axis.label_format_));
 	}
 }
 
@@ -324,7 +324,7 @@ void AxisMethod::prepare(const Axis& axis, AxisItems& items)
 			}
 		}
 		last = *i;
-		addItem(items,*i);
+		addItem(items,*i, axis.label_format_);
 	}
 }
 
@@ -348,7 +348,7 @@ void     PositionListAxisMethod::prepare(const Axis& axis, AxisItems& items)
 {
 	for ( vector<double>::const_iterator tick = axis.positions_.begin(); tick != axis.positions_.end(); ++tick)
 	{
-		items.push_back(new AxisItem(*tick));
+		items.push_back(new AxisItem(*tick, axis.label_format_));
 	}
 }
 
diff --git a/src/visualisers/AxisMethod.h b/src/visualisers/AxisMethod.h
index d1e26cb..a3d8dd0 100644
--- a/src/visualisers/AxisMethod.h
+++ b/src/visualisers/AxisMethod.h
@@ -30,6 +30,8 @@
 #ifndef AxisMethod_H
 #define AxisMethod_H
 
+#include <cmath>
+
 #include "magics.h"
 #include "MagTranslator.h"
 #include "Factory.h"
@@ -64,8 +66,8 @@ public:
     double min() const { return min_; }
     double max() const { return max_; }
 
-    virtual void addItem(AxisItems& items, double val) const 
-    	{ items.push_back(new AxisItem(val));  }
+    virtual void addItem(AxisItems& items, double val, const string& format) const
+    	{ items.push_back(new AxisItem(val, format));  }
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
@@ -93,7 +95,7 @@ public:
 	virtual ~LogarithmicAxisMethod() {}
 	void     prepare(const Axis&, AxisItems&);
 	
-	double value(double val) const { return exp10(val); }
+    double value(double val) const { return ::pow(10.,val); }
 	
 
   
diff --git a/src/visualisers/AxisMethodAttributes.cc b/src/visualisers/AxisMethodAttributes.cc
deleted file mode 100644
index f6dab02..0000000
--- a/src/visualisers/AxisMethodAttributes.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file AxisMethodAttributes.cc
-    \brief Implementation of AxisMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "AxisMethodAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-AxisMethodAttributes::AxisMethodAttributes()
-{
-} 
-
-
-
-AxisMethodAttributes::~AxisMethodAttributes()
-{
-}
-
-    
-void AxisMethodAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(0);
-
-}
-
-void AxisMethodAttributes::copy(const AxisMethodAttributes& other)
-{
-} 
-
-
-bool AxisMethodAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "")  )
-		return true;
-	return false;
-}
-
-void AxisMethodAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	set(node.attributes());
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void AxisMethodAttributes::print(ostream& out)  const
-{
-	out << "AxisMethodAttributes[";
-	out << "]" << "\n";
-}
-
-
-void AxisMethodAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"\"";
-}
diff --git a/src/visualisers/AxisMinorTick.cc b/src/visualisers/AxisMinorTick.cc
new file mode 100644
index 0000000..7618f2f
--- /dev/null
+++ b/src/visualisers/AxisMinorTick.cc
@@ -0,0 +1,101 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisMinorTick.cc
+    \brief Implementation of the Template class AxisMinorTick.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Thu 15-Dec-2005
+    
+    Changes:
+    
+*/
+
+
+
+#include "AxisMinorTick.h"
+#include "PaperPoint.h"
+#include "Polyline.h"
+#include "Transformation.h"
+
+using namespace magics;
+
+AxisMinorTick::AxisMinorTick() 
+{
+}
+
+
+AxisMinorTick::~AxisMinorTick() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisMinorTick::print(ostream& out)  const
+{
+	out << "AxisMinorTick[";
+	out << "]";
+}
+
+void AxisMinorTick::vertical(const AxisItems& ticks, const Colour& colour, VerticalAxisVisitor& axis) 
+{
+	double x1, x2;	
+	axis.minortick(x1, x2);
+	
+	const Transformation& projection = axis.transformation();
+	
+	for (AxisItems::const_iterator y = ticks.begin(); y != ticks.end(); ++y)
+    {    	    
+	      
+	        if ( !(*y)->filter(*this) ) continue;
+	        if ( !projection.inY((*y)->position()) ) continue;
+	        Polyline* tick = new Polyline();
+	        tick->push_back(PaperPoint(x1, (*y)->position()));
+	        tick->push_back(PaperPoint(x2, (*y)->position()));
+	        Colour calcol =  (colour_->automatic()) ? colour : *colour_;
+	        tick->setColour(calcol);
+	        tick->setThickness(thickness_);
+	        axis.push_back(tick);
+    }
+      
+}
+
+void AxisMinorTick::horizontal(const AxisItems& ticks, const Colour& colour, HorizontalAxisVisitor& axis) 
+{
+	double y1, y2;
+	axis.minortick(y1, y2);
+	const Transformation& projection = axis.transformation();
+	for (AxisItems::const_iterator x = ticks.begin(); x != ticks.end(); ++x)
+    {    	    
+	      
+	        if ( !(*x)->filter(*this) ) continue;
+	        if ( !projection.inX((*x)->position()) ) continue;
+	        
+	        Polyline* tick = new Polyline();
+
+	        tick->push_back(PaperPoint((*x)->position(), y1));
+	        tick->push_back(PaperPoint((*x)->position(), y2));
+	        Colour calcol =  (colour_->automatic()) ? colour : *colour_;
+	        tick->setColour(calcol);
+	        tick->setThickness(thickness_);
+	        axis.push_back(tick);
+    }
+}	
+
diff --git a/src/visualisers/AxisMinorTick.h b/src/visualisers/AxisMinorTick.h
new file mode 100644
index 0000000..ea5825f
--- /dev/null
+++ b/src/visualisers/AxisMinorTick.h
@@ -0,0 +1,117 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisMinorTick.h
+    \brief Definition of the Template class AxisMinorTick.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Thu 15-Dec-2005
+    
+    Changes:
+    
+*/
+
+#ifndef AxisMinorTick_H
+#define AxisMinorTick_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+#include "AxisItem.h"
+
+#include "AxisMinorTickAttributes.h"
+
+
+
+namespace magics {
+
+class HorizontalAxisVisitor;
+class VerticalAxisVisitor;
+class Transformation;
+
+class AxisMinorTick: public AxisMinorTickAttributes {
+
+public:
+	AxisMinorTick();
+	virtual ~AxisMinorTick();
+    
+    virtual void set(const XmlNode& node) {
+        AxisMinorTickAttributes::set(node);
+    }
+    virtual void set(const map<string, string>& map) {
+        AxisMinorTickAttributes::set(map);
+    }
+    virtual AxisMinorTick* clone() const {
+        MagLog::dev() << "(const map<string, string&)---> to be checked!...\n";
+        return new AxisMinorTick();
+    }
+    
+    virtual void vertical(const AxisItems&, const Colour&, VerticalAxisVisitor&);
+    virtual void horizontal(const AxisItems&, const Colour&, HorizontalAxisVisitor&);
+    
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	AxisMinorTick(const AxisMinorTick&);
+    //! Overloaded << operator to copy - No copy allowed
+	AxisMinorTick& operator=(const AxisMinorTick&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisMinorTick& p)
+		{ p.print(s); return s; }
+
+};
+
+class NoMinorAxisTick: public AxisMinorTick
+{
+public:
+	NoMinorAxisTick() {}
+	~NoMinorAxisTick() {};
+protected:
+	virtual void vertical(const AxisItems&, const Colour&, VerticalAxisVisitor&) {}
+	virtual void horizontal(const AxisItems&, const Colour&, HorizontalAxisVisitor&) {} 
+    
+	AxisMinorTick* clone() const { return new NoMinorAxisTick(); }
+    	
+	
+};
+ 
+
+template <>
+class MagTranslator<string, AxisMinorTick> { 
+public:
+	AxisMinorTick* operator()(const string& val )
+	{
+		return SimpleObjectMaker<AxisMinorTick>::create(val);
+	}     
+
+	AxisMinorTick* magics(const string& param)
+	{
+		string val;
+		ParameterManager::get(param, val);
+		return (*this)(val);
+	}
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisTick.cc b/src/visualisers/AxisTick.cc
new file mode 100644
index 0000000..9edba03
--- /dev/null
+++ b/src/visualisers/AxisTick.cc
@@ -0,0 +1,116 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisTick.cc
+    \brief Implementation of the Template class AxisTick.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Fri 7-Oct-2005
+    
+    Changes:
+    
+*/
+
+
+#include "AxisTick.h"
+#include "PaperPoint.h"
+#include "Polyline.h"
+#include "SceneVisitor.h"
+#include "Transformation.h"
+
+using namespace magics;
+
+AxisTick::AxisTick() 
+{
+}
+
+
+AxisTick::~AxisTick() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisTick::print(ostream& out)  const
+{
+	out << "AxisTick[";
+	out << "]";
+}
+
+void AxisTick::vertical(const AxisItems& ticks, const Colour& colour, VerticalAxisVisitor& axis) 
+{
+	double x1, x2;
+	axis.tick(x1, x2);
+	
+	const Transformation& transformation = axis.transformation();
+	
+
+	
+	
+	for (AxisItems::const_iterator y = ticks.begin(); y != ticks.end(); ++y)
+    {    	    
+	      
+	        if ( !(*y)->filter(*this) ) continue;	        
+	        if ( !transformation.inY((*y)->position()) ) continue;
+	        
+	        Polyline* tick = new Polyline();
+	        PaperPoint p1 = PaperPoint(x1,  transformation.y((*y)->position()));
+	        PaperPoint p2 = PaperPoint(x2, transformation.y((*y)->position()));
+	        tick->push_back(p1);
+	        tick->push_back(p2);
+	        Colour calcol =  (colour_->automatic()) ? colour : *colour_;
+	        tick->setColour(calcol);
+	        tick->setThickness(thickness_);
+	        axis.push_back(tick);
+    }
+    
+	
+	
+	
+}
+
+void AxisTick::horizontal(const AxisItems& ticks, const Colour& colour, HorizontalAxisVisitor& axis) 
+{
+	
+	double y1, y2;
+	axis.tick(y1, y2);
+		
+		const Transformation& transformation = axis.transformation();
+		
+	for (AxisItems::const_iterator x = ticks.begin(); x != ticks.end(); ++x)
+    {    	    
+	      
+	        if ( !(*x)->filter(*this) ) continue;
+	      
+	        if ( !transformation.inX((*x)->position()) ) continue;
+	        Polyline* tick = new Polyline();
+			double px = transformation.x((*x)->position());
+	        tick->push_back(PaperPoint(px, y1));
+	        tick->push_back(PaperPoint(px, y2));
+	        Colour calcol =  (colour_->automatic()) ? colour : *colour_;
+	        tick->setColour(calcol);
+	        tick->setThickness(thickness_);
+	        axis.push_back(tick);
+    }
+	
+	
+	   
+}	
+
diff --git a/src/visualisers/AxisTick.h b/src/visualisers/AxisTick.h
new file mode 100644
index 0000000..675b311
--- /dev/null
+++ b/src/visualisers/AxisTick.h
@@ -0,0 +1,118 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisTick.h
+    \brief Definition of the Template class AxisTick.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Fri 7-Oct-2005
+    
+    Changes:
+    
+*/
+
+#ifndef AxisTick_H
+#define AxisTick_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+#include "AxisItem.h"
+
+
+#include "AxisTickAttributes.h"
+
+namespace magics {
+	
+
+class Transformation;
+class HorizontalAxisVisitor;
+class VerticalAxisVisitor;
+
+class AxisTick: public AxisTickAttributes {
+
+public:
+	AxisTick();
+	virtual ~AxisTick();
+    
+    virtual void set(const XmlNode& node) {
+        AxisTickAttributes::set(node);
+    }
+    virtual void set(const map<string, string>& map) {
+       AxisTickAttributes::set(map);
+    }
+    virtual AxisTick* clone() const {
+    	AxisTick* tick = new AxisTick();
+    	tick->copy(*this);      
+        return tick;
+    }
+    
+    virtual void vertical(const AxisItems&, const Colour&, VerticalAxisVisitor&);
+    virtual void horizontal(const AxisItems&, const Colour&, HorizontalAxisVisitor&);
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	AxisTick(const AxisTick&);
+    //! Overloaded << operator to copy - No copy allowed
+	AxisTick& operator=(const AxisTick&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisTick& p)
+		{ p.print(s); return s; }
+
+};
+
+class NoAxisTick: public AxisTick
+{
+public:
+	NoAxisTick() {}
+	~NoAxisTick() {};
+protected:
+	  virtual void vertical(const AxisItems&, const Colour&, VerticalAxisVisitor&) {}
+    virtual void horizontal(const AxisItems&, const Colour&, HorizontalAxisVisitor&) {}
+   AxisTick* clone() const { return new NoAxisTick(); }
+    	
+	
+};
+ 
+
+template <>
+class MagTranslator<string, AxisTick> { 
+public:
+	AxisTick* operator()(const string& val )
+	{
+		return SimpleObjectMaker<AxisTick>::create(val);
+	}     
+
+	AxisTick* magics(const string& param)
+	{
+		AxisTick* object;
+		ParameterManager::update(param, object);
+		return object;
+	}
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisTickLabelType.cc b/src/visualisers/AxisTickLabelType.cc
new file mode 100644
index 0000000..c82ec11
--- /dev/null
+++ b/src/visualisers/AxisTickLabelType.cc
@@ -0,0 +1,107 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisTickLabelType.cc
+    \brief Implementation of the Template class AxisTickLabelType.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Fri 7-Oct-2005
+    
+    Changes:
+    
+*/
+
+
+
+#include "AxisTickLabelType.h"
+#include "PaperPoint.h"
+#include "Text.h"
+#include "MagicsFormat.h"
+
+using namespace magics;
+
+void AxisTickLabelType::print(ostream& out) const
+{
+	out << "AxisTickLabelType[]";
+}
+
+void AxisTickLabelType::toxml(ostream&)  const
+{
+}
+
+void LabelListLabelType::toxml(ostream&, int)  const
+{
+}
+void NumberLabelType::toxml(ostream&, int)  const
+{
+}
+
+void LabelListLabelType::print(ostream& out) const
+{
+	out << "AxisTickLabelType[]";
+}
+	
+void NumberLabelType::print(ostream& out) const
+{
+	out << "AxisTickLabelType[]";
+}
+	
+LabelListLabelType::LabelListLabelType()
+{
+	current_ = labels_.begin();
+}
+
+string LabelListLabelType::label(const string& label)
+{ 
+	
+	string nice = label;
+	// first try to find in the cach!
+	map<string, string>::iterator cache = cache_.find(label);
+	if (cache != cache_.end()  )
+		return cache->second;
+	
+	if (current_ != labels_.end() ) {
+		nice = *current_;
+		
+		current_++;
+	}
+	cache_.insert(make_pair(label, nice));
+	return nice;  	
+} 
+
+
+bool alldigits(const string& name)
+{
+	for (string::const_iterator c = name.begin(); c != name.end(); ++c)
+		if ( !isdigit(*c) && *c != '.' && *c != '-' && *c != 'e' && *c != 'E' ) return false;
+	return true;
+} 
+
+string NumberLabelType::label(const string& label)
+{
+	
+	if ( label.empty() ) return label;
+	if ( alldigits(label) == false ) return label;
+	
+	ostringstream nice;
+    nice << MagicsFormat(format_, tonumber(label)); 
+  
+	return nice.str();
+}
+
diff --git a/src/visualisers/AxisTickLabelType.h b/src/visualisers/AxisTickLabelType.h
new file mode 100644
index 0000000..b98323d
--- /dev/null
+++ b/src/visualisers/AxisTickLabelType.h
@@ -0,0 +1,131 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisTickLabelType.h
+    \brief Definition of the Template class AxisTickLabel.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Fri 7-Oct-2005
+    
+    Changes:
+    
+*/
+
+#ifndef AxisTickLabelType_H
+#define AxisTickLabelType_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+#include "NumberLabelTypeAttributes.h"
+#include "LabelListLabelTypeAttributes.h"
+
+namespace magics {
+
+class AxisTickLabelType 
+{
+public:
+	AxisTickLabelType() {}
+	virtual ~AxisTickLabelType() {}    
+	virtual void set(const XmlNode& ) {}
+	virtual void set(const map<string, string>& ) {}
+	virtual bool accept(const string&) { return false; }
+	virtual AxisTickLabelType* clone() const {return  new AxisTickLabelType();}
+	virtual string label(const string& label) { return label; }
+	virtual void toxml(ostream&)  const;
+
+protected:
+ 	//! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+
+private:
+	//! Copy constructor - No copy allowed
+	AxisTickLabelType(const AxisTickLabelType&);
+	//! Overloaded << operator to copy - No copy allowed
+	AxisTickLabelType& operator=(const AxisTickLabelType&);
+
+// -- Friends
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisTickLabelType& p)
+		{ p.print(s); return s; }
+};
+
+class NumberLabelType : public AxisTickLabelType, public NumberLabelTypeAttributes
+{
+public:
+	NumberLabelType() {}
+	virtual ~NumberLabelType() {}    
+	virtual void set(const XmlNode& node) 
+		{ NumberLabelTypeAttributes::set(node);  }
+	virtual void set(const map<string, string>& map) 
+		{ NumberLabelTypeAttributes::set(map); }
+	bool accept(const string& node) { return  NumberLabelTypeAttributes::accept(node); }
+	virtual AxisTickLabelType* clone() const {
+		NumberLabelType* label =  new NumberLabelType();
+		label->copy(*this);
+		return label;
+	}
+	virtual string label(const string& label);
+	virtual void print(ostream&) const; 
+	virtual void toxml(ostream&, int)  const;
+};
+
+class LabelListLabelType : public AxisTickLabelType, public LabelListLabelTypeAttributes
+{
+public:
+	LabelListLabelType();
+	virtual ~LabelListLabelType() {}    
+	virtual void set(const XmlNode& node) 
+		{ LabelListLabelTypeAttributes::set(node); current_ = labels_.begin(); }
+	virtual void set(const map<string, string>& map) 
+		{ LabelListLabelTypeAttributes::set(map); }
+	bool accept(const string& node) { return  LabelListLabelTypeAttributes::accept(node); }
+	virtual AxisTickLabelType* clone() const {
+		LabelListLabelType* label =  new LabelListLabelType();
+		label->copy(*this);
+		return label;
+	}
+	virtual string label(const string& label);
+	virtual void print(ostream&) const; 
+	virtual void toxml(ostream&, int)  const;
+	map<string, string> cache_;
+protected:
+	vector<string>::const_iterator current_;
+};
+
+template <>
+class MagTranslator<string, AxisTickLabelType> { 
+public:
+	AxisTickLabelType* operator()(const string& val )
+	{
+		return SimpleObjectMaker<AxisTickLabelType>::create(val);
+	}
+
+	AxisTickLabelType* magics(const string& param)
+	{
+		AxisTickLabelType* object=0;
+		ParameterManager::update(param, object);
+		return object;
+	}
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisTip.cc b/src/visualisers/AxisTip.cc
new file mode 100644
index 0000000..4888c70
--- /dev/null
+++ b/src/visualisers/AxisTip.cc
@@ -0,0 +1,98 @@
+/*! \file AxisTip.h
+    \brief Implementation of the Template class NoAxisTip.
+    
+    Magics Team - ECMWF 2010
+    
+    Started: Tue 16-Nov-2010
+    
+    Changes:
+    
+*/
+
+
+
+#include "AxisTip.h"
+#include "Text.h"
+#include "Transformation.h"
+using namespace magics;
+
+NoAxisTip::NoAxisTip() {}
+
+
+NoAxisTip::~NoAxisTip() {}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void NoAxisTip::print(ostream& out)  const
+{
+	out << "NoAxisTip[";
+	out << "]";
+}
+
+AxisTip::AxisTip() 
+{
+}
+
+
+AxisTip::~AxisTip() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisTip::print(ostream& out)  const
+{
+	out << "AxisTip[";
+	AxisTipAttributes::print(out);
+	out << "]";
+}
+void  AxisTip::horizontal(const Colour&, TopAxisVisitor& out) const
+{
+
+}
+
+void  AxisTip::horizontal(const Colour& colour,BottomAxisVisitor& out) const
+{
+	Text* text = new Text();
+	
+	MagFont font; 
+	font.size(height_);
+	font.colour((colour_->automatic()) ? colour : *colour_);	
+	text->addText(text_, font);
+	text->setVerticalAlign(MTOP);
+	
+	double x = out.maxX() - (out.maxX() -  out.minX())*0.05;
+
+	text->push_back(PaperPoint(x, out.offsetTitle())); 
+	
+	out.push_back(text);
+}
+
+void  AxisTip::vertical(const Colour& colour, LeftAxisVisitor& out) const
+{
+	double angle = out.angleTip();
+	const double x = out.offsetTip();
+
+	Text* text = new Text();
+	MagFont font; 
+	font.size(height_);
+	font.colour((colour_->automatic()) ? colour : *colour_);	
+	text->addText(text_, font);
+
+	text->setAngle(( orientation_ == "horizontal" ) ? 0 : angle);
+
+	double y  = out.maxY() - (out.maxY() -  out.minY())*0.05;;
+
+
+	text->push_back(PaperPoint(x, y)); 
+
+	out.push_back(text);
+}
+
+void  AxisTip::vertical(const Colour&,RightAxisVisitor& out) const
+{
+
+}
+
diff --git a/src/visualisers/AxisTip.h b/src/visualisers/AxisTip.h
new file mode 100644
index 0000000..99e52a5
--- /dev/null
+++ b/src/visualisers/AxisTip.h
@@ -0,0 +1,116 @@
+/*! \file AxisTip.h
+    \brief Definition of the Template class NoAxisTip.
+    
+    Magics Team - ECMWF 2010
+    
+    Started: Tue 16-Nov-2010
+    
+    Changes:
+    
+*/
+
+#ifndef NoAxisTip_H
+#define NoAxisTip_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+#include "AxisTipAttributes.h"
+
+
+namespace magics {
+
+class RightAxisVisitor;
+class LeftAxisVisitor;
+class TopAxisVisitor;
+class BottomAxisVisitor;
+
+class NoAxisTip {
+	
+public:
+	NoAxisTip();
+	virtual ~NoAxisTip();
+	bool accept(const string&) { return false; }
+	virtual void set(const XmlNode&) {}
+	virtual void set(const map<string, string>&) {}
+	virtual NoAxisTip* clone() const {return new NoAxisTip();}
+	void toxml(ostream&) const {}
+	virtual void horizontal(const Colour&, TopAxisVisitor&) const {}
+	virtual void horizontal(const Colour&,BottomAxisVisitor&) const {}
+	virtual void horizontal(const Colour&, RightAxisVisitor&) const {}
+	virtual void horizontal(const Colour&, LeftAxisVisitor&) const {}
+
+	virtual void vertical(const Colour&, TopAxisVisitor&) const {}
+	virtual void vertical(const Colour&,BottomAxisVisitor&) const {}
+	virtual void vertical(const Colour&, RightAxisVisitor&) const {}
+	virtual void vertical(const Colour&, LeftAxisVisitor&) const {}
+
+protected:
+	//! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+
+private:
+	//! Copy constructor - No copy allowed
+	NoAxisTip(const NoAxisTip&);
+	//! Overloaded << operator to copy - No copy allowed
+	NoAxisTip& operator=(const NoAxisTip&);
+
+// -- Friends
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const NoAxisTip& p)
+		{ p.print(s); return s; }
+};
+
+
+class AxisTip : public NoAxisTip, public AxisTipAttributes {
+
+public:
+	AxisTip();
+	virtual ~AxisTip();
+
+	virtual void set(const XmlNode& node) {AxisTipAttributes::set(node);}
+	virtual void set(const map<string, string>& map) {AxisTipAttributes::set(map);}
+
+	bool accept(const string& node) { return AxisTipAttributes::accept(node); }
+
+	virtual NoAxisTip* clone() const
+	{
+		MagLog::dev() << "(const map<string, string&)---> to be checked!...\n";
+		AxisTip* tip = new AxisTip();
+		tip->copy(*this);
+		return tip;
+	}
+
+	void horizontal(const Colour&, TopAxisVisitor&) const;
+	void horizontal(const Colour&,BottomAxisVisitor&) const;
+	void vertical(const Colour&, RightAxisVisitor&) const;
+	void vertical(const Colour&, LeftAxisVisitor&) const;
+
+protected:
+	//! Method to print string about this class on to a stream of type ostream (virtual).
+	virtual void print(ostream&) const; 
+
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisTip& p)
+		{ p.print(s); return s; }
+};
+
+
+template <>
+class MagTranslator<string, NoAxisTip> { 
+public:
+	NoAxisTip* operator()(const string& val )
+	{
+		return SimpleObjectMaker<NoAxisTip>::create(val);
+	}     
+
+	NoAxisTip* magics(const string& param)
+	{
+		string val;
+		ParameterManager::get(param, val);
+		return (*this)(val);
+	}
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/AxisType.cc b/src/visualisers/AxisType.cc
new file mode 100644
index 0000000..898aadc
--- /dev/null
+++ b/src/visualisers/AxisType.cc
@@ -0,0 +1,54 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisType.cc
+    \brief Implementation of the Template class AxisType.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Fri 7-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "AxisType.h"
+
+using namespace magics;
+
+AxisType::AxisType() 
+{
+}
+
+
+AxisType::~AxisType() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void AxisType::print(ostream& out)  const
+{
+	out << "AxisType[";
+	out << "]";
+}
+
+static SimpleObjectMaker<AxisType> regular("regular");
diff --git a/src/visualisers/AxisType.h b/src/visualisers/AxisType.h
new file mode 100644
index 0000000..5f98e6a
--- /dev/null
+++ b/src/visualisers/AxisType.h
@@ -0,0 +1,86 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file AxisType.h
+    \brief Definition of the Template class AxisType.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Fri 7-May-2004
+    
+    Changes:
+    
+*/
+
+#ifndef AxisType_H
+#define AxisType_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+
+
+namespace magics {
+
+class XmlNode;
+
+class AxisType {
+
+public:
+	AxisType();
+	virtual ~AxisType();
+	virtual void set(const map<string, string>& ) { }
+	virtual void set(const XmlNode& ) { }
+	virtual AxisType* clone() const { return new AxisType(); }
+
+protected:
+	//! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+	//! Copy constructor - No copy allowed
+	AxisType(const AxisType&);
+	//! Overloaded << operator to copy - No copy allowed
+	AxisType& operator=(const AxisType&);
+
+// -- Friends
+	//! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const AxisType& p)
+		{ p.print(s); return s; }
+
+};
+
+template<>
+class MagTranslator<string, AxisType> { 
+public:
+	AxisType* operator()(const string& val )
+	{
+		 return SimpleObjectMaker<AxisType>::create(val);
+	}
+   
+	AxisType* magics(const string& param)
+	{
+		AxisType* object;
+		ParameterManager::update(param, object);
+		return object;
+	}
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/BothValuePlotMethodAttributes.cc b/src/visualisers/BothValuePlotMethodAttributes.cc
deleted file mode 100644
index ee9e20e..0000000
--- a/src/visualisers/BothValuePlotMethodAttributes.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BothValuePlotMethodAttributes.cc
-    \brief Implementation of BothValuePlotMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:22 2013
-*/    
-
-#include "BothValuePlotMethodAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BothValuePlotMethodAttributes::BothValuePlotMethodAttributes():
-	markerHeight_(ParameterManager::getDouble("contour_grid_value_marker_height")),
-	markerColour_(MagTranslator<string, Colour>().magics("contour_grid_value_marker_colour")),
-	markerQuality_(ParameterManager::getString("contour_grid_value_marker_qual")),
-	markerIndex_(ParameterManager::getInt("contour_grid_value_marker_index"))
-{
-} 
-
-
-
-BothValuePlotMethodAttributes::~BothValuePlotMethodAttributes()
-{
-}
-
-    
-void BothValuePlotMethodAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(3);
-	prefix[0] = "contour_grid_value";
-	prefix[1] = "contour_grid_value";
-	prefix[2] = "contour";
-
-	setAttribute(prefix, "contour_grid_value_marker_height", markerHeight_, params);
-	setAttribute(prefix, "contour_grid_value_marker_colour", markerColour_, params);
-	setAttribute(prefix, "contour_grid_value_marker_qual", markerQuality_, params);
-	setAttribute(prefix, "contour_grid_value_marker_index", markerIndex_, params);
-}
-
-void BothValuePlotMethodAttributes::copy(const BothValuePlotMethodAttributes& other)
-{
-	markerHeight_ = other.markerHeight_;
-	markerColour_ = auto_ptr<Colour>(other.markerColour_->clone());
-	markerQuality_ = other.markerQuality_;
-	markerIndex_ = other.markerIndex_;
-} 
-
-
-bool BothValuePlotMethodAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "both")  )
-		return true;
-	return false;
-}
-
-void BothValuePlotMethodAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "both") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void BothValuePlotMethodAttributes::print(ostream& out)  const
-{
-	out << "BothValuePlotMethodAttributes[";
-	out << "markerHeight = " << markerHeight_;
-	out << ", markerColour = " << *markerColour_;
-	out << ", markerQuality = " << markerQuality_;
-	out << ", markerIndex = " << markerIndex_;
-	out << "]" << "\n";
-}
-
-
-void BothValuePlotMethodAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"both\"";
-	 out << ", \"contour_grid_value_marker_height\":";
-	 niceprint(out,markerHeight_);
-	 out << ", \"contour_grid_value_marker_colour\":";
-	 niceprint(out, *markerColour_);
-	 out << ", \"contour_grid_value_marker_qual\":";
-	 niceprint(out,markerQuality_);
-	 out << ", \"contour_grid_value_marker_index\":";
-	 niceprint(out,markerIndex_);
-}
-static MagicsParameter<double> contour_grid_value_marker_height("contour_grid_value_marker_height", 0.25, "");
-static MagicsParameter<string> contour_grid_value_marker_colour("contour_grid_value_marker_colour", "red", "");
-static MagicsParameter<string> contour_grid_value_marker_qual("contour_grid_value_marker_qual", "low", "");
-static MagicsParameter<int> contour_grid_value_marker_index("contour_grid_value_marker_index", 3, "");
diff --git a/src/visualisers/BoundariesAttributes.h b/src/visualisers/BoundariesAttributes.h
deleted file mode 100644
index bf5ce02..0000000
--- a/src/visualisers/BoundariesAttributes.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoundariesAttributes.h
-    \brief Definition of Boundaries Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef BoundariesAttributes_H
-#define BoundariesAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class BoundariesAttributes 
-{
-public:
-//  --  constructor
-    BoundariesAttributes();
-    
-//  --  destructor
-    virtual ~BoundariesAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const BoundariesAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	LineStyle style_;
-	auto_ptr<Colour> colour_;
-	int thickness_;
-	bool disputed_;
-	LineStyle disputed_style_;
-	auto_ptr<Colour> disputed_colour_;
-	int disputed_thickness_;
-	bool admistrative_;
-	stringarray administrative_list_;
-	LineStyle administrative_style_;
-	auto_ptr<Colour> administrative_colour_;
-	int administrative_thickness_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const BoundariesAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/BoxPlotBoxAttributes.cc b/src/visualisers/BoxPlotBoxAttributes.cc
deleted file mode 100644
index 10db6c8..0000000
--- a/src/visualisers/BoxPlotBoxAttributes.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotBoxAttributes.cc
-    \brief Implementation of BoxPlotBox Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotBoxAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotBoxAttributes::BoxPlotBoxAttributes():
-	colour_(MagTranslator<string, Colour>().magics("boxplot_box_colour")),
-	width_(ParameterManager::getDouble("boxplot_box_width")),
-	border_(MagTranslator<string, NoBoxPlotBoxBorder>().magics("boxplot_box_border")),
-	median_(MagTranslator<string, NoBoxPlotMedian>().magics("boxplot_median"))
-{
-} 
-
-
-
-BoxPlotBoxAttributes::~BoxPlotBoxAttributes()
-{
-}
-
-    
-void BoxPlotBoxAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "boxplot_box";
-	prefix[1] = "boxplot";
-
-	setAttribute(prefix, "boxplot_box_colour", colour_, params);
-	setAttribute(prefix, "boxplot_box_width", width_, params);
-	setMember(prefix, "boxplot_box_border", border_, params);
-	setMember(prefix, "boxplot_median", median_, params);
-}
-
-void BoxPlotBoxAttributes::copy(const BoxPlotBoxAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	width_ = other.width_;
-	border_ = auto_ptr<NoBoxPlotBoxBorder>(other.border_->clone());
-	median_ = auto_ptr<NoBoxPlotMedian>(other.median_->clone());
-} 
-
-
-bool BoxPlotBoxAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "box")  )
-		return true;
-
-	if ( acceptNode(node, border_) )
-		return true;
-
-	if ( acceptNode(node, median_) )
-		return true;
-	return false;
-}
-
-void BoxPlotBoxAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "box") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), border_, node);
-		setMember(node.name(), median_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), border_, *(*elt)); 
-		setMember((*elt)->name(), median_, *(*elt)); 
-	}
-}
-
-void BoxPlotBoxAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotBoxAttributes[";
-	out << "colour = " << *colour_;
-	out << ", width = " << width_;
-	out << ", border = " << *border_;
-	out << ", median = " << *median_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotBoxAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"box\"";
-	 out << ", \"boxplot_box_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"boxplot_box_width\":";
-	 niceprint(out,width_);
-	 out << ", \"boxplot_box_border\":";
-	 border_->toxml(out);
-	 out << ", \"boxplot_median\":";
-	 median_->toxml(out);
-}
-static MagicsParameter<string> boxplot_box_colour("boxplot_box_colour", "sky", "");
-static MagicsParameter<double> boxplot_box_width("boxplot_box_width", 1.0, "");
-static MagicsParameter<string> boxplot_box_border("boxplot_box_border", "on", "");
-static MagicsParameter<string> boxplot_median("boxplot_median", "on", "");
-#include "BoxPlotItem.h"
-#include "BoxPlotBasicItem.h"
-static SimpleObjectMaker<BoxPlotBoxBorder, NoBoxPlotBoxBorder> on_BoxPlotBoxBorder("on");
-static SimpleObjectMaker<BoxPlotBoxBorder, NoBoxPlotBoxBorder> border_BoxPlotBoxBorder("border");
-static SimpleObjectMaker<NoBoxPlotBoxBorder, NoBoxPlotBoxBorder> off_NoBoxPlotBoxBorder("off");
-static SimpleObjectMaker<NoBoxPlotBoxBorder, NoBoxPlotBoxBorder> noborder_NoBoxPlotBoxBorder("noborder");
-#include "BoxPlotItem.h"
-#include "BoxPlotBasicItem.h"
-static SimpleObjectMaker<BoxPlotMedian, NoBoxPlotMedian> on_BoxPlotMedian("on");
-static SimpleObjectMaker<BoxPlotMedian, NoBoxPlotMedian> median_BoxPlotMedian("median");
-static SimpleObjectMaker<NoBoxPlotMedian, NoBoxPlotMedian> off_NoBoxPlotMedian("off");
-static SimpleObjectMaker<NoBoxPlotMedian, NoBoxPlotMedian> nomedian_NoBoxPlotMedian("nomedian");
diff --git a/src/visualisers/BoxPlotBoxBorderAttributes.cc b/src/visualisers/BoxPlotBoxBorderAttributes.cc
deleted file mode 100644
index ceac589..0000000
--- a/src/visualisers/BoxPlotBoxBorderAttributes.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotBoxBorderAttributes.cc
-    \brief Implementation of BoxPlotBoxBorder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotBoxBorderAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotBoxBorderAttributes::BoxPlotBoxBorderAttributes():
-	colour_(MagTranslator<string, Colour>().magics("boxplot_box_border_colour")),
-	thickness_(ParameterManager::getInt("boxplot_box_border_thickness")),
-	style_(MagTranslator<string, LineStyle>().magics("boxplot_box_border_line_style"))
-{
-} 
-
-
-
-BoxPlotBoxBorderAttributes::~BoxPlotBoxBorderAttributes()
-{
-}
-
-    
-void BoxPlotBoxBorderAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "boxplot_box_border";
-	prefix[1] = "boxplot";
-
-	setAttribute(prefix, "boxplot_box_border_colour", colour_, params);
-	setAttribute(prefix, "boxplot_box_border_thickness", thickness_, params);
-	setAttribute(prefix, "boxplot_box_border_line_style", style_, params);
-}
-
-void BoxPlotBoxBorderAttributes::copy(const BoxPlotBoxBorderAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	thickness_ = other.thickness_;
-	style_ = other.style_;
-} 
-
-
-bool BoxPlotBoxBorderAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "box_border")  )
-		return true;
-	return false;
-}
-
-void BoxPlotBoxBorderAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "box_border") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void BoxPlotBoxBorderAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotBoxBorderAttributes[";
-	out << "colour = " << *colour_;
-	out << ", thickness = " << thickness_;
-	out << ", style = " << style_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotBoxBorderAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"box_border\"";
-	 out << ", \"boxplot_box_border_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"boxplot_box_border_thickness\":";
-	 niceprint(out,thickness_);
-	 out << ", \"boxplot_box_border_line_style\":";
-	 niceprint(out,style_);
-}
-static MagicsParameter<string> boxplot_box_border_colour("boxplot_box_border_colour", "navy", "");
-static MagicsParameter<int> boxplot_box_border_thickness("boxplot_box_border_thickness", 1, "");
-static MagicsParameter<string> boxplot_box_border_line_style("boxplot_box_border_line_style", "solid", "");
diff --git a/src/visualisers/BoxPlotItem.cc b/src/visualisers/BoxPlotItem.cc
index 8ea7c3c..1532bca 100644
--- a/src/visualisers/BoxPlotItem.cc
+++ b/src/visualisers/BoxPlotItem.cc
@@ -30,7 +30,6 @@
 #include "CustomisedPoint.h"
 #include "BoxPlotItem.h"
 #include "Polyline.h"
-#include "PaperPoint.h"
 #include "Transformation.h"
 using namespace magics;
 
@@ -47,11 +46,11 @@ void BoxPlotBox::operator()(BasicGraphicsObjectContainer& visitor, const Customi
 	CustomisedPoint::const_iterator lower = point.find("lower");
 	CustomisedPoint::const_iterator x = point.find("x");
 	if ( x == point.end() || upper == point.end() || lower == point.end() ) return;
-	box->push_back(PaperPoint(x->second-width, upper->second));
-	box->push_back(PaperPoint(x->second+width, upper->second));
-	box->push_back(PaperPoint(x->second+width, lower->second));
-	box->push_back(PaperPoint(x->second-width, lower->second));
-	box->push_back(PaperPoint(x->second-width, upper->second));
+	box->push_back(transformation(UserPoint(x->second-width, upper->second)));
+	box->push_back(transformation(UserPoint(x->second+width, upper->second)));
+	box->push_back(transformation(UserPoint(x->second+width, lower->second)));
+	box->push_back(transformation(UserPoint(x->second-width, lower->second)));
+	box->push_back(transformation(UserPoint(x->second-width, upper->second)));
 
 	(*border_)(*box);
 	visitor.push_back(box);
@@ -62,8 +61,8 @@ void BoxPlotBox::operator()(BasicGraphicsObjectContainer& visitor, const Customi
 
 	Polyline* line  = new Polyline();	
 
-	line->push_back(PaperPoint(x->second-width, median->second));
-	line->push_back(PaperPoint(x->second+width, median->second));
+	line->push_back(transformation(UserPoint(x->second-width, median->second)));
+	line->push_back(transformation(UserPoint(x->second+width, median->second)));
 
 	(*median_)(visitor, line);
 }
@@ -98,11 +97,11 @@ void BoxPlotWhiskerBox::top(BasicGraphicsObjectContainer& visitor, const Customi
 	CustomisedPoint::const_iterator upper = point.find("upper");
 	CustomisedPoint::const_iterator x = point.find("x");
 	if ( x == point.end() || max == point.end() || upper == point.end() ) return;
-	whisker->push_back(PaperPoint(x->second-width, max->second));
-	whisker->push_back(PaperPoint(x->second+width, max->second));
-	whisker->push_back(PaperPoint(x->second+width, upper->second));
-	whisker->push_back(PaperPoint(x->second-width, upper->second));
-	whisker->push_back(PaperPoint(x->second-width, max->second));
+	whisker->push_back(transformation(UserPoint(x->second-width, max->second)));
+	whisker->push_back(transformation(UserPoint(x->second+width, max->second)));
+	whisker->push_back(transformation(UserPoint(x->second+width, upper->second)));
+	whisker->push_back(transformation(UserPoint(x->second-width, upper->second)));
+	whisker->push_back(transformation(UserPoint(x->second-width, max->second)));
 
 	(*border_)(*whisker);
 	visitor.push_back(whisker);
@@ -121,11 +120,11 @@ void BoxPlotWhiskerBox::bottom(BasicGraphicsObjectContainer& visitor, const Cust
 	CustomisedPoint::const_iterator lower = point.find("lower");
 	CustomisedPoint::const_iterator x = point.find("x");
 	if ( x == point.end() || min == point.end() || lower == point.end() ) return;
-	whisker->push_back(PaperPoint(x->second-width, min->second));
-	whisker->push_back(PaperPoint(x->second+width, min->second));
-	whisker->push_back(PaperPoint(x->second+width, lower->second));
-	whisker->push_back(PaperPoint(x->second-width, lower->second));
-	whisker->push_back(PaperPoint(x->second-width, min->second));
+	whisker->push_back(transformation(UserPoint(x->second-width, min->second)));
+	whisker->push_back(transformation(UserPoint(x->second+width, min->second)));
+	whisker->push_back(transformation(UserPoint(x->second+width, lower->second)));
+	whisker->push_back(transformation(UserPoint(x->second-width, lower->second)));
+	whisker->push_back(transformation(UserPoint(x->second-width, min->second)));
 
 	(*border_)(*whisker);
 	visitor.push_back(whisker);
@@ -133,6 +132,7 @@ void BoxPlotWhiskerBox::bottom(BasicGraphicsObjectContainer& visitor, const Cust
 
 void BoxPlotWhiskerLine::top(BasicGraphicsObjectContainer& visitor, const CustomisedPoint& point) const
 {
+	const Transformation& transformation = visitor.transformation();
 	Polyline* whisker  = new Polyline();				
 	whisker->setColour(*colour_);
 	whisker->setLineStyle(style_);
@@ -142,8 +142,8 @@ void BoxPlotWhiskerLine::top(BasicGraphicsObjectContainer& visitor, const Custom
 	CustomisedPoint::const_iterator upper = point.find("upper");
 	CustomisedPoint::const_iterator x = point.find("x");
 	if ( x == point.end() || max == point.end() || upper == point.end() ) return;
-	whisker->push_back(PaperPoint(x->second, max->second));
-	whisker->push_back(PaperPoint(x->second, upper->second));
+	whisker->push_back(transformation(UserPoint(x->second, max->second)));
+	whisker->push_back(transformation(UserPoint(x->second, upper->second)));
 	
 
 	
@@ -152,6 +152,7 @@ void BoxPlotWhiskerLine::top(BasicGraphicsObjectContainer& visitor, const Custom
 
 void BoxPlotWhiskerLine::bottom(BasicGraphicsObjectContainer& visitor, const CustomisedPoint& point) const
 {
+	const Transformation& transformation = visitor.transformation();
 	Polyline* whisker  = new Polyline();			
 	whisker->setColour(*colour_);
 	whisker->setLineStyle(style_);
@@ -161,8 +162,8 @@ void BoxPlotWhiskerLine::bottom(BasicGraphicsObjectContainer& visitor, const Cus
 	CustomisedPoint::const_iterator lower = point.find("lower");
 	CustomisedPoint::const_iterator x = point.find("x");
 	if ( x == point.end() || min == point.end() || lower == point.end() ) return;
-	whisker->push_back(PaperPoint(x->second, min->second));
-	whisker->push_back(PaperPoint(x->second, lower->second));
+	whisker->push_back(transformation(UserPoint(x->second, min->second)));
+	whisker->push_back(transformation(UserPoint(x->second, lower->second)));
 	
 
 	
diff --git a/src/visualisers/BoxPlotMedianAttributes.cc b/src/visualisers/BoxPlotMedianAttributes.cc
deleted file mode 100644
index c88ee3d..0000000
--- a/src/visualisers/BoxPlotMedianAttributes.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotMedianAttributes.cc
-    \brief Implementation of BoxPlotMedian Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotMedianAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotMedianAttributes::BoxPlotMedianAttributes():
-	colour_(MagTranslator<string, Colour>().magics("boxplot_median_colour")),
-	thickness_(ParameterManager::getInt("boxplot_median_thickness")),
-	style_(MagTranslator<string, LineStyle>().magics("boxplot_median_line_style"))
-{
-} 
-
-
-
-BoxPlotMedianAttributes::~BoxPlotMedianAttributes()
-{
-}
-
-    
-void BoxPlotMedianAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "boxplot_median";
-	prefix[1] = "boxplot";
-
-	setAttribute(prefix, "boxplot_median_colour", colour_, params);
-	setAttribute(prefix, "boxplot_median_thickness", thickness_, params);
-	setAttribute(prefix, "boxplot_median_line_style", style_, params);
-}
-
-void BoxPlotMedianAttributes::copy(const BoxPlotMedianAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	thickness_ = other.thickness_;
-	style_ = other.style_;
-} 
-
-
-bool BoxPlotMedianAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "median")  )
-		return true;
-	return false;
-}
-
-void BoxPlotMedianAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "median") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void BoxPlotMedianAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotMedianAttributes[";
-	out << "colour = " << *colour_;
-	out << ", thickness = " << thickness_;
-	out << ", style = " << style_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotMedianAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"median\"";
-	 out << ", \"boxplot_median_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"boxplot_median_thickness\":";
-	 niceprint(out,thickness_);
-	 out << ", \"boxplot_median_line_style\":";
-	 niceprint(out,style_);
-}
-static MagicsParameter<string> boxplot_median_colour("boxplot_median_colour", "navy", "");
-static MagicsParameter<int> boxplot_median_thickness("boxplot_median_thickness", 3, "");
-static MagicsParameter<string> boxplot_median_line_style("boxplot_median_line_style", "solid", "");
diff --git a/src/visualisers/BoxPlotVisualiser.cc b/src/visualisers/BoxPlotVisualiser.cc
index e891efc..2eba1da 100644
--- a/src/visualisers/BoxPlotVisualiser.cc
+++ b/src/visualisers/BoxPlotVisualiser.cc
@@ -63,11 +63,19 @@ void BoxPlotVisualiser::operator()(Data& data, BasicGraphicsObjectContainer& vis
 	CustomisedPointsList points; 
 	std::set<string> request;
 	
+	request.insert("min");
+	request.insert("max");
+	request.insert("lower");
+	request.insert("upper");
+	request.insert("median");
+
 	const Transformation& transformation = visitor.transformation();
 	data.customisedPoints(transformation, request, points, true); // we want all the points!
 	
 	double user = (transformation.getAbsoluteMaxX() - transformation.getAbsoluteMinX())/visitor.absoluteWidth();
 	
+	double max = transformation.getAbsoluteMaxY();
+	double min = transformation.getAbsoluteMinY();
 	
 	
 	if (points.empty()) return;	
@@ -77,9 +85,17 @@ void BoxPlotVisualiser::operator()(Data& data, BasicGraphicsObjectContainer& vis
 	whisker_->cm(user);
 	
 
+
 	for (CustomisedPointsList::const_iterator point = points.begin(); point != points.end(); ++point)
 	{
-	
+
+		for ( std::set<string>::iterator key = request.begin(); key != request.end(); ++key ) {
+			double val = (**point)[*key];
+			if (val < min) (**point)[*key] = min;
+			if  (val > max) (**point)[*key] = max;
+		}
+
+
 		(*box_)(visitor, **point);
 	    
 		whisker_->top(visitor, **point);
diff --git a/src/visualisers/BoxPlotVisualiserAttributes.cc b/src/visualisers/BoxPlotVisualiserAttributes.cc
deleted file mode 100644
index 676dcd2..0000000
--- a/src/visualisers/BoxPlotVisualiserAttributes.cc
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotVisualiserAttributes.cc
-    \brief Implementation of BoxPlotVisualiser Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotVisualiserAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotVisualiserAttributes::BoxPlotVisualiserAttributes():
-	box_(MagTranslator<string, NoBoxPlotBox>().magics("boxplot_box")),
-	whisker_(MagTranslator<string, NoBoxPlotWhisker>().magics("boxplot_whisker"))
-{
-} 
-
-
-
-BoxPlotVisualiserAttributes::~BoxPlotVisualiserAttributes()
-{
-}
-
-    
-void BoxPlotVisualiserAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(0);
-
-	setMember(prefix, "boxplot_box", box_, params);
-	setMember(prefix, "boxplot_whisker", whisker_, params);
-}
-
-void BoxPlotVisualiserAttributes::copy(const BoxPlotVisualiserAttributes& other)
-{
-	box_ = auto_ptr<NoBoxPlotBox>(other.box_->clone());
-	whisker_ = auto_ptr<NoBoxPlotWhisker>(other.whisker_->clone());
-} 
-
-
-bool BoxPlotVisualiserAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "boxplot")  )
-		return true;
-
-	if ( acceptNode(node, box_) )
-		return true;
-
-	if ( acceptNode(node, whisker_) )
-		return true;
-	return false;
-}
-
-void BoxPlotVisualiserAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "boxplot") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), box_, node);
-		setMember(node.name(), whisker_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), box_, *(*elt)); 
-		setMember((*elt)->name(), whisker_, *(*elt)); 
-	}
-}
-
-void BoxPlotVisualiserAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotVisualiserAttributes[";
-	out << "box = " << *box_;
-	out << ", whisker = " << *whisker_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotVisualiserAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"boxplot\"";
-	 out << ", \"boxplot_box\":";
-	 box_->toxml(out);
-	 out << ", \"boxplot_whisker\":";
-	 whisker_->toxml(out);
-}
-static MagicsParameter<string> boxplot_box("boxplot_box", "on", "");
-static MagicsParameter<string> boxplot_whisker("boxplot_whisker", "line", "");
-#include "BoxPlotItem.h"
-#include "BoxPlotBasicItem.h"
-static SimpleObjectMaker<BoxPlotBox, NoBoxPlotBox> on_BoxPlotBox("on");
-static SimpleObjectMaker<BoxPlotBox, NoBoxPlotBox> box_BoxPlotBox("box");
-static SimpleObjectMaker<NoBoxPlotBox, NoBoxPlotBox> off_NoBoxPlotBox("off");
-static SimpleObjectMaker<NoBoxPlotBox, NoBoxPlotBox> noBox_NoBoxPlotBox("noBox");
-#include "BoxPlotItem.h"
-#include "BoxPlotBasicItem.h"
-static SimpleObjectMaker<BoxPlotWhiskerBox, NoBoxPlotWhisker> box_BoxPlotWhiskerBox("box");
-static SimpleObjectMaker<BoxPlotWhiskerBox, NoBoxPlotWhisker> whiskerbox_BoxPlotWhiskerBox("whiskerbox");
-static SimpleObjectMaker<NoBoxPlotWhisker, NoBoxPlotWhisker> off_NoBoxPlotWhisker("off");
-static SimpleObjectMaker<NoBoxPlotWhisker, NoBoxPlotWhisker> nowhisker_NoBoxPlotWhisker("nowhisker");
-static SimpleObjectMaker<BoxPlotWhiskerLine, NoBoxPlotWhisker> line_BoxPlotWhiskerLine("line");
-static SimpleObjectMaker<BoxPlotWhiskerLine, NoBoxPlotWhisker> whiskerline_BoxPlotWhiskerLine("whiskerline");
diff --git a/src/visualisers/BoxPlotWhiskerBorderAttributes.cc b/src/visualisers/BoxPlotWhiskerBorderAttributes.cc
deleted file mode 100644
index e5da694..0000000
--- a/src/visualisers/BoxPlotWhiskerBorderAttributes.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotWhiskerBorderAttributes.cc
-    \brief Implementation of BoxPlotWhiskerBorder Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotWhiskerBorderAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotWhiskerBorderAttributes::BoxPlotWhiskerBorderAttributes():
-	colour_(MagTranslator<string, Colour>().magics("boxplot_whisker_box_border_colour")),
-	thickness_(ParameterManager::getInt("boxplot_whisker_box_border_thickness")),
-	style_(MagTranslator<string, LineStyle>().magics("boxplot_whisker_box_border_line_style"))
-{
-} 
-
-
-
-BoxPlotWhiskerBorderAttributes::~BoxPlotWhiskerBorderAttributes()
-{
-}
-
-    
-void BoxPlotWhiskerBorderAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(4);
-	prefix[0] = "boxplot_whisker_box_border";
-	prefix[1] = "boxplot_whisker_box";
-	prefix[2] = "boxplot_whisker";
-	prefix[3] = "boxplot";
-
-	setAttribute(prefix, "boxplot_whisker_box_border_colour", colour_, params);
-	setAttribute(prefix, "boxplot_whisker_box_border_thickness", thickness_, params);
-	setAttribute(prefix, "boxplot_whisker_box_border_line_style", style_, params);
-}
-
-void BoxPlotWhiskerBorderAttributes::copy(const BoxPlotWhiskerBorderAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	thickness_ = other.thickness_;
-	style_ = other.style_;
-} 
-
-
-bool BoxPlotWhiskerBorderAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "whisker_border")  )
-		return true;
-	return false;
-}
-
-void BoxPlotWhiskerBorderAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "whisker_border") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void BoxPlotWhiskerBorderAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotWhiskerBorderAttributes[";
-	out << "colour = " << *colour_;
-	out << ", thickness = " << thickness_;
-	out << ", style = " << style_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotWhiskerBorderAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"whisker_border\"";
-	 out << ", \"boxplot_whisker_box_border_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"boxplot_whisker_box_border_thickness\":";
-	 niceprint(out,thickness_);
-	 out << ", \"boxplot_whisker_box_border_line_style\":";
-	 niceprint(out,style_);
-}
-static MagicsParameter<string> boxplot_whisker_box_border_colour("boxplot_whisker_box_border_colour", "navy", "");
-static MagicsParameter<int> boxplot_whisker_box_border_thickness("boxplot_whisker_box_border_thickness", 1, "");
-static MagicsParameter<string> boxplot_whisker_box_border_line_style("boxplot_whisker_box_border_line_style", "solid", "");
diff --git a/src/visualisers/BoxPlotWhiskerBoxAttributes.cc b/src/visualisers/BoxPlotWhiskerBoxAttributes.cc
deleted file mode 100644
index 6e4214a..0000000
--- a/src/visualisers/BoxPlotWhiskerBoxAttributes.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotWhiskerBoxAttributes.cc
-    \brief Implementation of BoxPlotWhiskerBox Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotWhiskerBoxAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotWhiskerBoxAttributes::BoxPlotWhiskerBoxAttributes():
-	colour_(MagTranslator<string, Colour>().magics("boxplot_whisker_box_colour")),
-	width_(ParameterManager::getDouble("boxplot_whisker_box_width")),
-	border_(MagTranslator<string, NoBoxPlotWhiskerBorder>().magics("boxplot_whisker_box_border"))
-{
-} 
-
-
-
-BoxPlotWhiskerBoxAttributes::~BoxPlotWhiskerBoxAttributes()
-{
-}
-
-    
-void BoxPlotWhiskerBoxAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(3);
-	prefix[0] = "boxplot_whisker_box";
-	prefix[1] = "boxplot_whisker";
-	prefix[2] = "boxplot";
-
-	setAttribute(prefix, "boxplot_whisker_box_colour", colour_, params);
-	setAttribute(prefix, "boxplot_whisker_box_width", width_, params);
-	setMember(prefix, "boxplot_whisker_box_border", border_, params);
-}
-
-void BoxPlotWhiskerBoxAttributes::copy(const BoxPlotWhiskerBoxAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	width_ = other.width_;
-	border_ = auto_ptr<NoBoxPlotWhiskerBorder>(other.border_->clone());
-} 
-
-
-bool BoxPlotWhiskerBoxAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "whisker_box")  )
-		return true;
-
-	if ( acceptNode(node, border_) )
-		return true;
-	return false;
-}
-
-void BoxPlotWhiskerBoxAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "whisker_box") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), border_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), border_, *(*elt)); 
-	}
-}
-
-void BoxPlotWhiskerBoxAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotWhiskerBoxAttributes[";
-	out << "colour = " << *colour_;
-	out << ", width = " << width_;
-	out << ", border = " << *border_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotWhiskerBoxAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"whisker_box\"";
-	 out << ", \"boxplot_whisker_box_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"boxplot_whisker_box_width\":";
-	 niceprint(out,width_);
-	 out << ", \"boxplot_whisker_box_border\":";
-	 border_->toxml(out);
-}
-static MagicsParameter<string> boxplot_whisker_box_colour("boxplot_whisker_box_colour", "sky", "");
-static MagicsParameter<double> boxplot_whisker_box_width("boxplot_whisker_box_width", 0.25, "");
-static MagicsParameter<string> boxplot_whisker_box_border("boxplot_whisker_box_border", "on", "");
-#include "BoxPlotItem.h"
-#include "BoxPlotBasicItem.h"
-static SimpleObjectMaker<BoxPlotWhiskerBorder, NoBoxPlotWhiskerBorder> on_BoxPlotWhiskerBorder("on");
-static SimpleObjectMaker<BoxPlotWhiskerBorder, NoBoxPlotWhiskerBorder> border_BoxPlotWhiskerBorder("border");
-static SimpleObjectMaker<NoBoxPlotWhiskerBorder, NoBoxPlotWhiskerBorder> off_NoBoxPlotWhiskerBorder("off");
-static SimpleObjectMaker<NoBoxPlotWhiskerBorder, NoBoxPlotWhiskerBorder> noborder_NoBoxPlotWhiskerBorder("noborder");
diff --git a/src/visualisers/BoxPlotWhiskerLineAttributes.cc b/src/visualisers/BoxPlotWhiskerLineAttributes.cc
deleted file mode 100644
index a2dc146..0000000
--- a/src/visualisers/BoxPlotWhiskerLineAttributes.cc
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file BoxPlotWhiskerLineAttributes.cc
-    \brief Implementation of BoxPlotWhiskerLine Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "BoxPlotWhiskerLineAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-BoxPlotWhiskerLineAttributes::BoxPlotWhiskerLineAttributes():
-	colour_(MagTranslator<string, Colour>().magics("boxplot_whisker_line_colour")),
-	thickness_(ParameterManager::getInt("boxplot_whisker_line_thickness")),
-	style_(MagTranslator<string, LineStyle>().magics("boxplot_whisker_line_style"))
-{
-} 
-
-
-
-BoxPlotWhiskerLineAttributes::~BoxPlotWhiskerLineAttributes()
-{
-}
-
-    
-void BoxPlotWhiskerLineAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(3);
-	prefix[0] = "boxplot_whisker_line";
-	prefix[1] = "boxplot_whisker";
-	prefix[2] = "boxplot";
-
-	setAttribute(prefix, "boxplot_whisker_line_colour", colour_, params);
-	setAttribute(prefix, "boxplot_whisker_line_thickness", thickness_, params);
-	setAttribute(prefix, "boxplot_whisker_line_style", style_, params);
-}
-
-void BoxPlotWhiskerLineAttributes::copy(const BoxPlotWhiskerLineAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	thickness_ = other.thickness_;
-	style_ = other.style_;
-} 
-
-
-bool BoxPlotWhiskerLineAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "whisker_line")  )
-		return true;
-	return false;
-}
-
-void BoxPlotWhiskerLineAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "whisker_line") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void BoxPlotWhiskerLineAttributes::print(ostream& out)  const
-{
-	out << "BoxPlotWhiskerLineAttributes[";
-	out << "colour = " << *colour_;
-	out << ", thickness = " << thickness_;
-	out << ", style = " << style_;
-	out << "]" << "\n";
-}
-
-
-void BoxPlotWhiskerLineAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"whisker_line\"";
-	 out << ", \"boxplot_whisker_line_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"boxplot_whisker_line_thickness\":";
-	 niceprint(out,thickness_);
-	 out << ", \"boxplot_whisker_line_style\":";
-	 niceprint(out,style_);
-}
-static MagicsParameter<string> boxplot_whisker_line_colour("boxplot_whisker_line_colour", "navy", "");
-static MagicsParameter<int> boxplot_whisker_line_thickness("boxplot_whisker_line_thickness", 3, "");
-static MagicsParameter<string> boxplot_whisker_line_style("boxplot_whisker_line_style", "solid", "");
diff --git a/src/visualisers/CMakeLists.txt b/src/visualisers/CMakeLists.txt
new file mode 100644
index 0000000..0c99287
--- /dev/null
+++ b/src/visualisers/CMakeLists.txt
@@ -0,0 +1,207 @@
+set( _visualisers_srcs
+Akima760.cc
+Akima760Method.h
+Akima474.cc
+Akima474Method.h
+ArrowPlotting.cc
+ArrowPlotting.h
+AutomaticContourMethod.h
+Axis.cc
+Axis.h
+AxisControl.cc
+AxisControl.h
+AxisItem.cc
+AxisItem.h
+AxisLine.h
+AxisMethod.cc
+AxisMethod.h
+AxisType.cc
+AxisType.h
+Bar.cc
+Bar.h
+BothValuePlotMethod.h
+Boundaries.cc
+Boundaries.h
+BoxPlotBasicItem.h
+BoxPlotItem.cc
+BoxPlotItem.h
+BoxPlotVisualiser.cc
+BoxPlotVisualiser.h
+CalculateColourTechnique.cc
+CalculateColourTechnique.h
+CalcStreamlines.cc  
+CalcStreamlines.h
+CalmIndicator.h
+CellShading.cc
+CellShading.h
+Cities.cc
+Cities.h
+CoastPlotting.cc
+CoastPlotting.h
+Coastlines.cc
+Coastlines.h
+ColourSelection.cc
+ColourSelection.h
+ColourTechnique.cc
+ColourTechnique.h
+Contour.cc
+Contour.h
+ContourLibrary.cc
+ContourLibrary.h
+ContourMethod.h
+CountSelectionType.cc
+CountSelectionType.h
+Curve.cc
+Curve.h
+DateAxis.cc
+DateAxis.h
+DefinitionTable.h
+DefinitionTable.hcc
+DotPolyShadingMethod.h
+EpsForecastPlot.h
+EpsGraph.cc
+EpsGraph.h
+EquidistantTableMode.cc
+EquidistantTableMode.h
+Filter.cc
+Filter.h
+FlagPlotting.cc
+FlagPlotting.h
+FloatSelection.cc
+FloatSelection.h
+Graph.h
+GraphPlotting.cc
+GraphPlotting.h
+GraphShade.cc
+GraphShade.h
+GraphShadeStyle.cc
+GraphShadeStyle.h
+GribTables.h
+GridPlotting.cc
+GridPlotting.h
+HatchPolyShadingMethod.h
+HeightSelection.cc
+HeightSelection.h
+HeightSelectionCount.h
+HeightSelectionList.h
+HeightTechnique.cc
+HeightTechnique.h
+HiLo.cc
+HiLo.h
+HiLoBase.h
+HiLoBoth.h
+HiLoMarker.h
+HiLoMarkerBase.h
+HiLoNumber.h
+HiLoText.h
+HiLoTechnique.h
+HistoIndividualMode.h
+HistoMode.h
+HistoTableMode.h
+Histogram.cc
+Histogram.h
+ImageCalculateColourTechnique.h
+ImageListColourTechnique.h
+ImagePlotting.cc
+ImagePlotting.h
+ImportPlot.h
+IntervalSelectionType.cc
+IntervalSelectionType.h
+Intervals.h
+IsoHelper.cc
+IsoHelper.h
+IsoHighlight.h
+IsoLabel.cc
+IsoLabel.h
+IsoPlot.cc
+IsoPlot.h
+IsoShading.cc
+IsoShading.h
+LabelPlotting.cc
+LabelPlotting.h
+LabelPlottingBase.h
+LegendMethod.cc
+LegendMethod.h
+LevelListSelectionType.cc
+LevelListSelectionType.h
+LevelSelection.cc
+LevelSelection.h
+LinearTableMode.cc
+LinearTableMode.h
+ListColourTechnique.cc
+ListColourTechnique.h
+LookupTableMode.cc
+LookupTableMode.h
+MarkerSelection.h
+MarkerSelectionCount.h
+MarkerSelectionList.h
+MarkerShadingTechnique.cc
+MarkerShadingTechnique.h
+MarkerValuePlotMethod.h
+MetgramGraph.cc
+MetgramGraph.h
+MetgramStyle.cc
+MetgramStyle.h
+NormalTableMode.cc
+NormalTableMode.h
+ObsItem.h
+ObsItemFamily.cc
+ObsItemFamily.h
+ObsPlotting.cc
+ObsPlotting.h
+ObsTable.cc
+ObsTable.h
+OriginMarker.h
+OutLayerTechnique.cc
+OutLayerTechnique.h
+PolyShadingMethod.cc
+PolyShadingMethod.h
+PolyShadingTechnique.cc
+PolyShadingTechnique.h
+ShadingTechnique.h
+SegmentJoiner.h
+SegmentJoiner.cc
+SimplePolylineVisualiser.cc
+SimplePolylineVisualiser.h
+Streamlines.h
+Streamlines.cc
+SymbolAdvancedTableMode.cc
+SymbolAdvancedTableMode.h
+SymbolMode.cc
+SymbolMode.h
+SymbolPlotting.cc
+SymbolPlotting.h
+TaylorGrid.cc
+TaylorGrid.h
+TephiGrid.cc  
+TephiGrid.h
+TextOrientation.cc
+TextOrientation.h
+UserDate.cc
+UserDate.h
+ValuePlot.cc
+ValuePlot.h
+ValuePlotBase.h
+ValuePlotMethod.h
+VisDefInfo.cc
+VisDefInfo.h
+Wind.cc
+Wind.h
+WindPlotting.cc
+WindPlotting.h
+)
+
+foreach( file ${_visualisers_srcs} )
+  list( APPEND visualisers_srcs visualisers/${file} )
+endforeach()
+
+set( visualisers_srcs ${visualisers_srcs} PARENT_SCOPE )
+
+if ( ENABLE_METVIEW )
+    list (APPEND metview_include 
+            visualisers/LegendMethod.h      
+             visualisers/ImagePlotting.h
+             visualisers/LookupTableMode.h
+            )
+    set( metview_include ${metview_include} PARENT_SCOPE )
+endif()
diff --git a/src/visualisers/CalcStreamlines.cc b/src/visualisers/CalcStreamlines.cc
new file mode 100644
index 0000000..cf53af2
--- /dev/null
+++ b/src/visualisers/CalcStreamlines.cc
@@ -0,0 +1,861 @@
+/*
+  CalcStreamlines is a function for calculating streamlines for wind field
+
+  Copyright (C) 2010 Hungarian Meteorological Service
+
+  Author: Mark Rajnai (rajnai.m at met.hu)
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <float.h>
+
+#include "CalcStreamlines.h"
+
+
+float ShiftPeriod(float x, float xstart, float period)
+{
+	float xend = xstart + period;
+	// Shift the value between 'xstart' and 'xstart+period'
+	while( x > xend )
+		x -= period;
+	while( x < xstart )
+		x += period;
+
+	return x;
+}
+
+
+float ShiftPeriod_(float x, float xstart, float period)
+{
+	float xend = xstart + period;
+	// Shift the value between 'xstart' and 'xstart+period'
+	while( x >= xend )
+		x -= period;
+	while( x < xstart )
+		x += period;
+
+	return x;
+}
+
+
+// Calculate difference of two longitude values considering periodicity
+float CalcLonDist(float lon1, float lon2)
+{
+	float dlon = ShiftPeriod(lon2-lon1, 0, 360);
+	if( dlon > 180 )
+		return 360-dlon;
+	return dlon;
+}
+
+
+OneLineClass::OneLineClass() :
+	Len(0),
+	X(0x0),
+	Y(0x0)
+{}
+
+
+OneLineClass::~OneLineClass()
+{
+	delete [] X;
+	delete [] Y;
+}
+
+
+void OneLineClass::Alloc(int len)
+{
+	if( len > 0 )
+		{
+			X = new float[len];
+			Y = new float[len];
+			Len = len;
+		}
+}
+
+
+int CalcStreamlines(int density, const float *dir, const GSStruct *gs, OneLineClass **&str_lines, int &linenum)
+{
+	// Input arguments:
+	// density: density of the streamlines 1: highest density 2,3,... lower density
+	// dir: wind direction field (in radian)
+	// gs: pointer of the grid geometry (lat-lon values in degree)
+
+	// Output arguments:
+	// str_lines: the result lines (lat-lon values in degree)
+	// linenum: number of lines in the result (length of 'str_lines' array)
+
+	// This algorithm works only with equidistant longitude-latitude grid
+
+	// Check the pointers
+	if( !dir || !gs )
+		return 0;
+
+	// Check density of the streamlines
+	if( density < 1 )
+		return 0;
+
+	// Remove unnecessary streamlines
+	if( str_lines )
+		{
+			for(int ii=0; ii<linenum; ii++)
+				delete str_lines[ii]; 
+			delete [] str_lines;
+			str_lines = 0x0; 
+		}
+	linenum = 0;
+
+	// Get gridshape
+	float startx = gs->startx;
+	float dx_orig = gs->dx;
+	float starty = gs->starty;
+	float dy_orig = gs->dy;
+	int nx = gs->nx;
+	int ny = gs->ny;
+	int gridsize = nx*ny;
+	int ys = (dy_orig > 0) ? 1 : -1;
+	int xs = (dx_orig > 0) ? 1 : -1;
+	float dy = fabsf(dy_orig);
+	float dx = fabsf(dx_orig);
+	float dx_2 = 0.5*dx;
+	float dy_2 = 0.5*dy;
+	// Use a little bigger dx and dy for comparing (in order to avoid floating
+	// point errors) -> inrease them with an epsilon that is 0.1% of the original
+	// values (perhaps it would be unnecessary if double would be used)
+	float dx_2e = dx_2 * 1.001;
+	float dy_2e = dy_2 * 1.001;
+	int period_x = gs->period_x;
+	//int period_y = gs->period_y;
+
+	float *dir_tmp = 0x0;
+	int abut_x = 0;
+	if( period_x )
+		{
+			float x_range = (nx-1)*dx;
+			if( x_range > 359.999 && x_range < 360.001 ) // x_range == 360.
+				abut_x = 1;
+		}
+
+	// Find out if the grid is on the Earth or no
+	int gs_geo = 1; // 0 -> not on Earth
+	// x_min and x_per are used for ShiftPeriod function
+	float x_min = 0.f, x_per = 360.f; // for grids on the Earth
+	if( !gs_geo )
+		{
+			// for grids not on the Earth
+			x_min = -100000000.f;
+			x_per = FLT_MAX;
+		}
+
+	// A flag grid to store how many streamlines cross a grid cell
+	int *cell_used = new int[ gridsize ];
+	// We allow up to 4 lines to cross a cell (must be max_used+1)!!
+	int *cell_used_by[4];
+	int *cell_used_by_point[4];
+	for(int i=0; i<gridsize; i++)
+		cell_used[i] = 0;
+	for(int j=0; j<4; j++)
+		{
+			cell_used_by[j] = new int[ gridsize ];
+			cell_used_by_point[j] = new int[ gridsize ];
+			for(int i=0; i<gridsize; i++)
+				cell_used_by[j][i] = -1;
+		}
+	int line_start_array[100000];
+
+	// The ordinal number of the current line we follow
+	int act_line = 0;
+	
+	// Coordinates of a streamline
+	float *x = new float[ gridsize ];
+	float *y = new float[ gridsize ];
+	int len = 0;
+	int pos = gridsize/2;
+	int line_start = pos;
+
+	// Active cell and side in the cell
+	int act_cell;
+	int act_side;
+	float side_shift_x[4] = { 0, 0.5*dx, 0, -0.5*dx};
+	float side_shift_y[4] = { 0.5*dy, 0, -0.5*dy, 0};
+
+	// Coordinate of center of the active cell
+	float cell_x, cell_y;
+
+	// One cell is a rectangle around the gridpoint
+	//
+	//            side 0
+	//       +---------------+
+	//       |       /       |
+	//       |      /        |
+	//       |     /    _    |
+	//       |    /  |  /`   |
+	//       |   /   |a/     |side 1   a = direction of the vector
+	// side 3|  /    |/      |
+	//       | /     X       |dy
+	//       |/              |
+	//       |               |
+	//       |               |
+	//       |               |
+	//       |               |
+	//       +---------------+
+	//              dx
+	//            side 2
+	//
+
+	// Double-float comparison problem
+	// We use float numbers instead of doubles
+	float M__PI_2 = M_PI_2;
+	float M__PI = M_PI;
+	float M3_PI_2 = 3*M_PI_2;
+	float M_PI_180 = M_PI/180.0;
+
+	// Minimum density in cell number
+	int min_dist = density / 4;
+	// Value of max_used can be 3!!!! See cell_used_by array!!!
+	int max_used = 2 / density + 1;
+
+	// Some constants for the density
+	// Minimum density in degrees
+	float max_dx = fabsf(dx_orig) / (float)max_used / 1.3f;
+	float max_dy = fabsf(dy_orig) / (float)max_used / 1.3f;
+
+	// density2 and start_index_[ij] are only for the more equable density of lines
+	//int density2 = density * 4;
+	//for(int start_index_j=0; start_index_j<=density*3; start_index_j+=density)
+		//for(int start_index_i=0; start_index_i<=density*3; start_index_i+=density)
+	for(int density2=density*64; density2>=density; density2/=2)
+	for(int j=0; j<ny; j+=density2)
+		for(int i=0; i<nx; i+=density2)
+			{
+				act_cell = j*nx + i;
+				// If the cell is already in use, skip
+				//if( cell_used[act_cell] > 0 )
+				//	continue;
+
+				// If the neighbouring cells are already in use, skip
+				// Check the close used cells in a cross shape
+				//
+				//        x
+				//        x
+				//        x
+				//    xxxxxxxxx
+				//        x
+				//        x
+				//        x
+				//
+				int used = 0;
+				for(int c=act_cell-min_dist; c<=act_cell+min_dist; c++)
+					if( c > -1 && c < gridsize && cell_used[c] > 0 )
+						{
+							used = 1;
+							break;
+						}
+				if( used )
+					continue;
+				for(int c=act_cell-min_dist*nx; c<=act_cell+min_dist*nx; c+=nx)
+					if( c > -1 && c < gridsize && cell_used[c] > 0 )
+						{
+							used = 1;
+							break;
+						}
+				if( used )
+					continue;
+
+				// Check NAN FillValue
+				if( dir[act_cell] != dir[act_cell] )
+					continue;
+
+				// Get coordinate of the cell
+				cell_x = ShiftPeriod(startx + dx_orig * i, x_min, x_per);
+				// Quicker if this line is moved before 'for(i)'...
+				cell_y = starty + dy_orig * j;
+
+				// Check the direction in the first cell
+				// Let's suppose that values are in interval [0,2PI)
+				// 'direction' is -1 first than will be changed to 1!!
+				float dir_limit;
+			 	if( gs_geo )
+					dir_limit = atan(fabs(dx*cos(cell_y*M_PI_180)/dy));
+				else
+					dir_limit = atan(fabs(dx/dy));
+				float act_dir = ShiftPeriod_(dir[act_cell], 0, 2*M__PI);
+
+				if( act_dir > 2*M__PI-dir_limit || act_dir < dir_limit )
+					act_side = 2;
+				else if( act_dir < M__PI - dir_limit )
+					act_side = 3;
+				else if( act_dir < M__PI + dir_limit )
+					act_side = 0;
+				else
+					act_side = 1;
+
+				// Let's start from the middle of the side
+				len = 0;
+				pos = gridsize/2;
+				line_start = pos;
+				x[pos] = ShiftPeriod(cell_x + side_shift_x[act_side], x_min, x_per);
+				y[pos] = cell_y + side_shift_y[act_side];
+				len++;
+				pos--;
+
+				// Set start cell for the forward following
+				int forw_start_cell = -1;
+			 	if( act_side == 0 )
+					forw_start_cell = act_cell + ys*nx;
+				else if( act_side == 2 )
+					forw_start_cell = act_cell - ys*nx;
+				else if( act_side == 1 )
+					{
+						if( abs( act_cell % nx - (act_cell+xs) % nx) > 1 )
+							{
+								if( period_x == 1 )
+									forw_start_cell = act_cell + xs - xs*(nx - abut_x);
+							}
+						else
+							forw_start_cell = act_cell + xs;
+					}
+				else if( act_side == 3 )
+					{
+						if( abs( act_cell % nx - (act_cell-xs) % nx) > 1 )
+							{
+								if( period_x == 1 )
+									forw_start_cell = act_cell - xs + xs*(nx - abut_x);
+							}
+						else
+							forw_start_cell = act_cell - xs;
+					}
+
+				int forw_start_side = (act_side + 2)%4;
+
+				// Follow a streamline backward (-1) and then forward (1) too
+				for(int direction = -1; direction <= 1; direction+=2)
+					{
+
+						if( direction == 1 )
+							{
+								if( forw_start_cell < 0 || forw_start_cell >= gridsize )
+									break;
+								act_cell = forw_start_cell;
+								act_side = forw_start_side;
+								pos = gridsize/2 + 1;
+							}
+
+						// Some help variables for the very variable wind direction (light wind)
+						int cycle_cont = 0;
+						float prev_dir, act_dir_orig;
+
+						int stop_need = 0;
+
+						do
+							{
+								// Check if stop needed (it can be also 2!!!)
+								if( stop_need == 1 ) // hmmm.. now it can be only 2
+									break;
+								// Check if this line uses the same cell twice
+								if( cell_used[act_cell] && cell_used_by[cell_used[act_cell]-1][act_cell] == act_line )
+									break;
+								// Check if too many lines are in the cell
+								if( cell_used[act_cell] > max_used )
+									break;
+								// Check if any other line already crosses the cell
+								if( density > 4 && cell_used[act_cell] > 0 )
+									{
+										// If previously it was also too close, stop it immediately
+										if( stop_need == 2 )
+											break;
+										stop_need = 2; // Let's give an other chance!
+									}
+    
+								// act_dir is in [0;2*M__PI)
+								if( direction == 1 )
+									act_dir = ShiftPeriod_(dir[act_cell]+M__PI, 0, 2*M__PI);
+								else
+									act_dir = ShiftPeriod_(dir[act_cell], 0, 2*M__PI);
+								act_dir_orig = act_dir;
+
+								// If wind direction is not valid break
+								if( act_dir != act_dir )
+									break;
+
+								// Get coordinate of the cell
+								// act_cell <=> j*nx + i
+								cell_x = ShiftPeriod(startx + dx_orig * (act_cell%nx), x_min, x_per);
+								cell_y = starty + dy_orig * (act_cell/nx);
+								if( gs_geo )
+									if( cell_y >= 90 || cell_y <= -90 )
+										break;
+    
+								float cos_cell_y = 1.f;
+								if( gs_geo )
+									cos_cell_y = cos(cell_y*M_PI_180);
+								int cell_shift = 0;
+    
+								// Check which side we are on
+								if( act_side == 1 )
+									{
+										// Check if the line can be continue (headwind)
+										if( act_dir > 0 && act_dir < M__PI )
+											{
+												// Compare the neighbouring wind directions
+												if( cycle_cont &&
+														( prev_dir > M__PI_2 && prev_dir < M3_PI_2 ) ==
+														( act_dir > M__PI_2 && act_dir < M3_PI_2 ) )
+													act_dir = ( act_dir > M__PI_2 ) ? M__PI : 0;
+												else
+													break;
+											}
+    
+										if( act_dir == 0 )
+											{
+												// Northward
+												x[pos] = x[pos-direction];
+												y[pos] = cell_y + dy_2;
+												
+												cell_shift = ys*nx;
+												act_side = 2;
+											}
+										else if( act_dir == M__PI )
+											{
+												// Southward
+												x[pos] = x[pos-direction];
+												y[pos] = cell_y - dy_2;
+
+												cell_shift = - ys*nx;
+												act_side = 0;
+											}
+										else
+											{
+												double tan_dir = tan(act_dir);
+												float new_y = y[pos-direction] - dx * cos_cell_y / tan_dir;
+												if( act_dir == M3_PI_2)
+													new_y = y[pos-direction];
+												if( new_y <= cell_y + dy_2e &&
+														new_y >= cell_y - dy_2e )
+													{
+														// Westward
+														x[pos] = ShiftPeriod(cell_x - dx_2, x_min, x_per);
+														y[pos] = new_y;
+    
+														cell_shift = - xs;
+														act_side = 1;
+													}
+												else
+													{
+														if( act_dir > M3_PI_2 )
+															{
+																// Northward
+																x[pos] = ShiftPeriod(x[pos-direction] + (cell_y + dy_2 - y[pos-direction]) * tan_dir / cos_cell_y, x_min, x_per);
+																y[pos] = cell_y + dy_2;
+																
+																cell_shift = ys*nx;
+																act_side = 2;
+															}
+														else
+															{
+																// Southward
+																x[pos] = ShiftPeriod(x[pos-direction] - (y[pos-direction] - cell_y + dy_2) * tan_dir / cos_cell_y, x_min, x_per);
+																y[pos] = cell_y - dy_2;
+																
+																cell_shift = - ys*nx;
+																act_side = 0;
+															}
+													}
+											}
+									}	// if( act_side == 1 )
+								else if( act_side == 3 )
+									{
+										// Check if the line can continue (headwind)
+										if( act_dir > M__PI && act_dir < 2*M__PI )
+											{
+												// Compare the neighbouring wind directions
+												if( cycle_cont &&
+														( prev_dir > M__PI_2 && prev_dir < M3_PI_2 ) ==
+														( act_dir > M__PI_2 && act_dir < M3_PI_2 ) )
+													act_dir = ( act_dir < M3_PI_2 ) ? M__PI : 0;
+												else
+													break;
+											}
+    
+										if( act_dir == 0 )
+											{
+												// Northward
+												x[pos] = x[pos-direction];
+												y[pos] = cell_y + dy_2;
+												
+												cell_shift = ys*nx;
+												act_side = 2;
+											}
+										else if( act_dir == M__PI )
+											{
+												// Southward
+												x[pos] = x[pos-direction];
+												y[pos] = cell_y - dy_2;
+    
+												cell_shift = - ys*nx;
+												act_side = 0;
+											}
+										else
+											{
+												double tan_dir = tan(act_dir);
+												float new_y = y[pos-direction] + dx * cos_cell_y / tan_dir;
+												if( act_dir == M__PI_2)
+													new_y = y[pos-direction];
+												if( new_y <= cell_y + dy_2e &&
+														new_y >= cell_y - dy_2e )
+													{
+														// Eastward
+														x[pos] = ShiftPeriod(cell_x + dx_2, x_min, x_per);
+														y[pos] = new_y;
+    
+														cell_shift = xs;
+														act_side = 3;
+													}
+												else
+													{
+														if( act_dir < M__PI_2 )
+															{
+																// Northward
+																x[pos] = ShiftPeriod(x[pos-direction] + (cell_y + dy_2 - y[pos-direction]) * tan_dir / cos_cell_y, x_min, x_per);
+																y[pos] = cell_y + dy_2;
+																
+																cell_shift = ys*nx;
+																act_side = 2;
+															}
+														else
+															{
+																// Southward
+																x[pos] = ShiftPeriod(x[pos-direction] - (y[pos-direction] - cell_y + dy_2) * tan_dir / cos_cell_y, x_min, x_per);
+																y[pos] = cell_y - dy_2;
+																
+																cell_shift = - ys*nx;
+																act_side = 0;
+															}
+													}
+											}
+									}	// if( act_side == 3 )
+								else if( act_side == 0 )
+									{
+										// Check if the line can continue (headwind)
+										if( act_dir < M__PI_2 || act_dir > M3_PI_2 )
+											{
+												// Compare the neighbouring wind directions
+												if( cycle_cont &&
+														( prev_dir > 0 && prev_dir < M__PI ) ==
+														( act_dir > 0 && act_dir < M__PI ) )
+													act_dir = ( act_dir < M__PI ) ? M__PI_2 : M3_PI_2;
+												else
+													break;
+											}
+    
+										if( act_dir == M__PI_2 )
+											{
+												// Eastward
+												x[pos] = ShiftPeriod(cell_x + dx_2, x_min, x_per);
+												y[pos] = y[pos-direction];
+												
+												cell_shift = xs;
+												act_side = 3;
+											}
+										else if( act_dir == M3_PI_2 )
+											{
+												// Westward
+												x[pos] = ShiftPeriod(cell_x - dx_2, x_min, x_per);
+												y[pos] = y[pos-direction];
+    
+												cell_shift = - xs;
+												act_side = 1;
+											}
+										else
+											{
+												double tan_dir = tan(act_dir);
+												float new_x = x[pos-direction] - dy * tan_dir / cos_cell_y;
+												if( gs_geo )
+													new_x = ShiftPeriod(new_x, cell_x - dx_2e, 360);
+												if( new_x <= cell_x + dx_2e &&
+														new_x >= cell_x - dx_2e )
+													{
+														// Southward
+														x[pos] = ShiftPeriod(new_x, x_min, x_per);
+														y[pos] = cell_y - dy_2;
+    
+														cell_shift = - ys*nx;
+														act_side = 0;
+													}
+												else
+													{
+														if( act_dir < M__PI )
+															{
+																// Eastward
+																x[pos] = ShiftPeriod(cell_x + dx_2, x_min, x_per);
+																if( gs_geo )
+																	y[pos] = y[pos-direction] + CalcLonDist(cell_x + dx_2,x[pos-direction]) / tan_dir * cos_cell_y;
+																else
+																	y[pos] = y[pos-direction] + fabs(cell_x + dx_2 - x[pos-direction]) / tan_dir * cos_cell_y;
+																
+																cell_shift = xs;
+																act_side = 3;
+															}
+														else
+															{
+																// Westward
+																x[pos] = ShiftPeriod(cell_x - dx_2, x_min, x_per);
+																if( gs_geo )
+																	y[pos] = y[pos-direction] - CalcLonDist(x[pos-direction], cell_x - dx_2) / tan_dir * cos_cell_y;
+																else
+																	y[pos] = y[pos-direction] - fabs(x[pos-direction] - cell_x + dx_2) / tan_dir * cos_cell_y;
+																
+																cell_shift = - xs;
+																act_side = 1;
+															}
+													}
+											}
+									}	// if( act_side == 0 )
+								else if( act_side == 2 )
+									{
+										// Check if the line can continue (headwind)
+										if( act_dir > M__PI_2 && act_dir < M3_PI_2 )
+											{
+												// Compare the neighbouring wind directions
+												if( cycle_cont &&
+														( prev_dir > 0 && prev_dir < M__PI ) ==
+														( act_dir > 0 && act_dir < M__PI ) )
+													act_dir = ( act_dir < M__PI ) ? M__PI_2 : M3_PI_2;
+												else
+													break;
+											}
+    
+										if( act_dir == (float)M__PI_2 )
+											{
+												// Eastward
+												x[pos] = ShiftPeriod(cell_x + dx_2, x_min, x_per);
+												y[pos] = y[pos-direction];
+												
+												cell_shift = xs;
+												act_side = 3;
+											}
+										else if( act_dir == M3_PI_2 )
+											{
+												// Westward
+												x[pos] = ShiftPeriod(cell_x - dx_2, x_min, x_per);
+												y[pos] = y[pos-direction];
+    
+												cell_shift = - xs;
+												act_side = 1;
+											}
+										else
+											{
+												double tan_dir = tan(act_dir);
+												float new_x = x[pos-direction] + dy * tan_dir / cos_cell_y;
+												if( gs_geo )
+													new_x = ShiftPeriod(new_x, cell_x - dx_2e, 360);
+												if( ( new_x <= ( cell_x + dx_2e ) ) &&
+														( new_x >= ( cell_x - dx_2e ) ) )
+													{
+														// Northward
+														x[pos] = ShiftPeriod(new_x, x_min, x_per);
+														y[pos] = cell_y + dy_2;
+    
+														cell_shift = ys*nx;
+														act_side = 2;
+													}
+												else
+													{
+														if( act_dir < M__PI_2 )
+															{
+																// Eastward
+																x[pos] = ShiftPeriod(cell_x + dx_2, x_min, x_per);
+																if( gs_geo )
+																	y[pos] = y[pos-direction] + CalcLonDist(cell_x + dx_2, x[pos-direction]) / tan_dir * cos_cell_y;
+																else
+																	y[pos] = y[pos-direction] + fabs(cell_x + dx_2 - x[pos-direction]) / tan_dir * cos_cell_y;
+																
+																cell_shift = xs;
+																act_side = 3;
+															}
+														else
+															{
+																// Westward
+																x[pos] = ShiftPeriod(cell_x - dx_2, x_min, x_per);
+																if( gs_geo )
+																	y[pos] = y[pos-direction] - CalcLonDist(x[pos-direction], cell_x - dx_2) / tan_dir * cos_cell_y;
+																else
+																	y[pos] = y[pos-direction] - fabs(x[pos-direction] - cell_x + dx_2) / tan_dir * cos_cell_y;
+																
+																cell_shift = - xs;
+																act_side = 1;
+															}
+													}
+											}
+									}	// if( act_side == 2 )
+
+								/*if( x[pos] != x[pos] )
+									printf("x%d nan act_side = %d act_dir = %f\n", pos, act_side, act_dir);
+								if( y[pos] != y[pos] )
+									printf("y%d nan act_side = %d act_dir = %f\n", pos, act_side, act_dir);*/
+								if( gs_geo )
+									if( y[pos-direction] > 90 || y[pos-direction] < -90 )
+										break;
+
+
+								// Check if the break point (x,y) is already used by an other line
+								// If the current (x,y) coordinate is already used finish the line
+								//if( max_used > 1 ) Hey it should be always checked!
+									{
+										int stop_now = 0;
+										for(int l=0; l<cell_used[act_cell]; l++)
+											{
+												// cell_used_by[l][act_cell] can not be greater than linenum
+												const OneLineClass &line = *str_lines[ cell_used_by[l][act_cell] ];
+												int lp = cell_used_by_point[l][act_cell] - line_start_array[cell_used_by[l][act_cell]];
+												//if( line.X[lp] == x[pos] && line.Y[lp] == y[pos] )
+												// This condition makes more equable line density
+												// CalcSpereDist would be better (but slower and it changes with latitude)
+												if( lp >= line.Len )
+													printf("Error in CalcStreamlines %d > %d\n", lp, line.Len);
+												if( line.X[lp] < x[pos]+max_dx && line.Y[lp] < y[pos]+max_dy &&
+														line.X[lp] > x[pos]-max_dx && line.Y[lp] > y[pos]-max_dy )
+													{
+														// If previously this line was too close to an other one stop it
+														// immediately
+														if( stop_need == 2 )
+															stop_now = 1;
+														stop_need = 2; // instead of 1 (2 means we give an other chance)
+														break;
+													}
+
+												// This was the slow version:
+												//for(int lp=0; lp<line.Len; lp++)
+												//	{
+												//		if( line.X[lp] == x[pos] && line.Y[lp] == y[pos] )
+												//			{
+												//				stop_need = 1;
+												//				break;
+												//			}
+												//	}
+												//if( stop_need )
+												//	break;
+											}
+										if( stop_now )
+											break;
+
+									}
+
+								// Lehet, ide kene betenni a szurest ami lent volt!
+								if( x[pos] == x[pos-direction] && y[pos] == y[pos-direction] )
+									{
+										pos-=direction;
+										len--;
+									}
+
+								cell_used_by[cell_used[act_cell]][act_cell] = act_line;
+								cell_used_by_point[cell_used[act_cell]][act_cell] = pos;
+								cell_used[act_cell]++;
+
+								pos+=direction;
+								len++;
+
+								// Handle periodic grid
+								if( period_x )
+									{
+										if( cell_shift == -1 && act_cell % nx == 0 )
+											act_cell += cell_shift + nx - abut_x;
+										else if( cell_shift == 1 && act_cell % nx == nx-1 )
+											act_cell += cell_shift - nx + abut_x;
+										else
+											act_cell += cell_shift;
+									}
+								else
+									{
+										if( cell_shift == -1 && act_cell % nx == 0 ||
+												cell_shift == 1 && act_cell % nx == nx-1 )
+											break;
+										act_cell += cell_shift;
+									}
+
+								// Save the current direction
+								prev_dir = act_dir_orig;
+								cycle_cont = 1;
+							} // do
+						while( act_cell >=0 && act_cell < gridsize && pos > -1 && len < gridsize );
+
+						if( direction == -1 )
+							{
+								line_start = pos + 1;
+								line_start_array[act_line] = line_start;
+							}
+
+					} // for(direction = forward, backward)
+				
+				// Add a new line section with 'len' length
+				if( len > 3 )
+					{
+						// Remove unnecessery duplicated points (needed for spline)
+						int real_len = len;
+						/*for(int k=1, l=line_start+1; k<len; k++, l++)
+							{
+								if( x[l] == x[l-1] && y[l] == y[l-1] )
+									real_len--;
+							}*/
+						if( real_len > 3 )
+							{
+								// Increase ordinal number of the line
+								act_line++;
+
+								OneLineClass *line = new OneLineClass;
+								line->Alloc(real_len);
+								line->X[0] = x[line_start];
+								line->Y[0] = y[line_start];
+								for(int k=1, ll=1, l=line_start+1; ll<len; ll++, l++)
+									{
+										/*if( x[l] != x[l-1] || y[l] != y[l-1] )*/
+											{
+												line->X[k] = x[l];
+												line->Y[k] = y[l];
+												k++;
+											}
+									}
+
+								linenum++;
+								OneLineClass** new_str_lines = new OneLineClass*[linenum];
+								for(int ii=0; ii<linenum-1; ii++)
+									new_str_lines[ii] = str_lines[ii]; 
+								new_str_lines[linenum-1] = line;
+													    
+								delete [] str_lines;
+								str_lines = new_str_lines; 
+							}
+					}
+
+
+			} // for(i,j)
+
+	// Free temporary arrays
+	delete [] cell_used;
+	for(int j=0; j<4; j++)
+		{
+			delete [] cell_used_by[j];
+			delete [] cell_used_by_point[j];
+		}
+	//delete [] cell_used_by;
+	//delete [] cell_used_by_point;
+	delete [] x;
+	delete [] y;
+
+	return 1;
+}
+
diff --git a/src/visualisers/CalcStreamlines.h b/src/visualisers/CalcStreamlines.h
new file mode 100644
index 0000000..c4ced17
--- /dev/null
+++ b/src/visualisers/CalcStreamlines.h
@@ -0,0 +1,85 @@
+/*
+  CalcStreamlines is a function for calculating streamlines for wind field
+
+  Copyright (C) 2010 Hungarian Meteorological Service
+
+  Author: Mark Rajnai (rajnai.m at met.hu)
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+
+#ifndef CalcStreamlines_h
+#define CalcStreamlines_h
+
+
+
+// Shift the value between 'xstart' and 'xstart+period'
+// -> x in [xstart,xstart+period]
+float ShiftPeriod(float x, float xstart, float period);
+// Shift the value between 'xstart' and 'xstart+period'
+// -> x in [xstart,xstart+period)
+float ShiftPeriod_(float x, float xstart, float period);
+
+// Calculate difference of two longitude values considering periodicity
+float CalcLonDist(float lon1, float lon2);
+
+
+// Struct for the equidistant grid geometry
+struct GSStruct
+{
+	// Number of gridpoints
+	int nx;
+	int ny;
+
+	// Start coordinates (Longitude,Latitude)
+	float startx;
+	float starty;
+
+	// Distance between the gridpoints
+	float dx;
+	float dy;
+
+	// Is it periodic? (0/1)
+	int period_x;
+	//int period_y;
+};
+
+
+// Class to store coordinates of a line
+class OneLineClass
+{
+	public:
+		// Length of the line
+		int Len;
+
+		// Coordinates of breakpoints
+		float *X;
+		float *Y;
+
+		// Constructor
+		OneLineClass();
+
+		// Destructor
+		~OneLineClass();
+		
+		// Allocate memory for breakpoints
+		void Alloc(int len);
+};
+
+
+// Streamline calculator function
+int CalcStreamlines(int density, const float *dir, const GSStruct *gs, OneLineClass **&str_lines, int &linenum);
+
+
+#endif
diff --git a/src/visualisers/CalculateColourTechniqueAttributes.h b/src/visualisers/CalculateColourTechniqueAttributes.h
deleted file mode 100644
index d9005f0..0000000
--- a/src/visualisers/CalculateColourTechniqueAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file CalculateColourTechniqueAttributes.h
-    \brief Definition of CalculateColourTechnique Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef CalculateColourTechniqueAttributes_H
-#define CalculateColourTechniqueAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "ColourTableDefinitionComputeInterface.h"
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class CalculateColourTechniqueAttributes : public ColourTableDefinitionComputeInterface
-{
-public:
-//  --  constructor
-    CalculateColourTechniqueAttributes();
-    
-//  --  destructor
-    virtual ~CalculateColourTechniqueAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const CalculateColourTechniqueAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<Colour> max_;
-	auto_ptr<Colour> min_;
-	string direction_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const CalculateColourTechniqueAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/CdfGraphAttributes.cc b/src/visualisers/CdfGraphAttributes.cc
deleted file mode 100644
index eee0c34..0000000
--- a/src/visualisers/CdfGraphAttributes.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file CdfGraphAttributes.cc
-    \brief Implementation of CdfGraph Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "CdfGraphAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-CdfGraphAttributes::CdfGraphAttributes():
-	colour_(ParameterManager::getStringArray("cdf_lines_colour_array")),
-	style_(ParameterManager::getStringArray("cdf_lines_style_array")),
-	thickness_(ParameterManager::getIntArray("cdf_lines_thickness_array")),
-	clim_colour_(MagTranslator<string, Colour>().magics("cdf_clim_line_colour")),
-	clim_thickness_(ParameterManager::getInt("cdf_clim_line_thickness")),
-	clim_style_(MagTranslator<string, LineStyle>().magics("cdf_clim_line_style"))
-{
-} 
-
-
-
-CdfGraphAttributes::~CdfGraphAttributes()
-{
-}
-
-    
-void CdfGraphAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "cdf";
-
-	setAttribute(prefix, "cdf_lines_colour_array", colour_, params);
-	setAttribute(prefix, "cdf_lines_style_array", style_, params);
-	setAttribute(prefix, "cdf_lines_thickness_array", thickness_, params);
-	setAttribute(prefix, "cdf_clim_line_colour", clim_colour_, params);
-	setAttribute(prefix, "cdf_clim_line_thickness", clim_thickness_, params);
-	setAttribute(prefix, "cdf_clim_line_style", clim_style_, params);
-}
-
-void CdfGraphAttributes::copy(const CdfGraphAttributes& other)
-{
-	colour_ = other.colour_;
-	style_ = other.style_;
-	thickness_ = other.thickness_;
-	clim_colour_ = auto_ptr<Colour>(other.clim_colour_->clone());
-	clim_thickness_ = other.clim_thickness_;
-	clim_style_ = other.clim_style_;
-} 
-
-
-bool CdfGraphAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "cdfgraph")  )
-		return true;
-	return false;
-}
-
-void CdfGraphAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "cdfgraph") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void CdfGraphAttributes::print(ostream& out)  const
-{
-	out << "CdfGraphAttributes[";
-	out << "colour = " << colour_;
-	out << ", style = " << style_;
-	out << ", thickness = " << thickness_;
-	out << ", clim_colour = " << *clim_colour_;
-	out << ", clim_thickness = " << clim_thickness_;
-	out << ", clim_style = " << clim_style_;
-	out << "]" << "\n";
-}
-
-
-void CdfGraphAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"cdfgraph\"";
-	 out << ", \"cdf_lines_colour_array\":";
-	 niceprint(out,colour_);
-	 out << ", \"cdf_lines_style_array\":";
-	 niceprint(out,style_);
-	 out << ", \"cdf_lines_thickness_array\":";
-	 niceprint(out,thickness_);
-	 out << ", \"cdf_clim_line_colour\":";
-	 niceprint(out, *clim_colour_);
-	 out << ", \"cdf_clim_line_thickness\":";
-	 niceprint(out,clim_thickness_);
-	 out << ", \"cdf_clim_line_style\":";
-	 niceprint(out,clim_style_);
-}
-static MagicsParameter<stringarray> cdf_lines_colour_array("cdf_lines_colour_array", stringarray(), "");
-static MagicsParameter<stringarray> cdf_lines_style_array("cdf_lines_style_array", stringarray(), "");
-static MagicsParameter<intarray> cdf_lines_thickness_array("cdf_lines_thickness_array", intarray(), "");
-static MagicsParameter<string> cdf_clim_line_colour("cdf_clim_line_colour", "black", "");
-static MagicsParameter<int> cdf_clim_line_thickness("cdf_clim_line_thickness", 4, "");
-static MagicsParameter<string> cdf_clim_line_style("cdf_clim_line_style", "solid", "");
diff --git a/src/visualisers/CellShading.cc b/src/visualisers/CellShading.cc
index f5a2169..33618eb 100644
--- a/src/visualisers/CellShading.cc
+++ b/src/visualisers/CellShading.cc
@@ -119,8 +119,62 @@ void CellShading::operator()( MatrixHandler& data, BasicGraphicsObjectContainer&
 	
 	parent.push_back(image);
 }
+DumpShading::DumpShading()
+{
+}
+
+
+DumpShading::~DumpShading()
+{
+}
+
+void DumpShading::operator()( MatrixHandler& data, BasicGraphicsObjectContainer& parent)
+{
+	// Here we have to work using the parentput projection.
+
+	const Transformation& projection = parent.transformation();
+
+	double minc = projection.getMinPCX();
+	double maxc = projection.getMaxPCX();
+	double minr = projection.getMinPCY();
+	double maxr = projection.getMaxPCY();
+
+	Image* image = new Image();
+	image->set(data.rows(), data.columns());
 
 
+
+	for ( int row = 0; row < data.rows(); row++) {
+
+		for ( int column = 0; column < data.columns(); column++) {
+
+			image->push_back(map_.find(data(row, column),0));
+
+		}
+
+	}
+
+
+    ColourTable table;
+    vector<Colour>::const_iterator colour = colours_.begin();
+    for (int i = 0; i <= *max_element(image->begin(), image->end()); i++)
+    {
+    	table.push_back(*colour);
+    	if ( ++colour == colours_.end() ) colour = colours_.begin();
+	}
+
+
+	PaperPoint pp(minc, maxr);
+	image->setOrigin(pp);
+	MagLog::debug() << "origin--->" << pp << endl;
+
+	image->setColourTable(table);
+	image->setWidth(maxc-minc);
+	image->setHeight(maxr-minr);
+
+	parent.push_back(image);
+}
+
 bool CellShading::prepare(const LevelSelection& levels, const ColourTechnique& technique)
 {
 	// First Interval ...
diff --git a/src/visualisers/CellShading.h b/src/visualisers/CellShading.h
index c55e930..c5c1883 100644
--- a/src/visualisers/CellShading.h
+++ b/src/visualisers/CellShading.h
@@ -85,6 +85,26 @@ private:
 		{ p.print(s); return s; }
 
 };
+class DumpShading: public CellShading {
+
+public:
+	DumpShading();
+	virtual ~DumpShading();
+
+	virtual ShadingTechnique* clone() const {
+		DumpShading* object = new DumpShading();
+	    return object;
+	}
+	void copy(const CellShading& from)
+	{
+		CellShadingAttributes::copy(from);
+		//IsoShadingAttributes::copy(from);
+	}
+
+
+	void operator()(MatrixHandler&, BasicGraphicsObjectContainer&);
+
+};
 
 
 
diff --git a/src/visualisers/CellShadingAttributes.h b/src/visualisers/CellShadingAttributes.h
deleted file mode 100644
index 9e0c9e2..0000000
--- a/src/visualisers/CellShadingAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file CellShadingAttributes.h
-    \brief Definition of CellShading Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef CellShadingAttributes_H
-#define CellShadingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class CellShadingAttributes 
-{
-public:
-//  --  constructor
-    CellShadingAttributes();
-    
-//  --  destructor
-    virtual ~CellShadingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const CellShadingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double resolution_;
-	string method_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const CellShadingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/CoastPlottingAttributes.h b/src/visualisers/CoastPlottingAttributes.h
deleted file mode 100644
index 2f4e52e..0000000
--- a/src/visualisers/CoastPlottingAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file CoastPlottingAttributes.h
-    \brief Definition of CoastPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef CoastPlottingAttributes_H
-#define CoastPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class CoastPlottingAttributes 
-{
-public:
-//  --  constructor
-    CoastPlottingAttributes();
-    
-//  --  destructor
-    virtual ~CoastPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const CoastPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<Colour> colour_;
-	LineStyle style_;
-	int thickness_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const CoastPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/CoastlinesAttributes.h b/src/visualisers/CoastlinesAttributes.h
deleted file mode 100644
index 4fb7ace..0000000
--- a/src/visualisers/CoastlinesAttributes.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file CoastlinesAttributes.h
-    \brief Definition of Coastlines Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef CoastlinesAttributes_H
-#define CoastlinesAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "GridPlotting.h"
-#include "LabelPlotting.h"
-#include "CoastPlotting.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class CoastlinesAttributes 
-{
-public:
-//  --  constructor
-    CoastlinesAttributes();
-    
-//  --  destructor
-    virtual ~CoastlinesAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const CoastlinesAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<NoCoastPlotting> coastlines_;
-	auto_ptr<NoGridPlotting> grid_;
-	auto_ptr<NoLabelPlotting> label_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const CoastlinesAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ColourSelection.cc b/src/visualisers/ColourSelection.cc
new file mode 100644
index 0000000..398cbb6
--- /dev/null
+++ b/src/visualisers/ColourSelection.cc
@@ -0,0 +1,53 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file ColourSelection.cc
+    \brief Implementation of the Template class ColourSelection.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 20-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "ColourSelection.h"
+
+using namespace magics;
+
+ColourSelection::ColourSelection() 
+{
+}
+
+
+ColourSelection::~ColourSelection() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void ColourSelection::print(ostream& out)  const
+{
+	out << "ColourSelection[";
+	out << "]";
+}
+
diff --git a/src/visualisers/ColourSelectionCount.cc b/src/visualisers/ColourSelectionCount.cc
new file mode 100644
index 0000000..c2e79cd
--- /dev/null
+++ b/src/visualisers/ColourSelectionCount.cc
@@ -0,0 +1,61 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file ColourSelectionCount.cc
+    \brief Implementation of the Template class ColourSelectionCount.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 20-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "ColourSelectionCount.h"
+
+using namespace magics;
+
+ColourSelectionCount::ColourSelectionCount() 
+{
+}
+
+
+ColourSelectionCount::~ColourSelectionCount() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void ColourSelectionCount::print(ostream& out)  const
+{
+	out << "ColourSelectionCount[";
+	out << "]";
+}
+
+
+void ColourSelectionCount::prepare() 
+{
+	if ( !empty() ) return;
+	calculate(min_, max_, count_);
+}
+
+static SimpleObjectMaker<ColourSelectionCount, ColourSelection> colour_selection_count("count");
diff --git a/src/visualisers/ColourSelectionList.cc b/src/visualisers/ColourSelectionList.cc
new file mode 100644
index 0000000..fee682d
--- /dev/null
+++ b/src/visualisers/ColourSelectionList.cc
@@ -0,0 +1,59 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file ColourSelectionList.cc
+    \brief Implementation of the Template class ColourSelectionList.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 20-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "ColourSelectionList.h"
+
+using namespace magics;
+
+ColourSelectionList::ColourSelectionList() 
+{
+}
+
+
+ColourSelectionList::~ColourSelectionList() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void ColourSelectionList::print(ostream& out)  const
+{
+	out << "ColourSelectionList[";
+	out << "]";
+}
+
+void ColourSelectionList::prepare()
+{
+	if (empty()) calculate(list_);
+}
+
+static SimpleObjectMaker<ColourSelectionList, ColourSelection> colour_selection_list("list");
diff --git a/src/visualisers/ColourTechnique.cc b/src/visualisers/ColourTechnique.cc
index 74667c3..be085e3 100644
--- a/src/visualisers/ColourTechnique.cc
+++ b/src/visualisers/ColourTechnique.cc
@@ -73,12 +73,12 @@ void ColourTechnique::prepare(const LevelSelection& levels)
     
     double previous = 0;
     int index = 0;
-    //maxLevel_ = levels.back();
+   
     for (LevelSelection::const_iterator  val  = levels.begin();  val != levels.end(); ++val)
     {               
     	
          (*this)[*val] = ColourInfo(index, *val, left, right);
-         ranges_[*val] = make_pair(previous, *val);
+         ranges_[*val] = std::make_pair(previous, *val);
          previous = *val;
          index++;
          if ( min != std::numeric_limits<double>::max() ) {
diff --git a/src/visualisers/ColourTechnique.h b/src/visualisers/ColourTechnique.h
index bdc7bb4..b17efab 100644
--- a/src/visualisers/ColourTechnique.h
+++ b/src/visualisers/ColourTechnique.h
@@ -62,6 +62,7 @@ public:
     virtual const Colour&  getMaxColour() const = 0;
     virtual const string& getDirection() const = 0;
     virtual stringarray getColours() const = 0;
+    virtual ListPolicy getPolicy() const = 0;
 };
 
 
@@ -92,15 +93,22 @@ public:
     void colours(vector<string>&) const; 
     
 	void visit(LegendVisitor&);
-
+	ListPolicy getPolicy() const { return policy_; }
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
      IntervalMap<Colour> bands_;
      
      map<double, pair<double, double> > ranges_;
+     double maxLevel_;
      
+     ListPolicy policy_;
+
      
+
+
+
+
     
      
 private:
diff --git a/src/visualisers/ContinuousLegendMethodAttributes.h b/src/visualisers/ContinuousLegendMethodAttributes.h
deleted file mode 100644
index 09607c4..0000000
--- a/src/visualisers/ContinuousLegendMethodAttributes.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ContinuousLegendMethodAttributes.h
-    \brief Definition of ContinuousLegendMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef ContinuousLegendMethodAttributes_H
-#define ContinuousLegendMethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ContinuousLegendMethodAttributes 
-{
-public:
-//  --  constructor
-    ContinuousLegendMethodAttributes();
-    
-//  --  destructor
-    virtual ~ContinuousLegendMethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ContinuousLegendMethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	int label_frequency_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ContinuousLegendMethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/Contour.cc b/src/visualisers/Contour.cc
index 9602441..1b19692 100644
--- a/src/visualisers/Contour.cc
+++ b/src/visualisers/Contour.cc
@@ -82,38 +82,48 @@ public :
 void Contour::operator()(Data& data, BasicGraphicsObjectContainer& parent)
 {
     try {
-    	if (this->setting_ )
-	{
+    	ContourLibrary* library = MagTranslator<string, ContourLibrary>()(setting_);
+
     		// Here we try call the Contour libry to set up visual properties...
     		MetaDataCollector needId,needAttributes;
     		map<string, string> attributes;
     		
-    		ContourLibrary library;
-		library.askId(needId);
+
+		library->askId(needId);
 		data.visit(needId);
-		if(library.checkId(needId,needAttributes))
+
+		if(library->checkId(needId,needAttributes))
 		{			
     			data.visit(needAttributes);
-    			library.getAttributes(needAttributes,attributes);
+    			library->getAttributes(needAttributes,attributes);
     			this->set(attributes);
-    		}
     	}
+		else {
+			library->getAttributes(needId,attributes);
+		}
+		delete library;
+
+
     data.getReady(parent.transformation());
-	MatrixHandler* matrix = new MatrixHandler(data.matrix());
-	MatrixHandler* box =  parent.transformation().prepareData(*matrix);
+
+	MatrixHandler* box =  data.matrix().getReady(parent.transformation());
+
 	if ( !box->rows() ||  !box->columns() ) {
+		(*this->contour_)(data, parent);
+		(*this->grid_)(data, parent);
+		matrix_ = 0;
 		delete box;
 		return;
 	}
 
 	matrix_ = (*this->method_).handler(*box, parent);
 
+
 	if (this->floor_ != -INT_MAX || this->ceiling_ != INT_MAX)
 		matrix_ = new MatrixTreshold(*matrix_, this->floor_, this->ceiling_);
 
 	(*this->contour_).adjust(matrix_->min(), matrix_->max());
 	(*this->contour_)(*matrix_, parent);
-
 	(*this->contour_)(data, parent);
 	if ( magCompare( this->grid_->getType(), "akima" ) )
 		(*this->grid_)(*matrix_, parent);
@@ -121,9 +131,13 @@ void Contour::operator()(Data& data, BasicGraphicsObjectContainer& parent)
 		(*this->grid_)(data, parent);
 	(*this->hilo_)(*matrix_, parent);
 
+
+
 // We do not need the box anymore!
 	delete box;
 
+
+
     }
     catch (MagicsException& e) 
     {
@@ -142,6 +156,10 @@ void  Contour::visit(Data& data, HistoVisitor& visitor)
 	
 }
 
+static SimpleObjectMaker<ContourLibrary, ContourLibrary> obstat("on");
+static SimpleObjectMaker<EcChartLibrary, ContourLibrary> ecchart("ecchart");
+static SimpleObjectMaker<NoContourLibrary, ContourLibrary> off("off");
+
 
 void Contour::visit(Data& data, LegendVisitor& legend)
 {
diff --git a/src/visualisers/Contour.h b/src/visualisers/Contour.h
index 0f088fa..8e71906 100644
--- a/src/visualisers/Contour.h
+++ b/src/visualisers/Contour.h
@@ -61,6 +61,7 @@ public:
    virtual void visit(Data&, LegendVisitor&);
     
    void visit(Data&, HistoVisitor&);
+   void  getReady(const LegendVisitor& legend) { contour_->legend_only_ = legend.only_; }
     
 
 protected:
diff --git a/src/visualisers/ContourAttributes.cc b/src/visualisers/ContourAttributes.cc
deleted file mode 100644
index b02b3a1..0000000
--- a/src/visualisers/ContourAttributes.cc
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ContourAttributes.cc
-    \brief Implementation of Contour Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "ContourAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-ContourAttributes::ContourAttributes():
-	legend_(ParameterManager::getBool("legend")),
-	contour_(MagTranslator<string, IsoPlot>().magics("contour")),
-	method_(MagTranslator<string, ContourMethod>().magics("contour_method")),
-	floor_(ParameterManager::getDouble("contour_interpolation_floor")),
-	ceiling_(ParameterManager::getDouble("contour_interpolation_ceiling")),
-	setting_(ParameterManager::getBool("contour_automatic_setting")),
-	library_path_(ParameterManager::getString("contour_automatic_library_path")),
-	hilo_(MagTranslator<string, HiLoBase>().magics("contour_hilo")),
-	grid_(MagTranslator<string, ValuePlotBase>().magics("contour_grid_value_plot"))
-{
-} 
-
-
-
-ContourAttributes::~ContourAttributes()
-{
-}
-
-    
-void ContourAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "contour";
-
-	setAttribute(prefix, "legend", legend_, params);
-	setMember(prefix, "contour", contour_, params);
-	setMember(prefix, "contour_method", method_, params);
-	setAttribute(prefix, "contour_interpolation_floor", floor_, params);
-	setAttribute(prefix, "contour_interpolation_ceiling", ceiling_, params);
-	setAttribute(prefix, "contour_automatic_setting", setting_, params);
-	setAttribute(prefix, "contour_automatic_library_path", library_path_, params);
-	setMember(prefix, "contour_hilo", hilo_, params);
-	setMember(prefix, "contour_grid_value_plot", grid_, params);
-}
-
-void ContourAttributes::copy(const ContourAttributes& other)
-{
-	legend_ = other.legend_;
-	contour_ = auto_ptr<IsoPlot>(other.contour_->clone());
-	method_ = auto_ptr<ContourMethod>(other.method_->clone());
-	floor_ = other.floor_;
-	ceiling_ = other.ceiling_;
-	setting_ = other.setting_;
-	library_path_ = other.library_path_;
-	hilo_ = auto_ptr<HiLoBase>(other.hilo_->clone());
-	grid_ = auto_ptr<ValuePlotBase>(other.grid_->clone());
-} 
-
-
-bool ContourAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "contour")  )
-		return true;
-
-	if ( acceptNode(node, contour_) )
-		return true;
-
-	if ( acceptNode(node, method_) )
-		return true;
-
-	if ( acceptNode(node, hilo_) )
-		return true;
-
-	if ( acceptNode(node, grid_) )
-		return true;
-	return false;
-}
-
-void ContourAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "contour") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), contour_, node);
-		setMember(node.name(), method_, node);
-		setMember(node.name(), hilo_, node);
-		setMember(node.name(), grid_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), contour_, *(*elt)); 
-		setMember((*elt)->name(), method_, *(*elt)); 
-		setMember((*elt)->name(), hilo_, *(*elt)); 
-		setMember((*elt)->name(), grid_, *(*elt)); 
-	}
-}
-
-void ContourAttributes::print(ostream& out)  const
-{
-	out << "ContourAttributes[";
-	out << "legend = " << legend_;
-	out << ", contour = " << *contour_;
-	out << ", method = " << *method_;
-	out << ", floor = " << floor_;
-	out << ", ceiling = " << ceiling_;
-	out << ", setting = " << setting_;
-	out << ", library_path = " << library_path_;
-	out << ", hilo = " << *hilo_;
-	out << ", grid = " << *grid_;
-	out << "]" << "\n";
-}
-
-
-void ContourAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"contour\"";
-	 out << ", \"legend\":";
-	 niceprint(out,legend_);
-	 out << ", \"contour\":";
-	 contour_->toxml(out);
-	 out << ", \"contour_method\":";
-	 method_->toxml(out);
-	 out << ", \"contour_interpolation_floor\":";
-	 niceprint(out,floor_);
-	 out << ", \"contour_interpolation_ceiling\":";
-	 niceprint(out,ceiling_);
-	 out << ", \"contour_automatic_setting\":";
-	 niceprint(out,setting_);
-	 out << ", \"contour_automatic_library_path\":";
-	 niceprint(out,library_path_);
-	 out << ", \"contour_hilo\":";
-	 hilo_->toxml(out);
-	 out << ", \"contour_grid_value_plot\":";
-	 grid_->toxml(out);
-}
-static MagicsParameter<string> legend("legend", "off", "");
-static MagicsParameter<string> contour("contour", "on", "");
-static MagicsParameter<string> contour_method("contour_method", "automatic", "");
-static MagicsParameter<double> contour_interpolation_floor("contour_interpolation_floor", -INT_MAX, "");
-static MagicsParameter<double> contour_interpolation_ceiling("contour_interpolation_ceiling", INT_MAX, "");
-static MagicsParameter<string> contour_automatic_setting("contour_automatic_setting", "off", "");
-static MagicsParameter<string> contour_automatic_library_path("contour_automatic_library_path", "", "");
-static MagicsParameter<string> contour_hilo("contour_hilo", "off", "");
-static MagicsParameter<string> contour_grid_value_plot("contour_grid_value_plot", "off", "");
-#include "IsoPlot.h"
-static SimpleObjectMaker<IsoPlot, IsoPlot> on_IsoPlot("on");
-static SimpleObjectMaker<IsoPlot, IsoPlot> isoline_IsoPlot("isoline");
-static SimpleObjectMaker<NoIsoPlot, IsoPlot> off_NoIsoPlot("off");
-static SimpleObjectMaker<NoIsoPlot, IsoPlot> noisoline_NoIsoPlot("noisoline");
-#include "Akima474Method.h"
-#include "ContourMethod.h"
-#include "AutomaticContourMethod.h"
-#include "Akima760Method.h"
-static SimpleObjectMaker<AutomaticContourMethod, ContourMethod> automatic_AutomaticContourMethod("automatic");
-static SimpleObjectMaker<SampleContourMethod, ContourMethod> sample_SampleContourMethod("sample");
-static SimpleObjectMaker<ContourMethod, ContourMethod> linear_ContourMethod("linear");
-static SimpleObjectMaker<Akima760Method, ContourMethod> akima760_Akima760Method("akima760");
-static SimpleObjectMaker<Akima474Method, ContourMethod> akima474_Akima474Method("akima474");
-#include "HiLo.h"
-static SimpleObjectMaker<HiLo, HiLoBase> on_HiLo("on");
-static SimpleObjectMaker<HiLo, HiLoBase> hilo_HiLo("hilo");
-static SimpleObjectMaker<NoHiLo, HiLoBase> off_NoHiLo("off");
-static SimpleObjectMaker<NoHiLo, HiLoBase> nohilo_NoHiLo("nohilo");
-static SimpleObjectMaker<HighHiLo, HiLoBase> hi_HighHiLo("hi");
-static SimpleObjectMaker<HighHiLo, HiLoBase> high_HighHiLo("high");
-static SimpleObjectMaker<LowHiLo, HiLoBase> lo_LowHiLo("lo");
-static SimpleObjectMaker<LowHiLo, HiLoBase> low_LowHiLo("low");
-#include "ValuePlot.h"
-static SimpleObjectMaker<ValuePlot, ValuePlotBase> on_ValuePlot("on");
-static SimpleObjectMaker<ValuePlot, ValuePlotBase> gridvalues_ValuePlot("gridvalues");
-static SimpleObjectMaker<NoValuePlot, ValuePlotBase> off_NoValuePlot("off");
-static SimpleObjectMaker<NoValuePlot, ValuePlotBase> nogridvalues_NoValuePlot("nogridvalues");
diff --git a/src/visualisers/ContourAttributes.h b/src/visualisers/ContourAttributes.h
deleted file mode 100644
index 10ba127..0000000
--- a/src/visualisers/ContourAttributes.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ContourAttributes.h
-    \brief Definition of Contour Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef ContourAttributes_H
-#define ContourAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "ValuePlotBase.h"
-#include "ContourMethod.h"
-#include "IsoPlot.h"
-#include "HiLoBase.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ContourAttributes 
-{
-public:
-//  --  constructor
-    ContourAttributes();
-    
-//  --  destructor
-    virtual ~ContourAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ContourAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	bool legend_;
-	auto_ptr<IsoPlot> contour_;
-	auto_ptr<ContourMethod> method_;
-	double floor_;
-	double ceiling_;
-	bool setting_;
-	string library_path_;
-	auto_ptr<HiLoBase> hilo_;
-	auto_ptr<ValuePlotBase> grid_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ContourAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ContourLibrary.cc b/src/visualisers/ContourLibrary.cc
index f75332e..b3ad849 100644
--- a/src/visualisers/ContourLibrary.cc
+++ b/src/visualisers/ContourLibrary.cc
@@ -142,3 +142,171 @@ bool ContourLibrary::setInfoObject(string type)
 	else 
 		return false;
 }
+
+#include "MagConfig.h"
+
+void  EcChartData::callback(const string& name, const json_spirit::Value& value)
+{
+	int iname= atoi(name.c_str());
+	json_spirit::Object object = value.get_value<json_spirit::Object>();
+	data_.insert(make_pair(iname, map<string, string>()));
+	for (vector<json_spirit::Pair>::const_iterator entry = object.begin(); entry !=  object.end(); ++entry) {
+			 data_[iname].insert(make_pair(entry->name_, convert(entry->value_)));
+	}
+}
+
+map<string,string> EcChartData::getMap(const int key)
+{
+	return data_[key];
+}
+
+void  EcChartSetData::callback(const string& name, const json_spirit::Value& value)
+{
+	json_spirit::Array values = value.get_value<json_spirit::Array>();
+	data_.insert(make_pair(name, vector<int>()));
+
+	for (unsigned int i = 0; i < values.size(); i++) {
+		data_[name].push_back(values[i].get_value<int>());
+	}
+}
+
+bool EcChartSetData::hasKey(const string& key)
+{
+	return data_.find(key) != data_.end();
+}
+
+vector<int> EcChartSetData::getSet(const string& key)
+{
+	return data_[key];
+}
+
+EcChartLibrary::EcChartLibrary():
+			contours_("contours"),
+			default_set_("default")
+{
+	keys_.push_back("paramId");
+	keys_.push_back("units");
+	keys_.push_back("typeOfLevel");
+	keys_.push_back("level");
+	keys_.push_back("marsClass");
+	keys_.push_back("marsType");
+	keys_.push_back("marsStream");
+
+	for (int i = 0; i <keys_.size(); i++){	
+        index_.insert(make_pair(keys_[i],EcChartSetData(keys_[i])));
+    }
+
+	
+
+}
+
+EcChartLibrary::~EcChartLibrary()
+{
+	
+}
+
+void EcChartLibrary::setCriteria(MetaDataCollector& request, const string& criteria)
+{
+	request[criteria] = "";
+	MetaDataAttribute attribute;
+	attribute.setSource(MetaDataAttribute::GribApiSource);
+	request.setAttribute(criteria, attribute);
+}
+
+void EcChartLibrary::askId(MetaDataCollector& request)
+{
+
+
+	//main keywords
+	setCriteria(request, "paramId");
+	setCriteria(request, "typeOfLevel");
+	setCriteria(request, "level");
+	setCriteria(request, "units");
+
+	//auxiliary keywords
+	setCriteria(request, "stepRange");
+	setCriteria(request, "number");
+	setCriteria(request, "marsClass");
+	setCriteria(request, "marsType");
+	setCriteria(request, "marsStream");
+}
+
+// se the map to set the contour!
+void EcChartLibrary::getAttributes(MetaDataCollector& data, map<string, string>& contour)
+{
+	
+	//find the best contour definition
+	vector<int>::iterator it;
+	vector<int> result_set;
+	map<string,EcChartSetData>::iterator ikey;
+
+	//initial result set is units's contours (OBLIGATORY)
+	ikey= index_.find("units");
+	//if (data["units"]=="" || !ikey->second.hasKey(data["units"])) return;
+	result_set= vector<int>(ikey->second.getSet(data["units"]));
+
+	//interset with paramId's contours (OPTIONAL)
+	if (result_set.size()>1)
+	{
+		ikey= index_.find("paramId");
+		if (data["paramId"]!="" && ikey->second.hasKey(data["paramId"]))
+		{
+			vector<int> first_set= vector<int>(result_set);
+			vector<int> second_set= vector<int>(ikey->second.getSet(data["paramId"]));
+			it=std ::set_intersection (first_set.begin(),first_set.end(),second_set.begin(),second_set.end(),result_set.begin());
+			result_set.resize(it-result_set.begin());
+			if (result_set.size()==0) result_set= first_set;
+		}
+	}
+
+	//interset with eccharts layers's default contours (OPTIONAL)
+	if (result_set.size()>1 && default_set_.hasKey("default"))
+	{
+		vector<int> first_set= vector<int>(result_set);
+		vector<int> second_set= vector<int>(default_set_.getSet("default"));
+		it=std ::set_intersection (first_set.begin(),first_set.end(),second_set.begin(),second_set.end(),result_set.begin());
+    	result_set.resize(it-result_set.begin());
+		if (result_set.size()==0) result_set= first_set;
+	}
+
+
+	//for each GRIB key (excluding paramId and units that have just been checked, OPTIONAL)
+	for (int i = 2; i<keys_.size() && result_set.size()>1; i++)
+	{
+		//result set is intersection with GRIB key contours
+		string key= keys_[i];
+		ikey= index_.find(key);
+		if (data[key]!="" && ikey->second.hasKey(data[key]))
+		{
+			vector<int> first_set= vector<int>(result_set);
+			vector<int> second_set= vector<int>(ikey->second.getSet(data[key]));
+			it=std ::set_intersection (first_set.begin(),first_set.end(),second_set.begin(),second_set.end(),result_set.begin());
+			result_set.resize(it-result_set.begin());
+
+			//if intersection is empty, restore previous result set
+			if (result_set.size()==0) result_set= first_set;
+		}
+	}
+
+
+	//Is there at least one contour left?
+	if (result_set.size()>0)
+	{
+		//set the contour parameters
+		map<string, string> cont= contours_.getMap(result_set[0]);
+		for (map<string, string>::const_iterator i = cont.begin(); i != cont.end(); ++i)
+		{
+			contour[i->first]= i->second;
+			MagLog::debug() << " EcChartLibrary::getAttributes contour[" << i->first << "]= " << i->second << endl;
+		}
+	}
+	else
+		MagLog::info() <<" EcChartLibrary::getAttributes: NO CONTOUR MATCHED!" << endl;
+}
+
+void EcChartLibrary::print(ostream&) const
+{
+
+
+}
+
diff --git a/src/visualisers/ContourLibrary.h b/src/visualisers/ContourLibrary.h
index 236510e..3e36dc7 100644
--- a/src/visualisers/ContourLibrary.h
+++ b/src/visualisers/ContourLibrary.h
@@ -14,6 +14,8 @@
 
 #include "magics.h"
 
+#include "MagTranslator.h"
+#include "MagConfig.h"
 
 namespace magics {
 
@@ -26,13 +28,14 @@ public:
 	ContourLibrary();
 	virtual ~ContourLibrary();
 
-	// sete the meata dat to be collected 
-	void askId(MetaDataCollector&);
+	// set the meta data to be collected
+	virtual void askId(MetaDataCollector&);
+
+	virtual bool checkId(MetaDataCollector&,MetaDataCollector&);
 
-	bool checkId(MetaDataCollector&,MetaDataCollector&);
 
 	// se the map to set the contour!
-	void getAttributes(MetaDataCollector&, map<string, string>&);
+	virtual void getAttributes(MetaDataCollector&, map<string, string>&);
 	
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
@@ -55,5 +58,125 @@ private:
 
 };
 
+
+
+class EcChartData : public MagConfig
+{
+
+public:
+	EcChartData(const string& name) {
+		path_ = getEnvVariable("MAGPLUS_HOME") + MAGPLUS_PATH_TO_SHARE_ + "/" + name + ".json";
+		MagConfigHandler(path_, *this); }
+
+	~EcChartData() {}
+
+	void callback(const string&, const json_spirit::Value&);
+	map<string, string> getMap(const int);
+	void init();
+	map<int, map<string, string> > data_;
+	string path_;
+
+	friend ostream& operator<<(ostream& s,const EcChartData& p)
+	{
+		for (map<int, map<string, string> >::const_iterator d = p.data_.begin(); d != p.data_.end(); ++d) {
+			s << d->first << "[" << endl;
+			for (map<string, string>::const_iterator i = d->second.begin(); i != d->second.end(); ++i) {
+				s << "    " << i->first << " = " << i->second << endl;
+			}
+			s << "]" << endl;
+		}
+		s << "read from " << p.path_;
+	}
+
+};
+
+class EcChartSetData : public MagConfig
+{
+public:
+	EcChartSetData(const string& name) {
+		path_ = getEnvVariable("MAGPLUS_HOME") + MAGPLUS_PATH_TO_SHARE_ + "/" + name + ".json";
+		MagConfigHandler(path_, *this); }
+	~EcChartSetData() {}
+
+	void callback(const string&, const json_spirit::Value&);
+	bool hasKey(const string&);
+	vector<int> getSet(const string&);
+
+	void init();
+	map<string, vector<int> > data_;
+	string path_;
+
+	friend ostream& operator<<(ostream& s,const EcChartSetData& p)
+	{
+		for (map<string, vector<int> >::const_iterator d = p.data_.begin(); d != p.data_.end(); ++d) {
+			s << d->first << "[" << endl;
+			for (vector<int>::const_iterator i = d->second.begin(); i != d->second.end(); ++i) {
+				s << "    " << *i << endl;
+			}
+			s << "]" << endl;
+		}
+		s << "read from " << p.path_;
+	}
+
+};
+
+class EcChartLibrary : public ContourLibrary {
+
+
+public:
+	EcChartLibrary();
+	virtual ~EcChartLibrary();
+
+	// set the meta data to be collected
+	void askId(MetaDataCollector&);
+
+	bool checkId(MetaDataCollector&,MetaDataCollector&) { false; }
+	void setCriteria(MetaDataCollector&, const string&);
+
+	// set the map to set the contour!
+	void getAttributes(MetaDataCollector&, map<string, string>&);
+
+
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const;
+
+	EcChartData contours_;
+	EcChartSetData default_set_;
+	vector<string> keys_;
+	map<string,EcChartSetData> index_;
+
+};
+
+class NoContourLibrary : public ContourLibrary {
+
+public:
+	NoContourLibrary() {}
+	virtual ~NoContourLibrary() {}
+
+	// sete the meata dat to be collected
+	void askId(MetaDataCollector&) {}
+
+	bool checkId(MetaDataCollector&,MetaDataCollector&) { return false; }
+
+	// se the map to set the contour!
+	void getAttributes(MetaDataCollector&, map<string, string>&) {}
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const {}
+
+};
+
+template <>
+class MagTranslator<string, ContourLibrary > {
+public:
+	ContourLibrary* operator()(const string& val )
+	{
+		 return SimpleObjectMaker<ContourLibrary >::create(val);
+	}
+
+};
 } // namespace magics
 #endif
diff --git a/src/visualisers/CountSelectionType.cc b/src/visualisers/CountSelectionType.cc
index f05dedc..a42213c 100644
--- a/src/visualisers/CountSelectionType.cc
+++ b/src/visualisers/CountSelectionType.cc
@@ -126,12 +126,12 @@ void CountSelectionType::calculate(double min, double max, bool)
         first += inc;
         double epsilon = inc/10000.0;
        
-        for (double val = first; val < maxi; val += inc) {
+        for (double val = first; val < maxi; val += inc) {         
             // special case - if the value is close to zero then set it to precisely zero to avoid later formatting issues
             if (fabs(val) < epsilon)
                 push_back(0.0);
             else
-                push_back(val);
+            push_back(val);                
         }
 	
         push_back(maxi);
diff --git a/src/visualisers/CountSelectionTypeAttributes.h b/src/visualisers/CountSelectionTypeAttributes.h
deleted file mode 100644
index 25c7aa6..0000000
--- a/src/visualisers/CountSelectionTypeAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file CountSelectionTypeAttributes.h
-    \brief Definition of CountSelectionType Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef CountSelectionTypeAttributes_H
-#define CountSelectionTypeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class CountSelectionTypeAttributes 
-{
-public:
-//  --  constructor
-    CountSelectionTypeAttributes();
-    
-//  --  destructor
-    virtual ~CountSelectionTypeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const CountSelectionTypeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	int levelCount_;
-	int tolerance_;
-	double reference_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const CountSelectionTypeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/Curve.cc b/src/visualisers/Curve.cc
index ca2dc9b..7b4da1c 100644
--- a/src/visualisers/Curve.cc
+++ b/src/visualisers/Curve.cc
@@ -41,6 +41,10 @@ Curve::Curve()
 	missingMethods_["ignore"] = &Curve::ignore;
 	missingMethods_["join"] = &Curve::join;
 	missingMethods_["drop"] = &Curve::drop;
+
+	curveMethods_["straight"] = &Curve::straight;
+	curveMethods_["stepped"] = &Curve::stepped;
+
 }
 
 
@@ -87,8 +91,12 @@ bool  Curve::missing(CustomisedPoint& point) const
 	return false;
 }
 
+void  Curve::stepped(const UserPoint& point, vector<UserPoint>& out)
+{
 
 
+}
+
 void Curve::operator()(Data& data, BasicGraphicsObjectContainer& task)
 {
 
@@ -109,7 +117,7 @@ void Curve::operator()(Data& data, BasicGraphicsObjectContainer& task)
 	bool last_out = false;	
 	
 	vector<PaperPoint> missing, sv;
-	PaperPoint last, current;
+	PaperPoint last, current, toadd;
 	
 	CustomisedPointsList::iterator point = points.begin();
 
@@ -121,42 +129,69 @@ void Curve::operator()(Data& data, BasicGraphicsObjectContainer& task)
     		break;
     }
     
+    if ( point == points.end() )
+    	return;
 
+    PaperPoint last_current = transformation(UserPoint((**point)["x"], (**point)["y"]));
 
     while ( point != points.end() ) {
 
+    	vector<UserPoint> todo;
     	UserPoint up((**point)["x"], (**point)["y"]);
 
-    	current = transformation(up);
 
-		if (!this->missing(**point) ) {
-			if ( last_out ) {
-				bool result;
-				std::map<string, MissingMethod>::iterator method = missingMethods_.find(lowerCase(missing_mode_));
-				result = (method == missingMethods_.end() ) ?
-							ignore(last, missing.front(), missing, task) :
-							(this->*method->second)(last, current, missing, task);
-				if ( result ) {
-					if ( line_ )
-						transformation(*curve_, task);
-					curve_ = newCurve(task);
-				}
-				missing.clear();
-			}
+    		current = transformation(up);
+    		if (!this->missing(**point) ) {
+    			if ( last_out ) {
+    				bool result;
+    				std::map<string, MissingMethod>::iterator method = missingMethods_.find(lowerCase(missing_mode_));
+    				result = (method == missingMethods_.end() ) ?
+    						ignore(last, missing.front(), missing, task) :
+    						(this->*method->second)(last, current, missing, task);
+    				if ( result ) {
+    					if ( line_ )
+    						transformation(*curve_, task);
+    					curve_ = newCurve(task);
+    				}
+    				missing.clear();
+    			}
+
+    			if ( magCompare(plot_method_, "stepped" ) ) {
+    				if ( current.x_ != last_current.x_ && current.y_ != last_current.y_ ) {
+    					toadd = PaperPoint((current.x_ + last_current.x_)/2., last_current.y_);
+    					curve_->push_back(toadd);
+    					sv.push_back(toadd);
+    					toadd = PaperPoint((current.x_ + last_current.x_)/2., current.y_);
+    				}
+                    else 
+                        toadd = current;
+
+    			}
+    			else
+    				toadd = current;
+
+    			last = toadd;
+    			last_current = current;
+
+    			last_out = false;
+    			curve_->push_back(toadd);
+    			sv.push_back(toadd);
+
+    		}
+    		else {
+    			missing.push_back( current );
+    			last_out = true;
+    		}
 
-			last = current;
-			last_out = false;
-			curve_->push_back(current);
-			sv.push_back(current);
-			  
-		} 
-		else {
-			missing.push_back( current );
-			last_out = true;
-		} 
 		++point;
 
 	}
+    // add the last current if stepped method ..
+    if ( magCompare(plot_method_, "stepped" ) ) {
+    	curve_->push_back(current);
+    	sv.push_back(current);
+    }
+
     if ( missing.empty() == false ) {
     	std::map<string, MissingMethod>::iterator method = missingMethods_.find(lowerCase(missing_mode_));
     	if ( method == missingMethods_.end() )
@@ -203,6 +238,7 @@ void CurveArea::operator()(Data& data, BasicGraphicsObjectContainer& task)
 	CustomisedPointsList::iterator point = points.begin();
 
     while ( point != points.end() ) {
+
     	if ( this->missing(**point) ) {
     		++point;
     	}
@@ -257,7 +293,6 @@ void CurveArea::operator()(Data& data, BasicGraphicsObjectContainer& task)
     }
 
 
-
 	// apply the symbol
 
 	(*shade_)(*curve_);
@@ -325,6 +360,9 @@ void Curve::symbol(vector<PaperPoint>& points, BasicGraphicsObjectContainer& out
     symbol->setMarker(symbol_marker_);
     symbol->setHeight(symbol_height_);
     symbol->setColour(*symbol_colour_);
+    symbol->outline(outline_, *outline_colour_, outline_thickness_, outline_style_);
+
+
 	const Transformation& transformation = out.transformation();
 
     for ( vector<PaperPoint>::const_iterator point = points.begin(); point != points.end(); ++point) {
@@ -344,6 +382,7 @@ void Curve::legend_symbol(PaperPoint& point, BasicGraphicsObjectContainer& task)
     symbol->setMarker(symbol_marker_);
     symbol->setHeight(symbol_height_);
     symbol->setColour(*symbol_colour_);
+    symbol->outline(outline_, *outline_colour_, outline_thickness_, outline_style_);
     symbol->push_back(point);
 
     task.push_back(symbol);
diff --git a/src/visualisers/Curve.h b/src/visualisers/Curve.h
index 4a44706..2f45959 100644
--- a/src/visualisers/Curve.h
+++ b/src/visualisers/Curve.h
@@ -66,6 +66,10 @@ public:
     void legend_symbol(PaperPoint& point, BasicGraphicsObjectContainer& task);
 
     typedef bool (Curve::*MissingMethod)(const PaperPoint&, const PaperPoint&, const vector<PaperPoint>&, BasicGraphicsObjectContainer&);
+    typedef void (Curve::*CurveMethod)(const UserPoint&, vector<UserPoint>& );
+    void straight(const UserPoint& point, vector<UserPoint>& out) { out.push_back(point); }
+    void stepped(const UserPoint& point, vector<UserPoint>& out);
+
     virtual void legend(Polyline&) {}
     bool ignore(const PaperPoint&, const PaperPoint&, const vector<PaperPoint>&, BasicGraphicsObjectContainer&);
     bool join(const PaperPoint&, const PaperPoint&, const vector<PaperPoint>&, BasicGraphicsObjectContainer&);
@@ -76,6 +80,7 @@ protected:
 	 virtual void print(ostream&) const; 
 	 bool  missing(CustomisedPoint&) const;
 	 std::map<string, MissingMethod> missingMethods_;
+	 std::map<string, CurveMethod> curveMethods_;
 private:
     //! Copy constructor - No copy allowed
 	Curve(const Curve&);
diff --git a/src/visualisers/DateAxis.cc b/src/visualisers/DateAxis.cc
index 2726c27..4a93e5c 100644
--- a/src/visualisers/DateAxis.cc
+++ b/src/visualisers/DateAxis.cc
@@ -270,7 +270,7 @@ void DateAxisMethod::years(AxisItems& list)
 				list.push_back(new AxisDateItem(label - base_, label));
 				tick = DateTime(date, MagTime(0, 0, 0));
 
-				list.push_back(new AxisTickItem(tick - base_));
+				list.push_back(new AxisTickItem(tick - base_, ""));
 
 				if (frequency == 1) {
 					for ( int i = 0; i < 4; i++) {
@@ -303,7 +303,7 @@ void DateAxisMethod::years_label(AxisItems& in, AxisItems& list)
 		}
 		last =  year->label();
 		year->level(position_);
-		year->height(year_height_);
+		year->height(year_height_, year_font_, year_font_style_);
 		year->colour(year_colour_->name());
 		list.push_back(year);
 	}
@@ -352,7 +352,7 @@ void DateAxisMethod::months(AxisItems& list)
 			list.push_back(new AxisDateItem(label - base_, label));
 			tick = DateTime(date, MagTime(0, 0, 0));
 
-			list.push_back(new AxisTickItem(tick - base_));
+			list.push_back(new AxisTickItem(tick - base_, ""));
 
 
 
@@ -376,9 +376,9 @@ void DateAxisMethod::months_label(AxisItems& in, AxisItems& list)
 	if ( !months_ )
 		return;
 	map <string, pair<string, int> > formats;
-	formats["one"] = make_pair("%b", 1);
-	formats["full"] = make_pair("%B", -1);
-	formats["three"] = make_pair("%B", 3);
+	formats["one"] = std::make_pair("%b", 1);
+	formats["full"] = std::make_pair("%B", -1);
+	formats["three"] = std::make_pair("%B", 3);
 	AxisItem* last = 0;
 	AxisItem* current = 0;
 
@@ -405,7 +405,8 @@ void DateAxisMethod::months_label(AxisItems& in, AxisItems& list)
 
 		month->colour(month_colour_->name());
 		month->level(position_);
-		month->height(month_height_);
+		month->height(month_height_, month_font_, month_font_style_);
+
 
 		list.push_back(month);
 	}
@@ -456,7 +457,7 @@ void DateAxisMethod::days(AxisItems& list)
 			list.push_back(new AxisDateItem(label - from_, label));
 			tick = DateTime(date, MagTime(0, 0, 0));
 
-			list.push_back(new AxisTickItem(tick - from_));
+			list.push_back(new AxisTickItem(tick - from_, ""));
 			if ( frequency == 1 ) {
 				for (int i = 6; i < 24; i+=6 ) {
 				tick = DateTime(date, MagTime(i, 0, 0));
@@ -479,14 +480,14 @@ void DateAxisMethod::days_label(AxisItems& in, AxisItems& list)
 	map <string, pair<string, int> > formats;
 
 	if ( magCompare(days_, "number" ) ) {
-		formats["one"] = make_pair("%e", -1);
-		formats["three"] = make_pair("%e", -1);
-		formats["full"] = make_pair("%e", -1);
+		formats["one"] = std::make_pair("%e", -1);
+		formats["three"] = std::make_pair("%e", -1);
+		formats["full"] = std::make_pair("%e", -1);
 	}
 	else {
-		formats["one"] = make_pair("%a", 1);
-		formats["three"] = make_pair("%a", 3);
-		formats["full"] = make_pair("%A", -1);
+		formats["one"] = std::make_pair("%a", 1);
+		formats["three"] = std::make_pair("%a", 3);
+		formats["full"] = std::make_pair("%A", -1);
 	}
 
 
@@ -520,7 +521,7 @@ void DateAxisMethod::days_label(AxisItems& in, AxisItems& list)
 		last = day->label();
 
 		day->level(position_);
-		day->height(day_height_);
+		day->height(day_height_, day_font_, day_font_style_);
 
 		list.push_back(day);
 	}
@@ -560,7 +561,7 @@ void DateAxisMethod::hours(AxisItems& list)
 				tick = DateTime(date, MagTime(i, 0, 0));
 				if ( i%frequency == 0) {
 					list.push_back(new AxisDateItem(tick - base_, tick));
-					list.push_back(new AxisTickItem(tick - base_));
+					list.push_back(new AxisTickItem(tick - base_, ""));
 				}
 				else {
 					list.push_back(new AxisMinorTickItem(tick - base_));
@@ -583,7 +584,7 @@ void DateAxisMethod::hours_label(AxisItems& in, AxisItems& list)
 		}
 		last = hour->label();
 		hour->level(position_);
-		hour->height(hour_height_);
+		hour->height(hour_height_, hour_font_, hour_font_style_);
 		hour->colour(hour_colour_->name());
 		list.push_back(hour);
 	}
diff --git a/src/visualisers/DefinitionTable.h b/src/visualisers/DefinitionTable.h
index 00aed87..516161d 100644
--- a/src/visualisers/DefinitionTable.h
+++ b/src/visualisers/DefinitionTable.h
@@ -80,6 +80,6 @@ private:
 
 };
 
-#include "DefinitionTable.cc"
+#include "DefinitionTable.hcc"
 } // namespace magics
 #endif
diff --git a/src/visualisers/DefinitionTable.cc b/src/visualisers/DefinitionTable.hcc
similarity index 100%
rename from src/visualisers/DefinitionTable.cc
rename to src/visualisers/DefinitionTable.hcc
diff --git a/src/visualisers/DotPolyShadingMethodAttributes.h b/src/visualisers/DotPolyShadingMethodAttributes.h
deleted file mode 100644
index fe5a2ed..0000000
--- a/src/visualisers/DotPolyShadingMethodAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file DotPolyShadingMethodAttributes.h
-    \brief Definition of DotPolyShadingMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef DotPolyShadingMethodAttributes_H
-#define DotPolyShadingMethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class DotPolyShadingMethodAttributes 
-{
-public:
-//  --  constructor
-    DotPolyShadingMethodAttributes();
-    
-//  --  destructor
-    virtual ~DotPolyShadingMethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const DotPolyShadingMethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double size_;
-	double max_density_;
-	double min_density_;
-	double angle_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const DotPolyShadingMethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/EfiGraphAttributes.cc b/src/visualisers/EfiGraphAttributes.cc
deleted file mode 100644
index 42c0168..0000000
--- a/src/visualisers/EfiGraphAttributes.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file EfiGraphAttributes.cc
-    \brief Implementation of EfiGraph Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "EfiGraphAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-EfiGraphAttributes::EfiGraphAttributes():
-	box_colour_(ParameterManager::getStringArray("efi_box_colour_array")),
-	border_colour_(MagTranslator<string, Colour>().magics("efi_box_border_colour")),
-	border_thickness_(ParameterManager::getInt("efi_box_border_thickness")),
-	border_style_(MagTranslator<string, LineStyle>().magics("efi_box_border_line_style")),
-	normal_colour_(MagTranslator<string, Colour>().magics("efi_normal_colour")),
-	normal_thickness_(ParameterManager::getInt("efi_normal_thickness")),
-	normal_style_(MagTranslator<string, LineStyle>().magics("efi_normal_line_style")),
-	font_(ParameterManager::getString("efi_font")),
-	font_size_(ParameterManager::getDouble("efi_font_size")),
-	font_style_(ParameterManager::getString("efi_font_style")),
-	font_colour_(MagTranslator<string, Colour>().magics("efi_font_colour"))
-{
-} 
-
-
-
-EfiGraphAttributes::~EfiGraphAttributes()
-{
-}
-
-    
-void EfiGraphAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "efi";
-
-	setAttribute(prefix, "efi_box_colour_array", box_colour_, params);
-	setAttribute(prefix, "efi_box_border_colour", border_colour_, params);
-	setAttribute(prefix, "efi_box_border_thickness", border_thickness_, params);
-	setAttribute(prefix, "efi_box_border_line_style", border_style_, params);
-	setAttribute(prefix, "efi_normal_colour", normal_colour_, params);
-	setAttribute(prefix, "efi_normal_thickness", normal_thickness_, params);
-	setAttribute(prefix, "efi_normal_line_style", normal_style_, params);
-	setAttribute(prefix, "efi_font", font_, params);
-	setAttribute(prefix, "efi_font_size", font_size_, params);
-	setAttribute(prefix, "efi_font_style", font_style_, params);
-	setAttribute(prefix, "efi_font_colour", font_colour_, params);
-}
-
-void EfiGraphAttributes::copy(const EfiGraphAttributes& other)
-{
-	box_colour_ = other.box_colour_;
-	border_colour_ = auto_ptr<Colour>(other.border_colour_->clone());
-	border_thickness_ = other.border_thickness_;
-	border_style_ = other.border_style_;
-	normal_colour_ = auto_ptr<Colour>(other.normal_colour_->clone());
-	normal_thickness_ = other.normal_thickness_;
-	normal_style_ = other.normal_style_;
-	font_ = other.font_;
-	font_size_ = other.font_size_;
-	font_style_ = other.font_style_;
-	font_colour_ = auto_ptr<Colour>(other.font_colour_->clone());
-} 
-
-
-bool EfiGraphAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "efigraph")  )
-		return true;
-	return false;
-}
-
-void EfiGraphAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "efigraph") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void EfiGraphAttributes::print(ostream& out)  const
-{
-	out << "EfiGraphAttributes[";
-	out << "box_colour = " << box_colour_;
-	out << ", border_colour = " << *border_colour_;
-	out << ", border_thickness = " << border_thickness_;
-	out << ", border_style = " << border_style_;
-	out << ", normal_colour = " << *normal_colour_;
-	out << ", normal_thickness = " << normal_thickness_;
-	out << ", normal_style = " << normal_style_;
-	out << ", font = " << font_;
-	out << ", font_size = " << font_size_;
-	out << ", font_style = " << font_style_;
-	out << ", font_colour = " << *font_colour_;
-	out << "]" << "\n";
-}
-
-
-void EfiGraphAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"efigraph\"";
-	 out << ", \"efi_box_colour_array\":";
-	 niceprint(out,box_colour_);
-	 out << ", \"efi_box_border_colour\":";
-	 niceprint(out, *border_colour_);
-	 out << ", \"efi_box_border_thickness\":";
-	 niceprint(out,border_thickness_);
-	 out << ", \"efi_box_border_line_style\":";
-	 niceprint(out,border_style_);
-	 out << ", \"efi_normal_colour\":";
-	 niceprint(out, *normal_colour_);
-	 out << ", \"efi_normal_thickness\":";
-	 niceprint(out,normal_thickness_);
-	 out << ", \"efi_normal_line_style\":";
-	 niceprint(out,normal_style_);
-	 out << ", \"efi_font\":";
-	 niceprint(out,font_);
-	 out << ", \"efi_font_size\":";
-	 niceprint(out,font_size_);
-	 out << ", \"efi_font_style\":";
-	 niceprint(out,font_style_);
-	 out << ", \"efi_font_colour\":";
-	 niceprint(out, *font_colour_);
-}
-static MagicsParameter<stringarray> efi_box_colour_array("efi_box_colour_array", stringarray(), "");
-static MagicsParameter<string> efi_box_border_colour("efi_box_border_colour", "black", "");
-static MagicsParameter<int> efi_box_border_thickness("efi_box_border_thickness", 1, "");
-static MagicsParameter<string> efi_box_border_line_style("efi_box_border_line_style", "solid", "");
-static MagicsParameter<string> efi_normal_colour("efi_normal_colour", "black", "");
-static MagicsParameter<int> efi_normal_thickness("efi_normal_thickness", 4, "");
-static MagicsParameter<string> efi_normal_line_style("efi_normal_line_style", "solid", "");
-static MagicsParameter<string> efi_font("efi_font", "sansserif", "");
-static MagicsParameter<double> efi_font_size("efi_font_size", 0.25, "");
-static MagicsParameter<string> efi_font_style("efi_font_style", "", "");
-static MagicsParameter<string> efi_font_colour("efi_font_colour", "black", "");
diff --git a/src/visualisers/EpsCloudAttributes.cc b/src/visualisers/EpsCloudAttributes.cc
deleted file mode 100644
index 9f6328c..0000000
--- a/src/visualisers/EpsCloudAttributes.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file EpsCloudAttributes.cc
-    \brief Implementation of EpsCloud Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "EpsCloudAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-EpsCloudAttributes::EpsCloudAttributes():
-	colour_(MagTranslator<string, Colour>().magics("eps_rose_cloud_colour")),
-	border_colour_(MagTranslator<string, Colour>().magics("eps_rose_cloud_border_colour"))
-{
-} 
-
-
-
-EpsCloudAttributes::~EpsCloudAttributes()
-{
-}
-
-    
-void EpsCloudAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "eps_rose_cloud";
-	prefix[1] = "eps";
-
-	setAttribute(prefix, "eps_rose_cloud_colour", colour_, params);
-	setAttribute(prefix, "eps_rose_cloud_border_colour", border_colour_, params);
-}
-
-void EpsCloudAttributes::copy(const EpsCloudAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	border_colour_ = auto_ptr<Colour>(other.border_colour_->clone());
-} 
-
-
-bool EpsCloudAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "epscloud")  )
-		return true;
-	return false;
-}
-
-void EpsCloudAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "epscloud") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void EpsCloudAttributes::print(ostream& out)  const
-{
-	out << "EpsCloudAttributes[";
-	out << "colour = " << *colour_;
-	out << ", border_colour = " << *border_colour_;
-	out << "]" << "\n";
-}
-
-
-void EpsCloudAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"epscloud\"";
-	 out << ", \"eps_rose_cloud_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"eps_rose_cloud_border_colour\":";
-	 niceprint(out, *border_colour_);
-}
-static MagicsParameter<string> eps_rose_cloud_colour("eps_rose_cloud_colour", "black", "");
-static MagicsParameter<string> eps_rose_cloud_border_colour("eps_rose_cloud_border_colour", "none", "");
diff --git a/src/visualisers/EpsGraph.cc b/src/visualisers/EpsGraph.cc
index a925841..35f3543 100644
--- a/src/visualisers/EpsGraph.cc
+++ b/src/visualisers/EpsGraph.cc
@@ -506,20 +506,22 @@ public:
 class EpsControl : public LegendEntry
 {
 public:
-	EpsControl(double resolution, const string& type) : LegendEntry(" ")
+	EpsControl(double resolution, const string& type, double height) : 
+			LegendEntry(" "), legend_size_(height)
 	{
 		ostringstream title;
 		// carefull here this text is depending of the resolution! 
 		MagLog::dev() << "EpsControl=>resolution" << resolution << endl; 
         int km = maground(40000/(2*(resolution+1)+2));  
-		title << "EPS Control(" + tostring(km) + " km)";
+		title << "ENS Control(" + tostring(km) + " km)";
 		title_ = title.str();
 	}
-	EpsControl(const string& title) : LegendEntry(" ")
+	EpsControl(const string& title, double height) : LegendEntry(" "), legend_size_(height)
 	{
 		
 		title_ = title;
 	}
+	void font_size(double height) { legend_size_ = height; }	
 	void set(const PaperPoint& point, BasicGraphicsObjectContainer& visitor)
 	{
 		
@@ -531,7 +533,7 @@ public:
 		MagLog::dev() << "Legend at Point[" << point.x() << ", " << point.y() << "]" << endl;
 	
 		Text* text  = new Text();
-		text->addText(title_, Colour("red"),  0.3); // should be customisable
+		text->addText(title_, Colour("red"),  legend_size_); // should be customisable
 		text->setJustification(MLEFT);
 		(*text).push_back(PaperPoint(x + 1*0.04, y));
 		visitor.push_back(text);
@@ -539,22 +541,26 @@ public:
 	
 protected:
 	string title_;
+	double legend_size_;
 };
 
 
 class EpsForecast : public LegendEntry
 {
 public:
-	EpsForecast(double resolution, const string& type) : LegendEntry(" ")
+	EpsForecast(double resolution, const string& type, double height) : 
+		LegendEntry(" "), legend_size_(height)
 	{
 		MagLog::dev() << "EpsForecsat=>resolution" << resolution << endl; 
 		ostringstream title;
         int km = maground(40000/(2*(2*resolution+1)+2));        
-		title << "High Resolution Deterministic(" + tostring(km) + " km)";
+		title << "High Resolution (" + tostring(km) + " km)";
 		title_ = title.str();
 	}
 	
-	EpsForecast(const string& title) : LegendEntry(" ")
+	EpsForecast(const string& title, double height) : 
+		LegendEntry(" "), legend_size_(height)
+
 		{
 			
 			title_ = title;
@@ -569,7 +575,7 @@ public:
 
 		
 		Text* text  = new Text();
-		text->addText(title_, Colour("blue"),  0.3); // should be customisable
+		text->addText(title_, Colour("blue"),  legend_size_); // should be customisable
 		text->setJustification(MLEFT);
 		(*text).push_back(PaperPoint(x + 1*0.04, y));
 		visitor.push_back(text);
@@ -577,6 +583,7 @@ public:
 	
 protected:
 	string title_;
+	double legend_size_;
 };
 
 
@@ -622,7 +629,7 @@ protected:
 class EpsCalval2 : public LegendEntry
 {
 public:
-	EpsCalval2(double) : LegendEntry(" ")
+	EpsCalval2(double, double height) : LegendEntry(" "), legend_size_(height)
 	{
 		ostringstream title;
 		//title << "T" << (2*resolution)-1 << " OPS";
@@ -648,7 +655,7 @@ public:
 		visitor.push_back(line);
 		
 		Text* text  = new Text();
-		text->addText(title_, Colour("blue"),  0.3); // should be customisable
+		text->addText(title_, Colour("blue"), legend_size_ ); // should be customisable
 		text->setJustification(MLEFT);
 		(*text).push_back(PaperPoint(x + 1*0.04, y));
 		visitor.push_back(text);
@@ -656,6 +663,7 @@ public:
 	
 protected:
 	string title_;
+	double legend_size_;
 };
 
 
@@ -740,7 +748,7 @@ void EpsGraph::operator()(Data& data, BasicGraphicsObjectContainer& visitor)
 
 
 		CustomisedPoint::const_iterator ten   = (*point)->find("ten");
-        CustomisedPoint::const_iterator ninty = (*point)->find("ninty");
+                CustomisedPoint::const_iterator ninty = (*point)->find("ninty");
 
 
 
@@ -759,19 +767,39 @@ void EpsGraph::operator()(Data& data, BasicGraphicsObjectContainer& visitor)
                    eps_ = false;  
                    continue;
                }
-        
-        double epsmin = (**point)["min"];
-        double eps10 = (**point)["ten"];
-        if (eps10 < epsmin) eps10 = epsmin;
-        double eps25 = (**point)["twentyfive"];
-        if (eps25 < eps10) eps25 = eps10;
-        double eps50 = (**point)["median"];
-        if (eps50 < eps25) eps50 = eps25;
-        double eps75 = (**point)["seventyfive"];
-        if (eps75 < eps50) eps75 = eps50;
-        double eps90 = (**point)["ninty"];
-        if (eps90 < eps75) eps90 = eps75;
-       
+     
+	vector<double> eps;
+	eps.push_back( (**point)["min"]);
+	eps.push_back( (**point)["ten"]);
+	eps.push_back( (**point)["twentyfive"]);
+	eps.push_back( (**point)["median"]);
+	eps.push_back( (**point)["seventyfive"]);
+	eps.push_back( (**point)["ninty"]);
+	eps.push_back( (**point)["max"]);
+
+	std::sort(eps.begin(), eps.end());
+
+	for (vector<double>::iterator e = eps.begin(); e != eps.end(); ++e)
+		if ( same(*e, 0) ) *e = 0;
+
+        double epsmin, eps10, eps25,  eps50, eps75, eps90, epsmax;
+        if ( ninty != (*point)->end() ) {
+        	epsmin = eps[0];
+        	eps10 = eps[1];
+       		eps25 = eps[2];
+        	eps50 = eps[3];
+        	eps75 = eps[4];
+        	eps90 = eps[5];
+        	epsmax = eps[6];
+	}
+	else {
+        	epsmin = eps[0];
+       		eps25 = eps[1];
+        	eps50 = eps[2];
+        	eps75 = eps[3];
+        	epsmax = eps[4];
+	}
+
 		Polyline* box  = new Polyline();
 		box->setColour(*border_colour_);
 		box->setThickness(border_thickness_);
@@ -805,7 +833,6 @@ void EpsGraph::operator()(Data& data, BasicGraphicsObjectContainer& visitor)
             
         }
 		box->push_back(PaperPoint(x+width, eps75));
-		//box->push_back(PaperPoint(x+width, (**point)["median"]));
 		box->push_back(PaperPoint(x+width, eps25));
 
         if ( ten != (*point)->end() ) {
@@ -833,7 +860,7 @@ void EpsGraph::operator()(Data& data, BasicGraphicsObjectContainer& visitor)
 		top->setThickness(border_thickness_);
 		
 	     
-		(*top).push_back(PaperPoint(x, max > transformation.getMaxY() ? transformation.getMaxY() : max));
+		(*top).push_back(PaperPoint(x, epsmax > transformation.getMaxY() ? transformation.getMaxY() : epsmax));
 		
 		if ( ninty != (*point)->end() ) 
             (*top).push_back(PaperPoint(x, eps90));
@@ -842,7 +869,7 @@ void EpsGraph::operator()(Data& data, BasicGraphicsObjectContainer& visitor)
 		Polyline* bottom  = new Polyline();
 		bottom->setColour(*border_colour_);
 		bottom->setThickness(border_thickness_);
-		(*bottom).push_back(PaperPoint(x, min));
+		(*bottom).push_back(PaperPoint(x, epsmin));
         if ( ten != (*point)->end() ) 
             (*bottom).push_back(PaperPoint(x, eps10));
 		else 
@@ -921,13 +948,22 @@ void EpsGraph::visit(LegendVisitor& legend)
     if ( !legend_ ) return;
 	EpsEntry* entry = fullEps_ ? new FullEpsEntry() : new EpsEntry();
 	
-    entry->colour(*colour_);
-	entry->borderColour(*border_colour_);
-	
+	if ( grey_legend_ ) {
+		entry->colour(Colour("grey"));
+		entry->borderColour(Colour("charcoal"));
+	}
+	else {
+		entry->colour(*colour_);
+		entry->borderColour(*border_colour_);
+	}
     MagFont font(font_);
     font.style(font_style_);
-	font.size(font_size_);
+	font.size(legend_size_);
 	font.colour(*font_colour_);
+	if ( grey_legend_ ) {
+		font.colour( Colour("charcoal"));
+	}
+
 	entry->font(font);
 	if ( whisker_ && eps_ )	
         legend.add(entry);
@@ -936,15 +972,15 @@ void EpsGraph::visit(LegendVisitor& legend)
     if ( control_  )   {
     	MagLog::dev() << "LEGEND-> " << legend_control_text_ << endl;
     	if (legend_control_text_.empty() )
-    		legend.add(new EpsControl(resolution_, legend_resolution_));
+    		legend.add(new EpsControl(resolution_, legend_resolution_, legend_size_));
     	else 
-    		legend.add(new EpsControl(legend_control_text_));
+    		legend.add(new EpsControl(legend_control_text_, legend_size_));
     }
     if ( forecast_  ) {
     	if (legend_forecast_text_.empty() )
-    	    legend.add(new EpsForecast(resolution_, legend_resolution_));
+    	    legend.add(new EpsForecast(resolution_, legend_resolution_, legend_size_));
     	else 
-    	    legend.add(new EpsForecast(legend_forecast_text_));
+    	    legend.add(new EpsForecast(legend_forecast_text_, legend_size_));
     }
     	
    
@@ -1315,7 +1351,7 @@ void EpsWave::visit(LegendVisitor& legend)
 
 void EpsWind::visit(LegendVisitor& legend)
 {
-	
+	if ( !legend_ ) return;
 	MagFont font("sansserif", "normal", 0.25);
 	font.colour(Colour("Rgb(0.2, 0.2, 0.2)"));
 	
@@ -2243,8 +2279,8 @@ void EpsShade::visit(LegendVisitor& legend)
 {
     EpsShadeEntry *entry = new EpsShadeEntry();
     entry->font_ = MagFont("sansserif");
-    entry->font_.size(0.25);
-    entry->font_.colour(Colour("Rgb(0.2, 0.2, 0.2)"));
+    entry->font_.size(0.4);
+    entry->font_.colour(legend.colour_->name());
     legend.add(entry);
 }
 
@@ -2383,24 +2419,50 @@ EpsPlume::EpsPlume()
 
 void EpsPlume::visit(LegendVisitor& legend)
 {
-	Polyline* forecast  = new Polyline();
-	forecast->setColour(*forecast_line_colour_);
-	forecast->setThickness(forecast_line_thickness_);
-	forecast->setLineStyle(forecast_line_style_);
-	legend.add(new LineEntry("Oper", forecast));
+	if ( shading_ )
+	{
+		for ( vector<Colour>::iterator entry = shading_legend_.begin(); entry != shading_legend_.end(); ++entry) {
+			 Polyline* box = new Polyline();
+
 
-	Polyline* control  = new Polyline();
-	control->setColour(*control_line_colour_);
-	control->setThickness(control_line_thickness_);
-	control->setLineStyle(control_line_style_);
-	legend.add(new LineEntry("Ctrl", control));
 
 
-	Polyline* line  = new Polyline();
-	line->setColour(*line_colour_);
-	line->setThickness(line_thickness_);
-	line->setLineStyle(line_style_);
-	legend.add(new LineEntry("EMem", line));
+			        	box->setShading(new FillShadingProperties());
+			        box->setFillColour(*entry);
+			        box->setFilled(true);
+			        box->setStroke(true);
+			        box->setColour(Colour("black"));
+			        legend.add(new BoxEntry("", box));
+		}
+	}
+	if ( forecast_) {
+		Polyline* forecast  = new Polyline();
+		forecast->setColour(*forecast_line_colour_);
+		forecast->setThickness(forecast_line_thickness_);
+		forecast->setLineStyle(forecast_line_style_);
+		legend.add(new LineEntry("Oper", forecast));
+	}
+	if ( control_) {
+		Polyline* control  = new Polyline();
+		control->setColour(*control_line_colour_);
+		control->setThickness(control_line_thickness_);
+		control->setLineStyle(control_line_style_);
+		legend.add(new LineEntry("Ctrl", control));
+	}
+	if ( line_ ) {
+		Polyline* line  = new Polyline();
+		line->setColour(*line_colour_);
+		line->setThickness(line_thickness_);
+		line->setLineStyle(line_style_);
+		legend.add(new LineEntry("EMem", line));
+	}
+	if (median_) {
+		Polyline* median  = new Polyline();
+		median->setColour(*median_line_colour_);
+		median->setThickness(median_line_thickness_);
+		median->setLineStyle(median_line_style_);
+		legend.add(new LineEntry("Median", median));
+	}
 }
 
 void EpsPlume::timeserie(Data& data, BasicGraphicsObjectContainer& visitor)
@@ -2426,32 +2488,62 @@ void EpsPlume::timeserie(Data& data, BasicGraphicsObjectContainer& visitor)
 	forecast->setThickness(forecast_line_thickness_);
 	forecast->setLineStyle(forecast_line_style_);
 
-
+	Polyline* median  = new Polyline();
+	median->setColour(*median_line_colour_);
+	median->setThickness(median_line_thickness_);
+	median->setLineStyle(median_line_style_);
+	map<double, vector<PaperPoint> > shading;
+	if ( shading_ ) {
+		for ( vector<double>::iterator level = shading_levels_.begin(); level != shading_levels_.end(); ++level)
+			shading.insert(make_pair(*level, vector<PaperPoint>()));
+	}
 	for (CustomisedPointsList::const_iterator point = points.begin(); point != points.end(); ++point) {
 
 		double x = (**point)["step"] + (**point)["shift"];
+		double missing = (**point)["missing"];
 
-
-
+		vector<double> members;
 		for ( map<string, double>::const_iterator value = (*point)->begin(); value != (*point)->end(); ++value) {
+
 			if ( alldigit(value->first) ) {
-				map<string, Polyline* >::iterator  iline = lines.find(value->first);
-				if ( iline == lines.end() ) {
-					Polyline* line  = new Polyline();
-					line->setColour(*line_colour_);
-					line->setThickness(line_thickness_);
-					line->setLineStyle(line_style_);
-					lines[value->first] = line;
-					iline = lines.find(value->first);
+				if ( line_ ) {
+					map<string, Polyline* >::iterator  iline = lines.find(value->first);
+					if ( iline == lines.end() ) {
+						Polyline* line  = new Polyline();
+						line->setColour(*line_colour_);
+						line->setThickness(line_thickness_);
+						line->setLineStyle(line_style_);
+						lines[value->first] = line;
+						iline = lines.find(value->first);
+					}
+					if (  value->second != missing )
+						(iline->second)->push_back(PaperPoint(x, value->second));
 				}
-				(iline->second)->push_back(PaperPoint(x, value->second));
-
+				members.push_back(value->second);
 			}
 
-			if ( value->first == "forecast" )
+			if ( forecast_ ) {
+			if ( value->first == "forecast" &&  value->second != missing )
 				forecast->push_back(PaperPoint(x, value->second));
-			if ( value->first == "control" )
+			}
+			if ( control_ ) {
+			if ( value->first == "control" &&  value->second != missing)
 				control->push_back(PaperPoint(x, value->second));
+			}
+
+
+		}
+		if ( median_ ) {
+					std::sort(members.begin(), members.end());
+					median->push_back(PaperPoint(x, members[25]));
+		}
+		if ( shading_ ) {
+			for ( vector<double>::iterator level = shading_levels_.begin(); level != shading_levels_.end(); ++level) {
+				int i = *level/2;
+				if ( i >= members.size() )
+					i = members.size() -1; ;
+				shading[*level].push_back(PaperPoint(x, members[i]));
+			}
 
 		}
 
@@ -2459,11 +2551,44 @@ void EpsPlume::timeserie(Data& data, BasicGraphicsObjectContainer& visitor)
 
 	}
 
-	for ( map<string, Polyline* >::const_iterator line = lines.begin(); line != lines.end(); ++line) {
-		visitor.push_back(line->second);
+
+	vector<string>::iterator colour = shading_colours_.begin();
+
+	for (int i = 0; i < shading_levels_.size()/2; i++) {
+
+		double bottom = shading_levels_[i];
+		double top  = shading_levels_[shading_levels_.size() - 1 - i];
+		Colour col =  ( colour == shading_colours_.end() ) ? Colour("blue") : *colour;
+		Polyline* line  = new Polyline();
+		line->setColour(col);
+		line->setFilled(true);
+		line->setShading(new FillShadingProperties());
+		line->setFillColour(col);
+		visitor.push_back(line);
+		for ( vector<PaperPoint>::iterator point = shading[bottom].begin();  point != shading[bottom].end(); ++point)
+			line->push_back(*point);
+
+		for ( vector<PaperPoint>::reverse_iterator point = shading[top].rbegin();  point != shading[top].rend(); ++point)
+					line->push_back(*point);
+
+		double grey = ((col.red()+col.blue()+col.green())/3.);
+
+		col.setColour(grey, grey, grey);
+
+		++colour;
+		shading_legend_.push_back(col);
 	}
-	visitor.push_back(control);
-	visitor.push_back(forecast);
+	if ( line_)
+			for ( map<string, Polyline* >::const_iterator line = lines.begin(); line != lines.end(); ++line) {
+			visitor.push_back(line->second);
+		}
+		if (control_)
+			visitor.push_back(control);
+		if (forecast_)
+			visitor.push_back(forecast);
+		if (median_)
+			visitor.push_back(median);
+
 }
 
 void EpsPlume::verticalprofile(Data& data, BasicGraphicsObjectContainer& visitor)
diff --git a/src/visualisers/EpsGraph.h b/src/visualisers/EpsGraph.h
index f5d567e..abb4202 100644
--- a/src/visualisers/EpsGraph.h
+++ b/src/visualisers/EpsGraph.h
@@ -392,7 +392,7 @@ protected:
 	 typedef void (EpsPlume::*Method)(Data&, BasicGraphicsObjectContainer&);
 
 	 std::map<string, Method> methods_;
-	
+	 vector<Colour> shading_legend_;
 	 void timeserie(Data&, BasicGraphicsObjectContainer&);
 	 void verticalprofile(Data&, BasicGraphicsObjectContainer&);
 
diff --git a/src/visualisers/EpsGraphAttributes.cc b/src/visualisers/EpsGraphAttributes.cc
deleted file mode 100644
index bd557db..0000000
--- a/src/visualisers/EpsGraphAttributes.cc
+++ /dev/null
@@ -1,312 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file EpsGraphAttributes.cc
-    \brief Implementation of EpsGraph Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "EpsGraphAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-EpsGraphAttributes::EpsGraphAttributes():
-	font_(ParameterManager::getString("eps_font")),
-	font_size_(ParameterManager::getDouble("eps_font_size")),
-	font_style_(ParameterManager::getString("eps_font_style")),
-	font_colour_(MagTranslator<string, Colour>().magics("eps_font_colour")),
-	colour_(MagTranslator<string, Colour>().magics("eps_box_colour")),
-	box_shift_(ParameterManager::getInt("eps_box_shift")),
-	right_colour_(MagTranslator<string, Colour>().magics("eps_right_box_colour")),
-	left_colour_(MagTranslator<string, Colour>().magics("eps_left_box_colour")),
-	border_colour_(MagTranslator<string, Colour>().magics("eps_box_border_colour")),
-	border_thickness_(ParameterManager::getInt("eps_box_border_thickness")),
-	median_thickness_(ParameterManager::getInt("eps_box_median_thickness")),
-	median_colour_(MagTranslator<string, Colour>().magics("eps_box_median_colour")),
-	max_(ParameterManager::getDouble("eps_maximum")),
-	max_font_name_(ParameterManager::getString("eps_maximum_font_name")),
-	max_font_style_(ParameterManager::getString("eps_maximum_font_style")),
-	max_font_size_(ParameterManager::getDouble("eps_maximum_font_size")),
-	max_font_colour_(MagTranslator<string, Colour>().magics("eps_maximum_font_colour")),
-	box_width_(ParameterManager::getDouble("eps_box_width")),
-	whisker_(ParameterManager::getBool("eps_whisker")),
-	legend_resolution_(ParameterManager::getString("eps_legend_resolution")),
-	legend_control_text_(ParameterManager::getString("eps_legend_control_text")),
-	legend_forecast_text_(ParameterManager::getString("eps_legend_forecast_text")),
-	deterministic_(ParameterManager::getBool("eps_deterministic")),
-	deterministic_colour_(MagTranslator<string, Colour>().magics("eps_deterministic_line_colour")),
-	deterministic_style_(MagTranslator<string, LineStyle>().magics("eps_deterministic_line_style")),
-	deterministic_thickness_(ParameterManager::getInt("eps_deterministic_line_thickness")),
-	control_(ParameterManager::getBool("eps_control")),
-	control_colour_(MagTranslator<string, Colour>().magics("eps_control_line_colour")),
-	control_style_(MagTranslator<string, LineStyle>().magics("eps_control_line_style")),
-	control_thickness_(ParameterManager::getInt("eps_control_line_thickness")),
-	legend_(ParameterManager::getBool("legend"))
-{
-} 
-
-
-
-EpsGraphAttributes::~EpsGraphAttributes()
-{
-}
-
-    
-void EpsGraphAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "eps";
-
-	setAttribute(prefix, "eps_font", font_, params);
-	setAttribute(prefix, "eps_font_size", font_size_, params);
-	setAttribute(prefix, "eps_font_style", font_style_, params);
-	setAttribute(prefix, "eps_font_colour", font_colour_, params);
-	setAttribute(prefix, "eps_box_colour", colour_, params);
-	setAttribute(prefix, "eps_box_shift", box_shift_, params);
-	setAttribute(prefix, "eps_right_box_colour", right_colour_, params);
-	setAttribute(prefix, "eps_left_box_colour", left_colour_, params);
-	setAttribute(prefix, "eps_box_border_colour", border_colour_, params);
-	setAttribute(prefix, "eps_box_border_thickness", border_thickness_, params);
-	setAttribute(prefix, "eps_box_median_thickness", median_thickness_, params);
-	setAttribute(prefix, "eps_box_median_colour", median_colour_, params);
-	setAttribute(prefix, "eps_maximum", max_, params);
-	setAttribute(prefix, "eps_maximum_font_name", max_font_name_, params);
-	setAttribute(prefix, "eps_maximum_font_style", max_font_style_, params);
-	setAttribute(prefix, "eps_maximum_font_size", max_font_size_, params);
-	setAttribute(prefix, "eps_maximum_font_colour", max_font_colour_, params);
-	setAttribute(prefix, "eps_box_width", box_width_, params);
-	setAttribute(prefix, "eps_whisker", whisker_, params);
-	setAttribute(prefix, "eps_legend_resolution", legend_resolution_, params);
-	setAttribute(prefix, "eps_legend_control_text", legend_control_text_, params);
-	setAttribute(prefix, "eps_legend_forecast_text", legend_forecast_text_, params);
-	setAttribute(prefix, "eps_deterministic", deterministic_, params);
-	setAttribute(prefix, "eps_deterministic_line_colour", deterministic_colour_, params);
-	setAttribute(prefix, "eps_deterministic_line_style", deterministic_style_, params);
-	setAttribute(prefix, "eps_deterministic_line_thickness", deterministic_thickness_, params);
-	setAttribute(prefix, "eps_control", control_, params);
-	setAttribute(prefix, "eps_control_line_colour", control_colour_, params);
-	setAttribute(prefix, "eps_control_line_style", control_style_, params);
-	setAttribute(prefix, "eps_control_line_thickness", control_thickness_, params);
-	setAttribute(prefix, "legend", legend_, params);
-}
-
-void EpsGraphAttributes::copy(const EpsGraphAttributes& other)
-{
-	font_ = other.font_;
-	font_size_ = other.font_size_;
-	font_style_ = other.font_style_;
-	font_colour_ = auto_ptr<Colour>(other.font_colour_->clone());
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	box_shift_ = other.box_shift_;
-	right_colour_ = auto_ptr<Colour>(other.right_colour_->clone());
-	left_colour_ = auto_ptr<Colour>(other.left_colour_->clone());
-	border_colour_ = auto_ptr<Colour>(other.border_colour_->clone());
-	border_thickness_ = other.border_thickness_;
-	median_thickness_ = other.median_thickness_;
-	median_colour_ = auto_ptr<Colour>(other.median_colour_->clone());
-	max_ = other.max_;
-	max_font_name_ = other.max_font_name_;
-	max_font_style_ = other.max_font_style_;
-	max_font_size_ = other.max_font_size_;
-	max_font_colour_ = auto_ptr<Colour>(other.max_font_colour_->clone());
-	box_width_ = other.box_width_;
-	whisker_ = other.whisker_;
-	legend_resolution_ = other.legend_resolution_;
-	legend_control_text_ = other.legend_control_text_;
-	legend_forecast_text_ = other.legend_forecast_text_;
-	deterministic_ = other.deterministic_;
-	deterministic_colour_ = auto_ptr<Colour>(other.deterministic_colour_->clone());
-	deterministic_style_ = other.deterministic_style_;
-	deterministic_thickness_ = other.deterministic_thickness_;
-	control_ = other.control_;
-	control_colour_ = auto_ptr<Colour>(other.control_colour_->clone());
-	control_style_ = other.control_style_;
-	control_thickness_ = other.control_thickness_;
-	legend_ = other.legend_;
-} 
-
-
-bool EpsGraphAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "epsgraph")  )
-		return true;
-	return false;
-}
-
-void EpsGraphAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "epsgraph") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void EpsGraphAttributes::print(ostream& out)  const
-{
-	out << "EpsGraphAttributes[";
-	out << "font = " << font_;
-	out << ", font_size = " << font_size_;
-	out << ", font_style = " << font_style_;
-	out << ", font_colour = " << *font_colour_;
-	out << ", colour = " << *colour_;
-	out << ", box_shift = " << box_shift_;
-	out << ", right_colour = " << *right_colour_;
-	out << ", left_colour = " << *left_colour_;
-	out << ", border_colour = " << *border_colour_;
-	out << ", border_thickness = " << border_thickness_;
-	out << ", median_thickness = " << median_thickness_;
-	out << ", median_colour = " << *median_colour_;
-	out << ", max = " << max_;
-	out << ", max_font_name = " << max_font_name_;
-	out << ", max_font_style = " << max_font_style_;
-	out << ", max_font_size = " << max_font_size_;
-	out << ", max_font_colour = " << *max_font_colour_;
-	out << ", box_width = " << box_width_;
-	out << ", whisker = " << whisker_;
-	out << ", legend_resolution = " << legend_resolution_;
-	out << ", legend_control_text = " << legend_control_text_;
-	out << ", legend_forecast_text = " << legend_forecast_text_;
-	out << ", deterministic = " << deterministic_;
-	out << ", deterministic_colour = " << *deterministic_colour_;
-	out << ", deterministic_style = " << deterministic_style_;
-	out << ", deterministic_thickness = " << deterministic_thickness_;
-	out << ", control = " << control_;
-	out << ", control_colour = " << *control_colour_;
-	out << ", control_style = " << control_style_;
-	out << ", control_thickness = " << control_thickness_;
-	out << ", legend = " << legend_;
-	out << "]" << "\n";
-}
-
-
-void EpsGraphAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"epsgraph\"";
-	 out << ", \"eps_font\":";
-	 niceprint(out,font_);
-	 out << ", \"eps_font_size\":";
-	 niceprint(out,font_size_);
-	 out << ", \"eps_font_style\":";
-	 niceprint(out,font_style_);
-	 out << ", \"eps_font_colour\":";
-	 niceprint(out, *font_colour_);
-	 out << ", \"eps_box_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"eps_box_shift\":";
-	 niceprint(out,box_shift_);
-	 out << ", \"eps_right_box_colour\":";
-	 niceprint(out, *right_colour_);
-	 out << ", \"eps_left_box_colour\":";
-	 niceprint(out, *left_colour_);
-	 out << ", \"eps_box_border_colour\":";
-	 niceprint(out, *border_colour_);
-	 out << ", \"eps_box_border_thickness\":";
-	 niceprint(out,border_thickness_);
-	 out << ", \"eps_box_median_thickness\":";
-	 niceprint(out,median_thickness_);
-	 out << ", \"eps_box_median_colour\":";
-	 niceprint(out, *median_colour_);
-	 out << ", \"eps_maximum\":";
-	 niceprint(out,max_);
-	 out << ", \"eps_maximum_font_name\":";
-	 niceprint(out,max_font_name_);
-	 out << ", \"eps_maximum_font_style\":";
-	 niceprint(out,max_font_style_);
-	 out << ", \"eps_maximum_font_size\":";
-	 niceprint(out,max_font_size_);
-	 out << ", \"eps_maximum_font_colour\":";
-	 niceprint(out, *max_font_colour_);
-	 out << ", \"eps_box_width\":";
-	 niceprint(out,box_width_);
-	 out << ", \"eps_whisker\":";
-	 niceprint(out,whisker_);
-	 out << ", \"eps_legend_resolution\":";
-	 niceprint(out,legend_resolution_);
-	 out << ", \"eps_legend_control_text\":";
-	 niceprint(out,legend_control_text_);
-	 out << ", \"eps_legend_forecast_text\":";
-	 niceprint(out,legend_forecast_text_);
-	 out << ", \"eps_deterministic\":";
-	 niceprint(out,deterministic_);
-	 out << ", \"eps_deterministic_line_colour\":";
-	 niceprint(out, *deterministic_colour_);
-	 out << ", \"eps_deterministic_line_style\":";
-	 niceprint(out,deterministic_style_);
-	 out << ", \"eps_deterministic_line_thickness\":";
-	 niceprint(out,deterministic_thickness_);
-	 out << ", \"eps_control\":";
-	 niceprint(out,control_);
-	 out << ", \"eps_control_line_colour\":";
-	 niceprint(out, *control_colour_);
-	 out << ", \"eps_control_line_style\":";
-	 niceprint(out,control_style_);
-	 out << ", \"eps_control_line_thickness\":";
-	 niceprint(out,control_thickness_);
-	 out << ", \"legend\":";
-	 niceprint(out,legend_);
-}
-static MagicsParameter<string> eps_font("eps_font", "sansserif", "");
-static MagicsParameter<double> eps_font_size("eps_font_size", 0.25, "");
-static MagicsParameter<string> eps_font_style("eps_font_style", "", "");
-static MagicsParameter<string> eps_font_colour("eps_font_colour", "blue", "");
-static MagicsParameter<string> eps_box_colour("eps_box_colour", "cyan", "");
-static MagicsParameter<int> eps_box_shift("eps_box_shift", 0, "");
-static MagicsParameter<string> eps_right_box_colour("eps_right_box_colour", "red", "");
-static MagicsParameter<string> eps_left_box_colour("eps_left_box_colour", "blue", "");
-static MagicsParameter<string> eps_box_border_colour("eps_box_border_colour", "black", "");
-static MagicsParameter<int> eps_box_border_thickness("eps_box_border_thickness", 3, "");
-static MagicsParameter<int> eps_box_median_thickness("eps_box_median_thickness", 3, "");
-static MagicsParameter<string> eps_box_median_colour("eps_box_median_colour", "black", "");
-static MagicsParameter<double> eps_maximum("eps_maximum", INT_MAX, "");
-static MagicsParameter<string> eps_maximum_font_name("eps_maximum_font_name", "sansserif", "");
-static MagicsParameter<string> eps_maximum_font_style("eps_maximum_font_style", "normal", "");
-static MagicsParameter<double> eps_maximum_font_size("eps_maximum_font_size", 0.25, "");
-static MagicsParameter<string> eps_maximum_font_colour("eps_maximum_font_colour", "red", "");
-static MagicsParameter<double> eps_box_width("eps_box_width", -1, "");
-static MagicsParameter<string> eps_whisker("eps_whisker", "on", "");
-static MagicsParameter<string> eps_legend_resolution("eps_legend_resolution", "truncature", "");
-static MagicsParameter<string> eps_legend_control_text("eps_legend_control_text", "", "");
-static MagicsParameter<string> eps_legend_forecast_text("eps_legend_forecast_text", "", "");
-static MagicsParameter<string> eps_deterministic("eps_deterministic", "on", "");
-static MagicsParameter<string> eps_deterministic_line_colour("eps_deterministic_line_colour", "blue", "");
-static MagicsParameter<string> eps_deterministic_line_style("eps_deterministic_line_style", "solid", "");
-static MagicsParameter<int> eps_deterministic_line_thickness("eps_deterministic_line_thickness", 2, "");
-static MagicsParameter<string> eps_control("eps_control", "on", "");
-static MagicsParameter<string> eps_control_line_colour("eps_control_line_colour", "red", "");
-static MagicsParameter<string> eps_control_line_style("eps_control_line_style", "dash", "");
-static MagicsParameter<int> eps_control_line_thickness("eps_control_line_thickness", 2, "");
-static MagicsParameter<string> legend("legend", "on", "");
diff --git a/src/visualisers/EpsPlumeAttributes.cc b/src/visualisers/EpsPlumeAttributes.cc
deleted file mode 100644
index 10cdd96..0000000
--- a/src/visualisers/EpsPlumeAttributes.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file EpsPlumeAttributes.cc
-    \brief Implementation of EpsPlume Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "EpsPlumeAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-EpsPlumeAttributes::EpsPlumeAttributes():
-	method_(ParameterManager::getString("eps_plume_method")),
-	line_colour_(MagTranslator<string, Colour>().magics("eps_plume_line_colour")),
-	line_style_(MagTranslator<string, LineStyle>().magics("eps_plume_line_style")),
-	line_thickness_(ParameterManager::getInt("eps_plume_line_thickness")),
-	forecast_line_colour_(MagTranslator<string, Colour>().magics("eps_plume_forecast_line_colour")),
-	forecast_line_style_(MagTranslator<string, LineStyle>().magics("eps_plume_forecast_line_style")),
-	forecast_line_thickness_(ParameterManager::getInt("eps_plume_forecast_line_thickness")),
-	control_line_colour_(MagTranslator<string, Colour>().magics("eps_plume_control_line_colour")),
-	control_line_style_(MagTranslator<string, LineStyle>().magics("eps_plume_control_line_style")),
-	control_line_thickness_(ParameterManager::getInt("eps_plume_control_line_thickness"))
-{
-} 
-
-
-
-EpsPlumeAttributes::~EpsPlumeAttributes()
-{
-}
-
-    
-void EpsPlumeAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "eps_plume";
-	prefix[1] = "eps";
-
-	setAttribute(prefix, "eps_plume_method", method_, params);
-	setAttribute(prefix, "eps_plume_line_colour", line_colour_, params);
-	setAttribute(prefix, "eps_plume_line_style", line_style_, params);
-	setAttribute(prefix, "eps_plume_line_thickness", line_thickness_, params);
-	setAttribute(prefix, "eps_plume_forecast_line_colour", forecast_line_colour_, params);
-	setAttribute(prefix, "eps_plume_forecast_line_style", forecast_line_style_, params);
-	setAttribute(prefix, "eps_plume_forecast_line_thickness", forecast_line_thickness_, params);
-	setAttribute(prefix, "eps_plume_control_line_colour", control_line_colour_, params);
-	setAttribute(prefix, "eps_plume_control_line_style", control_line_style_, params);
-	setAttribute(prefix, "eps_plume_control_line_thickness", control_line_thickness_, params);
-}
-
-void EpsPlumeAttributes::copy(const EpsPlumeAttributes& other)
-{
-	method_ = other.method_;
-	line_colour_ = auto_ptr<Colour>(other.line_colour_->clone());
-	line_style_ = other.line_style_;
-	line_thickness_ = other.line_thickness_;
-	forecast_line_colour_ = auto_ptr<Colour>(other.forecast_line_colour_->clone());
-	forecast_line_style_ = other.forecast_line_style_;
-	forecast_line_thickness_ = other.forecast_line_thickness_;
-	control_line_colour_ = auto_ptr<Colour>(other.control_line_colour_->clone());
-	control_line_style_ = other.control_line_style_;
-	control_line_thickness_ = other.control_line_thickness_;
-} 
-
-
-bool EpsPlumeAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "epsplume")  )
-		return true;
-	return false;
-}
-
-void EpsPlumeAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "epsplume") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void EpsPlumeAttributes::print(ostream& out)  const
-{
-	out << "EpsPlumeAttributes[";
-	out << "method = " << method_;
-	out << ", line_colour = " << *line_colour_;
-	out << ", line_style = " << line_style_;
-	out << ", line_thickness = " << line_thickness_;
-	out << ", forecast_line_colour = " << *forecast_line_colour_;
-	out << ", forecast_line_style = " << forecast_line_style_;
-	out << ", forecast_line_thickness = " << forecast_line_thickness_;
-	out << ", control_line_colour = " << *control_line_colour_;
-	out << ", control_line_style = " << control_line_style_;
-	out << ", control_line_thickness = " << control_line_thickness_;
-	out << "]" << "\n";
-}
-
-
-void EpsPlumeAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"epsplume\"";
-	 out << ", \"eps_plume_method\":";
-	 niceprint(out,method_);
-	 out << ", \"eps_plume_line_colour\":";
-	 niceprint(out, *line_colour_);
-	 out << ", \"eps_plume_line_style\":";
-	 niceprint(out,line_style_);
-	 out << ", \"eps_plume_line_thickness\":";
-	 niceprint(out,line_thickness_);
-	 out << ", \"eps_plume_forecast_line_colour\":";
-	 niceprint(out, *forecast_line_colour_);
-	 out << ", \"eps_plume_forecast_line_style\":";
-	 niceprint(out,forecast_line_style_);
-	 out << ", \"eps_plume_forecast_line_thickness\":";
-	 niceprint(out,forecast_line_thickness_);
-	 out << ", \"eps_plume_control_line_colour\":";
-	 niceprint(out, *control_line_colour_);
-	 out << ", \"eps_plume_control_line_style\":";
-	 niceprint(out,control_line_style_);
-	 out << ", \"eps_plume_control_line_thickness\":";
-	 niceprint(out,control_line_thickness_);
-}
-static MagicsParameter<string> eps_plume_method("eps_plume_method", "time_serie", "");
-static MagicsParameter<string> eps_plume_line_colour("eps_plume_line_colour", "magenta", "");
-static MagicsParameter<string> eps_plume_line_style("eps_plume_line_style", "solid", "");
-static MagicsParameter<int> eps_plume_line_thickness("eps_plume_line_thickness", 1, "");
-static MagicsParameter<string> eps_plume_forecast_line_colour("eps_plume_forecast_line_colour", "cyan", "");
-static MagicsParameter<string> eps_plume_forecast_line_style("eps_plume_forecast_line_style", "dash", "");
-static MagicsParameter<int> eps_plume_forecast_line_thickness("eps_plume_forecast_line_thickness", 5, "");
-static MagicsParameter<string> eps_plume_control_line_colour("eps_plume_control_line_colour", "cyan", "");
-static MagicsParameter<string> eps_plume_control_line_style("eps_plume_control_line_style", "solid", "");
-static MagicsParameter<int> eps_plume_control_line_thickness("eps_plume_control_line_thickness", 5, "");
diff --git a/src/visualisers/EpsShadeAttributes.cc b/src/visualisers/EpsShadeAttributes.cc
deleted file mode 100644
index d76fcb3..0000000
--- a/src/visualisers/EpsShadeAttributes.cc
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file EpsShadeAttributes.cc
-    \brief Implementation of EpsShade Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "EpsShadeAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-EpsShadeAttributes::EpsShadeAttributes():
-	colour_(MagTranslator<string, Colour>().magics("eps_shade_colour")),
-	line_colour_(MagTranslator<string, Colour>().magics("eps_shade_line_colour")),
-	line_style_(MagTranslator<string, LineStyle>().magics("eps_shade_line_style")),
-	line_thickness_(ParameterManager::getInt("eps_shade_line_thickness"))
-{
-} 
-
-
-
-EpsShadeAttributes::~EpsShadeAttributes()
-{
-}
-
-    
-void EpsShadeAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "eps";
-
-	setAttribute(prefix, "eps_shade_colour", colour_, params);
-	setAttribute(prefix, "eps_shade_line_colour", line_colour_, params);
-	setAttribute(prefix, "eps_shade_line_style", line_style_, params);
-	setAttribute(prefix, "eps_shade_line_thickness", line_thickness_, params);
-}
-
-void EpsShadeAttributes::copy(const EpsShadeAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	line_colour_ = auto_ptr<Colour>(other.line_colour_->clone());
-	line_style_ = other.line_style_;
-	line_thickness_ = other.line_thickness_;
-} 
-
-
-bool EpsShadeAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "epsshade")  )
-		return true;
-	return false;
-}
-
-void EpsShadeAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "epsshade") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void EpsShadeAttributes::print(ostream& out)  const
-{
-	out << "EpsShadeAttributes[";
-	out << "colour = " << *colour_;
-	out << ", line_colour = " << *line_colour_;
-	out << ", line_style = " << line_style_;
-	out << ", line_thickness = " << line_thickness_;
-	out << "]" << "\n";
-}
-
-
-void EpsShadeAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"epsshade\"";
-	 out << ", \"eps_shade_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"eps_shade_line_colour\":";
-	 niceprint(out, *line_colour_);
-	 out << ", \"eps_shade_line_style\":";
-	 niceprint(out,line_style_);
-	 out << ", \"eps_shade_line_thickness\":";
-	 niceprint(out,line_thickness_);
-}
-static MagicsParameter<string> eps_shade_colour("eps_shade_colour", "red", "");
-static MagicsParameter<string> eps_shade_line_colour("eps_shade_line_colour", "red", "");
-static MagicsParameter<string> eps_shade_line_style("eps_shade_line_style", "solid", "");
-static MagicsParameter<int> eps_shade_line_thickness("eps_shade_line_thickness", 1, "");
diff --git a/src/visualisers/EpsWindAttributes.cc b/src/visualisers/EpsWindAttributes.cc
deleted file mode 100644
index 0c13be8..0000000
--- a/src/visualisers/EpsWindAttributes.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file EpsWindAttributes.cc
-    \brief Implementation of EpsWind Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "EpsWindAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-EpsWindAttributes::EpsWindAttributes():
-	colour_(MagTranslator<string, Colour>().magics("eps_rose_wind_colour")),
-	border_colour_(MagTranslator<string, Colour>().magics("eps_rose_wind_border_colour")),
-	convention_(ParameterManager::getString("eps_rose_wind_convention"))
-{
-} 
-
-
-
-EpsWindAttributes::~EpsWindAttributes()
-{
-}
-
-    
-void EpsWindAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "eps_rose_wind";
-	prefix[1] = "eps";
-
-	setAttribute(prefix, "eps_rose_wind_colour", colour_, params);
-	setAttribute(prefix, "eps_rose_wind_border_colour", border_colour_, params);
-	setAttribute(prefix, "eps_rose_wind_convention", convention_, params);
-}
-
-void EpsWindAttributes::copy(const EpsWindAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	border_colour_ = auto_ptr<Colour>(other.border_colour_->clone());
-	convention_ = other.convention_;
-} 
-
-
-bool EpsWindAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "epswind")  )
-		return true;
-	return false;
-}
-
-void EpsWindAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "epswind") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void EpsWindAttributes::print(ostream& out)  const
-{
-	out << "EpsWindAttributes[";
-	out << "colour = " << *colour_;
-	out << ", border_colour = " << *border_colour_;
-	out << ", convention = " << convention_;
-	out << "]" << "\n";
-}
-
-
-void EpsWindAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"epswind\"";
-	 out << ", \"eps_rose_wind_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"eps_rose_wind_border_colour\":";
-	 niceprint(out, *border_colour_);
-	 out << ", \"eps_rose_wind_convention\":";
-	 niceprint(out,convention_);
-}
-static MagicsParameter<string> eps_rose_wind_colour("eps_rose_wind_colour", "grey", "");
-static MagicsParameter<string> eps_rose_wind_border_colour("eps_rose_wind_border_colour", "grey", "");
-static MagicsParameter<string> eps_rose_wind_convention("eps_rose_wind_convention", "meteorological", "");
diff --git a/src/visualisers/FixedTableModeAttributes.h b/src/visualisers/FixedTableModeAttributes.h
deleted file mode 100644
index 9cbfc89..0000000
--- a/src/visualisers/FixedTableModeAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file FixedTableModeAttributes.h
-    \brief Definition of FixedTableMode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef FixedTableModeAttributes_H
-#define FixedTableModeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class FixedTableModeAttributes 
-{
-public:
-//  --  constructor
-    FixedTableModeAttributes();
-    
-//  --  destructor
-    virtual ~FixedTableModeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const FixedTableModeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	intarray levels_;
-	intarray indexes_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const FixedTableModeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/FlagPlotting.cc b/src/visualisers/FlagPlotting.cc
index 2d5689a..dbb6f27 100644
--- a/src/visualisers/FlagPlotting.cc
+++ b/src/visualisers/FlagPlotting.cc
@@ -33,14 +33,17 @@
 
 using namespace magics;
 
-void FlagPlotting::operator()(const UserPoint& geo, const PaperPoint& point, double x, double y,double) 
+void FlagPlotting::operator()(bool north, const PaperPoint& point, double x, double y,double)
 { 
+	   if (legendOnly_ )
+		   return;
 		double speed = sqrt((x*x)+(y*y));
-		if (speed < this->min_speed_ || speed > this->max_speed_) return;
+		 if ( !levels_->empty() && (speed < levels_->front() || speed > levels_->back()) ) return;
+		   if ( speed < min_speed_ || speed > max_speed_ ) return;
 		
-	   if ((*this->calm_)(point, x, y)) return; 
+	   if ((*calm_)(point, x, y)) return;
 	
-		if ( geo.y() >= 0 ) 
+		if ( north )
 			northFlags_->push_back(ArrowPoint(x, y, point));
 		else southFlags_->push_back(ArrowPoint(x, y, point));
 		
@@ -51,60 +54,63 @@ void FlagPlotting::prepare(BasicGraphicsObjectContainer& task, double)
 { 
 
     // Calm Indicator 
-    (*this->calm_).colour(*this->colour_);
-    (*this->calm_).height(this->calm_indicator_size_);
-    (*this->calm_).below(this->calm_below_);
-    (*this->calm_).prepare(task);
+    (*calm_).colour(*colour_);
+    (*calm_).height(calm_indicator_size_);
+    (*calm_).below(calm_below_);
+    (*calm_).prepare(task);
     
   
     
     
     // Setting for south Hemisphere wind	
 	southFlags_ = new Flag();
-	southFlags_->setColour(*this->colour_); 
-	southFlags_->setThickness(this->thickness_);
-	southFlags_->setStyle(this->style_);
-	southFlags_->setCrossBoundary(this->cross_boundary_);
+	southFlags_->setColour(*colour_);
+	southFlags_->setThickness(thickness_);
+	southFlags_->setStyle(style_);
+	southFlags_->setCrossBoundary(cross_boundary_);
 	southFlags_->setHemisphere(SOUTH);
-	southFlags_->setOriginHeight(this->calm_indicator_size_);
-	southFlags_->setLength(this->length_);
+	southFlags_->setOriginHeight(calm_indicator_size_);
+	southFlags_->setLength(length_);
 	
 	// Setting for south Hemisphere wind	
 	northFlags_ = new Flag();
-	northFlags_->setColour(*this->colour_); 
-	northFlags_->setThickness(this->thickness_);
-	northFlags_->setCrossBoundary(this->cross_boundary_);
-	northFlags_->setOriginHeight(this->calm_indicator_size_);
+	northFlags_->setColour(*colour_);
+	northFlags_->setThickness(thickness_);
+	northFlags_->setCrossBoundary(cross_boundary_);
+	northFlags_->setOriginHeight(calm_indicator_size_);
 	northFlags_->setHemisphere(NORTH);
-	northFlags_->setLength(this->length_);
+	northFlags_->setLength(length_);
 	
 	// Origin Indicator 	  
-    (*this->origin_).prepare(*southFlags_);
-    (*this->origin_).prepare(*northFlags_);
+    (*origin_).prepare(*southFlags_);
+    (*origin_).prepare(*northFlags_);
     
-    northFlags_->setOriginHeight(this->origin_marker_size_);
-    southFlags_->setOriginHeight(this->origin_marker_size_);
-	if ( this->legend_only_) return;
+    northFlags_->setOriginHeight(origin_marker_size_);
+    southFlags_->setOriginHeight(origin_marker_size_);
+	if ( legendOnly_) {
+
+		return;
+	}
 	task.push_back(southFlags_);	
 	task.push_back(northFlags_);	
 }
 
 void FlagPlotting::visit(LegendVisitor& legend)
 {
-	if ( !this->legend_ ) return;
+	if ( !legend_ ) return;
 	   
 	   
 	  
 	   
 	  
 	   Flag* flags = new Flag();
-	   flags->setColour(*this->colour_); 
-	   flags->setThickness(this->thickness_);
-	   flags->setCrossBoundary(this->cross_boundary_); 
-	   (*this->origin_).prepare(*flags);
-	   flags->setOriginHeight(this->origin_marker_size_);
+	   flags->setColour(*colour_);
+	   flags->setThickness(thickness_);
+	   flags->setCrossBoundary(cross_boundary_);
+	   (*origin_).prepare(*flags);
+	   flags->setOriginHeight(origin_marker_size_);
 	   flags->setHemisphere(NORTH);
-	   flags->setLength(this->length_);
+	   flags->setLength(length_);
 
 	   ostringstream text;
 
@@ -120,10 +126,10 @@ void FlagPlotting::visit(Data& data, PointsHandler& points, HistoVisitor& visito
     IntervalMap<Colour> beans;
     if ( !visitor.basic() ) {
 
-	vector<double>::iterator from = this->levels_->begin();
-        vector<double>::iterator to = this->levels_->begin();
+	vector<double>::iterator from = levels_->begin();
+        vector<double>::iterator to = levels_->begin();
         ++to;
-        for (;  to != this->levels_->end(); ++to)
+        for (;  to != levels_->end(); ++to)
 	{
 	    	Colour colour;	    	
 	    	if (magCompare(advanced_method_, "advanced") ||  
@@ -133,7 +139,7 @@ void FlagPlotting::visit(Data& data, PointsHandler& points, HistoVisitor& visito
 		}
 		else
 		{
-		  	colour=*this->colour_;;
+		  	colour=*colour_;;
 		} 	
             	beans.insert(make_pair(Interval(*from, *to), colour ));
             	++from;
@@ -142,4 +148,4 @@ void FlagPlotting::visit(Data& data, PointsHandler& points, HistoVisitor& visito
     
     Histogram helper;
     helper.visit(beans, data, points, visitor);
-}  
\ No newline at end of file
+}  
diff --git a/src/visualisers/FlagPlotting.h b/src/visualisers/FlagPlotting.h
index 56577a4..8b2300d 100644
--- a/src/visualisers/FlagPlotting.h
+++ b/src/visualisers/FlagPlotting.h
@@ -56,12 +56,14 @@ public:
 		return object;
 	}
 	
-	virtual void operator()(const UserPoint&, const PaperPoint& point, double x, double y,double);
+	virtual void operator()(bool, const PaperPoint& point, double x, double y,double);
 
 	virtual void prepare(BasicGraphicsObjectContainer& task, double);
 	void visit(LegendVisitor& legend);
 	void visit(Data&, PointsHandler&, HistoVisitor&);
-	
+	double minSpeed() { return min_speed_; }
+	double maxSpeed() { return max_speed_; }
+
 protected:     	 
      	 //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream& out) const
diff --git a/src/visualisers/FloatSelection.cc b/src/visualisers/FloatSelection.cc
new file mode 100644
index 0000000..cf96072
--- /dev/null
+++ b/src/visualisers/FloatSelection.cc
@@ -0,0 +1,74 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file FloatSelection.cc
+    \brief Implementation of the Template class FloatSelection.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 20-May-2004
+    
+    Changes:
+    
+*/
+#include "FloatSelection.h"
+
+#include <cmath>
+
+using namespace magics;
+
+FloatSelection::FloatSelection() 
+{
+}
+
+
+FloatSelection::~FloatSelection() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void FloatSelection::print(ostream& out)  const
+{
+	out << "FloatSelection[";
+	out << "]";
+}
+
+void FloatSelection::calculate(double min, double max, int count)
+{
+    
+        double step = (max - min)/count;
+
+        double log = log10(step);
+        double istep = pow(10., int(log));	
+        double inc = ceil(step/istep)*istep;
+        double first = floor(min/inc)*inc;
+
+        if (first < min) first += inc;        
+        for (double val = first; val <= max; val += inc) 
+            push_back(val);                
+}
+
+void FloatSelection::calculate(const doublearray& list)
+{
+    for (doublearray::const_iterator val = list.begin(); val != list.end(); ++val) {
+        push_back(*val);
+    }
+                  
+}
diff --git a/src/visualisers/GraphShadeStyle.cc b/src/visualisers/GraphShadeStyle.cc
index 3a16792..107a306 100644
--- a/src/visualisers/GraphShadeStyle.cc
+++ b/src/visualisers/GraphShadeStyle.cc
@@ -94,6 +94,14 @@ void HatchGraphShadeStyle::operator()(Polyline& box)
 	box.setFillColour(*colour_);
 	box.setFilled(true);
 	HatchShadingProperties* shading = new HatchShadingProperties();
+	if ( index_ < 1 || index_ > 6) {
+		static bool msg = true;
+		if ( msg ) {
+			msg = false;
+			MagLog::warning() << " Hatch shading index should be between 1 and 6: Found [" << index_ << "], revert to default [1] " << endl;
+		}
+		index_ = 1;
+	}
 	shading->index_ = index_;
 	
 	box.setShading(shading);
diff --git a/src/visualisers/GridPlottingAttributes.h b/src/visualisers/GridPlottingAttributes.h
deleted file mode 100644
index e3f3a07..0000000
--- a/src/visualisers/GridPlottingAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file GridPlottingAttributes.h
-    \brief Definition of GridPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef GridPlottingAttributes_H
-#define GridPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class GridPlottingAttributes 
-{
-public:
-//  --  constructor
-    GridPlottingAttributes();
-    
-//  --  destructor
-    virtual ~GridPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const GridPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	LineStyle style_;
-	int thickness_;
-	auto_ptr<Colour> colour_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const GridPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/GridShadingAttributes.h b/src/visualisers/GridShadingAttributes.h
deleted file mode 100644
index 3fea2b5..0000000
--- a/src/visualisers/GridShadingAttributes.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file GridShadingAttributes.h
-    \brief Definition of GridShading Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef GridShadingAttributes_H
-#define GridShadingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class GridShadingAttributes 
-{
-public:
-//  --  constructor
-    GridShadingAttributes();
-    
-//  --  destructor
-    virtual ~GridShadingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const GridShadingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string position_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const GridShadingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/HatchPolyShadingMethodAttributes.h b/src/visualisers/HatchPolyShadingMethodAttributes.h
deleted file mode 100644
index 5c95c3e..0000000
--- a/src/visualisers/HatchPolyShadingMethodAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HatchPolyShadingMethodAttributes.h
-    \brief Definition of HatchPolyShadingMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef HatchPolyShadingMethodAttributes_H
-#define HatchPolyShadingMethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HatchPolyShadingMethodAttributes 
-{
-public:
-//  --  constructor
-    HatchPolyShadingMethodAttributes();
-    
-//  --  destructor
-    virtual ~HatchPolyShadingMethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HatchPolyShadingMethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	int index_;
-	int thickness_;
-	double density_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HatchPolyShadingMethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/HeightSelection.cc b/src/visualisers/HeightSelection.cc
new file mode 100644
index 0000000..9b50745
--- /dev/null
+++ b/src/visualisers/HeightSelection.cc
@@ -0,0 +1,53 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file HeightSelection.cc
+    \brief Implementation of the Template class HeightSelection.
+    
+    Magics Team - ECMWF 2004
+    
+    Started: Thu 20-May-2004
+    
+    Changes:
+    
+*/
+
+
+
+#include "HeightSelection.h"
+
+using namespace magics;
+
+HeightSelection::HeightSelection() 
+{
+}
+
+
+HeightSelection::~HeightSelection() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void HeightSelection::print(ostream& out)  const
+{
+	out << "HeightSelection[";
+	out << "]";
+}
+
diff --git a/src/visualisers/HiLoAttributes.cc b/src/visualisers/HiLoAttributes.cc
deleted file mode 100644
index 47ed2d3..0000000
--- a/src/visualisers/HiLoAttributes.cc
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HiLoAttributes.cc
-    \brief Implementation of HiLo Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:24 2013
-*/    
-
-#include "HiLoAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-HiLoAttributes::HiLoAttributes():
-	type_(MagTranslator<string, HiLoTechnique>().magics("contour_hilo_type")),
-	window_size_(ParameterManager::getInt("contour_hilo_window_size")),
-	suppress_radius_(ParameterManager::getDouble("contour_hilo_suppress_radius")),
-	hilo_max_value_(ParameterManager::getDouble("contour_hilo_max_value")),
-	hilo_min_value_(ParameterManager::getDouble("contour_hilo_min_value")),
-	hi_max_value_(ParameterManager::getDouble("contour_hi_max_value")),
-	hi_min_value_(ParameterManager::getDouble("contour_hi_min_value")),
-	lo_max_value_(ParameterManager::getDouble("contour_lo_max_value")),
-	lo_min_value_(ParameterManager::getDouble("contour_lo_min_value")),
-	marker_(MagTranslator<string, HiLoMarkerBase>().magics("contour_hilo_marker"))
-{
-} 
-
-
-
-HiLoAttributes::~HiLoAttributes()
-{
-}
-
-    
-void HiLoAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "contour_hilo";
-	prefix[1] = "contour";
-
-	setMember(prefix, "contour_hilo_type", type_, params);
-	setAttribute(prefix, "contour_hilo_window_size", window_size_, params);
-	setAttribute(prefix, "contour_hilo_suppress_radius", suppress_radius_, params);
-	setAttribute(prefix, "contour_hilo_max_value", hilo_max_value_, params);
-	setAttribute(prefix, "contour_hilo_min_value", hilo_min_value_, params);
-	setAttribute(prefix, "contour_hi_max_value", hi_max_value_, params);
-	setAttribute(prefix, "contour_hi_min_value", hi_min_value_, params);
-	setAttribute(prefix, "contour_lo_max_value", lo_max_value_, params);
-	setAttribute(prefix, "contour_lo_min_value", lo_min_value_, params);
-	setMember(prefix, "contour_hilo_marker", marker_, params);
-}
-
-void HiLoAttributes::copy(const HiLoAttributes& other)
-{
-	type_ = auto_ptr<HiLoTechnique>(other.type_->clone());
-	window_size_ = other.window_size_;
-	suppress_radius_ = other.suppress_radius_;
-	hilo_max_value_ = other.hilo_max_value_;
-	hilo_min_value_ = other.hilo_min_value_;
-	hi_max_value_ = other.hi_max_value_;
-	hi_min_value_ = other.hi_min_value_;
-	lo_max_value_ = other.lo_max_value_;
-	lo_min_value_ = other.lo_min_value_;
-	marker_ = auto_ptr<HiLoMarkerBase>(other.marker_->clone());
-} 
-
-
-bool HiLoAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "hilo")  )
-		return true;
-
-	if ( acceptNode(node, type_) )
-		return true;
-
-	if ( acceptNode(node, marker_) )
-		return true;
-	return false;
-}
-
-void HiLoAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "hilo") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), type_, node);
-		setMember(node.name(), marker_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), type_, *(*elt)); 
-		setMember((*elt)->name(), marker_, *(*elt)); 
-	}
-}
-
-void HiLoAttributes::print(ostream& out)  const
-{
-	out << "HiLoAttributes[";
-	out << "type = " << *type_;
-	out << ", window_size = " << window_size_;
-	out << ", suppress_radius = " << suppress_radius_;
-	out << ", hilo_max_value = " << hilo_max_value_;
-	out << ", hilo_min_value = " << hilo_min_value_;
-	out << ", hi_max_value = " << hi_max_value_;
-	out << ", hi_min_value = " << hi_min_value_;
-	out << ", lo_max_value = " << lo_max_value_;
-	out << ", lo_min_value = " << lo_min_value_;
-	out << ", marker = " << *marker_;
-	out << "]" << "\n";
-}
-
-
-void HiLoAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"hilo\"";
-	 out << ", \"contour_hilo_type\":";
-	 type_->toxml(out);
-	 out << ", \"contour_hilo_window_size\":";
-	 niceprint(out,window_size_);
-	 out << ", \"contour_hilo_suppress_radius\":";
-	 niceprint(out,suppress_radius_);
-	 out << ", \"contour_hilo_max_value\":";
-	 niceprint(out,hilo_max_value_);
-	 out << ", \"contour_hilo_min_value\":";
-	 niceprint(out,hilo_min_value_);
-	 out << ", \"contour_hi_max_value\":";
-	 niceprint(out,hi_max_value_);
-	 out << ", \"contour_hi_min_value\":";
-	 niceprint(out,hi_min_value_);
-	 out << ", \"contour_lo_max_value\":";
-	 niceprint(out,lo_max_value_);
-	 out << ", \"contour_lo_min_value\":";
-	 niceprint(out,lo_min_value_);
-	 out << ", \"contour_hilo_marker\":";
-	 marker_->toxml(out);
-}
-static MagicsParameter<string> contour_hilo_type("contour_hilo_type", "text", " New Magics: Parameter contour_hilo_type sent to new Magics[HiLo].  ");
-static MagicsParameter<int> contour_hilo_window_size("contour_hilo_window_size", 3, " New Magics: Parameter contour_hilo_window_size sent to new Magics[HiLo].  ");
-static MagicsParameter<double> contour_hilo_suppress_radius("contour_hilo_suppress_radius", 15.0, " New Magics: Parameter contour_hilo_suppress_radius sent to new Magics[HiLo].  ");
-static MagicsParameter<double> contour_hilo_max_value("contour_hilo_max_value", 1.0e+21, " New Magics: Parameter contour_hilo_max_value sent to new Magics[HiLo].  ");
-static MagicsParameter<double> contour_hilo_min_value("contour_hilo_min_value", -1.0e+21, " New Magics: Parameter contour_hilo_min_value sent to new Magics[HiLo].  ");
-static MagicsParameter<double> contour_hi_max_value("contour_hi_max_value", 1.0e+21, " New Magics: Parameter contour_hi_max_value sent to new Magics[HiLo].  ");
-static MagicsParameter<double> contour_hi_min_value("contour_hi_min_value", -1.0e+21, " New Magics: Parameter contour_hi_min_value sent to new Magics[HiLo].  ");
-static MagicsParameter<double> contour_lo_max_value("contour_lo_max_value", 1.0e+21, "");
-static MagicsParameter<double> contour_lo_min_value("contour_lo_min_value", -1.0e+21, "");
-static MagicsParameter<string> contour_hilo_marker("contour_hilo_marker", "off", "");
-#include "HiLoBoth.h"
-#include "HiLoText.h"
-#include "HiLoNumber.h"
-static SimpleObjectMaker<HiLoText, HiLoTechnique> text_HiLoText("text");
-static SimpleObjectMaker<HiLoNumber, HiLoTechnique> number_HiLoNumber("number");
-static SimpleObjectMaker<HiLoBoth, HiLoTechnique> both_HiLoBoth("both");
-#include "HiLoMarker.h"
-static SimpleObjectMaker<HiLoMarker, HiLoMarkerBase> on_HiLoMarker("on");
-static SimpleObjectMaker<HiLoMarker, HiLoMarkerBase> marker_HiLoMarker("marker");
-static SimpleObjectMaker<NoHiLoMarker, HiLoMarkerBase> off_NoHiLoMarker("off");
-static SimpleObjectMaker<NoHiLoMarker, HiLoMarkerBase> nomarker_NoHiLoMarker("nomarker");
diff --git a/src/visualisers/HiLoAttributes.h b/src/visualisers/HiLoAttributes.h
deleted file mode 100644
index 504c3dc..0000000
--- a/src/visualisers/HiLoAttributes.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HiLoAttributes.h
-    \brief Definition of HiLo Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef HiLoAttributes_H
-#define HiLoAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "HiLoTechnique.h"
-#include "HiLoMarkerBase.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HiLoAttributes 
-{
-public:
-//  --  constructor
-    HiLoAttributes();
-    
-//  --  destructor
-    virtual ~HiLoAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HiLoAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<HiLoTechnique> type_;
-	int window_size_;
-	double suppress_radius_;
-	double hilo_max_value_;
-	double hilo_min_value_;
-	double hi_max_value_;
-	double hi_min_value_;
-	double lo_max_value_;
-	double lo_min_value_;
-	auto_ptr<HiLoMarkerBase> marker_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HiLoAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/HiLoMarkerAttributes.h b/src/visualisers/HiLoMarkerAttributes.h
deleted file mode 100644
index 002ab6a..0000000
--- a/src/visualisers/HiLoMarkerAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HiLoMarkerAttributes.h
-    \brief Definition of HiLoMarker Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef HiLoMarkerAttributes_H
-#define HiLoMarkerAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HiLoMarkerAttributes 
-{
-public:
-//  --  constructor
-    HiLoMarkerAttributes();
-    
-//  --  destructor
-    virtual ~HiLoMarkerAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HiLoMarkerAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double height_;
-	int index_;
-	auto_ptr<Colour> colour_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HiLoMarkerAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/HiLoNumber.h b/src/visualisers/HiLoNumber.h
index d4a94d6..58f3c28 100644
--- a/src/visualisers/HiLoNumber.h
+++ b/src/visualisers/HiLoNumber.h
@@ -77,14 +77,14 @@ protected:
              Text* text = new Text();
              text->addText(nice.str(), *this->hi_colour_, this->contour_hilo_height_);
              hilo.push_back(text);
-             text->setBlanking(this->blanking_);
+             //text->setBlanking(this->blanking_);
              text->push_back(point);
         }
         else if ( point.low()) {
              Text* text = new Text();
              text->addText(nice.str(), *this->lo_colour_, this->contour_hilo_height_);
              hilo.push_back(text);
-             text->setBlanking(this->blanking_);
+             //text->setBlanking(this->blanking_);
              text->push_back(point);
         } 
         else {
diff --git a/src/visualisers/HiLoNumberAttributes.h b/src/visualisers/HiLoNumberAttributes.h
deleted file mode 100644
index cf4479d..0000000
--- a/src/visualisers/HiLoNumberAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HiLoNumberAttributes.h
-    \brief Definition of HiLoNumber Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef HiLoNumberAttributes_H
-#define HiLoNumberAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HiLoNumberAttributes 
-{
-public:
-//  --  constructor
-    HiLoNumberAttributes();
-    
-//  --  destructor
-    virtual ~HiLoNumberAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HiLoNumberAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string format_;
-	bool blanking_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HiLoNumberAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/HiLoTechnique.cc b/src/visualisers/HiLoTechnique.cc
deleted file mode 100644
index e442314..0000000
--- a/src/visualisers/HiLoTechnique.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file HiLoTechnique.cc
-    \brief Implementation of the Template class HiLoTechnique.
-    
-    Magics Team - ECMWF 2004
-    
-    Started: Thu 24-Jun-2004
-    
-    Changes:
-    
-*/
-
-#include "HiLoTechnique.h"
-
-using namespace magics;
-
-template <class P>
-HiLoTechnique<P>::HiLoTechnique() 
-{
-}
-
-template <class P>
-HiLoTechnique<P>::~HiLoTechnique() 
-{
-}
-
-/*!
- Class information are given to the output-stream.
-*/	
-template <class P>	
-void HiLoTechnique<P>::print(ostream& out)  const
-{
-	out << "HiLoTechnique<P>";
-}
-
diff --git a/src/visualisers/HiLoTechniqueAttributes.h b/src/visualisers/HiLoTechniqueAttributes.h
deleted file mode 100644
index a118af4..0000000
--- a/src/visualisers/HiLoTechniqueAttributes.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HiLoTechniqueAttributes.h
-    \brief Definition of HiLoTechnique Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef HiLoTechniqueAttributes_H
-#define HiLoTechniqueAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HiLoTechniqueAttributes 
-{
-public:
-//  --  constructor
-    HiLoTechniqueAttributes();
-    
-//  --  destructor
-    virtual ~HiLoTechniqueAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HiLoTechniqueAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double contour_hilo_height_;
-	string contour_hilo_quality_;
-	auto_ptr<Colour> hi_colour_;
-	auto_ptr<Colour> lo_colour_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HiLoTechniqueAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/HiLoTextAttributes.h b/src/visualisers/HiLoTextAttributes.h
deleted file mode 100644
index ae54d2e..0000000
--- a/src/visualisers/HiLoTextAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HiLoTextAttributes.h
-    \brief Definition of HiLoText Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef HiLoTextAttributes_H
-#define HiLoTextAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HiLoTextAttributes 
-{
-public:
-//  --  constructor
-    HiLoTextAttributes();
-    
-//  --  destructor
-    virtual ~HiLoTextAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HiLoTextAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string hi_text_;
-	string lo_text_;
-	bool blanking_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HiLoTextAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/Histogram.cc b/src/visualisers/Histogram.cc
index cfe85bd..24201fc 100644
--- a/src/visualisers/Histogram.cc
+++ b/src/visualisers/Histogram.cc
@@ -194,12 +194,10 @@ void Histogram::visit(const IntervalMap<Colour>& beans, Data& data, PointsHandle
 				   	ymax_ = ticks.back();
 				   	cartesian->setAutomaticX(true);
 				   	cartesian->setAutomaticY(true);
-				   	cartesian->setMinX(xmin_-width_*0.1);
-				   cartesian->setMinX(xmin_-width_*0.1);
-				   cartesian->setMaxX(xmax_+width_*0.1);
-				   cartesian->setMinY(-height_*0.1);
-				   MagLog::dev()<<  "maxy=" << *std::max_element(y.begin(), y.end()) << endl;
-				   cartesian->setMaxY(ymax_+height_*0.1);
+
+				   cartesian->setMinMaxX(xmin_-width_*0.1, xmax_+width_*0.1);
+				   cartesian->setMinMaxY(-height_*0.1, ymax_+height_*0.1);
+
 				   visitor.transformation(cartesian);
 	Polyline* frame = new Polyline();
 	frame->setColour(Colour("navy"));
diff --git a/src/visualisers/HistogramAttributes.cc b/src/visualisers/HistogramAttributes.cc
deleted file mode 100644
index 0103b81..0000000
--- a/src/visualisers/HistogramAttributes.cc
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HistogramAttributes.cc
-    \brief Implementation of Histogram Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:19 2013
-*/    
-
-#include "HistogramAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-HistogramAttributes::HistogramAttributes():
-	levels_(MagTranslator<string, LevelSelection>().magics("histogram_selection_type")),
-	min_(ParameterManager::getDouble("histogram_min_value")),
-	max_(ParameterManager::getDouble("histogram_max_value")),
-	count_(ParameterManager::getInt("histogram_level_count")),
-	tolerance_(ParameterManager::getInt("histogram_level_tolerance")),
-	reference_(ParameterManager::getDouble("histogram_reference_level")),
-	interval_(ParameterManager::getDouble("histogram_interval")),
-	list_(ParameterManager::getDoubleArray("histogram_level_list")),
-	colour_(MagTranslator<string, Colour>().magics("histogram_bar_colour")),
-	width_(ParameterManager::getDouble("histogram_bar_width"))
-{
-} 
-
-
-
-HistogramAttributes::~HistogramAttributes()
-{
-}
-
-    
-void HistogramAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(0);
-
-	setMember(prefix, "histogram_selection_type", levels_, params);
-	setAttribute(prefix, "histogram_min_value", min_, params);
-	setAttribute(prefix, "histogram_max_value", max_, params);
-	setAttribute(prefix, "histogram_level_count", count_, params);
-	setAttribute(prefix, "histogram_level_tolerance", tolerance_, params);
-	setAttribute(prefix, "histogram_reference_level", reference_, params);
-	setAttribute(prefix, "histogram_interval", interval_, params);
-	setAttribute(prefix, "histogram_level_list", list_, params);
-	setAttribute(prefix, "histogram_bar_colour", colour_, params);
-	setAttribute(prefix, "histogram_bar_width", width_, params);
-}
-
-void HistogramAttributes::copy(const HistogramAttributes& other)
-{
-	levels_ = auto_ptr<LevelSelection>(other.levels_->clone());
-	min_ = other.min_;
-	max_ = other.max_;
-	count_ = other.count_;
-	tolerance_ = other.tolerance_;
-	reference_ = other.reference_;
-	interval_ = other.interval_;
-	list_ = other.list_;
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	width_ = other.width_;
-} 
-
-
-bool HistogramAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "histogram")  )
-		return true;
-
-	if ( acceptNode(node, levels_) )
-		return true;
-	return false;
-}
-
-void HistogramAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "histogram") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), levels_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), levels_, *(*elt)); 
-	}
-}
-
-void HistogramAttributes::print(ostream& out)  const
-{
-	out << "HistogramAttributes[";
-	out << "levels = " << *levels_;
-	out << ", min = " << min_;
-	out << ", max = " << max_;
-	out << ", count = " << count_;
-	out << ", tolerance = " << tolerance_;
-	out << ", reference = " << reference_;
-	out << ", interval = " << interval_;
-	out << ", list = " << list_;
-	out << ", colour = " << *colour_;
-	out << ", width = " << width_;
-	out << "]" << "\n";
-}
-
-
-void HistogramAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"histogram\"";
-	 out << ", \"histogram_selection_type\":";
-	 levels_->toxml(out);
-	 out << ", \"histogram_min_value\":";
-	 niceprint(out,min_);
-	 out << ", \"histogram_max_value\":";
-	 niceprint(out,max_);
-	 out << ", \"histogram_level_count\":";
-	 niceprint(out,count_);
-	 out << ", \"histogram_level_tolerance\":";
-	 niceprint(out,tolerance_);
-	 out << ", \"histogram_reference_level\":";
-	 niceprint(out,reference_);
-	 out << ", \"histogram_interval\":";
-	 niceprint(out,interval_);
-	 out << ", \"histogram_level_list\":";
-	 niceprint(out,list_);
-	 out << ", \"histogram_bar_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"histogram_bar_width\":";
-	 niceprint(out,width_);
-}
-static MagicsParameter<string> histogram_selection_type("histogram_selection_type", "count", "");
-static MagicsParameter<double> histogram_min_value("histogram_min_value", -1.e21, "");
-static MagicsParameter<double> histogram_max_value("histogram_max_value", 1.e21, "");
-static MagicsParameter<int> histogram_level_count("histogram_level_count", 10, "");
-static MagicsParameter<int> histogram_level_tolerance("histogram_level_tolerance", 2, "");
-static MagicsParameter<double> histogram_reference_level("histogram_reference_level", 0.0, "");
-static MagicsParameter<double> histogram_interval("histogram_interval", 8.0, "");
-static MagicsParameter<floatarray> histogram_level_list("histogram_level_list", floatarray(), "");
-static MagicsParameter<string> histogram_bar_colour("histogram_bar_colour", "evergreen", "");
-static MagicsParameter<double> histogram_bar_width("histogram_bar_width", 1, "");
-#include "CountSelectionType.h"
-#include "IntervalSelectionType.h"
-#include "LevelListSelectionType.h"
-static SimpleObjectMaker<CountSelectionType, LevelSelection> count_CountSelectionType("count");
-static SimpleObjectMaker<IntervalSelectionType, LevelSelection> interval_IntervalSelectionType("interval");
-static SimpleObjectMaker<LevelListSelectionType, LevelSelection> list_LevelListSelectionType("list");
diff --git a/src/visualisers/HistogramLegendMethodAttributes.h b/src/visualisers/HistogramLegendMethodAttributes.h
deleted file mode 100644
index f52c07a..0000000
--- a/src/visualisers/HistogramLegendMethodAttributes.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file HistogramLegendMethodAttributes.h
-    \brief Definition of HistogramLegendMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef HistogramLegendMethodAttributes_H
-#define HistogramLegendMethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class HistogramLegendMethodAttributes 
-{
-public:
-//  --  constructor
-    HistogramLegendMethodAttributes();
-    
-//  --  destructor
-    virtual ~HistogramLegendMethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const HistogramLegendMethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	int label_frequency_;
-	bool histo_border_;
-	auto_ptr<Colour> histo_border_colour_;
-	bool histo_mean_;
-	int histo_mean_marker_;
-	auto_ptr<Colour> histo_mean_colour_;
-	double histo_mean_size_;
-	bool histo_max_;
-	auto_ptr<Colour> histo_grid_colour_;
-	LineStyle histo_grid_style_;
-	int histo_grid_thickness_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const HistogramLegendMethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ImageListColourTechnique.h b/src/visualisers/ImageListColourTechnique.h
index 81c1512..cfafbd4 100644
--- a/src/visualisers/ImageListColourTechnique.h
+++ b/src/visualisers/ImageListColourTechnique.h
@@ -49,7 +49,7 @@ public:
 	bool accept(const string& node ) { return ImageListColourTechniqueAttributes::accept(node); }
 
 	virtual stringarray getValues() const { return values_; }
-
+	virtual ListPolicy getPolicy() const { return M_LASTONE; }
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream& out ) const { out <<  "ImageListColourTechnique[]"; }
diff --git a/src/visualisers/ImagePlottingAttributes.h b/src/visualisers/ImagePlottingAttributes.h
deleted file mode 100644
index f5018b8..0000000
--- a/src/visualisers/ImagePlottingAttributes.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ImagePlottingAttributes.h
-    \brief Definition of ImagePlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef ImagePlottingAttributes_H
-#define ImagePlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "LookupTableMode.h"
-#include "ColourTableDefinition.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ImagePlottingAttributes 
-{
-public:
-//  --  constructor
-    ImagePlottingAttributes();
-    
-//  --  destructor
-    virtual ~ImagePlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ImagePlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<LookupTableMode> mode_;
-	auto_ptr<ColourTableDefinition> colourMethod_;
-	int count_;
-	int pixelFrequency_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ImagePlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ImportPlotAttributes.h b/src/visualisers/ImportPlotAttributes.h
deleted file mode 100644
index de7023c..0000000
--- a/src/visualisers/ImportPlotAttributes.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ImportPlotAttributes.h
-    \brief Definition of ImportPlot Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef ImportPlotAttributes_H
-#define ImportPlotAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ImportPlotAttributes 
-{
-public:
-//  --  constructor
-    ImportPlotAttributes();
-    
-//  --  destructor
-    virtual ~ImportPlotAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ImportPlotAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string format_;
-	string system_;
-	double x_;
-	double y_;
-	double width_;
-	string crs_;
-	double crs_minx_;
-	double crs_maxx_;
-	double crs_miny_;
-	double crs_maxy_;
-	double height_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ImportPlotAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/IntervalSelectionTypeAttributes.h b/src/visualisers/IntervalSelectionTypeAttributes.h
deleted file mode 100644
index 9f37a2a..0000000
--- a/src/visualisers/IntervalSelectionTypeAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IntervalSelectionTypeAttributes.h
-    \brief Definition of IntervalSelectionType Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef IntervalSelectionTypeAttributes_H
-#define IntervalSelectionTypeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class IntervalSelectionTypeAttributes 
-{
-public:
-//  --  constructor
-    IntervalSelectionTypeAttributes();
-    
-//  --  destructor
-    virtual ~IntervalSelectionTypeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const IntervalSelectionTypeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double reference_;
-	double interval_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const IntervalSelectionTypeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/IsoHelper.cc b/src/visualisers/IsoHelper.cc
index 0fbf248..22f328e 100644
--- a/src/visualisers/IsoHelper.cc
+++ b/src/visualisers/IsoHelper.cc
@@ -88,7 +88,7 @@ static Mutex locklines_;
 
 void IsoHelper::run()
 {
-	deque<pair<double, pair<pair<double, double>, pair<double, double > > > > todo;
+	deque< std::pair<double, pair< std::pair<double, double>, pair<double, double > > > > todo;
 
     int last = 0;
     
@@ -130,11 +130,11 @@ void IsoHelper::run()
     }
     
     {AutoLock<Mutex> locklines(locklines_);
-    for ( deque<pair<double, pair<pair<double, double>, pair<double, double > > > >::iterator x = todo.begin();
+    for ( deque< std::pair<double, pair< std::pair<double, double>, pair<double, double > > > >::iterator x = todo.begin();
             x != todo.end(); ++x) {
         
     	
-        pair<pair<double, double>, pair<double, double > >& segment = x->second;  
+        pair< std::pair<double, double>, pair<double, double > >& segment = x->second;  
         
         
         double x1 = segment.first.first;
diff --git a/src/visualisers/IsoHelper.h b/src/visualisers/IsoHelper.h
index a0bfae9..7a74bbc 100644
--- a/src/visualisers/IsoHelper.h
+++ b/src/visualisers/IsoHelper.h
@@ -28,7 +28,7 @@ namespace magics {
 struct IsoData {
 public:
     IsoData() { more_ = true; }
-    deque<pair<double, pair<pair<double, double>, pair<double, double > > > > segments_;
+    deque< std::pair<double, pair< std::pair<double, double>, pair<double, double > > > > segments_;
     //deque<Shape*> shapes_;
     
     bool more_;
diff --git a/src/visualisers/IsoHighlightAttributes.h b/src/visualisers/IsoHighlightAttributes.h
deleted file mode 100644
index 243f285..0000000
--- a/src/visualisers/IsoHighlightAttributes.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IsoHighlightAttributes.h
-    \brief Definition of IsoHighlight Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:24 2013
-*/
-   
-
-#ifndef IsoHighlightAttributes_H
-#define IsoHighlightAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class IsoHighlightAttributes 
-{
-public:
-//  --  constructor
-    IsoHighlightAttributes();
-    
-//  --  destructor
-    virtual ~IsoHighlightAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const IsoHighlightAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	LineStyle style_;
-	double reference_;
-	auto_ptr<Colour> colour_;
-	int thickness_;
-	int frequency_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const IsoHighlightAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/IsoLabelAttributes.h b/src/visualisers/IsoLabelAttributes.h
deleted file mode 100644
index ecb5edb..0000000
--- a/src/visualisers/IsoLabelAttributes.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IsoLabelAttributes.h
-    \brief Definition of IsoLabel Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef IsoLabelAttributes_H
-#define IsoLabelAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class IsoLabelAttributes 
-{
-public:
-//  --  constructor
-    IsoLabelAttributes();
-    
-//  --  destructor
-    virtual ~IsoLabelAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const IsoLabelAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string type_;
-	string text_;
-	double height_;
-	string format_;
-	bool blanking_;
-	string font_;
-	string style_;
-	string colour_;
-	int frequency_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const IsoLabelAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/IsoPlot.cc b/src/visualisers/IsoPlot.cc
index 91cdec6..087974e 100644
--- a/src/visualisers/IsoPlot.cc
+++ b/src/visualisers/IsoPlot.cc
@@ -312,7 +312,7 @@ public:
         	}
         	joiner.reserve(count);
 
-        	//cout << "SegmentJoiner-->(" << count << " points)" << endl;
+
         	// feed the joiner
         	for ( vector<Shape*>::iterator s = index->second.begin(); s !=index->second.end(); ++s) {
         		vector<Point>& points = (*s)->points_;
@@ -336,7 +336,7 @@ public:
         			vector<Point>::iterator to = points.begin();
         			to++;
         			while ( to != points.end() ) {
-        				//cout << *from << " " << *to << endl;
+
         				joiner.push_back(*from, *to);
         				++from;
         				++to;
@@ -350,7 +350,7 @@ public:
         	vector<vector<Point> > result;
         	vector<vector<Point> > polys;
         	list<vector<Point> > holes;
-        	//cout << "<---SegmentJoiner" << endl;
+
 
 
         	joiner.computePolygonLines(result);
@@ -383,7 +383,7 @@ public:
             		             		poly->push_back(PaperPoint(point->x_, point->y_));
 
 
-            	        for(list<vector<Point> >::iterator h = holes.begin() ; h != holes.end(); ) {
+            	        for(std::list<vector<Point> >::iterator h = holes.begin() ; h != holes.end(); ) {
             	            list<vector<Point> >::iterator next = h; next++;
 
 
@@ -586,7 +586,7 @@ void IsoPlot::isoline(Cell& cell, CellBox* box) const
         }
 
 
-        vector<pair<Shape*, Shape*> > shapes;
+        vector< std::pair<Shape*, Shape*> > shapes;
         
         // First, build the list of isolines in this triangle...
         vector<int> levels;        
@@ -1112,7 +1112,7 @@ void IsoPlot::isoline(Cell& cell, CellBox* box) const
               {
                  AutoLock<MutexCond> lock(segments_[t]->cond_);
                  segments_[t]->segments_.push_back(make_pair(levels_[*l], 
-                                                   make_pair(make_pair(x1, y1), make_pair(x2, y2))));
+                                                   std::make_pair(make_pair(x1, y1), std::make_pair(x2, y2))));
                  if ( segments_[t]->segments_.size() >= 2000 ) 
                        segments_[t]->cond_.signal();
                  }
@@ -1139,8 +1139,8 @@ void IsoPlot::isoline(Cell& cell, CellBox* box) const
 
         // Now we reduce the shape! 
 
-        vector<pair<Shape*, Shape*> >::iterator current = shapes.begin();    
-        vector<pair<Shape*, Shape*> >::iterator next = shapes.begin();
+        vector< std::pair<Shape*, Shape*> >::iterator current = shapes.begin();    
+        vector< std::pair<Shape*, Shape*> >::iterator next = shapes.begin();
         box->reshape(current->first);
 
         next++;
@@ -1329,6 +1329,9 @@ void IsoPlot::isoline(MatrixHandler& data, BasicGraphicsObjectContainer& parent)
     (*shading_)(data, parent);
     (*highlight_).prepare(*levelSelection_);
 
+    rainbowMethod_->set(*this);
+    rainbowMethod_->prepare(*levelSelection_);
+
     // Now we feed the task...   
     for (vector<vector<Polyline* >* >::const_iterator lines = lines_.begin(); lines != lines_.end(); ++lines)
     {
@@ -1337,7 +1340,11 @@ void IsoPlot::isoline(MatrixHandler& data, BasicGraphicsObjectContainer& parent)
         if ( (*poly)->empty() ) continue;
         (*poly)->setLineStyle(style_);
         (*poly)->setThickness(thickness_);
-        (*poly)->setColour(*colour_);
+
+        if ( !rainbow_ )
+        	(*poly)->setColour(*colour_);
+        else
+        	(*poly)->setColour((*rainbowMethod_)((*poly)->front().value()));
 #ifdef ISOPLOT_DEBUG
         (*poly)->setColour(*colour);
         colour++;
@@ -1345,6 +1352,9 @@ void IsoPlot::isoline(MatrixHandler& data, BasicGraphicsObjectContainer& parent)
             colour = colours.begin();
 #endif
         (*highlight_)(*(*poly));
+        if ( rainbow_ ) {
+        	(*poly)->setColour((*rainbowMethod_)((*poly)->front().value()));
+        }
         (*label_)(**poly, (*poly)->front().value());
 
         parent.push_back(*poly);
@@ -1356,6 +1366,7 @@ void IsoPlot::isoline(MatrixHandler& data, BasicGraphicsObjectContainer& parent)
 }
 
 
+
  void NoIsoPlot::operator()(MatrixHandler& data, BasicGraphicsObjectContainer& parent)
 {
     // Create the isolines...        
@@ -1571,8 +1582,8 @@ CellArray::CellArray(MatrixHandler& data, IntervalMap<int>& range, const Transfo
 //	int i = 0;
 
 	missing_ = data.missing();
-	double x = transformation.getMinPCX();
-	double y =  transformation.getMinPCY();
+	double firstx = transformation.getMinPCX();
+	double firsty = transformation.getMinPCY();
 
 	double stepx =  ( transformation.getMaxPCX() -  transformation.getMinPCX() )/ (columns_);
 	double stepy =  ( transformation.getMaxPCY() -  transformation.getMinPCY() )/ (rows_);
@@ -1580,31 +1591,30 @@ CellArray::CellArray(MatrixHandler& data, IntervalMap<int>& range, const Transfo
 	{
 		Timer timer("matrix", "prepare");
 
-		vector<pair<double, double> > xypoints;
-		vector<pair<double, double> > geopoints;
+		vector< std::pair<double, double> > xypoints;
+		vector< std::pair<double, double> > geopoints;
+		double x = firstx, y = firsty;
 		xypoints.reserve(rows_+1 * columns_+1);
 		for (int row = 0; row <= rows_; row++) {
-			    x =  transformation.getMinPCX();
+			    x = firstx;
+				y = firsty + (row*stepy);    // multiplication here avoids accumulation of errors
 			    points_.rowsAxis().push_back(y);
 				for (int column = 0; column <= columns_; column++) {
+					x = firstx + (column*stepx);  // multiplication here avoids accumulation of errors
 					xypoints.push_back(make_pair(x, y));
 					if ( row == 0) {
 						points_.columnsAxis().push_back(x);
-
 					}
-					x += stepx;
 				}
-
-				y += stepy;
 		}
 		transformation.revert(xypoints, geopoints);
-		vector<pair<double, double> >::iterator geo= geopoints.begin();
+		vector< std::pair<double, double> >::iterator geo= geopoints.begin();
 		double min =  data.min();
 		double max =  data.max();
 		double missing =  data.missing();
 
 		MagLog::dev() << "min = " << data.min() << "  max = " << data.max() << endl;
-		for (vector<pair<double, double> >::iterator xy = xypoints.begin(); xy != xypoints.end(); ++xy) {
+		for (vector< std::pair<double, double> >::iterator xy = xypoints.begin(); xy != xypoints.end(); ++xy) {
 
 					double value;
 					if  ( geo->second == -1000) {
@@ -1720,7 +1730,7 @@ GridCell::GridCell(const CellArray& data, int row, int column, const Transformat
 
 
 		}
-		////cout << "[-------------------]" << endl;
+
 	}
 void Shape::intersection(Shape& other) {
 
@@ -1775,7 +1785,7 @@ void Shape::intersection(Shape& other) {
 				}
 
 				if ( SegmentJoiner::isHole(points_) ) {
-				       //cout << " hole -> revert! " << endl;
+
 				       std::reverse(points_.begin(), points_.end());
 
 				      }
diff --git a/src/visualisers/IsoPlot.h b/src/visualisers/IsoPlot.h
index 4841c7f..f5e9df0 100644
--- a/src/visualisers/IsoPlot.h
+++ b/src/visualisers/IsoPlot.h
@@ -181,10 +181,10 @@ class Cell
 public:	
 	Cell(const CellArray& parent) : parent_(parent), missing_(parent.missing_) { }
 	Cell(const CellArray& parent, int row, int column):  parent_(parent), row_(row), column_(column)  {
-		indexes_[0] = make_pair(row_, column_);
-		indexes_[1] = make_pair(row_, column_+1);
-		indexes_[2] = make_pair(row_+1, column_+1);
-		indexes_[3] = make_pair(row_+1, column_);
+		indexes_[0] = std::make_pair(row_, column_);
+		indexes_[1] = std::make_pair(row_, column_+1);
+		indexes_[2] = std::make_pair(row_+1, column_+1);
+		indexes_[3] = std::make_pair(row_+1, column_);
 			
 		min_  = 100000000;
 		max_ = -min_;
@@ -241,7 +241,7 @@ public:
 	
 	int outOfRange_;
 
-	pair<int, int> indexes_[4];
+	std::pair<int, int> indexes_[4];
 	
 	
 	
@@ -363,7 +363,7 @@ public:
 class CellBox;
 
 
-class IsoPlot: public IsoPlotAttributes {
+class IsoPlot: public IsoPlotAttributes, public ColourTechniqueInterface {
 
 public:
 	IsoPlot();
@@ -388,6 +388,14 @@ public:
 	void setTag(const string&)  {
 		//IsoPlotAttributes::setTag(tag);
 	}
+	// implemts colourtechnique interface for the rainbow method ...
+	const Colour&  getMinColour() const { return *rainbowMinColour_; }
+	const Colour&  getMaxColour() const { return *rainbowMaxColour_; }
+	const string& getDirection() const { return rainbowDirection_; }
+	stringarray getColours() const { return rainbowColours_; }
+	ListPolicy getPolicy() const { return rainbowColourPolicy_; }
+
+	const Colour& rainbow(double value);
 
 	void adjust(double min, double max) 
 	{ min_ = min; max_ = max; }
diff --git a/src/visualisers/IsoPlotAttributes.cc b/src/visualisers/IsoPlotAttributes.cc
deleted file mode 100644
index bd9507e..0000000
--- a/src/visualisers/IsoPlotAttributes.cc
+++ /dev/null
@@ -1,222 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IsoPlotAttributes.cc
-    \brief Implementation of IsoPlot Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "IsoPlotAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-IsoPlotAttributes::IsoPlotAttributes():
-	legend_special_(ParameterManager::getString("contour_special_legend")),
-	resolution_(ParameterManager::getDouble("contour_internal_reduction_factor")),
-	technique_(ParameterManager::getString("contour_internal_technique")),
-	legend_text_(ParameterManager::getString("contour_legend_text")),
-	style_(MagTranslator<string, LineStyle>().magics("contour_line_style")),
-	thickness_(ParameterManager::getInt("contour_line_thickness")),
-	colour_(MagTranslator<string, Colour>().magics("contour_line_colour")),
-	highlight_(MagTranslator<string, NoIsoHighlight>().magics("contour_highlight")),
-	levelSelection_(MagTranslator<string, LevelSelection>().magics("contour_level_selection_type")),
-	label_(MagTranslator<string, NoIsoLabel>().magics("contour_label")),
-	shading_(MagTranslator<string, NoIsoShading>().magics("contour_shade")),
-	legend_only_(ParameterManager::getBool("contour_legend_only"))
-{
-} 
-
-
-
-IsoPlotAttributes::~IsoPlotAttributes()
-{
-}
-
-    
-void IsoPlotAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(2);
-	prefix[0] = "contour_line";
-	prefix[1] = "contour";
-
-	setAttribute(prefix, "contour_special_legend", legend_special_, params);
-	setAttribute(prefix, "contour_internal_reduction_factor", resolution_, params);
-	setAttribute(prefix, "contour_internal_technique", technique_, params);
-	setAttribute(prefix, "contour_legend_text", legend_text_, params);
-	setAttribute(prefix, "contour_line_style", style_, params);
-	setAttribute(prefix, "contour_line_thickness", thickness_, params);
-	setAttribute(prefix, "contour_line_colour", colour_, params);
-	setMember(prefix, "contour_highlight", highlight_, params);
-	setMember(prefix, "contour_level_selection_type", levelSelection_, params);
-	setMember(prefix, "contour_label", label_, params);
-	setMember(prefix, "contour_shade", shading_, params);
-	setAttribute(prefix, "contour_legend_only", legend_only_, params);
-}
-
-void IsoPlotAttributes::copy(const IsoPlotAttributes& other)
-{
-	legend_special_ = other.legend_special_;
-	resolution_ = other.resolution_;
-	technique_ = other.technique_;
-	legend_text_ = other.legend_text_;
-	style_ = other.style_;
-	thickness_ = other.thickness_;
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	highlight_ = auto_ptr<NoIsoHighlight>(other.highlight_->clone());
-	levelSelection_ = auto_ptr<LevelSelection>(other.levelSelection_->clone());
-	label_ = auto_ptr<NoIsoLabel>(other.label_->clone());
-	shading_ = auto_ptr<NoIsoShading>(other.shading_->clone());
-	legend_only_ = other.legend_only_;
-} 
-
-
-bool IsoPlotAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "isoline")  )
-		return true;
-
-	if ( acceptNode(node, highlight_) )
-		return true;
-
-	if ( acceptNode(node, levelSelection_) )
-		return true;
-
-	if ( acceptNode(node, label_) )
-		return true;
-
-	if ( acceptNode(node, shading_) )
-		return true;
-	return false;
-}
-
-void IsoPlotAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "isoline") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), highlight_, node);
-		setMember(node.name(), levelSelection_, node);
-		setMember(node.name(), label_, node);
-		setMember(node.name(), shading_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), highlight_, *(*elt)); 
-		setMember((*elt)->name(), levelSelection_, *(*elt)); 
-		setMember((*elt)->name(), label_, *(*elt)); 
-		setMember((*elt)->name(), shading_, *(*elt)); 
-	}
-}
-
-void IsoPlotAttributes::print(ostream& out)  const
-{
-	out << "IsoPlotAttributes[";
-	out << "legend_special = " << legend_special_;
-	out << ", resolution = " << resolution_;
-	out << ", technique = " << technique_;
-	out << ", legend_text = " << legend_text_;
-	out << ", style = " << style_;
-	out << ", thickness = " << thickness_;
-	out << ", colour = " << *colour_;
-	out << ", highlight = " << *highlight_;
-	out << ", levelSelection = " << *levelSelection_;
-	out << ", label = " << *label_;
-	out << ", shading = " << *shading_;
-	out << ", legend_only = " << legend_only_;
-	out << "]" << "\n";
-}
-
-
-void IsoPlotAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"isoline\"";
-	 out << ", \"contour_special_legend\":";
-	 niceprint(out,legend_special_);
-	 out << ", \"contour_internal_reduction_factor\":";
-	 niceprint(out,resolution_);
-	 out << ", \"contour_internal_technique\":";
-	 niceprint(out,technique_);
-	 out << ", \"contour_legend_text\":";
-	 niceprint(out,legend_text_);
-	 out << ", \"contour_line_style\":";
-	 niceprint(out,style_);
-	 out << ", \"contour_line_thickness\":";
-	 niceprint(out,thickness_);
-	 out << ", \"contour_line_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"contour_highlight\":";
-	 highlight_->toxml(out);
-	 out << ", \"contour_level_selection_type\":";
-	 levelSelection_->toxml(out);
-	 out << ", \"contour_label\":";
-	 label_->toxml(out);
-	 out << ", \"contour_shade\":";
-	 shading_->toxml(out);
-	 out << ", \"contour_legend_only\":";
-	 niceprint(out,legend_only_);
-}
-static MagicsParameter<string> contour_special_legend("contour_special_legend", "", "");
-static MagicsParameter<double> contour_internal_reduction_factor("contour_internal_reduction_factor", 4, "");
-static MagicsParameter<string> contour_internal_technique("contour_internal_technique", "interpolate", "");
-static MagicsParameter<string> contour_legend_text("contour_legend_text", " ", "");
-static MagicsParameter<string> contour_line_style("contour_line_style", "solid", " New Magics: Parameter contour_line_style sent to new Magics[IsoPlot].  ");
-static MagicsParameter<int> contour_line_thickness("contour_line_thickness", 1, " New Magics: Parameter contour_line_thickness sent to new Magics[IsoPlot].  ");
-static MagicsParameter<string> contour_line_colour("contour_line_colour", "blue", " New Magics: Parameter contour_line_colour sent to new Magics[IsoPlot].  ");
-static MagicsParameter<string> contour_highlight("contour_highlight", "on", " New Magics: Parameter contour_highlight sent to new Magics[IsoPlot].  ");
-static MagicsParameter<string> contour_level_selection_type("contour_level_selection_type", "count", "");
-static MagicsParameter<string> contour_label("contour_label", "on", " New Magics: Parameter Contour sent to new Magics[Contour].  ");
-static MagicsParameter<string> contour_shade("contour_shade", "off", " New Magics: Parameter contour_label sent to new Magics[Contour].  ");
-static MagicsParameter<string> contour_legend_only("contour_legend_only", "off", "");
-#include "IsoHighlight.h"
-static SimpleObjectMaker<IsoHighlight, NoIsoHighlight> on_IsoHighlight("on");
-static SimpleObjectMaker<IsoHighlight, NoIsoHighlight> highlight_IsoHighlight("highlight");
-static SimpleObjectMaker<NoIsoHighlight, NoIsoHighlight> off_NoIsoHighlight("off");
-static SimpleObjectMaker<NoIsoHighlight, NoIsoHighlight> nohighlight_NoIsoHighlight("nohighlight");
-#include "CountSelectionType.h"
-#include "IntervalSelectionType.h"
-#include "LevelListSelectionType.h"
-static SimpleObjectMaker<CountSelectionType, LevelSelection> count_CountSelectionType("count");
-static SimpleObjectMaker<IntervalSelectionType, LevelSelection> interval_IntervalSelectionType("interval");
-static SimpleObjectMaker<LevelListSelectionType, LevelSelection> level_list_LevelListSelectionType("level_list");
-static SimpleObjectMaker<LevelListSelectionType, LevelSelection> list_LevelListSelectionType("list");
-#include "IsoLabel.h"
-static SimpleObjectMaker<IsoLabel, NoIsoLabel> on_IsoLabel("on");
-static SimpleObjectMaker<IsoLabel, NoIsoLabel> label_IsoLabel("label");
-static SimpleObjectMaker<NoIsoLabel, NoIsoLabel> off_NoIsoLabel("off");
-static SimpleObjectMaker<NoIsoLabel, NoIsoLabel> nolabel_NoIsoLabel("nolabel");
-#include "IsoShading.h"
-static SimpleObjectMaker<IsoShading, NoIsoShading> on_IsoShading("on");
-static SimpleObjectMaker<IsoShading, NoIsoShading> shading_IsoShading("shading");
-static SimpleObjectMaker<NoIsoShading, NoIsoShading> off_NoIsoShading("off");
-static SimpleObjectMaker<NoIsoShading, NoIsoShading> noshading_NoIsoShading("noshading");
diff --git a/src/visualisers/IsoPlotAttributes.h b/src/visualisers/IsoPlotAttributes.h
deleted file mode 100644
index 0306a39..0000000
--- a/src/visualisers/IsoPlotAttributes.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IsoPlotAttributes.h
-    \brief Definition of IsoPlot Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef IsoPlotAttributes_H
-#define IsoPlotAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "IsoLabel.h"
-#include "LevelSelection.h"
-#include "Colour.h"
-#include "IsoHighlight.h"
-#include "IsoShading.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class IsoPlotAttributes 
-{
-public:
-//  --  constructor
-    IsoPlotAttributes();
-    
-//  --  destructor
-    virtual ~IsoPlotAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const IsoPlotAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string legend_special_;
-	double resolution_;
-	string technique_;
-	string legend_text_;
-	LineStyle style_;
-	int thickness_;
-	auto_ptr<Colour> colour_;
-	auto_ptr<NoIsoHighlight> highlight_;
-	auto_ptr<LevelSelection> levelSelection_;
-	auto_ptr<NoIsoLabel> label_;
-	auto_ptr<NoIsoShading> shading_;
-	bool legend_only_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const IsoPlotAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/IsoShading.cc b/src/visualisers/IsoShading.cc
index 6afe86d..f4d6f51 100644
--- a/src/visualisers/IsoShading.cc
+++ b/src/visualisers/IsoShading.cc
@@ -68,12 +68,46 @@ void IsoShading::print(ostream& out)  const
 	out << "]";
 }
 
+
+class FullArray : public CellArray {
+public:
+	FullArray(MatrixHandler& data, IntervalMap<int>& range, const Transformation& transformation, int, int, float, const string&);
+	double rows() const { return rows_; }
+	double columns() const { return columns_; }
+	double value(const pair<int, int>& pos)  const {
+		return data_(pos.first, pos.second);
+	}
+	double value(int row, int column)  const {
+			return data_(row, column);
+	}
+	double row(int row, int column)  const {
+			return data_.row(row, column);
+	}
+	double row(const pair<int, int>& pos)  const {
+				return data_.row(pos.first, pos.second);
+		}
+
+	double column(const pair<int, int>& pos) const {
+				return data_.column(pos.first, pos.second);
+	}
+	double column(int row, int column) const {
+		return data_.column(row, column);
+	}
+        double range(const pair<int, int>& pos)  const {
+					return rangeFinder_.find(data_(pos.first, pos.second), -1);	
+		}
+
+};
+
+
 CellArray* NoIsoShading::array(MatrixHandler& matrix, IntervalMap<int>& range,
 	        	    		const Transformation& transformation, int width, int height,
 	        	    		float resolution, const string& technique)
 {
 		 return new CellArray(matrix, range, transformation, width, height, resolution, technique);
 
+//		 return new FullArray(matrix, range, transformation, width, height, resolution, technique);
+
 }
 int IsoShading::shadingIndex(double value)
 {
diff --git a/src/visualisers/IsoShadingAttributes.cc b/src/visualisers/IsoShadingAttributes.cc
deleted file mode 100644
index 9acf4a7..0000000
--- a/src/visualisers/IsoShadingAttributes.cc
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IsoShadingAttributes.cc
-    \brief Implementation of IsoShading Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "IsoShadingAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-IsoShadingAttributes::IsoShadingAttributes():
-	technique_(MagTranslator<string, ShadingTechnique>().magics("contour_shade_technique")),
-	max_(ParameterManager::getDouble("contour_shade_max_level")),
-	min_(ParameterManager::getDouble("contour_shade_min_level")),
-	colourMethod_(MagTranslator<string, ColourTechnique>().magics("contour_shade_colour_method"))
-{
-} 
-
-
-
-IsoShadingAttributes::~IsoShadingAttributes()
-{
-}
-
-    
-void IsoShadingAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(5);
-	prefix[0] = "contour_shade";
-	prefix[1] = "contour_shade";
-	prefix[2] = "contour_shade";
-	prefix[3] = "contour";
-	prefix[4] = "contour";
-
-	setMember(prefix, "contour_shade_technique", technique_, params);
-	setAttribute(prefix, "contour_shade_max_level", max_, params);
-	setAttribute(prefix, "contour_shade_min_level", min_, params);
-	setMember(prefix, "contour_shade_colour_method", colourMethod_, params);
-}
-
-void IsoShadingAttributes::copy(const IsoShadingAttributes& other)
-{
-	technique_ = auto_ptr<ShadingTechnique>(other.technique_->clone());
-	max_ = other.max_;
-	min_ = other.min_;
-	colourMethod_ = auto_ptr<ColourTechnique>(other.colourMethod_->clone());
-} 
-
-
-bool IsoShadingAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "shading")  )
-		return true;
-
-	if ( acceptNode(node, technique_) )
-		return true;
-
-	if ( acceptNode(node, colourMethod_) )
-		return true;
-	return false;
-}
-
-void IsoShadingAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "shading") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), technique_, node);
-		setMember(node.name(), colourMethod_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), technique_, *(*elt)); 
-		setMember((*elt)->name(), colourMethod_, *(*elt)); 
-	}
-}
-
-void IsoShadingAttributes::print(ostream& out)  const
-{
-	out << "IsoShadingAttributes[";
-	out << "technique = " << *technique_;
-	out << ", max = " << max_;
-	out << ", min = " << min_;
-	out << ", colourMethod = " << *colourMethod_;
-	out << "]" << "\n";
-}
-
-
-void IsoShadingAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"shading\"";
-	 out << ", \"contour_shade_technique\":";
-	 technique_->toxml(out);
-	 out << ", \"contour_shade_max_level\":";
-	 niceprint(out,max_);
-	 out << ", \"contour_shade_min_level\":";
-	 niceprint(out,min_);
-	 out << ", \"contour_shade_colour_method\":";
-	 colourMethod_->toxml(out);
-}
-static MagicsParameter<string> contour_shade_technique("contour_shade_technique", "polygon_shading", "");
-static MagicsParameter<double> contour_shade_max_level("contour_shade_max_level", 1.0e+21, "");
-static MagicsParameter<double> contour_shade_min_level("contour_shade_min_level", -1.0e+21, "");
-static MagicsParameter<string> contour_shade_colour_method("contour_shade_colour_method", "calculate", "");
-#include "PolyShadingTechnique.h"
-#include "MarkerShadingTechnique.h"
-#include "CellShading.h"
-static SimpleObjectMaker<PolyShadingTechnique, ShadingTechnique> polygon_shading_PolyShadingTechnique("polygon_shading");
-static SimpleObjectMaker<PolyShadingTechnique, ShadingTechnique> polygon_PolyShadingTechnique("polygon");
-static SimpleObjectMaker<GridShading, ShadingTechnique> grid_shading_GridShading("grid_shading");
-static SimpleObjectMaker<CellShading, ShadingTechnique> cell_shading_CellShading("cell_shading");
-static SimpleObjectMaker<MarkerShadingTechnique, ShadingTechnique> marker_MarkerShadingTechnique("marker");
-#include "CalculateColourTechnique.h"
-#include "ListColourTechnique.h"
-static SimpleObjectMaker<CalculateColourTechnique, ColourTechnique> calculate_CalculateColourTechnique("calculate");
-static SimpleObjectMaker<ListColourTechnique, ColourTechnique> list_ListColourTechnique("list");
diff --git a/src/visualisers/IsoShadingAttributes.h b/src/visualisers/IsoShadingAttributes.h
deleted file mode 100644
index a35ea52..0000000
--- a/src/visualisers/IsoShadingAttributes.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file IsoShadingAttributes.h
-    \brief Definition of IsoShading Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef IsoShadingAttributes_H
-#define IsoShadingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "ShadingTechnique.h"
-#include "ColourTechnique.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class IsoShadingAttributes 
-{
-public:
-//  --  constructor
-    IsoShadingAttributes();
-    
-//  --  destructor
-    virtual ~IsoShadingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const IsoShadingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<ShadingTechnique> technique_;
-	double max_;
-	double min_;
-	auto_ptr<ColourTechnique> colourMethod_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const IsoShadingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/LabelPlottingAttributes.h b/src/visualisers/LabelPlottingAttributes.h
deleted file mode 100644
index 68f82d0..0000000
--- a/src/visualisers/LabelPlottingAttributes.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LabelPlottingAttributes.h
-    \brief Definition of LabelPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef LabelPlottingAttributes_H
-#define LabelPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LabelPlottingAttributes 
-{
-public:
-//  --  constructor
-    LabelPlottingAttributes();
-    
-//  --  destructor
-    virtual ~LabelPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LabelPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string quality_;
-	auto_ptr<Colour> colour_;
-	double height_;
-	int latFrequency_;
-	int lonFrequency_;
-	bool left_;
-	bool right_;
-	bool top_;
-	bool bottom_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LabelPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/LabelPlottingBase.h b/src/visualisers/LabelPlottingBase.h
new file mode 100644
index 0000000..7e3a271
--- /dev/null
+++ b/src/visualisers/LabelPlottingBase.h
@@ -0,0 +1,106 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file LabelPlottingBase.h
+    \brief Definition of the Template class LabelPlottingBase.
+    
+    Magics Team - ECMWF 2006
+    
+    Started: Thu 9-Feb-2006
+    
+    Changes:
+    
+*/
+
+#ifndef LabelPlottingBase_H
+#define LabelPlottingBase_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+#include "BasicSceneObject.h"
+
+
+
+namespace magics {
+
+class XmlNode;
+class GridPlottingBase;
+
+class LabelPlottingBase {
+
+public:
+	LabelPlottingBase() {}
+	virtual ~LabelPlottingBase() {}
+    
+    virtual void set(const XmlNode&) {
+        MagLog::dev() << "LabelPlottingBase::set(const XmlNode&)---> to be checked!...\n";
+    }
+    virtual void set(const map<string, string>&) {
+        MagLog::dev() << "LabelPlottingBase::set(const map<string, string&)---> to be checked!...\n";
+    }
+    virtual void toxml(ostream&, int = 0) const {
+    	 MagLog::dev() << "LabelPlottingBase::virtual void toxml(ostream&, int = 0) const ---> to be checked!...\n";
+    } 
+    virtual LabelPlottingBase* clone() const {
+        MagLog::dev() << "LabelPlottingBase::set(const map<string, string&)---> to be checked!...\n";
+        return new LabelPlottingBase();
+    }
+    virtual void operator()(const BasicSceneObject&, GraphicsList&)
+    {
+    	MagLog::dev() << "LabelPlottingBase::preparePlot(Task&)---> to be checked!...\n";
+    }
+    
+    virtual void prepare(GridPlottingBase&) {
+    	MagLog::dev() << "LabelPlottingBase::prepare(GridPlotting&)---> to be checked!...\n";
+    }
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream& out) const { out << "LabelPlottingBase\n"; } 
+
+private:
+    //! Copy constructor - No copy allowed
+	LabelPlottingBase(const LabelPlottingBase&);
+    //! Overloaded << operator to copy - No copy allowed
+	LabelPlottingBase& operator=(const LabelPlottingBase&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const LabelPlottingBase& p)
+		{ p.print(s); return s; }
+
+};
+
+template <>
+class MagTranslator<string, LabelPlottingBase> { 
+public:
+	LabelPlottingBase* operator()(const string& val )
+	{
+		return SimpleObjectMaker<LabelPlottingBase>::create(val);
+	}     
+
+	LabelPlottingBase* magics(const string& param)
+	{
+		LabelPlottingBase* object;
+		ParameterManager::update(param, object);
+		return object;
+	}
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/LandgramBox.cc b/src/visualisers/LandgramBox.cc
deleted file mode 100644
index 79f955a..0000000
--- a/src/visualisers/LandgramBox.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file LandgramBox.cc
-    \brief Implementation of the Template class LandgramBox.
-    
-    Magics Team - ECMWF 2004
-    
-    Started: Wed 5-May-2004
-    
-    Changes:
-    
-*/
-
-
-
-#include "LandgramBox.h"
-#include "PointsHandler.h"
-#include "DateTime.h"
-#include "Text.h"
-#include "Polyline.h"
-#include "Graph.h"
-
-
-using namespace magics;
-
-
-
-LandgramBox::LandgramBox() 
-{}
-
-
-LandgramBox::~LandgramBox() 
-{}
-
-/*!
- Class information are given to the output-stream.
-*/		
-void LandgramBox::print(ostream& out)  const
-{
-	out << "LandgramBox[";
-	out << "]";
-}
-
-
-
-void LandgramBox::operator()(Data& /*data*/, BasicGraphicsObjectContainer& /*out*/)
-{
-/*
-	CustomisedPointsList points; 
-	std::set<magstring> request;
-	data.customisedPoints(request, points);
-
-	Box& box = owner.layout().box("drawing_area");	
-	box.setClip(false);
-	
-	if (points.empty()) return;
-	
-	
-
-	for (CustomisedPointsList::const_iterator point = points.begin(); point != points.end(); ++point)
-	{
-		    MagLog::dev() << **point << endl;
-		   
-		    double step = (**point)["step"];
-		    double top2 = (**point)["box2"];
-		    double top1 = (**point)["box1"];
-		    double bottom1 = (**point)["box-1"]; 
-		    double bottom2 = (**point)["box-2"];
-			Polyline<UserPoint>* box1  = new Polyline<UserPoint>(LayerManager::layer("landgram"), "drawing_area");				
-			box1->setFilled(true);	
-			box1->setFillColour(*top1_colour_);
-			box1->setColour(Colour("black"));
-			ShadingProperties* shading1 = (magCompare(top1_shading_, "solid") ) ? (ShadingProperties*)new FillShadingProperties() : (ShadingProperties*)new DotShadingProperties();
-			box1->setShading(shading1);			
-			
-			box1->push_back(UserPoint(step-width_, 0));
-			box1->push_back(UserPoint(step-width_, top1));
-			box1->push_back(UserPoint(step, top1));
-			box1->push_back(UserPoint(step, 0));
-				
-			Polyline<UserPoint>* box2  = new Polyline<UserPoint>(LayerManager::layer("landgram"), "drawing_area");				
-			box2->setFilled(true);	
-			box2->setFillColour(*top2_colour_);
-			box2->setColour(Colour("black"));
-			ShadingProperties* shading2 = (magCompare(top2_shading_, "solid") ) ? (ShadingProperties*)new FillShadingProperties() : (ShadingProperties*)new DotShadingProperties();
-			box2->setShading(shading2);			
-			
-			box2->push_back(UserPoint(step-width_, top1));
-			box2->push_back(UserPoint(step-width_, top2+top1));
-			box2->push_back(UserPoint(step, top2+top1));
-			box2->push_back(UserPoint(step, top1));
-			
-			Polyline<UserPoint>* box3  = new Polyline<UserPoint>(LayerManager::layer("landgram"), "drawing_area");				
-			box3->setFilled(true);	
-			box3->setFillColour(*bottom1_colour_);
-			box3->setColour(Colour("black"));
-			ShadingProperties* shading3 = (magCompare(bottom1_shading_, "solid") ) ? (ShadingProperties*)new FillShadingProperties() : (ShadingProperties* )new DotShadingProperties();
-			box3->setShading(shading3);			
-			
-			box3->push_back(UserPoint(step-width_, 0));
-			box3->push_back(UserPoint(step-width_, bottom1));
-			box3->push_back(UserPoint(step, bottom1));
-			box3->push_back(UserPoint(step, 0));
-				
-			Polyline<UserPoint>* box4  = new Polyline<UserPoint>(LayerManager::layer("landgram"), "drawing_area");				
-			box4->setFilled(true);	
-			box4->setFillColour(*bottom2_colour_);
-			box4->setColour(Colour("black"));
-			ShadingProperties* shading4 = (magCompare(bottom2_shading_, "solid") ) ? (ShadingProperties*) new FillShadingProperties() : (ShadingProperties*)new DotShadingProperties();
-			box4->setShading(shading4);			
-			
-			box4->push_back(UserPoint(step-width_, bottom1));
-			box4->push_back(UserPoint(step-width_, bottom2+bottom1));
-			box4->push_back(UserPoint(step, bottom2+bottom1));
-			box4->push_back(UserPoint(step, bottom1));
-			
-			out.push_back(box1);
-			out.push_back(box2);
-			out.push_back(box3);
-			out.push_back(box4);
-	}
-	*/	
-}
-
-void LandgramBox::visit(LegendVisitor&)
-{
-	//legend.push_back(new EpsEntry());
-}
diff --git a/src/visualisers/LandgramBox.h b/src/visualisers/LandgramBox.h
deleted file mode 100644
index ff54521..0000000
--- a/src/visualisers/LandgramBox.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file LandgramBox.h
-    \brief Definition of the Template class LandgramBox.
-    
-    Magics Team - ECMWF 2004
-    
-    Started: Wed 5-May-2004
-    
-    Changes:
-    
-*/
-
-#ifndef LandgramBox_H
-#define LandgramBox_H
-
-#include "magics.h"
-
-
-#include "LandgramBoxAttributes.h"
-
-
-#include "magics.h"
-#include "UserPoint.h"
-#include "Visdef.h"
-namespace magics {
-
-class XmlNode;
-class LegendVisitor;
-
-class LandgramBox: public LandgramBoxAttributes, public Visdef {
-
-
-
-public:
-	LandgramBox();
-	virtual ~LandgramBox();
-    
-   
-    
-    void operator()(Data&, BasicGraphicsObjectContainer&);
-    void visit(LegendVisitor&);
-    
-    
-    // Implements the set method ... 
-    void set(const map<string, string>& map ) { LandgramBoxAttributes::set(map); }
-    void set(const XmlNode& node) { LandgramBoxAttributes::set(node); }
-    
-    
-protected:
-     //! Method to print string about this class on to a stream of type ostream (virtual).
-	 virtual void print(ostream&) const; 
-	 
- 
-    
-
-private:
-    //! Copy constructor - No copy allowed
-	LandgramBox(const LandgramBox&);
-    //! Overloaded << operator to copy - No copy allowed
-	LandgramBox& operator=(const LandgramBox&);
-
-// -- Friends
-    //! Overloaded << operator to call print().
-	friend ostream& operator<<(ostream& s,const LandgramBox& p)
-		{ p.print(s); return s; }
-
-};
-
-} // namespace magics
-#endif
diff --git a/src/visualisers/LegendBoxAttributes.h b/src/visualisers/LegendBoxAttributes.h
deleted file mode 100644
index 1934808..0000000
--- a/src/visualisers/LegendBoxAttributes.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LegendBoxAttributes.h
-    \brief Definition of LegendBox Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef LegendBoxAttributes_H
-#define LegendBoxAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LegendBoxAttributes 
-{
-public:
-//  --  constructor
-    LegendBoxAttributes();
-    
-//  --  destructor
-    virtual ~LegendBoxAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LegendBoxAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LegendBoxAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/LevelListSelectionTypeAttributes.h b/src/visualisers/LevelListSelectionTypeAttributes.h
deleted file mode 100644
index 913d49c..0000000
--- a/src/visualisers/LevelListSelectionTypeAttributes.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LevelListSelectionTypeAttributes.h
-    \brief Definition of LevelListSelectionType Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef LevelListSelectionTypeAttributes_H
-#define LevelListSelectionTypeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LevelListSelectionTypeAttributes 
-{
-public:
-//  --  constructor
-    LevelListSelectionTypeAttributes();
-    
-//  --  destructor
-    virtual ~LevelListSelectionTypeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LevelListSelectionTypeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	floatarray list_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LevelListSelectionTypeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/LevelSelection.cc b/src/visualisers/LevelSelection.cc
index 8bc0ac6..dc95bdf 100644
--- a/src/visualisers/LevelSelection.cc
+++ b/src/visualisers/LevelSelection.cc
@@ -85,7 +85,7 @@ void LevelSelection::thinLevels(int frequency, vector<double>& out) const
 		count++;
 	}
 
-	sort(out.begin(), out.end());
+	std::sort(out.begin(), out.end());
 	ostringstream level;
 	ostringstream sel;
 	for (  vector<double>::const_iterator l = begin(); l != end(); ++l)
diff --git a/src/visualisers/LevelSelectionAttributes.h b/src/visualisers/LevelSelectionAttributes.h
deleted file mode 100644
index 0a324ab..0000000
--- a/src/visualisers/LevelSelectionAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LevelSelectionAttributes.h
-    \brief Definition of LevelSelection Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef LevelSelectionAttributes_H
-#define LevelSelectionAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LevelSelectionAttributes 
-{
-public:
-//  --  constructor
-    LevelSelectionAttributes();
-    
-//  --  destructor
-    virtual ~LevelSelectionAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LevelSelectionAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double max_;
-	double min_;
-	double max_shade_;
-	double min_shade_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LevelSelectionAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ListColourTechnique.cc b/src/visualisers/ListColourTechnique.cc
index 6a32931..ae47910 100644
--- a/src/visualisers/ListColourTechnique.cc
+++ b/src/visualisers/ListColourTechnique.cc
@@ -42,6 +42,7 @@ ListColourTechnique::ListColourTechnique()
 void ListColourTechnique::set(ColourTable& table, int nb) const
 {
     ColourTableDefinitionList helper;
+    //policy = table.getPolicy();
     helper.set(*this);
     helper.set(table, nb);
 }
@@ -63,4 +64,5 @@ void ListColourTechnique::print(ostream& out)  const
 void ListColourTechnique::set(const ColourTechniqueInterface& attributes)
 {
 	values_ = attributes.getColours();
+	policy_ = attributes.getPolicy();
 }
diff --git a/src/visualisers/ListColourTechnique.h b/src/visualisers/ListColourTechnique.h
index 62f78b6..6fe2c67 100644
--- a/src/visualisers/ListColourTechnique.h
+++ b/src/visualisers/ListColourTechnique.h
@@ -62,7 +62,7 @@ public:
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
-     
+
      
 private:
     //! Copy constructor - No copy allowed
diff --git a/src/visualisers/ListColourTechniqueAttributes.h b/src/visualisers/ListColourTechniqueAttributes.h
deleted file mode 100644
index e1b994b..0000000
--- a/src/visualisers/ListColourTechniqueAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ListColourTechniqueAttributes.h
-    \brief Definition of ListColourTechnique Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef ListColourTechniqueAttributes_H
-#define ListColourTechniqueAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "ColourTableDefinitionListInterface.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ListColourTechniqueAttributes : public ColourTableDefinitionListInterface
-{
-public:
-//  --  constructor
-    ListColourTechniqueAttributes();
-    
-//  --  destructor
-    virtual ~ListColourTechniqueAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ListColourTechniqueAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	stringarray values_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ListColourTechniqueAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/LookupTableModeAttributes.h b/src/visualisers/LookupTableModeAttributes.h
deleted file mode 100644
index e2e7e59..0000000
--- a/src/visualisers/LookupTableModeAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file LookupTableModeAttributes.h
-    \brief Definition of LookupTableMode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef LookupTableModeAttributes_H
-#define LookupTableModeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class LookupTableModeAttributes 
-{
-public:
-//  --  constructor
-    LookupTableModeAttributes();
-    
-//  --  destructor
-    virtual ~LookupTableModeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const LookupTableModeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	int minLevel_;
-	int maxLevel_;
-	double outlayer_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const LookupTableModeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/Makefile.am b/src/visualisers/Makefile.am
deleted file mode 100644
index d571295..0000000
--- a/src/visualisers/Makefile.am
+++ /dev/null
@@ -1,192 +0,0 @@
-noinst_LTLIBRARIES	= libvisualisers.la
-
-ATTRIBUTES =   CoastlinesAttributes.cc NoCoastPlottingAttributes.cc CoastPlottingAttributes.cc \
-	LabelPlottingAttributes.cc NoGridPlottingAttributes.cc GridPlottingAttributes.cc \
-	BoundariesAttributes.cc \
-	HiLoNumberAttributes.cc MarkerValuePlotMethodAttributes.cc HiLoMarkerAttributes.cc \
-	Akima474MethodAttributes.cc Akima760MethodAttributes.cc Akima761MethodAttributes.cc \
-	SampleContourMethodAttributes.cc HiLoTextAttributes.cc \
-	MarkerShadingTechniqueAttributes.cc \
-	IsoHighlightAttributes.cc HatchPolyShadingMethodAttributes.cc \
-	IntervalSelectionTypeAttributes.cc  \
-	GridShadingAttributes.cc CellShadingAttributes.cc DotPolyShadingMethodAttributes.cc \
-	CountSelectionTypeAttributes.cc ValuePlotMethodAttributes.cc  \
-	HiLoTechniqueAttributes.cc LevelSelectionAttributes.cc \
-	ListColourTechniqueAttributes.cc CalculateColourTechniqueAttributes.cc \
-	LevelListSelectionTypeAttributes.cc IsoLabelAttributes.cc \
-	SymbolPlottingAttributes.cc  SymbolModeAttributes.cc  SymbolTableModeAttributes.cc SymbolIndividualModeAttributes.cc \
-	ImageListColourTechniqueAttributes.cc ImageCalculateColourTechniqueAttributes.cc\
-	LookupTableModeAttributes.cc FixedTableModeAttributes.cc \
-	EquidistantTableModeAttributes.cc SimplePolylineAttributes.cc\
-	ObsPlottingAttributes.cc \
-	ImportPlotAttributes.cc ObsTableAttributes.cc ObsHeightAttributes.cc \
-	ObsWindAttributes.cc ObsStationRingAttributes.cc  \
-	ObsTimePlotAttributes.cc ObsDemoItem2Attributes.cc\
-	ObsTemperatureAttributes.cc\
-	ObsPressureAttributes.cc ObsPressureTendencyAttributes.cc \
-	ObsDewPointAttributes.cc ObsVisibilityAttributes.cc \
-	ObsPresentWeatherAttributes.cc ObsItemAttributes.cc \
-	ObsPressureLevelAttributes.cc ObsIdentifierAttributes.cc \
-	ObsCloudAttributes.cc ObsPastWeatherAttributes.cc ObsThicknessAttributes.cc\
-	EpsDirectionAttributes.cc \
-	SymbolAdvancedTableModeAttributes.cc  \
-	TaylorGridAttributes.cc\
-	ContinuousLegendMethodAttributes.cc HistogramLegendMethodAttributes.cc \
-	LegendBoxAttributes.cc GraphPlottingAttributes.cc LandgramBoxAttributes.cc \
-	CurveAttributes.cc BarAttributes.cc \
-	GraphFlagAttributes.cc GraphArrowAttributes.cc \
-	GraphAttributes.cc HatchGraphShadeStyleAttributes.cc \
-	GraphShadeStyleAttributes.cc DotGraphShadeStyleAttributes.cc GraphShadeAttributes.cc  \
-	WindPlottingAttributes.cc FlagPlottingAttributes.cc ArrowPlottingAttributes.cc \
-	CitiesAttributes.cc IsoPlotAttributes.cc ContourAttributes.cc\
-	ValuePlotAttributes.cc HiLoAttributes.cc WindAttributes.cc IsoShadingAttributes.cc \
-	PolyShadingTechniqueAttributes.cc  \
-	ImagePlottingAttributes.cc DateAxisMethodAttributes.cc \
-	CurveAreaAttributes.cc 
-
-include_H =  \
-	Title.h \
-	SymbolPlotting.h SymbolPlotting.cc Filter.h Filter.cc \
-	TitleBase.h ValuePlotBase.h  \
-	HiLoBase.h \
-	HiLoMarkerBase.h \
-	GraphShade.h GraphShadeStyle.h Boundaries.h \
-	Coastlines.h CoastlinesAttributes.h GridPlotting.h NoGridPlottingAttributes.h GridPlottingAttributes.h LabelPlottingAttributes.h CoastPlottingAttributes.h BoundariesAttributes.h  ContourAttributes.h \
-	IsoPlotAttributes.h LevelSelectionAttributes.h IsoLabelAttributes.h IsoHighlightAttributes.h IsoShadingAttributes.h IsoShadingAttributes.cc PolyShadingTechniqueAttributes.h LegendBoxAttributes.h PolyShadingTechniqueAttributes.cc \
-	HatchPolyShadingMethodAttributes.h DotPolyShadingMethodAttributes.h MarkerShadingTechniqueAttributes.h SymbolIndividualModeAttributes.h SymbolTableModeAttributes.h CellShadingAttributes.h GridShadingAttributes.h \
-	CalculateColourTechniqueAttributes.h ListColourTechniqueAttributes.h IsoPlotAttributes.cc CountSelectionTypeAttributes.h IntervalSelectionTypeAttributes.h LevelListSelectionTypeAttributes.h ContourAttributes.cc \
-	Akima474MethodAttributes.h Akima760MethodAttributes.h ContinuousLegendMethodAttributes.h  HistogramLegendMethodAttributes.h SampleContourMethodAttributes.h HiLoAttributes.h HiLoTechniqueAttributes.h HiLoAttributes.cc HiLoNumberAttributes.h HiLoTextAttributes.h HiLoMarkerAttributes.h  \
-	IsoHelper.h SegmentJoiner.h \
-	SymbolMode.h  \
-	CoastPlotting.h \
-	LabelPlotting.h \
-	Contour.h \
-	IsoPlot.h\
-	ValuePlot.h\
-	ValuePlotMethod.h MarkerValuePlotMethod.h \
-	BothValuePlotMethod.h \
-	IsoLabel.h IsoShading.h IsoShading.cc \
-	LandgramBox.h LevelSelection.h CountSelectionType.h \
-	LevelListSelectionType.h IntervalSelectionType.h \
-	ContourMethod.h \
-	Akima760Method.h Akima761Method.h  \
-	Akima474Method.h Akima474.cc \
-	Graph.h GraphPlotting.h \
-	 Curve.h Axis.h AxisItem.h \
-	FloatSelection.h ColourSelection.h MarkerSelection.h HeightSelection.h \
-	ColourSelectionCount.h ColourSelectionList.h \
-	MarkerSelectionCount.h MarkerSelectionList.h \
-	HeightSelectionCount.h HeightSelectionList.h \
-	Histogram.h Histogram.cc HistoMode.h HistoIndividualMode.h HistoTableMode.h Intervals.h \
-	HiLo.cc HiLo.h HiLoTechnique.cc HiLoTechnique.h \
-	HiLoMarker.h  HiLoText.h \
-	HiLoNumber.h HiLoBoth.h \
-	ShadingTechnique.h \
-	MarkerShadingTechnique.h MarkerShadingTechnique.cc PolyShadingTechnique.h ColourTechnique.h \
-	CalculateColourTechnique.h ListColourTechnique.h PolyShadingMethod.h \
-	DotPolyShadingMethod.h HatchPolyShadingMethod.h \
-	IsoHighlight.h \
-	AutomaticContourMethod.h \
-	DefinitionTable.h DefinitionTable.cc \
-	GribTables.h LegendMethod.h \
-	Wind.h Wind.cc WindPlotting.h \
-	FlagPlotting.h \
-	ArrowPlotting.h \
-	CalmIndicator.h OriginMarker.h \
-	ObsPlotting.h \
-	ImportPlot.h\
-	ImagePlotting.h ImagePlotting.cc \
-	LookupTableMode.h \
-	EquidistantTableMode.h \
-	NormalTableMode.h \
-	LinearTableMode.h \
-	ObsTable.h ObsItem.h ObsItemFamily.h \
-	ImageListColourTechnique.h \
-	ImageCalculateColourTechnique.h \
-	CellShading.h CellShading.cc \
-	EpsGraph.h BoxPlotVisualiser.h ObsStatGraph.h \
-	AxisMethod.h \
-	TextOrientation.h DateAxis.h  \
-	EpsForecastPlot.h \
-	Bar.h  \
-	BoxPlotItem.h TaylorGrid.h BoxPlotBasicItem.h \
-	MetgramGraph.h MetgramStyle.h \
-	SimplePolylineVisualiser.h  \
-	SymbolAdvancedTableMode.h HeightTechnique.h OutLayerTechnique.h ContourLibrary.h \
-	VisDefInfo.h  AxisAttributes.h  ObsPlottingAttributes.h ImportPlotAttributes.h \
-	ImagePlottingAttributes.h LookupTableModeAttributes.h FixedTableModeAttributes.h \
-	Cities.h
-
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= $(noinst_H)
-else
-include_HEADERS =
-noinst_HEADERS	= $(noinst_H) $(include_H)
-endif
-
-
-nodist_libvisualisers_la_SOURCES = ${ATTRIBUTES}
-
-axis= \
-	Axis.cc  \
-	DateAxis.cc \
-	AxisItem.cc  \
-	AxisMethod.cc \
-	TaylorGrid.cc  \
-	AxisAttributes.cc \
-	AxisMethodAttributes.cc
-
-metgram = \
-	EpsGraph.cc  \
-	MetgramGraph.cc MetgramStyle.cc \
-	BoxPlotVisualiser.cc\
-	BoxPlotItem.cc\
-	MetgramFlagsAttributes.cc \
-	EpsGraphAttributes.cc EpsWindAttributes.cc  EpsCloudAttributes.cc \
-	EfiGraphAttributes.cc CdfGraphAttributes.cc\
-	EpsPlumeAttributes.cc \
-	MetgramCurveAttributes.cc \
-	EpsShadeAttributes.cc MetgramGraphAttributes.cc BoxPlotVisualiserAttributes.cc \
-	BoxPlotBoxAttributes.cc BoxPlotBoxBorderAttributes.cc BoxPlotMedianAttributes.cc \
-	BoxPlotWhiskerBoxAttributes.cc BoxPlotWhiskerLineAttributes.cc BoxPlotWhiskerBorderAttributes.cc 
-
-obs=   ObsPlotting.cc ObsTable.cc \
-	ObsItemFamily.cc 
-
-libvisualisers_la_SOURCES	= ${axis} ${metgram} ${obs} ContourLibrary.cc Coastlines.cc CoastPlotting.cc \
-	ImagePlotting.cc WindPlotting.cc ArrowPlotting.cc FlagPlotting.cc \
-	IsoHelper.cc \
-	LabelPlotting.cc GridPlotting.cc Boundaries.cc \
-	ListColourTechnique.cc IntervalSelectionType.cc \
-	CountSelectionType.cc LevelSelection.cc \
-	ColourTechnique.cc CalculateColourTechnique.cc \
-	LevelListSelectionType.cc IsoLabel.cc \
-	TextOrientation.cc \
-	LegendMethod.cc SymbolMode.cc \
-	SimplePolylineVisualiser.cc \
-	LookupTableMode.cc \
-	EquidistantTableMode.cc \
-	NormalTableMode.cc LinearTableMode.cc \
-	BothValuePlotMethodAttributes.cc  \
-	SymbolAdvancedTableMode.cc HeightTechnique.cc \
-	OutLayerTechnique.cc \
-	HistogramAttributes.cc \
-	GraphPlotting.cc LandgramBox.cc Bar.cc Curve.cc  \
-	GraphShade.cc GraphShadeStyle.cc  \
-	VisDefInfo.cc Cities.cc \
-	Contour.cc IsoPlot.cc  ValuePlot.cc HiLo.cc Histogram.cc  \
-	Akima760.cc Akima474.cc Wind.cc IsoShading.cc\
-	PolyShadingMethod.cc CellShading.cc \
-	MarkerShadingTechnique.cc PolyShadingTechnique.cc SymbolPlotting.cc Filter.cc \
-	SegmentJoiner.cc
-
-
-libvisualisers_la_LDFLAGS	= -no-undefined
-EXTRA_DIST			= 
-
-AM_CPPFLAGS  = ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/common -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/drivers
-if MAGICS_QT
-AM_CPPFLAGS += -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-endif
diff --git a/src/visualisers/Makefile.in b/src/visualisers/Makefile.in
deleted file mode 100644
index fe1c832..0000000
--- a/src/visualisers/Makefile.in
+++ /dev/null
@@ -1,1194 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_QT_TRUE@am__append_1 = -I$(top_srcdir)/src/drivers/MgQ $(QT_CPPFLAGS)
-subdir = src/visualisers
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libvisualisers_la_LIBADD =
-am__objects_1 = Axis.lo DateAxis.lo AxisItem.lo AxisMethod.lo \
-	TaylorGrid.lo AxisAttributes.lo AxisMethodAttributes.lo
-am__objects_2 = EpsGraph.lo MetgramGraph.lo MetgramStyle.lo \
-	BoxPlotVisualiser.lo BoxPlotItem.lo MetgramFlagsAttributes.lo \
-	EpsGraphAttributes.lo EpsWindAttributes.lo \
-	EpsCloudAttributes.lo EfiGraphAttributes.lo \
-	CdfGraphAttributes.lo EpsPlumeAttributes.lo \
-	MetgramCurveAttributes.lo EpsShadeAttributes.lo \
-	MetgramGraphAttributes.lo BoxPlotVisualiserAttributes.lo \
-	BoxPlotBoxAttributes.lo BoxPlotBoxBorderAttributes.lo \
-	BoxPlotMedianAttributes.lo BoxPlotWhiskerBoxAttributes.lo \
-	BoxPlotWhiskerLineAttributes.lo \
-	BoxPlotWhiskerBorderAttributes.lo
-am__objects_3 = ObsPlotting.lo ObsTable.lo ObsItemFamily.lo
-am_libvisualisers_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3) ContourLibrary.lo Coastlines.lo \
-	CoastPlotting.lo ImagePlotting.lo WindPlotting.lo \
-	ArrowPlotting.lo FlagPlotting.lo IsoHelper.lo LabelPlotting.lo \
-	GridPlotting.lo Boundaries.lo ListColourTechnique.lo \
-	IntervalSelectionType.lo CountSelectionType.lo \
-	LevelSelection.lo ColourTechnique.lo \
-	CalculateColourTechnique.lo LevelListSelectionType.lo \
-	IsoLabel.lo TextOrientation.lo LegendMethod.lo SymbolMode.lo \
-	SimplePolylineVisualiser.lo LookupTableMode.lo \
-	EquidistantTableMode.lo NormalTableMode.lo LinearTableMode.lo \
-	BothValuePlotMethodAttributes.lo SymbolAdvancedTableMode.lo \
-	HeightTechnique.lo OutLayerTechnique.lo HistogramAttributes.lo \
-	GraphPlotting.lo LandgramBox.lo Bar.lo Curve.lo GraphShade.lo \
-	GraphShadeStyle.lo VisDefInfo.lo Cities.lo Contour.lo \
-	IsoPlot.lo ValuePlot.lo HiLo.lo Histogram.lo Akima760.lo \
-	Akima474.lo Wind.lo IsoShading.lo PolyShadingMethod.lo \
-	CellShading.lo MarkerShadingTechnique.lo \
-	PolyShadingTechnique.lo SymbolPlotting.lo Filter.lo \
-	SegmentJoiner.lo
-am__objects_4 = CoastlinesAttributes.lo NoCoastPlottingAttributes.lo \
-	CoastPlottingAttributes.lo LabelPlottingAttributes.lo \
-	NoGridPlottingAttributes.lo GridPlottingAttributes.lo \
-	BoundariesAttributes.lo HiLoNumberAttributes.lo \
-	MarkerValuePlotMethodAttributes.lo HiLoMarkerAttributes.lo \
-	Akima474MethodAttributes.lo Akima760MethodAttributes.lo \
-	Akima761MethodAttributes.lo SampleContourMethodAttributes.lo \
-	HiLoTextAttributes.lo MarkerShadingTechniqueAttributes.lo \
-	IsoHighlightAttributes.lo HatchPolyShadingMethodAttributes.lo \
-	IntervalSelectionTypeAttributes.lo GridShadingAttributes.lo \
-	CellShadingAttributes.lo DotPolyShadingMethodAttributes.lo \
-	CountSelectionTypeAttributes.lo ValuePlotMethodAttributes.lo \
-	HiLoTechniqueAttributes.lo LevelSelectionAttributes.lo \
-	ListColourTechniqueAttributes.lo \
-	CalculateColourTechniqueAttributes.lo \
-	LevelListSelectionTypeAttributes.lo IsoLabelAttributes.lo \
-	SymbolPlottingAttributes.lo SymbolModeAttributes.lo \
-	SymbolTableModeAttributes.lo SymbolIndividualModeAttributes.lo \
-	ImageListColourTechniqueAttributes.lo \
-	ImageCalculateColourTechniqueAttributes.lo \
-	LookupTableModeAttributes.lo FixedTableModeAttributes.lo \
-	EquidistantTableModeAttributes.lo SimplePolylineAttributes.lo \
-	ObsPlottingAttributes.lo ImportPlotAttributes.lo \
-	ObsTableAttributes.lo ObsHeightAttributes.lo \
-	ObsWindAttributes.lo ObsStationRingAttributes.lo \
-	ObsTimePlotAttributes.lo ObsDemoItem2Attributes.lo \
-	ObsTemperatureAttributes.lo ObsPressureAttributes.lo \
-	ObsPressureTendencyAttributes.lo ObsDewPointAttributes.lo \
-	ObsVisibilityAttributes.lo ObsPresentWeatherAttributes.lo \
-	ObsItemAttributes.lo ObsPressureLevelAttributes.lo \
-	ObsIdentifierAttributes.lo ObsCloudAttributes.lo \
-	ObsPastWeatherAttributes.lo ObsThicknessAttributes.lo \
-	EpsDirectionAttributes.lo SymbolAdvancedTableModeAttributes.lo \
-	TaylorGridAttributes.lo ContinuousLegendMethodAttributes.lo \
-	HistogramLegendMethodAttributes.lo LegendBoxAttributes.lo \
-	GraphPlottingAttributes.lo LandgramBoxAttributes.lo \
-	CurveAttributes.lo BarAttributes.lo GraphFlagAttributes.lo \
-	GraphArrowAttributes.lo GraphAttributes.lo \
-	HatchGraphShadeStyleAttributes.lo GraphShadeStyleAttributes.lo \
-	DotGraphShadeStyleAttributes.lo GraphShadeAttributes.lo \
-	WindPlottingAttributes.lo FlagPlottingAttributes.lo \
-	ArrowPlottingAttributes.lo CitiesAttributes.lo \
-	IsoPlotAttributes.lo ContourAttributes.lo \
-	ValuePlotAttributes.lo HiLoAttributes.lo WindAttributes.lo \
-	IsoShadingAttributes.lo PolyShadingTechniqueAttributes.lo \
-	ImagePlottingAttributes.lo DateAxisMethodAttributes.lo \
-	CurveAreaAttributes.lo
-nodist_libvisualisers_la_OBJECTS = $(am__objects_4)
-libvisualisers_la_OBJECTS = $(am_libvisualisers_la_OBJECTS) \
-	$(nodist_libvisualisers_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libvisualisers_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(AM_CXXFLAGS) $(CXXFLAGS) $(libvisualisers_la_LDFLAGS) \
-	$(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libvisualisers_la_SOURCES) \
-	$(nodist_libvisualisers_la_SOURCES)
-DIST_SOURCES = $(libvisualisers_la_SOURCES)
-am__include_HEADERS_DIST = Title.h SymbolPlotting.h SymbolPlotting.cc \
-	Filter.h Filter.cc TitleBase.h ValuePlotBase.h HiLoBase.h \
-	HiLoMarkerBase.h GraphShade.h GraphShadeStyle.h Boundaries.h \
-	Coastlines.h CoastlinesAttributes.h GridPlotting.h \
-	NoGridPlottingAttributes.h GridPlottingAttributes.h \
-	LabelPlottingAttributes.h CoastPlottingAttributes.h \
-	BoundariesAttributes.h ContourAttributes.h IsoPlotAttributes.h \
-	LevelSelectionAttributes.h IsoLabelAttributes.h \
-	IsoHighlightAttributes.h IsoShadingAttributes.h \
-	IsoShadingAttributes.cc PolyShadingTechniqueAttributes.h \
-	LegendBoxAttributes.h PolyShadingTechniqueAttributes.cc \
-	HatchPolyShadingMethodAttributes.h \
-	DotPolyShadingMethodAttributes.h \
-	MarkerShadingTechniqueAttributes.h \
-	SymbolIndividualModeAttributes.h SymbolTableModeAttributes.h \
-	CellShadingAttributes.h GridShadingAttributes.h \
-	CalculateColourTechniqueAttributes.h \
-	ListColourTechniqueAttributes.h IsoPlotAttributes.cc \
-	CountSelectionTypeAttributes.h \
-	IntervalSelectionTypeAttributes.h \
-	LevelListSelectionTypeAttributes.h ContourAttributes.cc \
-	Akima474MethodAttributes.h Akima760MethodAttributes.h \
-	ContinuousLegendMethodAttributes.h \
-	HistogramLegendMethodAttributes.h \
-	SampleContourMethodAttributes.h HiLoAttributes.h \
-	HiLoTechniqueAttributes.h HiLoAttributes.cc \
-	HiLoNumberAttributes.h HiLoTextAttributes.h \
-	HiLoMarkerAttributes.h IsoHelper.h SegmentJoiner.h \
-	SymbolMode.h CoastPlotting.h LabelPlotting.h Contour.h \
-	IsoPlot.h ValuePlot.h ValuePlotMethod.h \
-	MarkerValuePlotMethod.h BothValuePlotMethod.h IsoLabel.h \
-	IsoShading.h IsoShading.cc LandgramBox.h LevelSelection.h \
-	CountSelectionType.h LevelListSelectionType.h \
-	IntervalSelectionType.h ContourMethod.h Akima760Method.h \
-	Akima761Method.h Akima474Method.h Akima474.cc Graph.h \
-	GraphPlotting.h Curve.h Axis.h AxisItem.h FloatSelection.h \
-	ColourSelection.h MarkerSelection.h HeightSelection.h \
-	ColourSelectionCount.h ColourSelectionList.h \
-	MarkerSelectionCount.h MarkerSelectionList.h \
-	HeightSelectionCount.h HeightSelectionList.h Histogram.h \
-	Histogram.cc HistoMode.h HistoIndividualMode.h \
-	HistoTableMode.h Intervals.h HiLo.cc HiLo.h HiLoTechnique.cc \
-	HiLoTechnique.h HiLoMarker.h HiLoText.h HiLoNumber.h \
-	HiLoBoth.h ShadingTechnique.h MarkerShadingTechnique.h \
-	MarkerShadingTechnique.cc PolyShadingTechnique.h \
-	ColourTechnique.h CalculateColourTechnique.h \
-	ListColourTechnique.h PolyShadingMethod.h \
-	DotPolyShadingMethod.h HatchPolyShadingMethod.h IsoHighlight.h \
-	AutomaticContourMethod.h DefinitionTable.h DefinitionTable.cc \
-	GribTables.h LegendMethod.h Wind.h Wind.cc WindPlotting.h \
-	FlagPlotting.h ArrowPlotting.h CalmIndicator.h OriginMarker.h \
-	ObsPlotting.h ImportPlot.h ImagePlotting.h ImagePlotting.cc \
-	LookupTableMode.h EquidistantTableMode.h NormalTableMode.h \
-	LinearTableMode.h ObsTable.h ObsItem.h ObsItemFamily.h \
-	ImageListColourTechnique.h ImageCalculateColourTechnique.h \
-	CellShading.h CellShading.cc EpsGraph.h BoxPlotVisualiser.h \
-	ObsStatGraph.h AxisMethod.h TextOrientation.h DateAxis.h \
-	EpsForecastPlot.h Bar.h BoxPlotItem.h TaylorGrid.h \
-	BoxPlotBasicItem.h MetgramGraph.h MetgramStyle.h \
-	SimplePolylineVisualiser.h SymbolAdvancedTableMode.h \
-	HeightTechnique.h OutLayerTechnique.h ContourLibrary.h \
-	VisDefInfo.h AxisAttributes.h ObsPlottingAttributes.h \
-	ImportPlotAttributes.h ImagePlottingAttributes.h \
-	LookupTableModeAttributes.h FixedTableModeAttributes.h \
-	Cities.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = Title.h SymbolPlotting.h SymbolPlotting.cc \
-	Filter.h Filter.cc TitleBase.h ValuePlotBase.h HiLoBase.h \
-	HiLoMarkerBase.h GraphShade.h GraphShadeStyle.h Boundaries.h \
-	Coastlines.h CoastlinesAttributes.h GridPlotting.h \
-	NoGridPlottingAttributes.h GridPlottingAttributes.h \
-	LabelPlottingAttributes.h CoastPlottingAttributes.h \
-	BoundariesAttributes.h ContourAttributes.h IsoPlotAttributes.h \
-	LevelSelectionAttributes.h IsoLabelAttributes.h \
-	IsoHighlightAttributes.h IsoShadingAttributes.h \
-	IsoShadingAttributes.cc PolyShadingTechniqueAttributes.h \
-	LegendBoxAttributes.h PolyShadingTechniqueAttributes.cc \
-	HatchPolyShadingMethodAttributes.h \
-	DotPolyShadingMethodAttributes.h \
-	MarkerShadingTechniqueAttributes.h \
-	SymbolIndividualModeAttributes.h SymbolTableModeAttributes.h \
-	CellShadingAttributes.h GridShadingAttributes.h \
-	CalculateColourTechniqueAttributes.h \
-	ListColourTechniqueAttributes.h IsoPlotAttributes.cc \
-	CountSelectionTypeAttributes.h \
-	IntervalSelectionTypeAttributes.h \
-	LevelListSelectionTypeAttributes.h ContourAttributes.cc \
-	Akima474MethodAttributes.h Akima760MethodAttributes.h \
-	ContinuousLegendMethodAttributes.h \
-	HistogramLegendMethodAttributes.h \
-	SampleContourMethodAttributes.h HiLoAttributes.h \
-	HiLoTechniqueAttributes.h HiLoAttributes.cc \
-	HiLoNumberAttributes.h HiLoTextAttributes.h \
-	HiLoMarkerAttributes.h IsoHelper.h SegmentJoiner.h \
-	SymbolMode.h CoastPlotting.h LabelPlotting.h Contour.h \
-	IsoPlot.h ValuePlot.h ValuePlotMethod.h \
-	MarkerValuePlotMethod.h BothValuePlotMethod.h IsoLabel.h \
-	IsoShading.h IsoShading.cc LandgramBox.h LevelSelection.h \
-	CountSelectionType.h LevelListSelectionType.h \
-	IntervalSelectionType.h ContourMethod.h Akima760Method.h \
-	Akima761Method.h Akima474Method.h Akima474.cc Graph.h \
-	GraphPlotting.h Curve.h Axis.h AxisItem.h FloatSelection.h \
-	ColourSelection.h MarkerSelection.h HeightSelection.h \
-	ColourSelectionCount.h ColourSelectionList.h \
-	MarkerSelectionCount.h MarkerSelectionList.h \
-	HeightSelectionCount.h HeightSelectionList.h Histogram.h \
-	Histogram.cc HistoMode.h HistoIndividualMode.h \
-	HistoTableMode.h Intervals.h HiLo.cc HiLo.h HiLoTechnique.cc \
-	HiLoTechnique.h HiLoMarker.h HiLoText.h HiLoNumber.h \
-	HiLoBoth.h ShadingTechnique.h MarkerShadingTechnique.h \
-	MarkerShadingTechnique.cc PolyShadingTechnique.h \
-	ColourTechnique.h CalculateColourTechnique.h \
-	ListColourTechnique.h PolyShadingMethod.h \
-	DotPolyShadingMethod.h HatchPolyShadingMethod.h IsoHighlight.h \
-	AutomaticContourMethod.h DefinitionTable.h DefinitionTable.cc \
-	GribTables.h LegendMethod.h Wind.h Wind.cc WindPlotting.h \
-	FlagPlotting.h ArrowPlotting.h CalmIndicator.h OriginMarker.h \
-	ObsPlotting.h ImportPlot.h ImagePlotting.h ImagePlotting.cc \
-	LookupTableMode.h EquidistantTableMode.h NormalTableMode.h \
-	LinearTableMode.h ObsTable.h ObsItem.h ObsItemFamily.h \
-	ImageListColourTechnique.h ImageCalculateColourTechnique.h \
-	CellShading.h CellShading.cc EpsGraph.h BoxPlotVisualiser.h \
-	ObsStatGraph.h AxisMethod.h TextOrientation.h DateAxis.h \
-	EpsForecastPlot.h Bar.h BoxPlotItem.h TaylorGrid.h \
-	BoxPlotBasicItem.h MetgramGraph.h MetgramStyle.h \
-	SimplePolylineVisualiser.h SymbolAdvancedTableMode.h \
-	HeightTechnique.h OutLayerTechnique.h ContourLibrary.h \
-	VisDefInfo.h AxisAttributes.h ObsPlottingAttributes.h \
-	ImportPlotAttributes.h ImagePlottingAttributes.h \
-	LookupTableModeAttributes.h FixedTableModeAttributes.h \
-	Cities.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libvisualisers.la
-ATTRIBUTES = CoastlinesAttributes.cc NoCoastPlottingAttributes.cc CoastPlottingAttributes.cc \
-	LabelPlottingAttributes.cc NoGridPlottingAttributes.cc GridPlottingAttributes.cc \
-	BoundariesAttributes.cc \
-	HiLoNumberAttributes.cc MarkerValuePlotMethodAttributes.cc HiLoMarkerAttributes.cc \
-	Akima474MethodAttributes.cc Akima760MethodAttributes.cc Akima761MethodAttributes.cc \
-	SampleContourMethodAttributes.cc HiLoTextAttributes.cc \
-	MarkerShadingTechniqueAttributes.cc \
-	IsoHighlightAttributes.cc HatchPolyShadingMethodAttributes.cc \
-	IntervalSelectionTypeAttributes.cc  \
-	GridShadingAttributes.cc CellShadingAttributes.cc DotPolyShadingMethodAttributes.cc \
-	CountSelectionTypeAttributes.cc ValuePlotMethodAttributes.cc  \
-	HiLoTechniqueAttributes.cc LevelSelectionAttributes.cc \
-	ListColourTechniqueAttributes.cc CalculateColourTechniqueAttributes.cc \
-	LevelListSelectionTypeAttributes.cc IsoLabelAttributes.cc \
-	SymbolPlottingAttributes.cc  SymbolModeAttributes.cc  SymbolTableModeAttributes.cc SymbolIndividualModeAttributes.cc \
-	ImageListColourTechniqueAttributes.cc ImageCalculateColourTechniqueAttributes.cc\
-	LookupTableModeAttributes.cc FixedTableModeAttributes.cc \
-	EquidistantTableModeAttributes.cc SimplePolylineAttributes.cc\
-	ObsPlottingAttributes.cc \
-	ImportPlotAttributes.cc ObsTableAttributes.cc ObsHeightAttributes.cc \
-	ObsWindAttributes.cc ObsStationRingAttributes.cc  \
-	ObsTimePlotAttributes.cc ObsDemoItem2Attributes.cc\
-	ObsTemperatureAttributes.cc\
-	ObsPressureAttributes.cc ObsPressureTendencyAttributes.cc \
-	ObsDewPointAttributes.cc ObsVisibilityAttributes.cc \
-	ObsPresentWeatherAttributes.cc ObsItemAttributes.cc \
-	ObsPressureLevelAttributes.cc ObsIdentifierAttributes.cc \
-	ObsCloudAttributes.cc ObsPastWeatherAttributes.cc ObsThicknessAttributes.cc\
-	EpsDirectionAttributes.cc \
-	SymbolAdvancedTableModeAttributes.cc  \
-	TaylorGridAttributes.cc\
-	ContinuousLegendMethodAttributes.cc HistogramLegendMethodAttributes.cc \
-	LegendBoxAttributes.cc GraphPlottingAttributes.cc LandgramBoxAttributes.cc \
-	CurveAttributes.cc BarAttributes.cc \
-	GraphFlagAttributes.cc GraphArrowAttributes.cc \
-	GraphAttributes.cc HatchGraphShadeStyleAttributes.cc \
-	GraphShadeStyleAttributes.cc DotGraphShadeStyleAttributes.cc GraphShadeAttributes.cc  \
-	WindPlottingAttributes.cc FlagPlottingAttributes.cc ArrowPlottingAttributes.cc \
-	CitiesAttributes.cc IsoPlotAttributes.cc ContourAttributes.cc\
-	ValuePlotAttributes.cc HiLoAttributes.cc WindAttributes.cc IsoShadingAttributes.cc \
-	PolyShadingTechniqueAttributes.cc  \
-	ImagePlottingAttributes.cc DateAxisMethodAttributes.cc \
-	CurveAreaAttributes.cc 
-
-include_H = \
-	Title.h \
-	SymbolPlotting.h SymbolPlotting.cc Filter.h Filter.cc \
-	TitleBase.h ValuePlotBase.h  \
-	HiLoBase.h \
-	HiLoMarkerBase.h \
-	GraphShade.h GraphShadeStyle.h Boundaries.h \
-	Coastlines.h CoastlinesAttributes.h GridPlotting.h NoGridPlottingAttributes.h GridPlottingAttributes.h LabelPlottingAttributes.h CoastPlottingAttributes.h BoundariesAttributes.h  ContourAttributes.h \
-	IsoPlotAttributes.h LevelSelectionAttributes.h IsoLabelAttributes.h IsoHighlightAttributes.h IsoShadingAttributes.h IsoShadingAttributes.cc PolyShadingTechniqueAttributes.h LegendBoxAttributes.h PolyShadingTechniqueAttributes.cc \
-	HatchPolyShadingMethodAttributes.h DotPolyShadingMethodAttributes.h MarkerShadingTechniqueAttributes.h SymbolIndividualModeAttributes.h SymbolTableModeAttributes.h CellShadingAttributes.h GridShadingAttributes.h \
-	CalculateColourTechniqueAttributes.h ListColourTechniqueAttributes.h IsoPlotAttributes.cc CountSelectionTypeAttributes.h IntervalSelectionTypeAttributes.h LevelListSelectionTypeAttributes.h ContourAttributes.cc \
-	Akima474MethodAttributes.h Akima760MethodAttributes.h ContinuousLegendMethodAttributes.h  HistogramLegendMethodAttributes.h SampleContourMethodAttributes.h HiLoAttributes.h HiLoTechniqueAttributes.h HiLoAttributes.cc HiLoNumberAttributes.h HiLoTextAttributes.h HiLoMarkerAttributes.h  \
-	IsoHelper.h SegmentJoiner.h \
-	SymbolMode.h  \
-	CoastPlotting.h \
-	LabelPlotting.h \
-	Contour.h \
-	IsoPlot.h\
-	ValuePlot.h\
-	ValuePlotMethod.h MarkerValuePlotMethod.h \
-	BothValuePlotMethod.h \
-	IsoLabel.h IsoShading.h IsoShading.cc \
-	LandgramBox.h LevelSelection.h CountSelectionType.h \
-	LevelListSelectionType.h IntervalSelectionType.h \
-	ContourMethod.h \
-	Akima760Method.h Akima761Method.h  \
-	Akima474Method.h Akima474.cc \
-	Graph.h GraphPlotting.h \
-	 Curve.h Axis.h AxisItem.h \
-	FloatSelection.h ColourSelection.h MarkerSelection.h HeightSelection.h \
-	ColourSelectionCount.h ColourSelectionList.h \
-	MarkerSelectionCount.h MarkerSelectionList.h \
-	HeightSelectionCount.h HeightSelectionList.h \
-	Histogram.h Histogram.cc HistoMode.h HistoIndividualMode.h HistoTableMode.h Intervals.h \
-	HiLo.cc HiLo.h HiLoTechnique.cc HiLoTechnique.h \
-	HiLoMarker.h  HiLoText.h \
-	HiLoNumber.h HiLoBoth.h \
-	ShadingTechnique.h \
-	MarkerShadingTechnique.h MarkerShadingTechnique.cc PolyShadingTechnique.h ColourTechnique.h \
-	CalculateColourTechnique.h ListColourTechnique.h PolyShadingMethod.h \
-	DotPolyShadingMethod.h HatchPolyShadingMethod.h \
-	IsoHighlight.h \
-	AutomaticContourMethod.h \
-	DefinitionTable.h DefinitionTable.cc \
-	GribTables.h LegendMethod.h \
-	Wind.h Wind.cc WindPlotting.h \
-	FlagPlotting.h \
-	ArrowPlotting.h \
-	CalmIndicator.h OriginMarker.h \
-	ObsPlotting.h \
-	ImportPlot.h\
-	ImagePlotting.h ImagePlotting.cc \
-	LookupTableMode.h \
-	EquidistantTableMode.h \
-	NormalTableMode.h \
-	LinearTableMode.h \
-	ObsTable.h ObsItem.h ObsItemFamily.h \
-	ImageListColourTechnique.h \
-	ImageCalculateColourTechnique.h \
-	CellShading.h CellShading.cc \
-	EpsGraph.h BoxPlotVisualiser.h ObsStatGraph.h \
-	AxisMethod.h \
-	TextOrientation.h DateAxis.h  \
-	EpsForecastPlot.h \
-	Bar.h  \
-	BoxPlotItem.h TaylorGrid.h BoxPlotBasicItem.h \
-	MetgramGraph.h MetgramStyle.h \
-	SimplePolylineVisualiser.h  \
-	SymbolAdvancedTableMode.h HeightTechnique.h OutLayerTechnique.h ContourLibrary.h \
-	VisDefInfo.h  AxisAttributes.h  ObsPlottingAttributes.h ImportPlotAttributes.h \
-	ImagePlottingAttributes.h LookupTableModeAttributes.h FixedTableModeAttributes.h \
-	Cities.h
-
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(noinst_H) $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = $(noinst_H)
-nodist_libvisualisers_la_SOURCES = ${ATTRIBUTES}
-axis = \
-	Axis.cc  \
-	DateAxis.cc \
-	AxisItem.cc  \
-	AxisMethod.cc \
-	TaylorGrid.cc  \
-	AxisAttributes.cc \
-	AxisMethodAttributes.cc
-
-metgram = \
-	EpsGraph.cc  \
-	MetgramGraph.cc MetgramStyle.cc \
-	BoxPlotVisualiser.cc\
-	BoxPlotItem.cc\
-	MetgramFlagsAttributes.cc \
-	EpsGraphAttributes.cc EpsWindAttributes.cc  EpsCloudAttributes.cc \
-	EfiGraphAttributes.cc CdfGraphAttributes.cc\
-	EpsPlumeAttributes.cc \
-	MetgramCurveAttributes.cc \
-	EpsShadeAttributes.cc MetgramGraphAttributes.cc BoxPlotVisualiserAttributes.cc \
-	BoxPlotBoxAttributes.cc BoxPlotBoxBorderAttributes.cc BoxPlotMedianAttributes.cc \
-	BoxPlotWhiskerBoxAttributes.cc BoxPlotWhiskerLineAttributes.cc BoxPlotWhiskerBorderAttributes.cc 
-
-obs = ObsPlotting.cc ObsTable.cc \
-	ObsItemFamily.cc 
-
-libvisualisers_la_SOURCES = ${axis} ${metgram} ${obs} ContourLibrary.cc Coastlines.cc CoastPlotting.cc \
-	ImagePlotting.cc WindPlotting.cc ArrowPlotting.cc FlagPlotting.cc \
-	IsoHelper.cc \
-	LabelPlotting.cc GridPlotting.cc Boundaries.cc \
-	ListColourTechnique.cc IntervalSelectionType.cc \
-	CountSelectionType.cc LevelSelection.cc \
-	ColourTechnique.cc CalculateColourTechnique.cc \
-	LevelListSelectionType.cc IsoLabel.cc \
-	TextOrientation.cc \
-	LegendMethod.cc SymbolMode.cc \
-	SimplePolylineVisualiser.cc \
-	LookupTableMode.cc \
-	EquidistantTableMode.cc \
-	NormalTableMode.cc LinearTableMode.cc \
-	BothValuePlotMethodAttributes.cc  \
-	SymbolAdvancedTableMode.cc HeightTechnique.cc \
-	OutLayerTechnique.cc \
-	HistogramAttributes.cc \
-	GraphPlotting.cc LandgramBox.cc Bar.cc Curve.cc  \
-	GraphShade.cc GraphShadeStyle.cc  \
-	VisDefInfo.cc Cities.cc \
-	Contour.cc IsoPlot.cc  ValuePlot.cc HiLo.cc Histogram.cc  \
-	Akima760.cc Akima474.cc Wind.cc IsoShading.cc\
-	PolyShadingMethod.cc CellShading.cc \
-	MarkerShadingTechnique.cc PolyShadingTechnique.cc SymbolPlotting.cc Filter.cc \
-	SegmentJoiner.cc
-
-libvisualisers_la_LDFLAGS = -no-undefined
-EXTRA_DIST = 
-AM_CPPFLAGS = ${GRIBAPI_CXXFLAGS} -I$(top_srcdir)/src \
-	-I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/basic \
-	-I$(top_srcdir)/src/common -I$(top_srcdir)/src/decoders \
-	-I$(top_srcdir)/src/drivers $(am__append_1)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .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/visualisers/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/visualisers/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libvisualisers.la: $(libvisualisers_la_OBJECTS) $(libvisualisers_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libvisualisers_la_LINK)  $(libvisualisers_la_OBJECTS) $(libvisualisers_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima474.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima474MethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima760.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima760MethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Akima761MethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ArrowPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ArrowPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Axis.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AxisAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AxisItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AxisMethod.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/AxisMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Bar.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BarAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BothValuePlotMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Boundaries.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoundariesAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotBoxAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotBoxBorderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotItem.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotMedianAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotVisualiser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotVisualiserAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotWhiskerBorderAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotWhiskerBoxAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/BoxPlotWhiskerLineAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CalculateColourTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CalculateColourTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CdfGraphAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CellShading.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CellShadingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Cities.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CitiesAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CoastPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CoastPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Coastlines.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CoastlinesAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ColourTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ContinuousLegendMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Contour.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ContourAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ContourLibrary.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CountSelectionType.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CountSelectionTypeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Curve.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CurveAreaAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CurveAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DateAxis.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DateAxisMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DotGraphShadeStyleAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/DotPolyShadingMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EfiGraphAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsCloudAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsDirectionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsGraph.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsGraphAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsPlumeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsShadeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EpsWindAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EquidistantTableMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/EquidistantTableModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Filter.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FixedTableModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FlagPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/FlagPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphArrowAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphFlagAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphShade.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphShadeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphShadeStyle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphShadeStyleAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GridPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GridPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GridShadingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HatchGraphShadeStyleAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HatchPolyShadingMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HeightTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoMarkerAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoNumberAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HiLoTextAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Histogram.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HistogramAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/HistogramLegendMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImageCalculateColourTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImageListColourTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImagePlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImagePlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ImportPlotAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IntervalSelectionType.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IntervalSelectionTypeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoHelper.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoHighlightAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoLabel.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoLabelAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoPlot.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoPlotAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoShading.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/IsoShadingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LabelPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LabelPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LandgramBox.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LandgramBoxAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LegendBoxAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LegendMethod.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LevelListSelectionType.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LevelListSelectionTypeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LevelSelection.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LevelSelectionAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LinearTableMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ListColourTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ListColourTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LookupTableMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/LookupTableModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MarkerShadingTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MarkerShadingTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MarkerValuePlotMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetgramCurveAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetgramFlagsAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetgramGraph.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetgramGraphAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MetgramStyle.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoCoastPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NoGridPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/NormalTableMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsCloudAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsDemoItem2Attributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsDewPointAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsHeightAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsIdentifierAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsItemAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsItemFamily.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPastWeatherAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPresentWeatherAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPressureAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPressureLevelAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsPressureTendencyAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsStationRingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsTable.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsTableAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsTemperatureAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsThicknessAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsTimePlotAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsVisibilityAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsWindAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/OutLayerTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolyShadingMethod.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolyShadingTechnique.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/PolyShadingTechniqueAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SampleContourMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SegmentJoiner.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimplePolylineAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimplePolylineVisualiser.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolAdvancedTableMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolAdvancedTableModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolIndividualModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolMode.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolPlottingAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SymbolTableModeAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TaylorGrid.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TaylorGridAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/TextOrientation.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValuePlot.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValuePlotAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ValuePlotMethodAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/VisDefInfo.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Wind.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindPlotting.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WindPlottingAttributes.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/visualisers/MarkerShadingTechniqueAttributes.h b/src/visualisers/MarkerShadingTechniqueAttributes.h
deleted file mode 100644
index 14bc510..0000000
--- a/src/visualisers/MarkerShadingTechniqueAttributes.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file MarkerShadingTechniqueAttributes.h
-    \brief Definition of MarkerShadingTechnique Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef MarkerShadingTechniqueAttributes_H
-#define MarkerShadingTechniqueAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class MarkerShadingTechniqueAttributes 
-{
-public:
-//  --  constructor
-    MarkerShadingTechniqueAttributes();
-    
-//  --  destructor
-    virtual ~MarkerShadingTechniqueAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const MarkerShadingTechniqueAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	stringarray colour_;
-	floatarray height_;
-	intarray marker_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const MarkerShadingTechniqueAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/MetgramCurveAttributes.cc b/src/visualisers/MetgramCurveAttributes.cc
deleted file mode 100644
index 40fa064..0000000
--- a/src/visualisers/MetgramCurveAttributes.cc
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file MetgramCurveAttributes.cc
-    \brief Implementation of MetgramCurve Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "MetgramCurveAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-MetgramCurveAttributes::MetgramCurveAttributes():
-	style_(MagTranslator<string, LineStyle>().magics("metgram_curve_line_style")),
-	style2_(MagTranslator<string, LineStyle>().magics("metgram_curve2_line_style")),
-	colour_(MagTranslator<string, Colour>().magics("metgram_curve_colour")),
-	colour2_(MagTranslator<string, Colour>().magics("metgram_curve2_colour")),
-	thickness_(ParameterManager::getInt("metgram_curve_thickness")),
-	thickness2_(ParameterManager::getInt("metgram_curve2_thickness"))
-{
-} 
-
-
-
-MetgramCurveAttributes::~MetgramCurveAttributes()
-{
-}
-
-    
-void MetgramCurveAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "metgram";
-
-	setAttribute(prefix, "metgram_curve_line_style", style_, params);
-	setAttribute(prefix, "metgram_curve2_line_style", style2_, params);
-	setAttribute(prefix, "metgram_curve_colour", colour_, params);
-	setAttribute(prefix, "metgram_curve2_colour", colour2_, params);
-	setAttribute(prefix, "metgram_curve_thickness", thickness_, params);
-	setAttribute(prefix, "metgram_curve2_thickness", thickness2_, params);
-}
-
-void MetgramCurveAttributes::copy(const MetgramCurveAttributes& other)
-{
-	style_ = other.style_;
-	style2_ = other.style2_;
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	colour2_ = auto_ptr<Colour>(other.colour2_->clone());
-	thickness_ = other.thickness_;
-	thickness2_ = other.thickness2_;
-} 
-
-
-bool MetgramCurveAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "metgraph")  )
-		return true;
-	return false;
-}
-
-void MetgramCurveAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "metgraph") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void MetgramCurveAttributes::print(ostream& out)  const
-{
-	out << "MetgramCurveAttributes[";
-	out << "style = " << style_;
-	out << ", style2 = " << style2_;
-	out << ", colour = " << *colour_;
-	out << ", colour2 = " << *colour2_;
-	out << ", thickness = " << thickness_;
-	out << ", thickness2 = " << thickness2_;
-	out << "]" << "\n";
-}
-
-
-void MetgramCurveAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"metgraph\"";
-	 out << ", \"metgram_curve_line_style\":";
-	 niceprint(out,style_);
-	 out << ", \"metgram_curve2_line_style\":";
-	 niceprint(out,style2_);
-	 out << ", \"metgram_curve_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"metgram_curve2_colour\":";
-	 niceprint(out, *colour2_);
-	 out << ", \"metgram_curve_thickness\":";
-	 niceprint(out,thickness_);
-	 out << ", \"metgram_curve2_thickness\":";
-	 niceprint(out,thickness2_);
-}
-static MagicsParameter<string> metgram_curve_line_style("metgram_curve_line_style", "solid", "");
-static MagicsParameter<string> metgram_curve2_line_style("metgram_curve2_line_style", "solid", "");
-static MagicsParameter<string> metgram_curve_colour("metgram_curve_colour", "red", "");
-static MagicsParameter<string> metgram_curve2_colour("metgram_curve2_colour", "blue", "");
-static MagicsParameter<int> metgram_curve_thickness("metgram_curve_thickness", 2, "");
-static MagicsParameter<int> metgram_curve2_thickness("metgram_curve2_thickness", 2, "");
diff --git a/src/visualisers/MetgramFlagsAttributes.cc b/src/visualisers/MetgramFlagsAttributes.cc
deleted file mode 100644
index 39ed854..0000000
--- a/src/visualisers/MetgramFlagsAttributes.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file MetgramFlagsAttributes.cc
-    \brief Implementation of MetgramFlags Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "MetgramFlagsAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-MetgramFlagsAttributes::MetgramFlagsAttributes():
-	colour_(MagTranslator<string, Colour>().magics("metgram_flag_colour")),
-	frequency_(ParameterManager::getInt("metgram_flag_frequency")),
-	length_(ParameterManager::getDouble("metgram_flag_length"))
-{
-} 
-
-
-
-MetgramFlagsAttributes::~MetgramFlagsAttributes()
-{
-}
-
-    
-void MetgramFlagsAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "metgram";
-
-	setAttribute(prefix, "metgram_flag_colour", colour_, params);
-	setAttribute(prefix, "metgram_flag_frequency", frequency_, params);
-	setAttribute(prefix, "metgram_flag_length", length_, params);
-}
-
-void MetgramFlagsAttributes::copy(const MetgramFlagsAttributes& other)
-{
-	colour_ = auto_ptr<Colour>(other.colour_->clone());
-	frequency_ = other.frequency_;
-	length_ = other.length_;
-} 
-
-
-bool MetgramFlagsAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "metflags")  )
-		return true;
-	return false;
-}
-
-void MetgramFlagsAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "metflags") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void MetgramFlagsAttributes::print(ostream& out)  const
-{
-	out << "MetgramFlagsAttributes[";
-	out << "colour = " << *colour_;
-	out << ", frequency = " << frequency_;
-	out << ", length = " << length_;
-	out << "]" << "\n";
-}
-
-
-void MetgramFlagsAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"metflags\"";
-	 out << ", \"metgram_flag_colour\":";
-	 niceprint(out, *colour_);
-	 out << ", \"metgram_flag_frequency\":";
-	 niceprint(out,frequency_);
-	 out << ", \"metgram_flag_length\":";
-	 niceprint(out,length_);
-}
-static MagicsParameter<string> metgram_flag_colour("metgram_flag_colour", "red", "");
-static MagicsParameter<int> metgram_flag_frequency("metgram_flag_frequency", 1, "");
-static MagicsParameter<double> metgram_flag_length("metgram_flag_length", 0.5, "");
diff --git a/src/visualisers/MetgramGraphAttributes.cc b/src/visualisers/MetgramGraphAttributes.cc
deleted file mode 100644
index 879debe..0000000
--- a/src/visualisers/MetgramGraphAttributes.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file MetgramGraphAttributes.cc
-    \brief Implementation of MetgramGraph Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "MetgramGraphAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-MetgramGraphAttributes::MetgramGraphAttributes():
-	style_(MagTranslator<string, MetgramStyle>().magics("metgram_plot_style"))
-{
-} 
-
-
-
-MetgramGraphAttributes::~MetgramGraphAttributes()
-{
-}
-
-    
-void MetgramGraphAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "metgram";
-
-	setMember(prefix, "metgram_plot_style", style_, params);
-}
-
-void MetgramGraphAttributes::copy(const MetgramGraphAttributes& other)
-{
-	style_ = auto_ptr<MetgramStyle>(other.style_->clone());
-} 
-
-
-bool MetgramGraphAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "metgraph")  )
-		return true;
-
-	if ( acceptNode(node, style_) )
-		return true;
-	return false;
-}
-
-void MetgramGraphAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "metgraph") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), style_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), style_, *(*elt)); 
-	}
-}
-
-void MetgramGraphAttributes::print(ostream& out)  const
-{
-	out << "MetgramGraphAttributes[";
-	out << "style = " << *style_;
-	out << "]" << "\n";
-}
-
-
-void MetgramGraphAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"metgraph\"";
-	 out << ", \"metgram_plot_style\":";
-	 style_->toxml(out);
-}
-static MagicsParameter<string> metgram_plot_style("metgram_plot_style", "curve", "");
-#include "MetgramStyle.h"
-static SimpleObjectMaker<MetgramBar, MetgramStyle> bar_MetgramBar("bar");
-static SimpleObjectMaker<MetgramFlags, MetgramStyle> flags_MetgramFlags("flags");
-static SimpleObjectMaker<MetgramCurve, MetgramStyle> curve_MetgramCurve("curve");
diff --git a/src/visualisers/NoGridPlottingAttributes.h b/src/visualisers/NoGridPlottingAttributes.h
deleted file mode 100644
index 9b26591..0000000
--- a/src/visualisers/NoGridPlottingAttributes.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file NoGridPlottingAttributes.h
-    \brief Definition of NoGridPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:20 2013
-*/
-   
-
-#ifndef NoGridPlottingAttributes_H
-#define NoGridPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class NoGridPlottingAttributes 
-{
-public:
-//  --  constructor
-    NoGridPlottingAttributes();
-    
-//  --  destructor
-    virtual ~NoGridPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const NoGridPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double latReference_;
-	double latIncrement_;
-	double lonReference_;
-	double lonIncrement_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const NoGridPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ObsItem.h b/src/visualisers/ObsItem.h
index 702d8f8..e87c0f9 100644
--- a/src/visualisers/ObsItem.h
+++ b/src/visualisers/ObsItem.h
@@ -34,22 +34,23 @@
 #include "Factory.h"
 #include "MagTranslator.h"
 #include "CustomisedPoint.h"
-#include "ObsItemAttributes.h"
+
 #include "Symbol.h"
 
 
 
 namespace magics {
 
+class ObsPlotting;
 
-class ObsItem : public ObsItemAttributes {
+class ObsItem {
 
 
 public:
-	ObsItem() {}
+	ObsItem(): owner_(0) {}
 	virtual ~ObsItem() {}
 	
-	virtual void set(const map<string, string>& map) { ObsItemAttributes::set(map); }
+	virtual void set(const map<string, string>&) {}
 	virtual void operator()(CustomisedPoint&, ComplexSymbol&) const {} 
 	virtual void visit(std::set<string>&) {}
 	
@@ -58,10 +59,14 @@ public:
 		map<string, string>::const_iterator val = def.find(keyword);
 		return ( val != def.end() ) ?  val->second : defaut;
 	}
- 
+
+	ObsPlotting* set(const ObsPlotting* owner) const { owner_ = owner; }
+
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream& out) const { out << "obsItem";  }
+	mutable const ObsPlotting* owner_;
+
 
 private:
     //! Copy constructor - No copy allowed
diff --git a/src/visualisers/ObsItemFamily.cc b/src/visualisers/ObsItemFamily.cc
index 2754d08..1c87e95 100644
--- a/src/visualisers/ObsItemFamily.cc
+++ b/src/visualisers/ObsItemFamily.cc
@@ -45,16 +45,16 @@ void  ObsWind::setOrigins()
 }
 void ObsWind::visit(std::set<string>& tokens)
 {
-	if (!attributes_ ) attributes_ = new ObsWindAttributes();
-	if ( !colour_.empty() )  attributes_->colour_ = auto_ptr<Colour>(new Colour(colour_));
-	if (!attributes_->visible_) return;
+
+
+	if (!owner_->wind_visible_) return;
 	tokens.insert(speed_);
 	tokens.insert(direction_);
 
 }
-void ObsWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
+void ObsWind::operator()( CustomisedPoint& point, ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->wind_visible_) return;
 
 	map<string, double>::iterator it = point.begin();
 	map<string, double>::iterator en = point.end();
@@ -62,6 +62,7 @@ void ObsWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 	{
 	 MagLog::debug() << " >>> "<<it->first<<" -> " << it->second << endl;
 	}
+	Colour colour =  owner_->wind_colour_->automatic() ? *owner_->colour_ : *owner_->wind_colour_;
 
 	CustomisedPoint::const_iterator speed = point.find(speed_);
 	if ( speed == point.end() ) return; 
@@ -69,8 +70,8 @@ void ObsWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 	if ( direction == point.end() ) return; 
 
 	FlagItem* flag = new FlagItem();
-	flag->setColour(*attributes_->colour_);
-	flag->length(size_ * 1.5); // Size to be adjusted later!
+	flag->setColour(colour);
+	flag->length(owner_->size_ * 1.5); // Size to be adjusted later!
 
 	const string origin = "circle";
 
@@ -78,17 +79,17 @@ void ObsWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 MagLog::debug() << "OBS ITEM - ObsWind - Lon/Lat: "<<point.longitude()<<" / "<<point.latitude()
      << "\n\twind_speed:     " << point[speed_]
      << "\n\twind_direction: " << point[direction_]
-     << "\n\tcloud amount:   " << point["cloud_amount"]<<" -> "<<origin <<endl;
+     << "\n\tcloud amount:   " << point["cloud_amount"]<<" -> "<<origin << std::endl;
 
 
-	flag->setOriginHeight(0.01);
+	flag->setOriginHeight(owner_->ring_size_);
 	flag->setOriginMarker(origin);
 	flag->x(0);
 	flag->y(0);
 	
 	const Transformation& transformation = symbol.parent().transformation();
 	PaperPoint pp(point.longitude(), point.latitude());
-	pair<double, double> wind = make_pair(speed->second, direction->second);
+	std::pair<double, double> wind = std::make_pair(speed->second, direction->second);
 	transformation.reprojectSpeedDirection(pp, wind);
 	
 	flag->speed(speed->second);
@@ -112,9 +113,11 @@ void  ObsCloudAndWind::setOrigins()
 	origins_[8] = "N_8";
 }
 
-void ObsCloudAndWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
+void ObsCloudAndWind::operator()( CustomisedPoint& point, ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->wind_visible_) return;
+
+	Colour colour =  owner_->wind_colour_->automatic() ? *owner_->colour_ : *owner_->wind_colour_;
 
 	map<string, double>::iterator it = point.begin();
 	map<string, double>::iterator en = point.end();
@@ -122,15 +125,15 @@ void ObsCloudAndWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol)
 	{
 	 MagLog::debug() << " >>> "<<it->first<<" -> " << it->second << endl;
 	}
-
+	symbol.setHeight(owner_->size_);
 	CustomisedPoint::const_iterator speed = point.find("wind_speed");
 	if ( speed == point.end() ) return; 
 	CustomisedPoint::const_iterator direction = point.find("wind_direction");
 	if ( direction == point.end() ) return; 
 
 	FlagItem* flag = new FlagItem();
-	flag->setColour(*attributes_->colour_);
-	flag->length(size_ * 1.5); // Size to be adjusted later!
+	flag->setColour(colour);
+	flag->length(owner_->size_ * 1.5); // Size to be adjusted later!
 
 	map<int, string>::const_iterator marker = origins_.find(int(point["cloud_amount"]));
 	const string origin = ( marker != origins_.end()) ? marker->second : "magics_13";
@@ -139,16 +142,16 @@ void ObsCloudAndWind::operator()(CustomisedPoint& point, ComplexSymbol& symbol)
 MagLog::debug() << "OBS ITEM - ObsWind - Lon/Lat: "<<point.longitude()<<" / "<<point.latitude()
      << "\n\twind_speed:     " << point["wind_speed"] 
      << "\n\twind_direction: " << point["wind_direction"]
-     << "\n\tcloud amount:   " << point["cloud_amount"]<<" -> "<<origin <<endl;
+     << "\n\tcloud amount:   " << point["cloud_amount"]<<" -> "<<origin << std::endl;
 
-	flag->setOriginHeight(size_);
+	flag->setOriginHeight(owner_->ring_size_);
 	flag->setOriginMarker(origin);
 	flag->x(0);
 	flag->y(0);
 	
 	const Transformation& transformation = symbol.parent().transformation();
 	PaperPoint pp(point.longitude(), point.latitude());
-	pair<double, double> wind = make_pair(speed->second, direction->second);
+	std::pair<double, double> wind = std::make_pair(speed->second, direction->second);
 	transformation.reprojectSpeedDirection(pp, wind);
 	
 	flag->speed(speed->second);
@@ -161,26 +164,29 @@ MagLog::debug() << "OBS ITEM - ObsWind - Lon/Lat: "<<point.longitude()<<" / "<<p
 
 void ObsPressure::visit(std::set<string>& tokens)
 {
-	if ( !attributes_ ) attributes_ = new ObsPressureAttributes();
-	if (!attributes_->visible_) return;
-	if ( !colour_.empty() )  attributes_->colour_ = auto_ptr<Colour>(new Colour(colour_));
+
+	if (!owner_->pressure_visible_) return;
+
 	tokens.insert("msl_pressure");
 }
 
 void ObsPressure::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->pressure_visible_) return;
+
 	CustomisedPoint::const_iterator value = point.find("msl_pressure");
 	if ( value == point.end() ) return;
 	
+	Colour colour =  owner_->pressure_colour_->automatic() ? *owner_->colour_ : *owner_->pressure_colour_;
+
 	TextItem*  object = new TextItem();
 	// for the pressure we show the 3 last digits of the pressure in decaPascal.
 	object->x(column_);
 	object->y(row_);
 	MagFont font;
-	font.colour(*attributes_->colour_);
+	font.colour(colour);
 	font.name("sansserif");
-	font.size(size_);
+	font.size(owner_->size_);
 	
 	ostringstream os;
 	double pressure = fmod(value->second/10, 1000);
@@ -196,46 +202,49 @@ void ObsPressure::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) con
 
 void ObsPressureLevel::visit(std::set<string>& tokens)
 {
-	if ( !attributes_ ) attributes_ = new ObsPressureLevelAttributes();
-	if (!attributes_->visible_) return;
+
+	if (!owner_->upper_air_visible_) return;
 	tokens.insert("pressure");
 }
 
 void ObsPressureLevel::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->upper_air_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("pressure");
 	if ( value == point.end() ) return;
 	TextItem*  object = new TextItem();
 	object->x(column_);
 	object->y(row_);
-	
+
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
+	Colour colour =  owner_->upper_air_colour_->automatic() ? *owner_->colour_ : *owner_->upper_air_colour_;
+	font.colour(colour);
 	
 	const double pressure = value->second/100.;
 
 	object->text(tostring(pressure));
 
 	MagLog::debug() << "\tPressureLevel: " << value->second << " = " << pressure << "\n";
-	font.size(size_);
+	font.size(owner_->size_);
 	object->font(font);
 	symbol.add(object);
 }
 	
 void ObsPressureTendency::visit(std::set<string>& tokens)
 {
-	if ( !attributes_ ) attributes_ = new ObsPressureTendencyAttributes();
-	if (!attributes_->visible_) return;
+
+	if (! owner_->pressure_tendency_visible_) return;
 	tokens.insert("pressure_tendency_amount");
 	tokens.insert("pressure_tendency_characteristic");
 }
 	
 void ObsPressureTendency::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (! owner_->pressure_tendency_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("pressure_tendency_amount");
-	if ( value == point.end() ) return; 
+	if ( value == point.end() ) return;
+
+	Colour colour =  owner_->pressure_tendency_colour_->automatic() ? *owner_->colour_ : *owner_->pressure_tendency_colour_;
 	TextItem*  object = new TextItem();
 	object->x(column_);
 	object->y(row_);
@@ -246,10 +255,10 @@ void ObsPressureTendency::operator()(CustomisedPoint& point, ComplexSymbol& symb
 	
 	// The Pressure tendancy is red if negative!
 	MagFont font("sansserif");
-	font.colour(( value->second < 0 ) ? Colour("red") : *attributes_->colour_);
+	font.colour(( value->second < 0 ) ? Colour("red") :colour);
 
 	object->text(os.str());
-	font.size(size_);
+	font.size(owner_->size_);
 	object->font(font);
 	symbol.add(object);
 	value = point.find("pressure_tendency_characteristic");
@@ -258,36 +267,35 @@ void ObsPressureTendency::operator()(CustomisedPoint& point, ComplexSymbol& symb
 	tendancy->x(column_+1);
 	tendancy->y(row_);	
 	
-	tendancy->colour(*attributes_->colour_);
+	tendancy->colour(colour);
 	ostringstream oss;	
 	oss << "a_"  << value->second;
 	tendancy->symbol(oss.str());
-#ifdef OBS_DEBUG_
+
 	MagLog::debug() << "\tPressure tendency--->" << oss.str() << "\n";
-#endif
-	tendancy->height(size_);
+
+	tendancy->height(owner_->size_);
 	symbol.add(tendancy);
 }
 
 	
 void ObsDewPoint::visit(std::set<string>& tokens)
 {
-	if ( !attributes_ ) attributes_ = new ObsDewPointAttributes();
-	if (!attributes_->visible_) return;
-	if ( !colour_.empty() )  attributes_->colour_ = auto_ptr<Colour>(new Colour(colour_));
+
+	if (!owner_->dewpoint_visible_) return;
 	tokens.insert("dewpoint");
 }
 
 void ObsDewPoint::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->dewpoint_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("dewpoint");
 	if ( value == point.end() ) return; 
 	TextItem*  object = new TextItem();
 	MagFont font("sansserif");
-	
-	font.colour(*attributes_->colour_);
-	font.size(size_);
+	Colour colour =  owner_->pressure_tendency_colour_->automatic() ? *owner_->colour_ : *owner_->pressure_tendency_colour_;
+	font.colour(colour);
+	font.size(owner_->size_);
 	object->x(column_);
 	object->y(row_);
 	
@@ -306,8 +314,7 @@ void ObsDewPoint::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) con
 	
 void ObsVisibility::visit(std::set<string>& tokens)
 {
-	if ( !attributes_ ) attributes_ = new ObsVisibilityAttributes();
-	if (!attributes_->visible_) return;
+	if (!owner_->visibility_visible_) return;
 	tokens.insert("horizontal_visibility");
 }
 /*! 
@@ -316,16 +323,16 @@ void ObsVisibility::visit(std::set<string>& tokens)
 */
 void ObsVisibility::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->visibility_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("horizontal_visibility");
 	if ( value == point.end() ) return;
-
+	Colour colour =  owner_->visibility_colour_->automatic() ? *owner_->colour_ : *owner_->visibility_colour_;
 	TextItem*  object = new TextItem();
 	object->x(column_);
 	object->y(row_);
 
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
+	font.colour(colour);
 	
 	const double vv = value->second;
 	string val;
@@ -342,7 +349,7 @@ void ObsVisibility::operator()(CustomisedPoint& point, ComplexSymbol& symbol) co
 
 	MagLog::debug() << "\tVisibility: " << vv << " = " << val << "\n";
 
-	font.size(size_);
+	font.size(owner_->size_);
 	object->font(font);
 	//object->setJustification(MRIGHT);
 
@@ -351,47 +358,49 @@ void ObsVisibility::operator()(CustomisedPoint& point, ComplexSymbol& symbol) co
 	
 void ObsPresentWeather::visit(std::set<string>& tokens)
 {
-	if ( !attributes_ ) attributes_ = new ObsPresentWeatherAttributes();
-	if (!attributes_->visible_) return;
+
+	if (!owner_->present_ww_visible_) return;
 	tokens.insert("present_weather");
-	if ( !colour_.empty() )  attributes_->colour_ = auto_ptr<Colour>(new Colour(colour_));
+
 }
 
 void ObsPresentWeather::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->present_ww_visible_) return;
+
 	CustomisedPoint::const_iterator value = point.find("present_weather");
 	if ( value == point.end() ) return; 
 	SymbolItem*  object = new SymbolItem();
 	object->x(column_);
 	object->y(row_);
 	
-	object->colour(*attributes_->colour_);
+	Colour colour =  owner_->present_ww_colour_->automatic() ? *owner_->colour_ : *owner_->present_ww_colour_;
+	object->colour(colour);
 	//object->setFont("sansserif");
 	ostringstream os;
 	
 	os << "ww_" << setw(2) << setfill('0') << value->second;
 
 	object->symbol(os.str());
-#ifdef OBS_DEBUG_
-	MagLog::debug() << "\tPresent Weather--->" << os.str() << "\n";
-#endif
+	MagLog::debug() << "\tPresent Weather--->" << os.str() << " in " << colour << "\n";
 	//time->setJustification(MRIGHT);
-	object->height(size_);
+	object->height(owner_->size_);
 	symbol.add(object);
 }
 
 
 void ObsTemperature::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 {
-	if (!attributes_->visible_) return;
+	if (!owner_->temperature_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("temperature");
 	if ( value == point.end() )  return;
 
+	Colour colour =  owner_->temperature_colour_->automatic() ? *owner_->colour_ : *owner_->temperature_colour_;
+
 	TextItem*  object = new TextItem();
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
-	font.size(size_);
+	font.colour(colour);
+	font.size(owner_->size_);
 	object->font(font);
 	object->x(column_);
 	object->y(row_);
@@ -411,22 +420,25 @@ void ObsTemperature::operator()(CustomisedPoint& point,  ComplexSymbol& symbol)
 
 void ObsTimePlot::visit(std::set<string>&) 
 {
-	if ( !attributes_ ) attributes_ = new ObsTimePlotAttributes();
-	if (!attributes_->visible_) return;
+
+	if (!owner_->time_plot_visible_) return;
 }
 	
-void ObsTimePlot::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const 
+void ObsTimePlot::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 { 
-	if (!attributes_->visible_) return;
+	if (!owner_->time_plot_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("time");
 	if ( value == point.end() ) return;
 #ifdef OBS_DEBUG_
 	MagLog::debug() << "\tTimePlot: " << value->second << "at[" << column_ << ", " << row_ << "]" << endl;
 #endif
+
+	Colour colour =  owner_->time_plot_colour_->automatic() ? *owner_->colour_ : *owner_->time_plot_colour_;
+
 	TextItem*  time = new TextItem();
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
-	font.size(size_);
+	font.colour(colour);
+	font.size(owner_->size_);
 	time->x(column_);
 	time->y(row_);
 	time->font(font);
@@ -440,24 +452,25 @@ void ObsTimePlot::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) con
 
 void ObsHeight::visit(std::set<string>& tokens ) 
 {
-	if ( !attributes_ ) attributes_ = new ObsHeightAttributes();
-	if (!attributes_->visible_) return;
+
+	if (!owner_->height_visible_) return;
 	tokens.insert("geopotential");
 }
 	
-void ObsHeight::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const 
+void ObsHeight::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 { 
-	if (!attributes_->visible_) return;
+	if (!owner_->height_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("geopotential");
 	if ( value == point.end() ) return;
 	double geop = maground(value->second/98.1);
 #ifdef OBS_DEBUG_
 	MagLog::debug() << "\tGeopotential: " << geop << "at[" << column_ << ", " << row_ << "]" << endl;
 #endif
+	Colour colour =  owner_->height_colour_->automatic() ? *owner_->colour_ : *owner_->height_colour_;
 	TextItem*  height = new TextItem();
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
-	font.size(size_);
+	font.colour(colour);
+	font.size(owner_->size_);
 	height->x(column_);
 	height->y(row_);
 
@@ -471,25 +484,26 @@ void ObsHeight::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 
 void ObsThickness::visit(std::set<string>& tokens ) 
 {
-	if ( !attributes_ ) attributes_ = new ObsThicknessAttributes();
-	if (!attributes_->visible_) return;
+
+	if (!owner_->thickness_visible_) return;
 	tokens.insert("thickness");
 }
 
 
-void ObsThickness::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const 
+void ObsThickness::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 { 
-	if (!attributes_->visible_) return;
+	if (!owner_->thickness_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("thickness");
 	if ( value == point.end() ) return;
 	const double thickness = maground(value->second/98.1);
 #ifdef OBS_DEBUG_
 	MagLog::debug() << "\tThickness: " << thickness << "at[" << column_ << ", " << row_ << "]" << endl;
 #endif
+	Colour colour =  owner_->thickness_colour_->automatic() ? *owner_->colour_ : *owner_->thickness_colour_;
 	TextItem*  object = new TextItem();
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
-	font.size(size_);
+	font.colour(colour);
+	font.size(owner_->size_);
 	object->x(column_);
 	object->y(row_);
 	
@@ -504,21 +518,21 @@ void ObsThickness::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) co
 
 void ObsIdentifier::visit(std::set<string>&) 
 {
-	if ( !attributes_ ) attributes_ = new ObsIdentifierAttributes();
-	MagLog::debug() << " ObsIdentifier" << *attributes_ << endl;
-	if (!attributes_->visible_) return;
+
+	if (!owner_->identifier_visible_) return;
 }
 	
-void ObsIdentifier::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const 
+void ObsIdentifier::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 { 
-	if (!attributes_->visible_) return;
+	if (!owner_->identifier_visible_) return;
 	TextItem*  time = new TextItem();
 #ifdef OBS_DEBUG_
 	MagLog::debug() << "Identification for " << point.identifier() << "at[" << column_ << ", " << row_ << "]" << endl;
 #endif
+	Colour colour =  owner_->identifier_colour_->automatic() ? *owner_->colour_ : *owner_->identifier_colour_;
 	MagFont font("sansserif");
-	font.colour(*attributes_->colour_);
-	font.size(size_);
+	font.colour(colour);
+	font.size(owner_->size_);
 	time->x(column_);
 	time->y(row_);
 	time->text(point.identifier());
@@ -532,30 +546,33 @@ void ObsIdentifier::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) c
 
 void ObsPastWeather::visit(std::set<string>& tokens) 
 {
-	if ( !attributes_ ) attributes_ = new ObsPastWeatherAttributes();
-	if (!attributes_->visible_) return;
+
+	if (!owner_->past_ww_visible_) return;
 	tokens.insert("past_weather_1");
 	tokens.insert("past_weather_2");
 }
 
-void ObsPastWeather::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const 
+void ObsPastWeather::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 { 
-	if (!attributes_->visible_) return;
+	if (!owner_->past_ww_visible_) return;
 	CustomisedPoint::const_iterator value = point.find("past_weather_1");
 	if ( value == point.end() ) return;
+
+	Colour colour =  owner_->past_ww_colour_->automatic() ? *owner_->colour_ : *owner_->past_ww_colour_;
+
 	if(value->second > 2)
 	{
 		SymbolItem*  object = new SymbolItem();
 		object->x(column_);
 		object->y(row_);
-		object->colour(*attributes_->colour_);
+		object->colour(colour);
 		ostringstream os;	
 		os << "W_"  << value->second;	
 		object->symbol(os.str());
 #ifdef OBS_DEBUG_
 		MagLog::debug() << "\tPast Weather 1-> " << os.str() << "\n";
 #endif
-		object->height(size_);
+		object->height(owner_->size_);
 		symbol.add(object);
 
 		//second past weather
@@ -566,14 +583,14 @@ void ObsPastWeather::operator()(CustomisedPoint& point,  ComplexSymbol& symbol)
 			SymbolItem* object2 = new SymbolItem();
 			object2->x(column_*2);
 			object2->y(row_);
-			object2->colour(*attributes_->colour_);
+			object2->colour(colour);
 			ostringstream os2;	
 			os2 << "W_"  << value->second;	
 			object2->symbol(os2.str());
 #ifdef OBS_DEBUG_
 			MagLog::debug() << "\tPast Weather 2-> " << os2.str() << "\n";
 #endif
-			object2->height(size_);
+			object2->height(owner_->size_);
 			symbol.add(object2);
 		}
 	}
@@ -584,43 +601,38 @@ void ObsPastWeather::operator()(CustomisedPoint& point,  ComplexSymbol& symbol)
 void ObsCloud::visit(std::set<string>& tokens) 
 {
 
-	if (!attributes_ ) attributes_ = new ObsCloudAttributes();
-	if (!attributes_->visible_) return;
-	if ( attributes_->low_ )
+
+	if (!owner_->cloud_visible_) return;
+	if ( owner_->low_ )
 	{
 		tokens.insert("low_cloud");
 		tokens.insert("low_cloud_nebulosity");
 		tokens.insert("low_cloud_height");
 	}
-	if ( attributes_->medium_ ) tokens.insert("medium_cloud");
-	if ( attributes_->high_ ) tokens.insert("high_cloud");
-	if ( !colour_.empty() )  {
+	if ( owner_->medium_ ) tokens.insert("medium_cloud");
+	if ( owner_->high_ ) tokens.insert("high_cloud");
 
-		attributes_->medium_colour_ = auto_ptr<Colour>(new Colour(colour_));
-		attributes_->low_colour_ = auto_ptr<Colour>(new Colour(colour_));
-		attributes_->high_colour_ = auto_ptr<Colour>(new Colour(colour_));
-	}
 }
 	
-void ObsCloud::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const 
+void ObsCloud::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 { 
-	if (!attributes_->visible_) return;
-	
+	if (!owner_->cloud_visible_) return;
+	symbol.setHeight(owner_->size_);
 	CustomisedPoint::const_iterator value = point.find("low_cloud");
 	if ( value != point.end() )
 	{
 		SymbolItem*  cloud = new SymbolItem();
 		cloud->x(lowColumn_);
 		cloud->y(lowRow_);
-		cloud->colour(*attributes_->low_colour_);
+		cloud->colour(*owner_->low_colour_);
 		ostringstream oss;	
 		int type = int(value->second - (int (value->second/10) *10));
 		oss << "CL_"  << type;
 		cloud->symbol(oss.str());
-#ifdef OBS_DEBUG_
+
 		MagLog::debug() << "\tLow Cloud--->" << oss.str() << "\n";
-#endif
-		cloud->height(size_);
+
+		cloud->height(owner_->ring_size_);
 		symbol.add(cloud);
 	}
 
@@ -657,8 +669,8 @@ void ObsCloud::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 		object->y(lowRow_-1);
 		MagFont font;
 		font.name("sansserif");
-		font.colour(*attributes_->low_colour_);
-		font.size(size_*.6);
+		font.colour(*owner_->low_colour_);
+		font.size(owner_->size_*.6);
 #ifdef OBS_DEBUG_
 		MagLog::debug() << "\tLow Cloud Nebulosity--->" << value->second << "\n";
 #endif
@@ -677,7 +689,7 @@ void ObsCloud::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 		cloud->x(mediumColumn_);
 		cloud->y(mediumRow_);
 		
-		cloud->colour(*attributes_->medium_colour_);
+		cloud->colour(*owner_->medium_colour_);
 		ostringstream oss;
 		int type = int(value->second - (int (value->second/10.) *10));
 		oss << "CM_"  << type;
@@ -685,7 +697,7 @@ void ObsCloud::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 
 		MagLog::debug() << "\tMedium Cloud--->" <<value->second<<" > "<< oss.str() << "\n";
 
-		cloud->height(size_);
+		cloud->height(owner_->size_);
 		symbol.add(cloud);
 	}
 	
@@ -695,15 +707,15 @@ void ObsCloud::operator()(CustomisedPoint& point, ComplexSymbol& symbol) const
 		SymbolItem*  cloud = new SymbolItem();
 		cloud->x(highColumn_);
 		cloud->y(highRow_);
-		cloud->colour(*attributes_->high_colour_);
+		cloud->colour(*owner_->high_colour_);
 		ostringstream oss;	
 		int type = int(value->second - (int (value->second/10) *10));
 		oss << "CH_"  << type;
 		cloud->symbol(oss.str());
-#ifdef OBS_DEBUG_
+
 		MagLog::debug() << "\tHigh Cloud--->" << oss.str() << "\n";
-#endif
-		cloud->height(size_);
+
+		cloud->height(owner_->size_);
 		symbol.add(cloud);
 	}
 }
@@ -751,7 +763,7 @@ void ObsDemoItem2::operator()(CustomisedPoint& point, ComplexSymbol& symbol) con
 {
 	string text;
 	if ( point.find("info_for_demo2") == point.end() )
-			text = attributes_->text_;
+			text = "todo";
 
 	else
 		text=tostring(point["info_for_demo2"]);
@@ -761,21 +773,15 @@ void ObsDemoItem2::operator()(CustomisedPoint& point, ComplexSymbol& symbol) con
 	object->y(row_);
 	MagFont font;
 	font.name("sansserif");
-	font.colour(attributes_->text_colour_);
-	font.size(size_);
+	font.colour(*owner_->colour_);
+	font.size(owner_->size_);
 	//object->colour(attributes_text_colour_);
 	object->text(text);
 	object->font(font);
 	symbol.add(object);
 }
 
-void ObsEra::set(const map<string, string>& def)
-{
-	key_ = find(def, "key");
-	colour_ = find(def, "colour");
-	row_ = atoi(find(def, "row").c_str());
-	column_ = atoi(find(def, "column").c_str());
-}
+
 
 void  ObsEra::visit(std::set<string>& tokens)
 {
@@ -794,10 +800,91 @@ void  ObsEra::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
 	MagFont font;
 	font.name("sansserif");
 	font.colour(colour_);
-	font.size(size_);
+	font.size(owner_->size_);
 
 	object->text(text);
 	object->font(font);
 	symbol.add(object);
 
 }
+
+void  ObsSeaTemperature::visit(std::set<string>& tokens)
+{
+	if (!owner_->sea_temperature_visible_) return;
+	tokens.insert("sea_temperature");
+}
+
+void  ObsSeaTemperature::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
+{
+	if (!owner_->sea_temperature_visible_) return;
+	CustomisedPoint::const_iterator value = point.find("sea_temperature");
+	if ( value == point.end() )  return;
+	Colour colour =  owner_->sea_temperature_colour_->automatic() ? *owner_->colour_ : *owner_->sea_temperature_colour_;
+		TextItem*  object = new TextItem();
+		MagFont font("sansserif");
+		font.colour(colour);
+		font.size(owner_->size_);
+		object->font(font);
+		object->x(column_);
+		object->y(row_);
+
+		// The temperature is displayed in Celsius.
+		double tempe = maground(value->second-273.25);
+
+		MagLog::debug() << "\tTemperature: " << tempe << " from "<<value->second<<"\n";
+
+		object->text(tostring(tempe));
+
+
+		symbol.add(object);
+
+}
+void  ObsWave::visit(std::set<string>& tokens)
+{
+	if (!owner_->waves_visible_) return;
+	tokens.insert("wind_wave_direction");
+	tokens.insert("wind_wave_period");
+	tokens.insert("wind_wave_height");
+
+	tokens.insert("swell_direction");
+	tokens.insert("swell_period");
+	tokens.insert("swell_height");
+
+	tokens.insert("wave_direction");
+	tokens.insert("wave_period");
+	tokens.insert("wave_height");
+
+
+}
+
+void  ObsWave::operator()(CustomisedPoint& point,  ComplexSymbol& symbol) const
+{
+	if (!owner_->waves_visible_) return;
+
+	CustomisedPoint::const_iterator period = point.find("wave_period");
+	CustomisedPoint::const_iterator height = point.find("wave_height");
+
+	Colour colour =  owner_->waves_colour_->automatic() ? *owner_->colour_ : *owner_->waves_colour_;
+
+	if ( period == point.end() ||  height == point.end() )  return;
+
+	MagLog::debug() << "\theight: " << height->second << " period "<< period->second <<"\n";
+	// height of waves in units of 0.5
+	double h = maground(height->second/0.5);
+	double p = maground(period->second);
+	ostringstream oss;
+
+	oss << setw(2) << setfill('0') <<  p  << setw(2) << setfill('0') << h;
+
+	TextItem*  object = new TextItem();
+	MagFont font("sansserif");
+	font.colour(colour);
+	font.size(owner_->size_);
+	object->font(font);
+	object->x(column_);
+	object->y(row_);
+
+	object->text(oss.str());
+
+	symbol.add(object);
+}
diff --git a/src/visualisers/ObsItemFamily.h b/src/visualisers/ObsItemFamily.h
index d4733d6..700a77b 100644
--- a/src/visualisers/ObsItemFamily.h
+++ b/src/visualisers/ObsItemFamily.h
@@ -24,24 +24,8 @@
 
 #include "ObsItem.h"
 #include "UserPoint.h"
-#include "ObsWindAttributes.h"
-#include "ObsStationRingAttributes.h"
-#include "ObsIdentifierAttributes.h"
-#include "ObsTimePlotAttributes.h"
-#include "ObsTemperatureAttributes.h"
-#include "ObsPressureAttributes.h"
-#include "ObsPressureLevelAttributes.h"
-#include "ObsPressureTendencyAttributes.h"
-#include "ObsDewPointAttributes.h"
-#include "ObsVisibilityAttributes.h"
-#include "ObsPresentWeatherAttributes.h"
-#include "ObsPastWeatherAttributes.h"
-#include "ObsCloudAttributes.h"
-#include "ObsHeightAttributes.h"
-#include "ObsThicknessAttributes.h"
-#include "ObsDemoItem2Attributes.h"
 #include "Symbol.h"
-
+#include "ObsPlotting.h"
 class ObsItemBox : public ObsItem
 {
 public:
@@ -52,23 +36,25 @@ public:
 	{   
 		row_ = atoi(find(def, "row").c_str());
 		column_ = atoi(find(def, "column").c_str());
-		colour_ = find(def, "colour");
+		colour_ = find(def, "colour", "black");
+		key_ = find(def, "key", "");
 	}
 protected:		
 	int row_;
 	int column_;
 	string colour_;
+	string key_;
 };
 
 class ObsStationRing : public ObsItemBox
 {
 public:
-	ObsStationRing() : attributes_(0)  {}
+	ObsStationRing()  {}
 	~ObsStationRing()  {}
 	void visit(std::set<string>& tokens)
 	{
-		if ( !attributes_ ) attributes_ = new ObsStationRingAttributes();
-		if (!attributes_->visible_) return;
+
+		if (!owner_->station_ring_visible_) return;
 		tokens.insert("latitude");
 		tokens.insert("longitude");
 		tokens.insert("cloud_amount");
@@ -76,40 +62,39 @@ public:
 
 	void operator()(CustomisedPoint&,  ComplexSymbol& symbol) const
 	{ 
-		if (!attributes_->visible_) return;
+		if (!owner_->station_ring_visible_) return;
 		SymbolItem*  station = new SymbolItem();
 		station->x(column_);
 		station->y(row_);		
-		station->colour(*attributes_->colour_);
+		station->colour(*owner_->station_ring_colour_);
 		station->symbol("circle");
-		station->height(size_);
+		station->height(owner_->ring_size_);
 		symbol.add(station);
 	} 
 
 protected:
-	void print(ostream& out) const { out << "ObsStationRing";  }
-	ObsStationRingAttributes* attributes_; // Here we are delegating instead of inheriting ...
+	void print(ostream& out) const { out << "ObsStationRing" ;  }
+
 };
 
 
 class ObsTimePlot : public ObsItemBox
 {
 public:
-	ObsTimePlot() : attributes_(0)  {}
+	ObsTimePlot() {}
 	~ObsTimePlot()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsTimePlot";  }
-	ObsTimePlotAttributes* attributes_; // Here we are delegating instead of inheriting ...
 };
 
 
 class ObsWind : public ObsItemBox
 {
 public:
-	ObsWind() : attributes_(0) { setOrigins(); }
+	ObsWind() { setOrigins(); }
 	~ObsWind()  {}
 	void visit(std::set<string>& tokens);
 
@@ -127,20 +112,20 @@ protected:
 	string direction_;
 	void setOrigins();
 	void print(ostream& out) const { out << "ObsWind";  }
-	ObsWindAttributes* attributes_; // Here we are delegating instead of inheriting ...
 	
+
 };
 
 class ObsCloudAndWind : public ObsItemBox
 {
 public:
-	ObsCloudAndWind() : attributes_(0) { setOrigins(); }
+	ObsCloudAndWind()  { setOrigins(); }
 	~ObsCloudAndWind()  {}
 	void visit(std::set<string>& tokens)
 	{
-		if (!attributes_ ) attributes_ = new ObsWindAttributes();
-		if ( !colour_.empty() )  attributes_->colour_ = auto_ptr<Colour>(new Colour(colour_));
-		if (!attributes_->visible_) return;
+
+
+		if (!owner_->wind_visible_) return;
 		tokens.insert("wind_speed");
 		tokens.insert("wind_direction");
 		tokens.insert("cloud_amount");
@@ -151,7 +136,7 @@ public:
 protected:
 	void setOrigins();
 	void print(ostream& out) const { out << "ObsWind";  }
-	ObsWindAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 	static map<int, string> origins_;
 };
 
@@ -160,167 +145,189 @@ protected:
 class ObsTemperature : public ObsItemBox
 {
 public:
-	ObsTemperature() : attributes_(0) {}
+	ObsTemperature()  {}
 	~ObsTemperature()  {}
 	void visit(std::set<string>& tokens)
 	{
-		if ( !attributes_ ) attributes_ = new ObsTemperatureAttributes();
-		if ( !colour_.empty() )  attributes_->colour_ = auto_ptr<Colour>(new Colour(colour_));
-		if (!attributes_->visible_) return;
+
+
+		if (!owner_->temperature_visible_) return;
 		tokens.insert("temperature");
 	}
 	void operator()(CustomisedPoint&,  ComplexSymbol& symbol) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsTemperature";  }
-	ObsTemperatureAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
+class ObsSeaTemperature : public ObsItemBox
+{
+public:
+	ObsSeaTemperature() {}
+	~ObsSeaTemperature()  {}
+	void visit(std::set<string>& tokens);
+	void operator()(CustomisedPoint&,  ComplexSymbol& symbol) const;
+
+protected:
+	void print(ostream& out) const { out << "ObsSeaTemperature";  }
+
+};
+class ObsWave : public ObsItemBox
+{
+public:
+	ObsWave() {}
+	~ObsWave()  {}
+	void visit(std::set<string>& tokens);
+	void operator()(CustomisedPoint&,  ComplexSymbol& symbol) const;
 
+protected:
+	void print(ostream& out) const { out << "ObsWave"; }
+};
 class ObsPressure : public ObsItemBox
 {
 public:
-	ObsPressure() : attributes_(0) {}
+	ObsPressure()  {}
 	~ObsPressure()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsPressure";  }
-	ObsPressureAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsPressureLevel : public ObsItemBox
 {
 public:
-	ObsPressureLevel() : attributes_(0) {}
+	ObsPressureLevel()  {}
 	~ObsPressureLevel()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsPressureLevel";  }
-	ObsPressureLevelAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsPressureTendency : public ObsItemBox
 {
 public:
-	ObsPressureTendency() : attributes_(0) {}
+	ObsPressureTendency() {}
 	~ObsPressureTendency()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsPressureTendency";  }
-	ObsPressureTendencyAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsThickness : public ObsItemBox
 {
 public:
-	ObsThickness() : attributes_(0) {}
+	ObsThickness()  {}
 	~ObsThickness()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsThickness";  }
-	ObsThicknessAttributes* attributes_; // Here we are delegating instead of inheriting ...
 	
+
 };
 
 class ObsDewPoint : public ObsItemBox
 {
 public:
-	ObsDewPoint() : attributes_(0) {}
+	ObsDewPoint()  {}
 	~ObsDewPoint()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsDewPoint";  }
-	ObsDewPointAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsHeight : public ObsItemBox
 {
 public:
-	ObsHeight() : attributes_(0) {}
+	ObsHeight(){}
 	~ObsHeight()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsHeight";  }
-	ObsHeightAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsVisibility : public ObsItemBox
 {
 public:
-	ObsVisibility() : attributes_(0) {}
+	ObsVisibility() {}
 	~ObsVisibility()  {}
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsVisibility";  }
-	ObsVisibilityAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsPresentWeather : public ObsItemBox
 {
 public:
-	ObsPresentWeather() : attributes_(0) {}
+	ObsPresentWeather() {}
 	~ObsPresentWeather()  {}
 	void visit(std::set<string>& tokens);	
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsPresentWeather";  }
-	ObsPresentWeatherAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsIdentifier : public ObsItemBox
 {
 public:
-	ObsIdentifier() : attributes_(0) {}
+	ObsIdentifier() {}
 	~ObsIdentifier()  {}
 	void visit(std::set<string>& tokens);	
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsIdentifier";  }
-	ObsIdentifierAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsPastWeather : public ObsItemBox
 {
 public:
-	ObsPastWeather() : attributes_(0) {}
+	ObsPastWeather()  {}
 	~ObsPastWeather()  {}
 	void visit(std::set<string>& tokens);	
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsPastWeather";  }
-	ObsPastWeatherAttributes* attributes_; // Here we are delegating instead of inheriting ...
+
 };
 
 
 class ObsCloud : public ObsItemBox
 {
 public:
-	ObsCloud() : attributes_(0) {}
+	ObsCloud(){}
 	~ObsCloud()  {}
 	void set(const map<string, string>& def);
 	void visit(std::set<string>& tokens);	
@@ -328,7 +335,6 @@ public:
 
 protected:
 	void print(ostream& out) const { out << "ObsCloud";  }
-	ObsCloudAttributes* attributes_; // Here we are delegating instead of inheriting ...
 	int lowRow_;
 	int lowColumn_;
 	int mediumRow_;
@@ -354,7 +360,7 @@ protected:
 class ObsDemoItem2 : public ObsItemBox
 {
 public:
-	ObsDemoItem2()   { attributes_ = new ObsDemoItem2Attributes(); }
+	ObsDemoItem2()   { }
 	~ObsDemoItem2()  {}
 
 	void visit(std::set<string>& tokens);
@@ -362,7 +368,7 @@ public:
 
 protected:
 	void print(ostream& out) const { out << "ObsDemoItem2";  }
-	ObsDemoItem2Attributes* attributes_; // Here we are delegating instead of inheriting ...
+
 
 };
 
@@ -371,14 +377,13 @@ class ObsEra : public ObsItemBox
 public:
 	ObsEra()   { }
 	~ObsEra()  {}
-	void set(const map<string, string>& def);
+
 	void visit(std::set<string>& tokens);
 	void operator()(CustomisedPoint&,  ComplexSymbol&) const;
 
 protected:
 	void print(ostream& out) const { out << "ObsEra";  }
-	string key_;
-	string colour_;
+
 
 };
 #endif
diff --git a/src/visualisers/ObsPlotting.cc b/src/visualisers/ObsPlotting.cc
index 30e3074..9328791 100644
--- a/src/visualisers/ObsPlotting.cc
+++ b/src/visualisers/ObsPlotting.cc
@@ -31,11 +31,12 @@
 #include "ObsTable.h"
 #include "Layout.h"
 #include "MetaData.h"
-
+#include "ProgressObject.h"
 using namespace magics;
 
 ObsPlotting::ObsPlotting() 
 {
+	ObsTable::print();
 }
 
 ObsPlotting::~ObsPlotting() 
@@ -58,6 +59,7 @@ void ObsPlotting::operator()(Data& data, BasicGraphicsObjectContainer& out)
 	{		
 		try {
 			const ObsTemplate& obs = ObsTable::getTemplate(type->second);
+			obs.set(this);
 			obs.visit(needs);
 		}
 		catch (std::exception&)
@@ -74,17 +76,19 @@ void ObsPlotting::operator()(Data& data, BasicGraphicsObjectContainer& out)
 	// false : we only need the points in the area
 	data.customisedPoints(transformation, needs, values, all);
 
-	
+	out.push_back(new ClearObject());
 
 
 	for (multimap<string, string>::const_iterator type = types.find("type"); type != types.end(); ++type)
 	{
 		try {
 			const ObsTemplate& obs = ObsTable::getTemplate(type->second);
-			obs.set(apart_);
+
+
 		
 			for (CustomisedPointsList::const_iterator val = values.begin(); val != values.end(); ++val) 	{
-				if ( type->second == (*val)->type() ) { 
+
+				if ( type->second == (*val)->type() ) {
 					obs(*(*val), out);
 				}
 			}
@@ -95,18 +99,6 @@ void ObsPlotting::operator()(Data& data, BasicGraphicsObjectContainer& out)
 	}
 }
 
-//void ObsPlotting::filter(const CustomisedPointsList& in, CustomisedPointsList& out)
-//{
-//	out.push_back(in.front());
-//	const Transformation& transformation = getLayout().getTransformation();
-//	
-//	MagLog::dev()<< " ObsPlotting::filter--->" << transformation << endl;
-//	
-//	
-//	for (CustomisedPointsList::const_iterator point = in.begin(); point != in.end(); ++point) {
-//		out.push_back(*point);
-//	}
-//}
 	
 
 /*!
@@ -143,4 +135,7 @@ static SimpleObjectMaker<ObsHeight, ObsItem> ObsHeight("obs_height");
 static SimpleObjectMaker<ObsThickness, ObsItem> ObsThicjness("obs_thickness");
 static SimpleObjectMaker<ObsDemoItem1, ObsItem> ObsDemo1("obs_demo_item_1");
 static SimpleObjectMaker<ObsDemoItem2, ObsItem> ObsDemo2("obs_demo_item_2");
+static SimpleObjectMaker<ObsWave, ObsItem> Wave("obs_wave_period_height");
 static SimpleObjectMaker<ObsEra, ObsItem> Era("obs_era");
+static SimpleObjectMaker<ObsSeaTemperature, ObsItem> SeaTempe("obs_sea_temperature");
+
diff --git a/src/visualisers/ObsPlottingAttributes.h b/src/visualisers/ObsPlottingAttributes.h
deleted file mode 100644
index 0efca04..0000000
--- a/src/visualisers/ObsPlottingAttributes.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ObsPlottingAttributes.h
-    \brief Definition of ObsPlotting Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:25 2013
-*/
-   
-
-#ifndef ObsPlottingAttributes_H
-#define ObsPlottingAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class ObsPlottingAttributes 
-{
-public:
-//  --  constructor
-    ObsPlottingAttributes();
-    
-//  --  destructor
-    virtual ~ObsPlottingAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const ObsPlottingAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	double apart_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const ObsPlottingAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/ObsStatGraph.h b/src/visualisers/ObsStatGraph.h
deleted file mode 100644
index 73c3f26..0000000
--- a/src/visualisers/ObsStatGraph.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file ObsStatGraph.h
-    \brief Definition of the Template class ObsStatGraph.
-    
-    Magics Team - ECMWF 2004
-    
-    Started: Wed 5-May-2004
-    
-    Changes:
-    
-*/
-
-#ifndef ObsStatGraph_H
-#define ObsStatGraph_H
-
-#include "magics.h"
-
-#ifdef LATER
-#include "ObsStatGraphAttributes.h"
-#endif
-
-#include "magics.h"
-#include "Polyline.h"
-#include "Graph.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-#ifdef LATER
-class ObsStatGraph: public ObsStatGraphAttribute, public Visualiser<PaperPoint> {
-#else 
-class ObsStatGraph: public Visualiser<PaperPoint>{
-#endif
-
-
-public:
-	ObsStatGraph();
-	virtual ~ObsStatGraph();
-    
-   
-    
-    void preparePlot(Data<PaperPoint>&, Task&);
-    void visit(LegendBase&);
-    
-    
-    // Implements the set method ... 
-    void set(const map<string, string>& map ) {  }
-    void set(const XmlNode& node) {  }
-    
-    
-protected:
-     //! Method to print string about this class on to a stream of type ostream (virtual).
-	 virtual void print(ostream&) const; 
- 
-    
-
-private:
-    //! Copy constructor - No copy allowed
-	ObsStatGraph(const ObsStatGraph&);
-    //! Overloaded << operator to copy - No copy allowed
-	ObsStatGraph& operator=(const ObsStatGraph&);
-
-// -- Friends
-    //! Overloaded << operator to call print().
-	friend ostream& operator<<(ostream& s,const ObsStatGraph& p)
-		{ p.print(s); return s; }
-
-};
-
-} // namespace magics
-#endif
diff --git a/src/visualisers/ObsTable.cc b/src/visualisers/ObsTable.cc
index 3949ab8..3b2d383 100644
--- a/src/visualisers/ObsTable.cc
+++ b/src/visualisers/ObsTable.cc
@@ -34,6 +34,7 @@
 #include "Transformation.h"
 #include "Symbol.h"
 
+#include "ProgressObject.h"
 
 using std::basic_string;
 
@@ -139,12 +140,13 @@ const ObsTemplate& ObsTable::get(const string& type)
 }   
 
 
-void ObsTemplate::operator()(CustomisedPoint& obs, BasicGraphicsObjectContainer& out) const 
+void ObsTemplate::operator()(CustomisedPoint& obs, BasicGraphicsObjectContainer& out) const
 {
 		if ( empty() ) 
 			return; // Nothing to display.
 			
 	
+
 		const Transformation& transformation = out.transformation();
 		
 		PaperPoint pp = transformation(UserPoint(obs.longitude(), obs.latitude()));
@@ -154,6 +156,7 @@ void ObsTemplate::operator()(CustomisedPoint& obs, BasicGraphicsObjectContainer&
 		
 		symbol->push_back(pp);
 		symbol->setDistanceApart(apart_);
+		symbol->setHeight(height_);
 		
 		out.push_back(symbol);
 
diff --git a/src/visualisers/ObsTable.h b/src/visualisers/ObsTable.h
index 6093cd1..785f8d0 100644
--- a/src/visualisers/ObsTable.h
+++ b/src/visualisers/ObsTable.h
@@ -24,11 +24,11 @@
 #include "PaperPoint.h"
 #include "BasicSceneObject.h"
 #include "ObsTableAttributes.h"
+#include "ObsPlotting.h"
 
 namespace magics {
 
 
-
 class ObsTemplate: public vector<ObsItem*>
 {
 public:
@@ -45,7 +45,13 @@ public:
 		for ( const_iterator item = begin(); item != end(); ++item) 
 			    (*item)->visit(tokens);
 	}
-	void set(double apart) const { apart_ = apart; }
+	void set(const ObsPlotting* obs) const {
+		apart_ = obs->apart_;
+		height_ = obs->size_;
+		for ( const_iterator item = begin(); item != end(); ++item)
+					    (*item)->set(obs);
+	}
+
 	void operator()(CustomisedPoint&, BasicGraphicsObjectContainer&) const;
 
 protected:
@@ -60,6 +66,7 @@ protected:
 	double           rows_;
 	mutable vector<PaperPoint> working_;
 	mutable double           apart_;
+	mutable double           height_;
 	mutable string          box_;
 	
 	friend ostream& operator<<(ostream& s,const ObsTemplate& p)
diff --git a/src/visualisers/PolyShadingMethod.cc b/src/visualisers/PolyShadingMethod.cc
index 7e52b5b..973a4e8 100644
--- a/src/visualisers/PolyShadingMethod.cc
+++ b/src/visualisers/PolyShadingMethod.cc
@@ -160,7 +160,6 @@ void  DotPolyShadingMethod::operator()(Polyline& poly) const {
 
 
     shading->size_ = size_;
-    shading->angle_ = angle_;
     shading->density_ =  dots_[index];
 
     poly.setFilled(true);
diff --git a/src/visualisers/PolyShadingTechniqueAttributes.cc b/src/visualisers/PolyShadingTechniqueAttributes.cc
deleted file mode 100644
index d2e6681..0000000
--- a/src/visualisers/PolyShadingTechniqueAttributes.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file PolyShadingTechniqueAttributes.cc
-    \brief Implementation of PolyShadingTechnique Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:21 2013
-*/    
-
-#include "PolyShadingTechniqueAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-PolyShadingTechniqueAttributes::PolyShadingTechniqueAttributes():
-	method_(MagTranslator<string, PolyShadingMethod>().magics("contour_shade_method"))
-{
-} 
-
-
-
-PolyShadingTechniqueAttributes::~PolyShadingTechniqueAttributes()
-{
-}
-
-    
-void PolyShadingTechniqueAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(5);
-	prefix[0] = "contour_shade";
-	prefix[1] = "contour_shade";
-	prefix[2] = "contour_shade";
-	prefix[3] = "contour";
-	prefix[4] = "contour";
-
-	setMember(prefix, "contour_shade_method", method_, params);
-}
-
-void PolyShadingTechniqueAttributes::copy(const PolyShadingTechniqueAttributes& other)
-{
-	method_ = auto_ptr<PolyShadingMethod>(other.method_->clone());
-} 
-
-
-bool PolyShadingTechniqueAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "polygon")  )
-		return true;
-
-	if ( acceptNode(node, method_) )
-		return true;
-	return false;
-}
-
-void PolyShadingTechniqueAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "polygon") )
-		set(node.attributes());
-	else {
-		setMember(node.name(), method_, node);
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-		setMember((*elt)->name(), method_, *(*elt)); 
-	}
-}
-
-void PolyShadingTechniqueAttributes::print(ostream& out)  const
-{
-	out << "PolyShadingTechniqueAttributes[";
-	out << "method = " << *method_;
-	out << "]" << "\n";
-}
-
-
-void PolyShadingTechniqueAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"polygon\"";
-	 out << ", \"contour_shade_method\":";
-	 method_->toxml(out);
-}
-static MagicsParameter<string> contour_shade_method("contour_shade_method", "dot", "");
-#include "HatchPolyShadingMethod.h"
-#include "DotPolyShadingMethod.h"
-#include "PolyShadingMethod.h"
-static SimpleObjectMaker<PolyShadingMethod, PolyShadingMethod> area_fill_PolyShadingMethod("area_fill");
-static SimpleObjectMaker<DotPolyShadingMethod, PolyShadingMethod> dot_DotPolyShadingMethod("dot");
-static SimpleObjectMaker<HatchPolyShadingMethod, PolyShadingMethod> hatch_HatchPolyShadingMethod("hatch");
diff --git a/src/visualisers/PolyShadingTechniqueAttributes.h b/src/visualisers/PolyShadingTechniqueAttributes.h
deleted file mode 100644
index b2251a6..0000000
--- a/src/visualisers/PolyShadingTechniqueAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file PolyShadingTechniqueAttributes.h
-    \brief Definition of PolyShadingTechnique Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef PolyShadingTechniqueAttributes_H
-#define PolyShadingTechniqueAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "PolyShadingMethod.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class PolyShadingTechniqueAttributes 
-{
-public:
-//  --  constructor
-    PolyShadingTechniqueAttributes();
-    
-//  --  destructor
-    virtual ~PolyShadingTechniqueAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const PolyShadingTechniqueAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	auto_ptr<PolyShadingMethod> method_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const PolyShadingTechniqueAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/SampleContourMethodAttributes.h b/src/visualisers/SampleContourMethodAttributes.h
deleted file mode 100644
index 4c09a39..0000000
--- a/src/visualisers/SampleContourMethodAttributes.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file SampleContourMethodAttributes.h
-    \brief Definition of SampleContourMethod Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:21 2013
-*/
-   
-
-#ifndef SampleContourMethodAttributes_H
-#define SampleContourMethodAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class SampleContourMethodAttributes 
-{
-public:
-//  --  constructor
-    SampleContourMethodAttributes();
-    
-//  --  destructor
-    virtual ~SampleContourMethodAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const SampleContourMethodAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	int x_;
-	int y_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const SampleContourMethodAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/SegmentJoiner.cc b/src/visualisers/SegmentJoiner.cc
index 2698e0f..db4c76f 100644
--- a/src/visualisers/SegmentJoiner.cc
+++ b/src/visualisers/SegmentJoiner.cc
@@ -322,7 +322,7 @@ static double compute(SegmentJoiner::SegList& v,list<deque<Segment> >& lines)
             }
         }
 
-        //cout << "Segments  input=" << count << ", canceled=" << n << " => left=" << (count-n) << endl;
+
     }
 #ifndef ONE_PASS
     {
@@ -436,7 +436,7 @@ static double compute(SegmentJoiner::SegList& v,list<deque<Segment> >& lines)
 
     // A bit of tidying up
 
-    for(list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k)
+    for(std::list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k)
     {
         deque<Segment>& p = (*k);
         if(p.size() >= 2) {
@@ -494,7 +494,7 @@ double SegmentJoiner::computePolygonLines(vector<vector<Point> >& result)
 
 
     size_t i = 0;
-    for(list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k, ++i)
+    for(std::list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k, ++i)
     {
 
         deque<Segment>& p = (*k);
@@ -561,7 +561,7 @@ double SegmentJoiner::punchHoles(vector<vector<Point> > &result) {
     }
 
     for(vector<vector<Point> >::iterator j = polys.begin() ; j != polys.end(); ++j) {
-        for(list<vector<Point> >::iterator h = holes.begin() ; h != holes.end(); ) {
+        for(std::list<vector<Point> >::iterator h = holes.begin() ; h != holes.end(); ) {
             list<vector<Point> >::iterator next = h; next++;
             if(pointInPoly((*h).front(), *j)) {
                 // If there are more holes, you need to choose different points
@@ -585,7 +585,7 @@ double SegmentJoiner::punchHoles(vector<vector<Point> > &result) {
 void SegmentJoiner::check(list<deque<Segment> >& lines)
 {
 
-    for(list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k) {
+    for(std::list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k) {
         deque<Segment>& p = (*k);
         ASSERT(p.size());
         deque<Segment>::iterator j = p.begin();
@@ -598,11 +598,11 @@ void SegmentJoiner::check(list<deque<Segment> >& lines)
     }
 
 
-    for(list<deque<Segment> >::iterator j = lines.begin();  j != lines.end(); ++j)
+    for(std::list<deque<Segment> >::iterator j = lines.begin();  j != lines.end(); ++j)
     {
         deque<Segment>& p = (*j);
 
-        for(list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k)
+        for(std::list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k)
         {
             deque<Segment>& q = (*k);
             if(k != j) {
@@ -615,7 +615,7 @@ void SegmentJoiner::check(list<deque<Segment> >& lines)
 
     int n =0;
 
-    for(list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k) {
+    for(std::list<deque<Segment> >::iterator k = lines.begin(); k != lines.end(); ++k) {
         deque<Segment>& p = (*k);
         n += p.size();
     }
diff --git a/src/visualisers/ShadingTechnique.h b/src/visualisers/ShadingTechnique.h
index a2afd85..152ee1f 100644
--- a/src/visualisers/ShadingTechnique.h
+++ b/src/visualisers/ShadingTechnique.h
@@ -67,9 +67,9 @@ public:
     virtual void operator()(Polyline*) const {};
     virtual bool prepare(const LevelSelection&, const ColourTechnique&)  { return false; }   
     virtual void visit(LegendVisitor&, const ColourTechnique&) {}   
-    virtual int index(double) {}
-    virtual int leftIndex(double) {}
-    virtual int rightIndex(double) {}
+    virtual int index(double) { assert(0); return -1; }
+    virtual int leftIndex(double) { assert(0); return -1; }
+    virtual int rightIndex(double) { assert(0); return -1; }
     virtual CellArray* array(MatrixHandler& matrix, IntervalMap<int>& range,
        		const Transformation& transformation, int width, int height,
        		float resolution, const string& technique) { assert(0); }
diff --git a/src/visualisers/SimplePolylineVisualiser.h b/src/visualisers/SimplePolylineVisualiser.h
index 91935d0..14c4fa7 100644
--- a/src/visualisers/SimplePolylineVisualiser.h
+++ b/src/visualisers/SimplePolylineVisualiser.h
@@ -71,6 +71,7 @@ public:
     const string& getDirection() const{ return direction_; }
      stringarray getColours() const { return colours_; }
 
+     ListPolicy getPolicy() const { return M_LASTONE; }
     // Implements the set method ... 
     void set(const map<string, string>& map ) { SimplePolylineAttributes::set(map); }
     void set(const XmlNode& node) { SimplePolylineAttributes::set(node); }
diff --git a/src/visualisers/Streamlines.cc b/src/visualisers/Streamlines.cc
new file mode 100644
index 0000000..c8d43ca
--- /dev/null
+++ b/src/visualisers/Streamlines.cc
@@ -0,0 +1,111 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file WindPlotting.cc
+    \brief Implementation of the Template class Wind.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Thu 17-Mar-2005
+    
+    Changes:
+    
+*/
+
+#include "Streamlines.h"
+#include "LegendVisitor.h"
+#include "CalcStreamlines.h"
+#include "Timer.h"
+#include "Polyline.h"
+
+using namespace magics;
+
+bool Streamlines::operator()(Data& data, BasicGraphicsObjectContainer& parent)
+{
+	Timer timer("Streamlines", "Streamlines");
+
+
+	const Transformation& transformation = parent.transformation();
+
+	MatrixHandler* handler = transformation.prepareData(data.direction());
+
+
+
+	float* direction = new float[handler->rows()*handler->columns()];
+	int i = 0;
+	for (int row = 0; row < handler->rows(); row++ )
+		for (int column = 0; column < handler->columns(); column++ ) {
+			direction[i] = (*handler)(row, column);
+			i++;
+		}
+
+
+	GSStruct *gs = new GSStruct();
+	gs->nx = handler->columns();
+	gs->ny = handler->rows();
+
+
+	gs->startx = handler->column(0,0);
+	gs->starty = handler->row(0,0);
+
+	// Distance between the gridpoints
+	gs->dx = handler->XResolution();
+	gs->dy = -handler->YResolution();
+	gs->period_x = 0;
+
+	OneLineClass ** result = 0;
+	int size;
+
+
+	CalcStreamlines(min_density_, direction, gs, result, size);
+
+	for(int l = 0; l < size; l++)
+    {
+
+        Polyline poly;
+        poly.setColour(*colour_);
+        poly.setThickness(thickness_);
+        poly.setLineStyle(style_);
+
+        ArrowProperties* arrow = new ArrowProperties();
+        poly.setArrow(arrow);
+        for(int i = 0; i < result[l]->Len; i++)
+        {
+        	//if (result[l]->X[i] > 180) result[l]->X[i] -= 360;
+        	poly.push_back(transformation(UserPoint(result[l]->X[i], result[l]->Y[i])));
+
+        	transformation(poly, parent);
+        }
+
+    }
+	delete handler;
+	return true;
+}
+
+void Streamlines::visit(LegendVisitor& legend)
+{
+
+}
+
+void Streamlines::print(ostream& out) const
+{
+	out << "Streamlines[";
+	StreamlinesAttributes::print(out);
+	out << "]";
+}
+
diff --git a/src/visualisers/Streamlines.h b/src/visualisers/Streamlines.h
new file mode 100644
index 0000000..bbd4686
--- /dev/null
+++ b/src/visualisers/Streamlines.h
@@ -0,0 +1,83 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file Streamlines.h
+    \brief Definition of the Template class Streamlines.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Thu 17-Mar-2005
+    
+    Changes:
+    
+*/
+
+#ifndef Streamlines_H
+#define Streamlines_H
+
+#include "magics.h"
+
+#include "WindPlotting.h"
+#include "StreamlinesAttributes.h"
+
+
+namespace magics {
+
+class Streamlines: public WindPlotting, public StreamlinesAttributes
+{
+
+public:
+	Streamlines() {}
+	virtual ~Streamlines() {}
+	virtual void set(const map<string, string>& map) 
+		{ WindPlottingAttributes::set(map); StreamlinesAttributes::set(map); }
+	virtual void set(const XmlNode& node) 
+		{ WindPlottingAttributes::set(node); StreamlinesAttributes::set(node); }
+	bool accept(const string& node) { return StreamlinesAttributes::accept(node);; }
+	void copy(const Streamlines& other) { WindPlottingAttributes::copy(other); StreamlinesAttributes::copy(other); }
+	virtual WindPlotting* clone() {
+		Streamlines* object = new Streamlines();
+		object->copy(*this);
+		return object;
+	}
+	
+	bool operator()(Data& data, BasicGraphicsObjectContainer& parent);
+
+	void visit(LegendVisitor& legend);
+	
+
+protected:     	 
+     	 //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream& out) const;
+
+private:
+    //! Copy constructor - No copy allowed
+	Streamlines(const Streamlines&);
+    //! Overloaded << operator to copy - No copy allowed
+	Streamlines& operator=(const Streamlines&);
+    
+	// -- Friends
+	    //! Overloaded << operator to call print().
+		friend ostream& operator<<(ostream& s,const Streamlines& p)
+			{ p.print(s); return s; }
+};
+
+} // namespace magics
+
+
+#endif
diff --git a/src/visualisers/SymbolAdvancedTableMode.h b/src/visualisers/SymbolAdvancedTableMode.h
index 9e9a02d..49cf134 100644
--- a/src/visualisers/SymbolAdvancedTableMode.h
+++ b/src/visualisers/SymbolAdvancedTableMode.h
@@ -105,6 +105,7 @@ public:
         const Colour& getMaxColour() const { return *maxColour_; }
         const string& getDirection() const { return direction_; }
         stringarray getColours()  const { return colours_; }
+        ListPolicy getPolicy() const { return colour_policy_; }
         floatarray getList()  const { return list_; }
         double getMinHeight() const { return height_min_; }
         double getMaxHeight() const { return height_max_; }
diff --git a/src/visualisers/SymbolIndividualModeAttributes.h b/src/visualisers/SymbolIndividualModeAttributes.h
deleted file mode 100644
index 6b5e95f..0000000
--- a/src/visualisers/SymbolIndividualModeAttributes.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file SymbolIndividualModeAttributes.h
-    \brief Definition of SymbolIndividualMode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef SymbolIndividualModeAttributes_H
-#define SymbolIndividualModeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-#include "Colour.h"
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class SymbolIndividualModeAttributes 
-{
-public:
-//  --  constructor
-    SymbolIndividualModeAttributes();
-    
-//  --  destructor
-    virtual ~SymbolIndividualModeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const SymbolIndividualModeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	string legend_text_;
-	string marker_mode_;
-	int marker_;
-	string symbol_;
-	auto_ptr<Colour> colour_;
-	double height_;
-	string image_path_;
-	string image_format_;
-	double image_width_;
-	double image_height_;
-	stringarray text_;
-	string text_position_;
-	string text_font_name_;
-	double text_font_size_;
-	string text_font_style_;
-	auto_ptr<Colour> text_font_colour_;
-	bool text_blanking_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const SymbolIndividualModeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/SymbolMode.cc b/src/visualisers/SymbolMode.cc
index 7010b3d..26c3d43 100644
--- a/src/visualisers/SymbolMode.cc
+++ b/src/visualisers/SymbolMode.cc
@@ -297,6 +297,10 @@ void SymbolIndividualMode::visit(LegendVisitor& legend)
 {
    
 	  Symbol* symbol = properties_.symbol("marker");
+	  // overwrite with the legend_height if set..
+
+	  if ( legend_height_ != -1)
+		  symbol->setHeight(legend_height_);
       
 	  legend.add(new SimpleSymbolEntry(legend_text_, symbol));
  	
@@ -306,6 +310,8 @@ void SymbolIndividualMode::visit(Data& data, LegendVisitor& legend)
 {
 
     Symbol* symbol = properties_.symbol("marker");
+    if ( legend_height_ != -1)
+    		  symbol->setHeight(legend_height_);
     SimpleSymbolEntry *entry = new SimpleSymbolEntry(legend_text_, symbol);
     entry->userText(legend_text_);
     legend.add(entry);
diff --git a/src/visualisers/SymbolTableModeAttributes.h b/src/visualisers/SymbolTableModeAttributes.h
deleted file mode 100644
index 15e554c..0000000
--- a/src/visualisers/SymbolTableModeAttributes.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file SymbolTableModeAttributes.h
-    \brief Definition of SymbolTableMode Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-
-    Generated: Mon Apr 15 17:55:22 2013
-*/
-   
-
-#ifndef SymbolTableModeAttributes_H
-#define SymbolTableModeAttributes_H
-
-#include "magics.h"
-#include "ParameterManager.h"
-#include "Factory.h"
-
-
-
-namespace magics {
-
-class XmlNode;
-
-
-
-class SymbolTableModeAttributes 
-{
-public:
-//  --  constructor
-    SymbolTableModeAttributes();
-    
-//  --  destructor
-    virtual ~SymbolTableModeAttributes();
-    
-    virtual void set(const std::map<string, string>&);
-    virtual void set(const XmlNode&);
-    virtual void copy(const SymbolTableModeAttributes&);
-    virtual bool accept(const string&);
-
-    void setTag(const string& tag) { tag_ = tag; }
-
-	
-
-public:
-	//  --  method
-	virtual void print(ostream&) const;
-	virtual void toxml(ostream& out) const;
-	//  --  members:
-	string tag_;
-	floatarray min_;
-	floatarray max_;
-	intarray marker_;
-	stringarray symbol_;
-	stringarray colour_;
-	floatarray height_;
-
-private:
-  
-	friend ostream& operator<<(ostream& s,const SymbolTableModeAttributes& p)
-	{ p.print(s); return s; }
-};
-
-} // namespace magics
-
-#endif
diff --git a/src/visualisers/TephiGrid.cc b/src/visualisers/TephiGrid.cc
new file mode 100644
index 0000000..d389cd3
--- /dev/null
+++ b/src/visualisers/TephiGrid.cc
@@ -0,0 +1,404 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expres  s or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file TephiGrid.cc
+    \brief Implementation of the Template class TephiGrid.
+    
+    Magics Team - ECMWF 2006
+    
+    Started: Tue 3-Oct-2006
+    
+    Changes:
+    
+*/
+
+
+
+#include "TephiGrid.h"
+#include "Layout.h"
+#include "Polyline.h"
+#include "Text.h"
+#include "PaperPoint.h"
+#include "PaperPoint.h"
+#include"Transformation.h"
+#include "Layer.h"
+#include "SciMethods.h"
+using namespace magics;
+
+TephiGrid::TephiGrid()
+{
+}
+
+
+TephiGrid::~TephiGrid()
+{
+}
+
+void tempe(double x)
+{
+
+}
+
+
+void step(set<double>& values, set<double>& labels, double from, double to, double ref, double step, int freq)
+{
+
+	if ( ref > to ) return;
+	int l = 0;
+	for ( double v = ref; v < to; v += step) {
+		values.insert(v);
+
+		if ( l % freq == 0 ) {
+
+
+			labels.insert(v);
+		}
+		l++;
+	}
+	if ( ref < from ) return;
+	l = 0;
+	for ( double v = ref; v > from; v -= step) {
+			values.insert(v);
+
+			if ( l % freq == 0 ) {
+
+				labels.insert(v);
+			}
+			l++;
+	}
+}
+
+void TephiGrid::visit(DrawingVisitor& out)
+{
+
+
+	const Transformation& tephi = out.transformation();
+	vector<double> tempe;
+	double maxpcx = (tephi.getMaxPCX() + (tephi.getMinPCX()*.25))/1.25;
+
+	PaperPoint lr(maxpcx, tephi.getMinPCY());
+	UserPoint xy;
+	tephi.revert(lr, xy);
+
+	double tmin;
+	double tmax;
+	double pmin;
+	double pmax;
+
+	tephi.boundingBox(tmin, pmin, tmax, pmax);
+
+
+	double tfactor = 10;
+	tmax = int(tmax/tfactor)*tfactor + tfactor;
+	tmin = int(tmin/tfactor)*tfactor - tfactor;
+
+	double pfactor = 100;
+	pmax = int(pmax/pfactor)*pfactor + pfactor;
+	pmin = int(pmin/pfactor)*pfactor;
+
+
+	double thmin = magics::theta(tmin+273.15, pmin*100.)-237.15;
+	thmin = -100;
+	double thmax = magics::theta(tmax+273.15, pmax*100.) -237.15;
+	thmax = +200;
+
+
+
+
+
+	// Isotherm;
+	if ( isotherm_ ) {
+		std::set<double> isotherms;
+		std::set<double> labels;
+
+		MagFont font(isotherm_label_font_, isotherm_label_style_, isotherm_label_size_);
+		font.colour(*isotherm_label_colour_);
+
+		double theta = magics::theta(xy.x()+273.15, (xy.y())*100.);
+
+		step(isotherms, labels, tmin, tmax, isotherm_reference_, isotherm_interval_, isotherm_label_frequency_);
+
+		for (std::set<double>::iterator t = isotherms.begin();  t != isotherms.end(); ++t ) {
+			Polyline poly;
+			Colour colour = (*t != isotherm_reference_) ? *isotherm_colour_ : *isotherm_reference_colour_;
+			poly.setColour(colour);
+			poly.setThickness(isotherm_thickness_);
+			poly.setLineStyle(isotherm_style_);
+
+			poly.push_back(tephi(UserPoint(*t, pressureFromTheta(thmin+273.15, *t+273.15)/100.)));
+			poly.push_back(tephi(UserPoint(*t, pressureFromTheta(thmax+273.15, *t+273.15)/100.)));
+
+			tephi(poly, out.layout());
+
+			std::set<double>::iterator label = labels.find(*t);
+			if ( label == labels.end() )
+				continue;
+			UserPoint point(*t, pressureFromTheta(theta, *t+273.15)/100.);
+			if ( tephi.in(point) ) {
+				Text* text = new Text();
+
+				text->addText("T=" + tostring(*t), font);
+				text->setAngle(-3.14/4);
+				text->setBlanking(true);
+				text->push_back(tephi(point));
+				out.push_back(text);
+			}
+
+		}
+	}
+
+	if ( dry_adiabatic_ ) {
+		PaperPoint ll(tephi.getMinPCX(), tephi.getMinPCY());
+		UserPoint tp_ll;
+		tephi.revert(ll, tp_ll);
+		std::set<double> dry;
+		std::set<double> labels;
+
+		MagFont font(dry_adiabatic_label_font_, dry_adiabatic_label_style_, dry_adiabatic_label_size_);
+		font.colour(*dry_adiabatic_label_colour_);
+
+		step(dry, labels, thmin, thmax, dry_adiabatic_reference_, dry_adiabatic_interval_, dry_adiabatic_label_frequency_);
+
+		for (std::set<double>::iterator t = dry.begin();  t != dry.end(); ++t ) {
+
+			Polyline poly;
+			poly.setLineStyle(dry_adiabatic_style_);
+			poly.setColour(*dry_adiabatic_colour_);
+			poly.setThickness(dry_adiabatic_thickness_);
+			poly.push_back(tephi(UserPoint(tmin, magics::pressureFromTheta(*t+273.15, tmin+273.15)/100)));
+			poly.push_back(tephi(UserPoint(tmax, magics::pressureFromTheta(*t+273.15, tmax+273.15)/100)));
+
+			tephi(poly, out.layout());
+			std::set<double>::iterator label = labels.find(*t);
+			if ( label == labels.end() )
+				continue;
+			UserPoint point(tp_ll.x(), pressureFromTheta(*t+273.15, tp_ll.x()+273.15)/100.);
+			if ( tephi.in(point) ) {
+				Text* text = new Text();
+				text->setAngle(3.14/4);
+				text->addText("th=" + tostring(*t), font);
+				text->setBlanking(true);
+				text->push_back(tephi(point));
+				out.push_back(text);
+			}
+		}
+	}
+	if ( isobar_ ) {
+
+		std::set<double> isobars;
+		std::set<double> labels;
+
+		step(isobars, labels, pmin, pmax, isobar_reference_, isobar_interval_, isobar_label_frequency_);
+
+		for (std::set<double>::iterator p = isobars.begin();  p != isobars.end(); ++p ) {
+			Polyline poly;
+			poly.setColour(*isobar_colour_);
+			poly.setLineStyle(isobar_style_);
+			poly.setThickness(isobar_thickness_);
+			for (double t  = tmin; t < tmax; t += 1) {
+				PaperPoint xy = tephi(UserPoint(t, *p));
+				poly.push_back(xy);
+				std::set<double>::iterator label = labels.find(*p);
+				if ( label == labels.end() )
+					continue;
+				if (xy.x() >= maxpcx ) {
+					map<double, PaperPoint>::iterator label = pressureLabels_.find(*p);
+					if ( label == pressureLabels_.end() ) {
+						xy.x(tephi.getMinPCX()*0.75);
+						pressureLabels_.insert(make_pair(*p, xy));
+					}
+				}
+			}
+			tephi(poly, out.layout());
+			Polyline* axe = new Polyline();
+			axe->setColour(Colour("black"));
+			axe->setLineStyle(M_DASH);
+			axe->setThickness(1);
+
+			axe->push_back(PaperPoint(maxpcx, tephi.getMinPCY()));
+
+			axe->push_back(PaperPoint(maxpcx, tephi.getMaxPCY()));
+			out.push_back(axe);
+		}
+
+	}
+	if ( mixing_ratio_) {
+		vector<float> ratios;
+		ratios.push_back(0.1);
+		ratios.push_back(0.2);
+		ratios.push_back(0.5);
+		ratios.push_back(0.7);
+		ratios.push_back(1.);
+		ratios.push_back(1.5);
+		ratios.push_back(2.);
+		ratios.push_back(3.);
+		ratios.push_back(5.);
+		ratios.push_back(7.);
+		ratios.push_back(10.);
+		ratios.push_back(15.);
+		ratios.push_back(20.);
+		ratios.push_back(30.);
+		// Humidity Mixing ratio Lines
+		int grid = 0;
+		int label = 0;
+		for (vector<float>::iterator r = ratios.begin(); r != ratios.end(); ++r) {
+			if ( grid % mixing_ratio_frequency_ )
+				continue;
+			grid++;
+			Polyline poly;
+			poly.setColour(*mixing_ratio_colour_);
+			poly.setLineStyle(mixing_ratio_style_);
+			poly.setThickness(mixing_ratio_thickness_);
+			for ( double p = pmin; p < pmax; p += 10) {
+				double t = temperatureFromMixingRatio(*r, p*100);
+				PaperPoint xy = tephi(UserPoint(t-273.15, p));
+				poly.push_back(xy);
+				tephi(poly, out.layout());
+				if ( label % mixing_ratio_label_frequency_ )
+						continue;
+				label++;
+				if (xy.y() < tephi.getMinPCY() ) {
+					xy.y(tephi.getMaxPCY()*.5);
+					if ( tephi.in(xy) ) {
+						map<double, PaperPoint>::iterator label = mixingLabels_.find(*r);
+						if ( label == mixingLabels_.end() ) {
+							mixingLabels_.insert(make_pair(*r, xy));
+						}
+					}
+				}
+			}
+
+
+
+		}
+	}
+
+	if ( saturated_adiabatic_ ){
+		MagFont font(saturated_adiabatic_label_font_, saturated_adiabatic_label_style_, saturated_adiabatic_label_size_);
+		font.colour(*saturated_adiabatic_label_colour_);
+	 // saturated adiabatic
+		std::set<double> sat;
+
+		std::set<double> labels;
+
+		step(sat, labels, thmin, thmax, saturated_adiabatic_reference_, saturated_adiabatic_interval_,
+						saturated_adiabatic_label_frequency_);
+
+
+		for (std::set<double>::iterator  thetaw = sat.begin(); thetaw != sat.end(); ++thetaw ) {
+			Polyline poly;
+			poly.setColour(*saturated_adiabatic_colour_);
+			poly.setLineStyle(saturated_adiabatic_style_);
+			poly.setThickness(saturated_adiabatic_thickness_);
+			double s = thetaEq(*thetaw+273.15, *thetaw+273.15, 1000*100);
+
+			double pl = -1;
+			for ( double p = pmin; p < pmax; p += 1) {
+				double t = temperatureFromThetaEq(s, p*100)-273.15;
+				if (t >= -40 )
+					poly.push_back(tephi(UserPoint(t, p)));
+			 	else
+			 		pl = p;
+			}
+			tephi(poly, out.layout());
+			std::set<double>::iterator label = labels.find(*thetaw);
+			if ( label == labels.end() )
+				continue;
+			UserPoint point(-40.5, pl-1);
+			if ( tephi.in(point) ) {
+				Text* text = new Text();
+				text->addText(tostring(*thetaw), font);
+		 	 	text->setAngle(-3.14/4);
+		 	 	text->push_back(tephi(point));
+		 	 	out.push_back(text);
+			}
+
+		}
+	}
+
+}
+
+
+/*!
+ Class information are given to the output-stream.
+*/
+void TephiGrid::print(ostream& out)  const
+{
+	out << "TephiGrid[";
+	TephiGridAttributes::print(out);
+	out << "]";
+}
+void TephiGrid::visit(LeftAxisVisitor& out)
+{
+
+
+}
+void TephiGrid::visit(RightAxisVisitor& out)
+{
+	MagFont font(isobar_label_font_, isobar_label_style_, isobar_label_size_);
+
+	font.colour(*isobar_label_colour_);
+
+	for (map<double, PaperPoint>::iterator label = pressureLabels_.begin(); label != pressureLabels_.end(); ++label) {
+
+		Text *text= new Text();
+		text->setText(tostring(label->first));
+		text->setFont(font);
+		text->setBlanking(true);
+		text->setJustification(MLEFT);
+		text->push_back(label->second);
+		out.push_back(text);
+	}
+
+}
+void TephiGrid::visit(BottomAxisVisitor& out)
+{
+	MagFont font(mixing_ratio_label_font_, mixing_ratio_label_style_, mixing_ratio_label_size_);
+	font.colour(*mixing_ratio_label_colour_);
+
+	for (map<double, PaperPoint>::iterator label = mixingLabels_.begin(); label != mixingLabels_.end(); ++label) {
+
+
+		Text *text= new Text();
+		text->setText(tostring(label->first));
+		text->setFont(font);
+		text->setBlanking(true);
+
+		text->push_back(label->second);
+		out.push_back(text);
+	}
+
+}
+void TephiGrid::visit(TopAxisVisitor& out)
+{
+
+}
+void TephiGrid::visit(SceneLayer& layer, vector<LayoutVisitor*>& visitors)
+{
+	// First we create the layer!
+	// and push It to the parent layer! 
+	StaticLayer* tephi = new NoDataLayer(this);
+	//taylor->id(iconName_);	
+	//taylor>name(iconName_);
+	layer.add(tephi);
+	
+	for  (vector<LayoutVisitor*>::iterator visitor = visitors.begin(); visitor != visitors.end(); ++visitor) {
+	    tephi->set(*visitor);
+		(*visitor)->visit(*this);
+	}
+}
diff --git a/src/visualisers/TephiGrid.h b/src/visualisers/TephiGrid.h
new file mode 100644
index 0000000..ff832a9
--- /dev/null
+++ b/src/visualisers/TephiGrid.h
@@ -0,0 +1,82 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file TephiGrid.h
+    \brief Definition of the Template class TephiGrid.
+    
+    Magics Team - ECMWF 2006
+    
+    Started: Tue 3-Oct-2006
+    
+    Changes:
+    
+*/
+
+#ifndef TephiGrid_H
+#define TephiGrid_H
+
+#include "magics.h"
+
+#include "BasicSceneObject.h"
+#include "TephiGridAttributes.h"
+
+namespace magics {
+
+class TephiGrid:   public BasicSceneObject, public TephiGridAttributes {
+
+public:
+	TephiGrid();
+	virtual ~TephiGrid();
+	
+	// New Interface!
+   void visit(DrawingVisitor&);
+   void visit(LeftAxisVisitor&);
+   void visit(RightAxisVisitor&);
+   void visit(BottomAxisVisitor&);
+   void visit(TopAxisVisitor&);
+
+   void visit(SceneLayer& layer, vector<LayoutVisitor*>& visitors);
+
+   
+	void set(const map<string, string>& map ) { TephiGridAttributes::set(map); }
+	void set(const XmlNode& node ) { TephiGridAttributes::set(node); }
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+	 map<double, PaperPoint> pressureLabels_;
+	 map<double, PaperPoint> mixingLabels_;
+	 map<double, PaperPoint> isothermLabels_;
+	 map<double, PaperPoint> isothetaLabels_;
+	 map<double, PaperPoint> satLabels_;
+
+private:
+    //! Copy constructor - No copy allowed
+	TephiGrid(const TephiGrid&);
+    //! Overloaded << operator to copy - No copy allowed
+	TephiGrid& operator=(const TephiGrid&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const TephiGrid& p)
+		{ p.print(s); return s; }
+
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/Title.h b/src/visualisers/Title.h
deleted file mode 100644
index 05c8b31..0000000
--- a/src/visualisers/Title.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file Title.h
-    \brief Definition of the Template class Title.
-    
-    Magics Team - ECMWF 2004
-    
-    Started: Thu 12-Feb-2004
-    
-    Changes:
-    
-*/
-
-#ifndef Title_H
-#define Title_H
-
-#include "magics.h"
-#include "TitleAttributes.h"
-#include "TitleBase.h"
-
-
-
-namespace magics {
-
-class Node;
-
-
-
-class Title: public TitleBase, public TitleAttributes {
-
-public:
-	Title();
-	virtual ~Title();
-
-	virtual TitleBase* clone() const {
-		Title* object = new Title();
-		object->copy(*this);
-		return object;
-	}
-	
-    virtual void set(const XmlNode& node) {
-        TitleAttributes::set(node);
-    }
-    virtual void set(const map<string, string>& map) {
-        TitleAttributes::set(map);
-    }
-	virtual void add(const string& info) {
-		if (empty()) { push_back(new TitleEntry()); }
-		back()->add(info);
-	}
-	virtual void newline() {
-		push_back(new TitleEntry());
-	}
-	virtual bool on() { return true; }
-	void push_back(TitleEntry* entry) 
-	   { vector<TitleEntry*>::push_back(entry); }
-	MagFont font() const;
-	virtual Justification justification() const { return justification_; }
-	virtual string colour() const { return colour_->name(); }
-	
-protected:
-	//! Method to print string about this class on to a stream of type ostream (virtual).
-	virtual void print(ostream&) const; 
-
-private:
-	//! Copy constructor - No copy allowed
-	Title(const Title&);
-	//! Overloaded << operator to copy - No copy allowed
-	Title& operator=(const Title&);
-
-// -- Friends
-	//! Overloaded << operator to call print().
-	friend ostream& operator<<(ostream& s,const Title& p)
-		{ p.print(s); return s; }
-
-};
-
-
-class NoTitle: public TitleBase {
-
-public:
-	NoTitle() {}
-	virtual ~NoTitle() {}
-	virtual TitleBase* clone() const {
-		TitleBase* object = new NoTitle();
-		return object;
-	}
-	virtual void add(const string& ){
-	}
-	virtual void newline() {
-	}
-	virtual bool on() { return false; }
-
-protected:
-	//! Method to print string about this class on to a stream of type ostream (virtual).
-	virtual void print(ostream& out) const { out << "No Automatic Title"; } 
-
-private:
-	//! Copy constructor - No copy allowed
-	NoTitle(const NoTitle&);
-	//! Overloaded << operator to copy - No copy allowed
-	NoTitle& operator=(const NoTitle&);
-};
-
-
-} // namespace magics
-#endif
diff --git a/src/visualisers/TitleBase.h b/src/visualisers/TitleBase.h
deleted file mode 100644
index b44667f..0000000
--- a/src/visualisers/TitleBase.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/*! \file TitleBase.h
-    \brief Definition of the Template class TitleBase.
-    
-    Magics Team - ECMWF 2006
-    
-    Started: Thu 9-Feb-2006
-    
-    Changes:
-    
-*/
-
-#ifndef TitleBase_H
-#define TitleBase_H
-
-#include "magics.h"
-#include "MagTranslator.h"
-#include "Factory.h"
-#include "MagFont.h"
-
-
-namespace magics {
-
-class XmlNode;
-class TitleEntry {
-public:
-    TitleEntry(const string entry = "") : entry_(entry) {}
-    ~TitleEntry() {}
-    string entry();
-    string entry_;
-    void add(const string& info ) {
-        entry_ += info;
-    }
-};
-
-
-
-class TitleBase :public vector<TitleEntry*>  {
-
-public:
-	TitleBase() {}
-	virtual ~TitleBase() {}
-    
-    virtual void set(const XmlNode&) {
-        MagLog::dev() << "TitleBase::set(const XmlNode&)---> to be checked!...\n";
-    }
-    virtual void set(const map<string, string>&) {
-        MagLog::dev() << "TitleBase::set(const map<string, string&)---> to be checked!...\n";
-    }
-    virtual TitleBase* clone() const {
-        MagLog::dev() << "TitleBase::set(const map<string, string&)---> to be checked!...\n";
-        return new TitleBase();
-    }
-    virtual void toxml(ostream&, int = 0) const {
-    	 MagLog::dev() << "TitleBase::virtual void toxml(ostream&, int = 0) const ---> to be checked!...\n";
-    }  
-    virtual void add(const string& info){
-    	if (empty()) { push_back(new TitleEntry()); }
-		back()->add(info);
-	}
-	virtual void newline() {
-		MagLog::dev() << "TitleBase::newline()---> to be checked!...\n";
-	}
-	virtual bool on() { 
-		MagLog::dev() << "TitleBase:: on()---> to be checked!...\n";
-		return false; 
-	}
-    virtual MagFont font() const  { return MagFont(); }
-    virtual Justification justification() const { return MLEFT; }
-	virtual string colour() const { return "NONE"; }
-	virtual void titles(vector<string>&) {}
-	
-	void update(const string&, const string&, const string&);
- 	string get(const string&, const string&);
- 	void reset() { definitions_.erase(definitions_.begin(), definitions_.end());}
- 	
-protected:
-     //! Method to print string about this class on to a stream of type ostream (virtual).
-	 virtual void print(ostream& out) const { out << "TitleBase\n"; } 
-	 typedef map<string, std::set<string> > DefList;
-     static map<string, DefList > definitions_;
-
-private:
-    //! Copy constructor - No copy allowed
-	TitleBase(const TitleBase&);
-    //! Overloaded << operator to copy - No copy allowed
-	TitleBase& operator=(const TitleBase&);
-
-// -- Friends
-    //! Overloaded << operator to call print().
-	friend ostream& operator<<(ostream& s,const TitleBase& p)
-		{ p.print(s); return s; }
-
-};
-
-template <>
-class MagTranslator<string, TitleBase> { 
-public:
-	TitleBase* operator()(const string& val )
-	{
-		return SimpleObjectMaker<TitleBase>::create(val);
-	}     
-
-	TitleBase* magics(const string& param)
-	{
-		TitleBase* object=0;
-		ParameterManager::update(param, object);
-		return object;
-	}
-};
-
-} // namespace magics
-#endif
diff --git a/src/visualisers/UserDate.cc b/src/visualisers/UserDate.cc
new file mode 100644
index 0000000..e365298
--- /dev/null
+++ b/src/visualisers/UserDate.cc
@@ -0,0 +1,62 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file UserDate.cc
+    \brief Implementation of the Template class UserDate.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Mon 10-Oct-2005
+    
+    Changes:
+    
+*/
+
+
+
+#include "UserDate.h"
+#include "DateTime.h"
+
+using namespace magics;
+
+UserDate::UserDate() 
+{
+}
+
+UserDate::UserDate(const string& date) 
+{
+	MagLog::dev() << "New UserDate--->" << date << "\n";
+	
+	DateTime test(date);
+	
+	MagLog::dev() << "testing" << test << "\n";
+}
+
+UserDate::~UserDate()  
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void UserDate::print(ostream& out)  const
+{
+	out << "UserDate[";
+	out << "]";
+}
+
diff --git a/src/visualisers/UserDate.h b/src/visualisers/UserDate.h
new file mode 100644
index 0000000..22874db
--- /dev/null
+++ b/src/visualisers/UserDate.h
@@ -0,0 +1,93 @@
+/******************************** LICENSE ********************************
+
+ Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at 
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ ******************************** LICENSE ********************************/
+
+/*! \file UserDate.h
+    \brief Definition of the Template class UserDate.
+    
+    Magics Team - ECMWF 2005
+    
+    Started: Mon 10-Oct-2005
+    
+    Changes:
+    
+*/
+
+#ifndef UserDate_H
+#define UserDate_H
+
+#include "magics.h"
+#include "MagTranslator.h"
+#include "Factory.h"
+
+
+
+namespace magics {
+
+class UserDate {
+
+public:
+	UserDate();
+	UserDate(const string&);
+	virtual ~UserDate();
+    
+    virtual void set(const XmlNode&) {
+        MagLog::dev() << "(const XmlNode&)---> to be checked!...\n";
+    }
+    virtual void set(const map<string, string>&) {
+        MagLog::dev() << "(const map<string, string&)---> to be checked!...\n";
+    }
+    virtual UserDate* clone() const {
+        MagLog::dev() << "(const map<string, string&)---> to be checked!...\n";
+        return new UserDate();
+    }
+    
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	UserDate(const UserDate&);
+    //! Overloaded << operator to copy - No copy allowed
+	UserDate& operator=(const UserDate&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const UserDate& p)
+		{ p.print(s); return s; }
+
+};
+
+template <>
+class MagTranslator<string, UserDate> { 
+public:
+	UserDate* operator()(const string& val )
+	{
+		 return new UserDate(val);		
+	}     
+
+	UserDate* magics(const string& param)
+	{
+		UserDate* object;
+		ParameterManager::update(param, object);
+		return object;
+	}
+};
+
+} // namespace magics
+#endif
diff --git a/src/visualisers/VisDefInfo.cc b/src/visualisers/VisDefInfo.cc
index 2003845..17a4fe7 100644
--- a/src/visualisers/VisDefInfo.cc
+++ b/src/visualisers/VisDefInfo.cc
@@ -102,7 +102,7 @@ void ObstatVisDefInfo::loadItems()
 		return;
 
 	//Obs        fgdep       bcor       Obstdv       fgdStdv    BcorSTDV      Count     Unit
-	char *statIdDef[]={"2","4","18","3","5","19","1"};
+	const char *statIdDef[]={"2","4","18","3","5","19","1"};
 	vector<string> statId(statIdDef,statIdDef + sizeof(statIdDef)/sizeof(char*));
 
 	ifstream in;
diff --git a/src/visualisers/Wind.cc b/src/visualisers/Wind.cc
index 07713dc..07e745f 100644
--- a/src/visualisers/Wind.cc
+++ b/src/visualisers/Wind.cc
@@ -57,6 +57,9 @@ void Wind::print(ostream& out)  const
 
 void Wind::operator()(Data& data, BasicGraphicsObjectContainer& parent)
 {	
+
+	if ( (*type_)(data, parent) )
+		return;
 	ThinningMethod* method=0;
 
 	const Transformation& transformation = parent.transformation();
@@ -71,8 +74,10 @@ void Wind::operator()(Data& data, BasicGraphicsObjectContainer& parent)
 	method->set2D();
 
 	this->factor_ = maground(this->thinning_factor_);
-	this->nbPoints_ = this->thinning_factor_*transformation.dimension(parent);parent.absoluteHeight();
+	this->nbPoints_ = this->thinning_factor_;
 	this->rawOnly_ = false;
+	this->height_ = parent.absoluteHeight();
+	this->width_ = parent.absoluteWidth();
 	method->set(*this);
 	
 
@@ -90,13 +95,15 @@ void Wind::operator()(Data& data, BasicGraphicsObjectContainer& parent)
 
 		
 		for (vector<CustomisedPoint*>::const_iterator point =points.begin(); point != points.end(); ++point) {
-			 UserPoint position((*point)->longitude(), (*point)->latitude());
-			 PaperPoint pp = transformation(position);
-			 if ( transformation.in(pp) )  {
-				 pair<double, double> component = make_pair(  (**point)["x_component"], (**point)["y_component"]);		 
-				 transformation.reprojectComponents(position, component);
-				 (*this->type_)(position, pp, component.first,  component.second, (**point)["colour_component"]);
-			 }	
+			 bool north =  ((*point)->latitude() > 0);
+			 double x = (*point)->longitude();
+			 double y = (*point)->latitude();
+			 PaperPoint xy = transformation(UserPoint((*point)->longitude(), (*point)->latitude()));
+			 if ( transformation.in(xy) ) {
+				 pair<double, double> component = std::make_pair(  (**point)["x_component"], (**point)["y_component"]);
+				 transformation.reprojectComponents(x, y, component);
+				  (*this->type_)(north, xy, component.first,  component.second, (**point)["colour_component"]);
+			 }
 		}
 	(*this->type_).finish(parent);
 }
diff --git a/src/visualisers/Wind.h b/src/visualisers/Wind.h
index 1299a97..21d26d8 100644
--- a/src/visualisers/Wind.h
+++ b/src/visualisers/Wind.h
@@ -54,6 +54,7 @@ public:
     void operator()(Data&, BasicGraphicsObjectContainer&);
     void visit(LegendVisitor&);
     bool needLegend() { return type_->needLegend(); }
+    void getReady(const LegendVisitor& legend) { Visdef::getReady(legend); type_->legendOnly(legendOnly_); }
     void  visit(Data& data, HistoVisitor& visitor);
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
diff --git a/src/visualisers/WindPlotting.cc b/src/visualisers/WindPlotting.cc
index 389b2b1..b0a0ae9 100644
--- a/src/visualisers/WindPlotting.cc
+++ b/src/visualisers/WindPlotting.cc
@@ -36,21 +36,40 @@ using namespace magics;
 
 map<string,  WindPlotting::AdvancedMethod > WindPlotting::methods_;
 map<string,  WindPlotting::ColouringMethod > WindPlotting::colouringMethods_;
+map<string,  WindPlotting::MinMaxMethod > WindPlotting::minMaxMethods_;
 
-WindPlotting::WindPlotting() 
+WindPlotting::WindPlotting() : legendOnly_(false)
 {
+
 	if ( methods_.empty() ) {
 		methods_["on"] = &WindPlotting::advanced;
 		methods_["advanced"] =&WindPlotting::advanced;
 		methods_["off"] = &WindPlotting::off;
 	}
-	
+	if ( minMaxMethods_.empty() ) {
+			minMaxMethods_["on"] = &WindPlotting::advancedMinMax;
+			minMaxMethods_["advanced"] =&WindPlotting::advancedMinMax;
+			minMaxMethods_["off"] = &WindPlotting::offMinMax;
+		}
 	if ( colouringMethods_.empty() ) {
 		colouringMethods_["speed"] = &WindPlotting::speed;
 		colouringMethods_["parameter"] = &WindPlotting::parameter; 
 	}
 }
 
+void WindPlotting::advancedMinMax(double& min, double& max)
+{
+	min = ( minSpeed() == -1.e21 ) ? min : minSpeed();
+	max = ( maxSpeed() == 1.e21 ) ? max : maxSpeed();;
+}
+void WindPlotting::offMinMax(double& min, double& max)
+{
+	if ( min < minSpeed() )
+		min = minSpeed();
+	if ( max > maxSpeed() )
+		max = maxSpeed();
+}
+
 
 void WindPlotting::adjust( CustomisedPointsList& points, const Transformation& transformation)
 {
@@ -69,9 +88,16 @@ void WindPlotting::adjust( CustomisedPointsList& points, const Transformation& t
 	double min = *std::min_element(values.begin(), values.end());
 	double max = *std::max_element(values.begin(), values.end());
 	if ( same(min, max) ) return;
+	string value = lowerCase(advanced_method_);
+	map<string,  MinMaxMethod >::const_iterator method = minMaxMethods_.find(value);
+	if  ( method ==  minMaxMethods_.end() ) {
+		MagLog::warning() << advanced_method_ << " is not valid value for  'wind_advanced_method': reset to default[off]" << endl;
+		offMinMax(min, max);
+	}
+	else
+		(this->*method->second)(min, max);
 	levels_->set(*this);	
 	colourMethod_->set(*this);
-	
 	levels_->calculate(min, max, false);
 	LevelSelection::const_iterator level = levels_->begin();
 	colourMethod_->prepare(*levels_);
@@ -135,35 +161,26 @@ void WindPlotting::visit(LegendVisitor& legend)
 {
 	if ( !legend_ )
 			return;
-    if (magCompare(advanced_method_, "advanced") ||  magCompare(advanced_method_, "on") ) {
-		
-	IntervalMap<Colour>::const_iterator interval;
-
-	for ( interval = map_.begin(); interval != map_.end(); ++interval) {
-		Polyline* box = new Polyline();
-
-		double min =interval->first.min_;
-		double max = interval->first.max_;
-
-		box->setShading(new FillShadingProperties());
-
-		box->setFillColour(interval->second);
-		box->setFilled(true);
-
-		legend.add(new BoxEntry(min, max, box));
-		/*   
-		Symbol* symbol = new Symbol();
-		(*symbol).setColour(interval->second.colour_);
-		(*symbol).setSymbol(interval->second.marker_);
-		(*symbol).setHeight(interval->second.height_);
-		ostringstream text;
-		text << interval->first.min_ << "-" <<  interval->first.max_;   
-		legend.add(new SimpleSymbolEntry(interval->second.label_.empty() ? text.str() : interval->second.label_, symbol));
-		*/
-	} 	
+	if (magCompare(advanced_method_, "advanced") ||  magCompare(advanced_method_, "on") ) {
+
+		IntervalMap<Colour>::const_iterator interval;
+		IntervalMap<Colour>::const_iterator last =  map_.end();
+		--last;
+		for ( interval = map_.begin(); interval != last; ++interval) {
+			Polyline* box = new Polyline();
+
+			double min =interval->first.min_;
+			double max = interval->first.max_;
+
+			box->setShading(new FillShadingProperties());
+
+			box->setFillColour(interval->second);
+			box->setFilled(true);
+
+			legend.add(new BoxEntry(min, max, box));
+
+		}
+		legend.back()->last();
 	}
-    else {
-    	//legend.add(new LegendEntry("Not Yet available"));
-    }
 
 }
diff --git a/src/visualisers/WindPlotting.h b/src/visualisers/WindPlotting.h
index c46c452..ebd8ed9 100644
--- a/src/visualisers/WindPlotting.h
+++ b/src/visualisers/WindPlotting.h
@@ -54,8 +54,8 @@ public:
 	virtual bool accept(const string& key) { return WindPlottingAttributes::accept(key); }
 	virtual void toxml(ostream&) {}
 	virtual WindPlotting* clone() { return 0; };
-	virtual void operator()(const UserPoint&, const PaperPoint&, double, double, double = 0) {}
-
+	virtual void operator()(bool, const PaperPoint&, double, double, double = 0) {}
+	virtual bool operator()(Data& data, BasicGraphicsObjectContainer& parent) { return false; }
 	virtual void prepare(BasicGraphicsObjectContainer&,double) {}
 	virtual void prepare(BasicGraphicsObjectContainer&) {}
 	virtual void finish(BasicGraphicsObjectContainer&) {}
@@ -63,10 +63,13 @@ public:
 	virtual void visit(Data&, PointsHandler&, HistoVisitor&) {};
 	virtual void adjust( CustomisedPointsList&,const Transformation&);
 	bool needLegend() { return legend_; }
+	void legendOnly(bool legend) { legendOnly_ = legend; }
 	Colour& colour(Colour& Colour, double, double, double);
 	
 	Colour& off(Colour& colour, double, double, double) { return colour; }
 	Colour& advanced(Colour& colour, double, double, double);
+	void offMinMax(double&, double&);
+	void advancedMinMax(double&, double&);
 	
 	double value(double, double, double);	
 	double speed(double, double, double);
@@ -80,17 +83,23 @@ public:
 	const Colour& getMinColour() const { return *minColour_; }
 	const Colour& getMaxColour() const { return *maxColour_; }
 	const string& getDirection() const { return direction_; }
+	ListPolicy getPolicy() const { return M_LASTONE; }
 	stringarray getColours()  const { return colours_; }
 	floatarray getList()  const { return list_; }
 protected:
+	bool legendOnly_;
      	 //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream& out) const
 	 {  out << "WindPlotting"; }
 	 typedef Colour& (WindPlotting::*AdvancedMethod)(Colour&, double, double, double);
 	 typedef double (WindPlotting::*ColouringMethod)(double, double, double);
+	 typedef void (WindPlotting::*MinMaxMethod)(double&, double&);
 	 static map<string,  WindPlotting::AdvancedMethod > methods_;
 	 static map<string,  WindPlotting::ColouringMethod > colouringMethods_;
+	 static map<string,  WindPlotting::MinMaxMethod > minMaxMethods_;
 	 IntervalMap<Colour>  map_;
+	 virtual double minSpeed() { assert(false); }
+	 virtual double maxSpeed() { assert(false); }
 	 
 
 private:
diff --git a/src/web/CMakeLists.txt b/src/web/CMakeLists.txt
new file mode 100644
index 0000000..2f30185
--- /dev/null
+++ b/src/web/CMakeLists.txt
@@ -0,0 +1,11 @@
+set( _web_srcs
+MagJSon.cc   ObsJSon.cc   WrepJSon.h      json_spirit_reader.h   json_spirit_value.h
+MagConfig.cc    MagJSon.h    ObsJSon.h    json_spirit.h           json_spirit_utils.h    json_spirit_writer.cpp
+MagConfig.h     WrepJSon.cc  json_spirit_reader.cpp  json_spirit_value.cpp  json_spirit_writer.h
+ )
+
+foreach( file ${_web_srcs} )
+  list( APPEND web_srcs web/${file} )
+endforeach()
+
+set( web_srcs ${web_srcs} PARENT_SCOPE )
diff --git a/src/web/MagConfig.cc b/src/web/MagConfig.cc
index 9b307f1..a121d3e 100644
--- a/src/web/MagConfig.cc
+++ b/src/web/MagConfig.cc
@@ -53,7 +53,7 @@ MagConfigHandler::MagConfigHandler(const string& config, MagConfig& magics)
 		   }
 	}
 	catch (std::exception e) {
-		  MagLog::fatal() << "Could not processed the file: " << config << ": " << e.what() << endl;
+		  MagLog::error() << "Could not processed the file: " << config << ": " << e.what() << endl;
 		  abort();
 	}
 }
@@ -86,5 +86,23 @@ MagConfig::~MagConfig()
 }
 
 
+string MagConfig::convert(const json_spirit::Value& value)
+{
+
+	if (value.type() == str_type) {
+		return value.get_str();
+
+	}
+	if (value.type() == int_type) {
+		return tostring(value.get_int());
+
+	}
+	if (value.type() == real_type) {
+		return tostring(value.get_real());
+	}
+
+	return "";
 
 
+}
+
diff --git a/src/web/MagConfig.h b/src/web/MagConfig.h
index 291f7a6..881804b 100644
--- a/src/web/MagConfig.h
+++ b/src/web/MagConfig.h
@@ -43,6 +43,9 @@ class MagConfig
 public:
 	MagConfig();
 	~MagConfig();
+
+	string convert(const json_spirit::Value&);
+
 	virtual void callback(const string&, const json_spirit::Value&) = 0;
 
 };
diff --git a/src/web/MagJSon.cc b/src/web/MagJSon.cc
index 9db6d40..f7869a8 100644
--- a/src/web/MagJSon.cc
+++ b/src/web/MagJSon.cc
@@ -24,7 +24,7 @@ using namespace json_spirit;
 #include "XmlMagics.h"
 #include "XmlTree.h"
 
-
+#include "Timer.h"
 MagJSon::MagJSon()
 {
 	patchs_["drivers"] = &MagJSon::drivers;
@@ -166,6 +166,6 @@ void MagJSon::magics(const json_spirit::Value& value)
 	XmlMagics magics;
 	// buils the Magics XmlNode! 
 	build(*tree_.root(), "magics", object);
-
+	Timer timer("total", "execution");
 	magics.execute(tree_);
 }
diff --git a/src/web/Makefile.am b/src/web/Makefile.am
deleted file mode 100755
index 477bd20..0000000
--- a/src/web/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-noinst_LTLIBRARIES	= libWeb.la
-
-include_H		= ObsJSon.h MagJSon.h WrepJSon.h json_spirit.h json_spirit_reader.h json_spirit_utils.h json_spirit_value.h json_spirit_writer.h MagConfig.h
-
-
-if MAGICS_ALLHEADERS
-include_HEADERS = $(include_H)
-noinst_HEADERS	= $(noinst_H)
-else
-include_HEADERS =
-noinst_HEADERS	= $(noinst_H) $(include_H)
-endif
-
-nodist_libWeb_la_SOURCES =
-libWeb_la_SOURCES	= MagJSon.cc WrepJSon.cc ObsJSon.cc ObsJSonAttributes.cc MagConfig.cc\
-			  WrepJSonAttributes.cc json_spirit_reader.cpp json_spirit_value.cpp json_spirit_writer.cpp
-libWeb_la_LDFLAGS	= -no-undefined -no-install
-
-AM_CPPFLAGS		= -I$(top_srcdir)/src -I$(top_srcdir)/src/basic -I$(top_srcdir)/src/terralib/kernel -I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/common -I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/visualisers
-
-if MAGICS_QT
-AM_CPPFLAGS += $(QT_CPPFLAGS)
-endif
-
diff --git a/src/web/Makefile.in b/src/web/Makefile.in
deleted file mode 100644
index 56481b4..0000000
--- a/src/web/Makefile.in
+++ /dev/null
@@ -1,679 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_QT_TRUE@am__append_1 = $(QT_CPPFLAGS)
-subdir = src/web
-DIST_COMMON = $(am__include_HEADERS_DIST) $(am__noinst_HEADERS_DIST) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libWeb_la_LIBADD =
-am_libWeb_la_OBJECTS = MagJSon.lo WrepJSon.lo ObsJSon.lo \
-	ObsJSonAttributes.lo MagConfig.lo WrepJSonAttributes.lo \
-	json_spirit_reader.lo json_spirit_value.lo \
-	json_spirit_writer.lo
-nodist_libWeb_la_OBJECTS =
-libWeb_la_OBJECTS = $(am_libWeb_la_OBJECTS) \
-	$(nodist_libWeb_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-libWeb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(libWeb_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_$(V))
-am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
-am__v_CXX_0 = @echo "  CXX   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_$(V))
-am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CXXLD_0 = @echo "  CXXLD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(libWeb_la_SOURCES) $(nodist_libWeb_la_SOURCES)
-DIST_SOURCES = $(libWeb_la_SOURCES)
-am__include_HEADERS_DIST = ObsJSon.h MagJSon.h WrepJSon.h \
-	json_spirit.h json_spirit_reader.h json_spirit_utils.h \
-	json_spirit_value.h json_spirit_writer.h MagConfig.h
-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__installdirs = "$(DESTDIR)$(includedir)"
-am__noinst_HEADERS_DIST = ObsJSon.h MagJSon.h WrepJSon.h json_spirit.h \
-	json_spirit_reader.h json_spirit_utils.h json_spirit_value.h \
-	json_spirit_writer.h MagConfig.h
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libWeb.la
-include_H = ObsJSon.h MagJSon.h WrepJSon.h json_spirit.h json_spirit_reader.h json_spirit_utils.h json_spirit_value.h json_spirit_writer.h MagConfig.h
- at MAGICS_ALLHEADERS_FALSE@include_HEADERS = 
- at MAGICS_ALLHEADERS_TRUE@include_HEADERS = $(include_H)
- at MAGICS_ALLHEADERS_FALSE@noinst_HEADERS = $(noinst_H) $(include_H)
- at MAGICS_ALLHEADERS_TRUE@noinst_HEADERS = $(noinst_H)
-nodist_libWeb_la_SOURCES = 
-libWeb_la_SOURCES = MagJSon.cc WrepJSon.cc ObsJSon.cc ObsJSonAttributes.cc MagConfig.cc\
-			  WrepJSonAttributes.cc json_spirit_reader.cpp json_spirit_value.cpp json_spirit_writer.cpp
-
-libWeb_la_LDFLAGS = -no-undefined -no-install
-AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/basic \
-	-I$(top_srcdir)/src/terralib/kernel \
-	-I$(top_srcdir)/src/decoders -I$(top_srcdir)/src/common \
-	-I$(top_srcdir)/src/drivers -I$(top_srcdir)/src/visualisers \
-	$(am__append_1)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .cc .cpp .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/web/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/web/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)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libWeb.la: $(libWeb_la_OBJECTS) $(libWeb_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libWeb_la_LINK)  $(libWeb_la_OBJECTS) $(libWeb_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagConfig.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/MagJSon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsJSon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ObsJSonAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WrepJSon.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/WrepJSonAttributes.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/json_spirit_reader.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/json_spirit_value.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/json_spirit_writer.Plo at am__quote@
-
-.cc.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cc.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cc.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-.cpp.o:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-install-includeHEADERS: $(include_HEADERS)
-	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
-	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
-	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|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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)$(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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-noinstLTLIBRARIES \
-	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-includeHEADERS
-
-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: uninstall-includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags 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-includeHEADERS 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 uninstall uninstall-am uninstall-includeHEADERS
-
-
-# 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/web/ObsJSon.cc b/src/web/ObsJSon.cc
index 95924cb..5f4cca2 100644
--- a/src/web/ObsJSon.cc
+++ b/src/web/ObsJSon.cc
@@ -51,14 +51,47 @@ ObsJSon::~ObsJSon()
 {
 }
 
-void ObsJSon::decode()
+
+CustomisedPoint* ObsJSon::decode(Object& point)
 {
-	points_.clear();
+    CustomisedPoint* current = new CustomisedPoint();
+				  for (vector<Pair>::const_iterator key = point.begin(); key !=  point.end(); ++key) {
+
+					  map<string,  ObsJSon::Method >::iterator method = methods_.find(key->name_);
+					  if ( method != methods_.end() ) {
+					  	     (this->*method->second)(key->value_, *current);
+					  }
+					  else {
+						  if ( key->value_.type() == real_type )
+							  (*current)[key->name_] = key->value_.get_value<double>();
+						  if ( key->value_.type() == int_type )
+								  (*current)[key->name_] = key->value_.get_value<int>();
+					  }
+				  }
+
+    return current;
+
+}
+
 
-	ifstream is( path_.c_str());
+void ObsJSon::decode()
+{
 
+	points_.clear();
 	json_spirit::Value value;
+    if ( !values_.empty() ) {
+        for (vector<string>::iterator val = values_.begin(); val != values_.end(); ++val) {
+		  json_spirit::read_or_throw(*val, value );
+		  Object object = value.get_value< Object >();
+		  points_.push_back(decode(object));
+       }
+        return; 
+    }
+
 	try {
+	    ifstream is( path_.c_str());
+	    json_spirit::Value value;
+
 		  json_spirit::read_or_throw(is, value );
 		  Object object = value.get_value< Object >();
 
@@ -67,30 +100,14 @@ void ObsJSon::decode()
 			  Array points = entry->value_.get_value< Array>();
 
 			  for (unsigned int i = 0; i < points.size(); i++) {
-
-				  points_.push_back(new CustomisedPoint());
-				  CustomisedPoint& current = *points_.back();
 				  Object point = points[i].get_value< Object >();
-				  for (vector<Pair>::const_iterator key = point.begin(); key !=  point.end(); ++key) {
-
-					  map<string,  Method >::iterator method = methods_.find(key->name_);
-					  if ( method != methods_.end() ) {
-					  	     (this->*method->second)(key->value_, current);
-					  }
-					  else {
-						  if ( key->value_.type() == real_type )
-							  current[key->name_] = key->value_.get_value< double>();
-						  if ( key->value_.type() == int_type )
-								  current[key->name_] = key->value_.get_value<int>();
-					  }
-				  }
+				  points_.push_back(decode(point));
 			  }
 		  }
 	 }
 	 catch (std::exception e)
 	 {
 		 MagLog::error() << "Could not processed the file: " << path_ << ": " << e.what() << endl;
-		 abort();
 	 }
 }
 
@@ -103,7 +120,7 @@ void ObsJSon::print(ostream& out) const
 
 void ObsJSon::customisedPoints(const std::set<string>&, CustomisedPointsList& out)
 {
-	MagLog::dev() << "WrepJSon::customisedPoints" << *this <<endl;
+	MagLog::dev() << "WrepJSon::customisedPoints" << *this << std::endl;
 	
 	CustomisedPoint *point = new CustomisedPoint();
 
diff --git a/src/web/ObsJSon.h b/src/web/ObsJSon.h
index b41f126..f849179 100644
--- a/src/web/ObsJSon.h
+++ b/src/web/ObsJSon.h
@@ -42,6 +42,7 @@
 namespace magics {
 
 
+
 class ObsJSon:
 			public ObsJSonAttributes,
 			public Decoder,
@@ -64,7 +65,8 @@ public:
 	void decode();
 	void  getInfo(const std::set<string>&, multimap<string, string>&);
 	void visit(MetaDataVisitor&);
-
+    CustomisedPoint* decode(json_spirit::Object&);
+    
 protected:
      //! Method to print string about this class on to a stream of type ostream (virtual).
 	 virtual void print(ostream&) const; 
diff --git a/src/web/ObsJSonAttributes.cc b/src/web/ObsJSonAttributes.cc
deleted file mode 100644
index bac0f6f..0000000
--- a/src/web/ObsJSonAttributes.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file ObsJSonAttributes.cc
-    \brief Implementation of ObsJSon Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "ObsJSonAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-ObsJSonAttributes::ObsJSonAttributes():
-	path_(ParameterManager::getString("obsjson_input_filename"))
-{
-} 
-
-
-
-ObsJSonAttributes::~ObsJSonAttributes()
-{
-}
-
-    
-void ObsJSonAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "obsjson";
-
-	setAttribute(prefix, "obsjson_input_filename", path_, params);
-}
-
-void ObsJSonAttributes::copy(const ObsJSonAttributes& other)
-{
-	path_ = other.path_;
-} 
-
-
-bool ObsJSonAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "obsjson")  )
-		return true;
-	return false;
-}
-
-void ObsJSonAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "obsjson") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void ObsJSonAttributes::print(ostream& out)  const
-{
-	out << "ObsJSonAttributes[";
-	out << "path = " << path_;
-	out << "]" << "\n";
-}
-
-
-void ObsJSonAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"obsjson\"";
-	 out << ", \"obsjson_input_filename\":";
-	 niceprint(out,path_);
-}
-static MagicsParameter<string> obsjson_input_filename("obsjson_input_filename", "", "");
diff --git a/src/web/WrepJSon.cc b/src/web/WrepJSon.cc
index fcc4431..44beaa9 100644
--- a/src/web/WrepJSon.cc
+++ b/src/web/WrepJSon.cc
@@ -58,6 +58,7 @@ WrepJSon::WrepJSon()  : missing_(-9999),
 	methods_["tracker"] = &WrepJSon::ignore;
 	methods_["missing"] = &WrepJSon::missing;
 	methods_["location"] = &WrepJSon::location;
+	methods_["station_name"] = &WrepJSon::station_name;
 	methods_["requested_location"] = &WrepJSon::station;
 	methods_["land_sea_mask"] = &WrepJSon::mask;
 	methods_["metadata"] = &WrepJSon::metadata;
@@ -67,6 +68,7 @@ WrepJSon::WrepJSon()  : missing_(-9999),
 	methods_["x_date_values"] = &WrepJSon::x_date_values;
 	methods_["y_values"] = &WrepJSon::y_values;
 	methods_["y_date_values"] = &WrepJSon::y_date_values;
+	methods_["values"] = &WrepJSon::values;
 
 	decoders_["eps"] = &WrepJSon::eps;
 	decoders_["profile"] = &WrepJSon::profile;
@@ -86,7 +88,9 @@ WrepJSon::WrepJSon()  : missing_(-9999),
     metaMethods_["temperature_adjustment"] = &WrepJSon::temperature_adjustment;
     metaMethods_["eps_resolution"] = &WrepJSon::eps_resolution;
     metaMethods_["deterministic_resolution"] = &WrepJSon::deterministic_resolution;
-	
+    metaMethods_["station_name"] = &WrepJSon::station_name;
+    metaMethods_["height"] = &WrepJSon::height;
+
 	minx_ = std::numeric_limits<double>::max();
 	maxx_ = -std::numeric_limits<double>::max();
 	miny_ = std::numeric_limits<double>::max();
@@ -102,9 +106,21 @@ WrepJSon::~WrepJSon()
 }
 void WrepJSon::visit(Transformation& transformation)
 {
+
+	regular_ = (transformation.xAxisType() == "regular");
+
 	missing_ = missing_value_;
+
 	decode();
-	
+
+	double add = (maxy_ - miny_ ) * y_percent_ /100.;
+	maxy_ += add;
+	miny_ -= add;
+
+
+
+
+
 	if ( y_max_threshold_ < INT_MAX) 
 		maxy_ = (maxy_ < y_max_threshold_ )? y_max_threshold_ : maxy_; 
  
@@ -123,20 +139,22 @@ void WrepJSon::visit(Transformation& transformation)
 	}  		
 	else {
 		if ( xdate_ ) {
-			transformation.setDataMinX(minx_, xBase_);
-			transformation.setDataMaxX(maxx_, xBase_);
+
+				transformation.setDataMinMaxX(minx_, maxx_, xBase_);
+
+
 		}
 		else {
-			transformation.setDataMinX(minx_);
-			transformation.setDataMaxX(maxx_);
+			transformation.setDataMinMaxX(minx_, maxx_);
+
 		}
 		if ( ydate_ ) {
-			transformation.setDataMinY(miny_, yBase_);
-			transformation.setDataMaxY(maxy_, yBase_);
+			transformation.setDataMinMaxY(miny_, maxy_, yBase_);
+
 		}
 		else {
-			transformation.setDataMinY(miny_);
-			transformation.setDataMaxY(maxy_);
+			transformation.setDataMinMaxY(miny_, maxy_);
+
 		}
 
 	}
@@ -145,17 +163,18 @@ void WrepJSon::visit(Transformation& transformation)
 void WrepJSon::profile(Transformation& transformation)
 {
 
-	transformation.setDataMinX(minx_);
-	transformation.setDataMaxX(maxx_);
+	transformation.setDataMinMaxX(minx_, maxx_);
+
+
+	transformation.setDataMinMaxY(miny_, maxy_);
 
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy_);
 }
 void WrepJSon::eps(Transformation& transformation)
 {
-	transformation.setDataMinX(minx_  * 3600, base_);
-	transformation.setDataMaxX(maxx_ * 3600, base_);
-	
+	if ( keyword_ != "clim" ) {
+		transformation.setDataMinMaxX(minx_  * 3600, maxx_ * 3600, base_);
+
+	}
 	vector<double> maxs;
 	vector<double> allvalues;
 		
@@ -206,22 +225,19 @@ void WrepJSon::eps(Transformation& transformation)
 
 	if ( same(miny_, maxy_) ) 
         	maxy_ = miny_ +5.;
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy_);
+	transformation.setDataMinMaxY(miny_, maxy_);
+
 }
 void WrepJSon::cdf(Transformation& transformation)
 {
-	transformation.setDataMinX(minx_);
-	transformation.setDataMaxX(maxx_);
-	transformation.setDataMinY(0);
-	transformation.setDataMaxY(100);
+	transformation.setDataMinMaxX(minx_, maxx_);
+	transformation.setDataMinMaxY(0, 100);
+
 }
 void WrepJSon::efi(Transformation& transformation)
 {
-	transformation.setDataMinX(-100);
-	transformation.setDataMaxX(+100);
-	transformation.setDataMinY(miny_);
-	transformation.setDataMaxY(maxy_);
+	transformation.setDataMinMaxX(-100,100);
+	transformation.setDataMinMaxY(miny_, maxy_);
 }
 void WrepJSon::decode()
 {	
@@ -254,11 +270,15 @@ void WrepJSon::eps()
     base_ = DateTime(date_, time_);
    
     if ( values_.steps_.empty() ) {
-    	 MagLog::fatal() << "Could not find data for parameter: " << param_ << endl;
+    	 MagLog::error() << "Could not find data for parameter: " << param_ << endl;
     	 abort();
     } 
     minx_ = 0;
     maxx_ = values_.steps_.back()+shift_;
+    if ( regular_ ) {
+    	 minx_ = 0;
+    	 maxx_= values_.steps_.back()/(24*3600.);
+    }
     vector<double> yval;
     for (unsigned int i = 0; i < values_.steps_.size(); i++) {
 	map<string, vector<double> >::iterator values = values_.values_.find("1");
@@ -279,7 +299,13 @@ void WrepJSon::eps()
 		point->longitude(values_.steps_[i] * 3600);		 
 		point->latitude(values_.steps_[i] * 3600);		 
 		(*point)["step"]    = values_.steps_[i] * 3600;
+
 		(*point)["x"]    = values_.steps_[i] * 3600;
+		if ( regular_ ) {
+			(*point)["step"]    = values_.steps_[i]/24.;
+
+				(*point)["x"]    = values_.steps_[i]/24.;
+		}
 		(*point)["x_upper"]    = values_.steps_[i] * 3600;
 		(*point)["y_upper"]    = value;
 		(*point)["y_lower"]    = yy;
@@ -325,7 +351,7 @@ void WrepJSon::profile()
 
 
     if ( values_.levels_.empty() ) {
-    	 MagLog::fatal() << "Could not find data for parameter: " << param_ << endl;
+    	 MagLog::error() << "Could not find data for parameter: " << param_ << endl;
     	 abort();
     }
     miny_ = values_.levels_.front();
@@ -381,8 +407,9 @@ void WrepJSon::profile()
 			}
 
 		}
-
-		points_.push_back(point);
+		// Test for tephigram
+		if ( (*point)["y"] > 100. )
+			points_.push_back(point);
 	}
 
 	minx_ = *std::min_element(minmax.begin(), minmax.end());
@@ -413,7 +440,7 @@ void WrepJSon::customisedPoints(const Transformation& transformation, const std:
 }
 void WrepJSon::customisedPoints(const std::set<string>&, CustomisedPointsList& out)
 {
-	MagLog::dev() << "WrepJSon::customisedPoints" <<endl;
+	MagLog::dev() << "WrepJSon::customisedPoints" << std::endl;
 	
 	decode();
 
@@ -453,7 +480,7 @@ void WrepJSon::basic()
 	         }
 	         catch (std::exception e)
 	         {
-	        	 MagLog::fatal() << "Could not processed the file: " << file_ << ": " << e.what() << endl;
+	        	 MagLog::error() << "Could not processed the file: " << file_ << ": " << e.what() << endl;
 	        	 abort();
 	         }	
 }
@@ -496,6 +523,15 @@ void WrepJSon::location(const json_spirit::Value& value )
 	MagLog::dev() << "found -> lon= " << longitude_ << endl;
 	
 }
+void WrepJSon::station_name(const json_spirit::Value& value )
+{
+
+	if  ( value.type() == str_type )
+		station_name_ = value.get_value<string>();
+
+
+
+}
 void WrepJSon::epsz(const json_spirit::Value& value)
 {
 	assert( value.type() == real_type);
@@ -533,6 +569,7 @@ void WrepJSon::missing(const json_spirit::Value& value )
 }
 void WrepJSon::date(const json_spirit::Value& value)
 {
+
 	assert( value.type() == str_type);
 	MagLog::dev() << "found -> date= " <<  value.get_value<string>() << endl;
 	date_ =  value.get_value<string>();
@@ -540,6 +577,7 @@ void WrepJSon::date(const json_spirit::Value& value)
 }
 void WrepJSon::time(const json_spirit::Value& value)
 {
+
 	assert( value.type() == str_type);
 	MagLog::dev() << "found -> time= " <<  value.get_value<string>() << endl;
 	time_ =  value.get_value<string>();
@@ -619,37 +657,41 @@ MatrixHandler& WrepJSon::matrix()
 		 }
 
 		 steps.push_back((**point)["step"]);
+
 	}
 
 
-	double from = maground(*min_element(values.begin(), values.end())) - 1;
-	double to = maground(*max_element(values.begin(), values.end())) + 1 ;
+	double from = maground(*min_element(values.begin(), values.end()));
+	double to = maground(*max_element(values.begin(), values.end()));
 
 	IntervalMap<int> array;
 
+	double plume = plumes_/2;
 
-
-	for ( double a = from; a <= to; a = a + plumes_ ) {
-			array.insert(make_pair(Interval(a-plumes_, a+plumes_), 0));
+	for ( double a = from - plume; a <= to + plume; a = a + plume ) {
+			array.insert(make_pair(Interval(a-plume, a+plume), 0));
 	}
 
 
-	
-	matrix_.set(array.size(), points_.size());
 	for (IntervalMap<int>::iterator interval = array.begin(); interval!= array.end(); ++interval) {
 		double row = (interval->first.max_ - interval->first.min_)/2 +interval->first.min_ ;
 		matrix_.rowsAxis().push_back(row);
 	}
-	for (vector<double>::iterator s = steps.begin(); s != steps.end(); ++s) {				
+
+	matrix_.columnsAxis().push_back(steps.front());
+	vector<double>::iterator s = steps.begin();
+	s++;
+	for (; s != steps.end(); ++s) {
+
 		matrix_.columnsAxis().push_back(*s);
 	}
 
 	matrix_.setMapsAxis();
+	matrix_.resize(matrix_.columnsAxis().size() * matrix_.rowsAxis().size(), 0);
 	int column = 0;
 
 	for (vector<CustomisedPoint*>::const_iterator point = points_.begin(); point != points_.end(); ++point)
 	{
-
 		for (IntervalMap<int>::iterator interval = array.begin(); interval!= array.end(); ++interval) {
 			interval->second = 0;
 		}
@@ -658,23 +700,22 @@ MatrixHandler& WrepJSon::matrix()
 
 			map<string, double>::const_iterator step = (*point)->find(key);
 			if (step != (*point)->end() ) {
-			  IntervalMap<int>::iterator interval = array.get(step->second);
-			  interval->second++;
-		     }
+				for (IntervalMap<int>::iterator interval = array.begin(); interval!= array.end(); ++interval) {
+						if ( interval->first.between(step->second) )
+								interval->second++;
+				}
 			}
-
-
+		}
 
 		int row = 0;
 		
 		for (IntervalMap<int>::iterator interval = array.begin(); interval!= array.end(); ++interval) {
-			list_.push_back(new UserPoint((**point)["step"], (interval->first.max_ - interval->first.min_)/2 + interval->first.min_, interval->second*2));
-			matrix_[column+row*steps.size()] = interval->second*2; // in percentage!
+			matrix_[column+row*matrix_.columnsAxis().size()] = interval->second*2; // in percentage!
 			row++;
 		}
-	    column++;
-	}
+		++column;
 
+	}
 
 	matrix_.missing(std::numeric_limits<double>::max());
 	matrixHandlers_.push_back(new  MatrixHandler(matrix_));
@@ -807,15 +848,22 @@ void WrepJSon::efi()
 			
 }
 
+
+
 void WrepJSon::clim(const json_spirit::Value& value)
 {
 	
 	current_ = &clim_;
 	scaling_factor_ = param_scaling_factor_;
 	offset_factor_ = param_offset_factor_;
+
+
 	dig(value);
+
 	clim_.print();
 
+
+
 }
 void WrepJSon::efi(const json_spirit::Value& value)
 {
@@ -963,6 +1011,31 @@ void WrepJSon::x_values(const json_spirit::Value& value)
 	minx_ = *std::min_element(minmax.begin(), minmax.end());
 	maxx_ = *std::max_element(minmax.begin(), minmax.end());
 
+
+}
+void WrepJSon::values(const json_spirit::Value& value)
+{
+	assert (value.type() == array_type);
+	Array values = value.get_value<Array>();
+	bool newpoint = points_.empty();
+
+
+	for (unsigned int i = 0; i < values.size(); i++) {
+		if ( newpoint ) {
+			CustomisedPoint* point = new CustomisedPoint();
+			(*point)["resolution"] = points_along_meridian_;
+			points_.push_back(point);
+		}
+		double val = values[i].get_value<double>();
+		if ( val == missing_ )  {
+			points_.back()->missing(true);
+		}
+
+		(*points_[i])["value"] = val;
+
+	}
+
+
 }
 void WrepJSon::y_values(const json_spirit::Value& value)
 {
@@ -1000,7 +1073,9 @@ void WrepJSon::x_date_values(const json_spirit::Value& value)
 
 	assert (value.type() == array_type);
 	Array values = value.get_value<Array>();
-	xdate_ = true;
+	if ( !regular_) {
+		xdate_ = true;
+	}
 	xBase_ = DateTime(values[0].get_value<string>());
 	DateTime current;
 	bool newpoint = points_.empty();
@@ -1015,9 +1090,14 @@ void WrepJSon::x_date_values(const json_spirit::Value& value)
 			points_.push_back(point);
 		}
 		double val =  current - xBase_;
+		if ( regular_ ) {
+			val = val / (24.*3600);
+
+		}
 		(*points_[i])["x"] = val;
 		minmax.push_back(val);
 	}
+
 	minx_ = *std::min_element(minmax.begin(), minmax.end());
 	maxx_ = *std::max_element(minmax.begin(), minmax.end());
 
@@ -1061,24 +1141,38 @@ json_spirit::Value WrepJSon::deterministic_resolution()
 	Value value(tostring(points_along_meridian_));
 	return value;
 }
+json_spirit::Value WrepJSon::station_name()
+{
+	Value value(station_name_);
+	return value;
+}
+json_spirit::Value WrepJSon::height()
+{
 
+	if ( height_ == -9999 )
+		return Value("");
+	return Value(tostring(height_));
+}
 void WrepJSon::visit(TextVisitor& text)
 {
 
-	DateTime base(date_);
-
+	DateTime base(date_, time_);
 
-	text.update("json", "date", base.tostring("%A %e %B %Y %H UTC"));
+	if (param_info_ != "none")
+		text.update("json", "date", base.tostring("%A %e %B %Y %H UTC"));
 	ostringstream location;
 	UserPoint point(longitude_, latitude_);
 	location << " " << point.asLatitude() << " " << point.asLongitude();
 	ostringstream height;
 
 	height << height_ <<  " m";
-	text.update("json", "height", height.str());
+	if ( position_info_) {
+	if (height_ != -9999 ) 
+        text.update("json", "height", height.str());
 	text.update("json", "location", location.str());
 	text.update("json", "grid_point", (mask_ < 0.5 ) ? " (EPS sea point) " : " (EPS land point) ");
 
+	}
 
 	ostringstream full_correction;
 	ostringstream short_correction;
@@ -1086,17 +1180,18 @@ void WrepJSon::visit(TextVisitor& text)
 	int dett = (points_along_meridian_ * 2) -1;
 	int epst = points_along_meridian_ -1;
 	if ( (correction_ && height_ != -9999 && param_info_!= "none") ) {
-		full_correction << " reduced to the station height from " << maground(detz_) << " m (T" << dett << ") and " << maground(epsz_) <<  " m (T" << epst <<")";
-		short_correction << " reduced to the station height from " <<maground(epsz_) <<  " m (T" << epst <<")";
+		full_correction << " reduced to " << height_ <<  " m (station height) from " << maground(detz_) << " m (T" << dett << ") and " << maground(epsz_) <<  " m (T" << epst <<")";
+		short_correction << " reduced to " << height_ <<  " m (station height) from " << maground(epsz_) <<  " m (T" << epst <<")";
 	}
 
 	text.update("json", "full_temperature_correction_info", full_correction.str());
 	text.update("json", "short_temperature_correction_info", short_correction.str());
 	text.update("json", "parameter_info", (param_info_ == "none") ? "": param_info_ );
 
+	if (param_info_ != "none")
+		text.update("json", "station_name", station_name_);
 
-
-
+	//(**point)["y"]
 	text.update("json", "product_info", product_info_);
 	text.update("json", "plumes_interval", tostring(plumes_));
 
@@ -1114,14 +1209,29 @@ void WrepJSon::points(const Transformation& transformation, vector<UserPoint>& p
 			double shift = ref - xBase_;
 			x -= shift;
 		}
-		points.push_back(UserPoint(x, (**point)["y"]));
+		//doubble v =  (*point)->find("value") != (*point)->end() ) : (**point)["value"] : 0;
+		points.push_back(UserPoint(x, (**point)["y"], (**point)["value"]));
 		if ( (*point)->missing() )
 			points.back().flagMissing();
 	}
 }
 
-PointsHandler& WrepJSon::points(const Transformation& t, bool)
+PointsHandler& WrepJSon::points(const Transformation& transformation, bool)
 {
+	decode();
+	for (vector<CustomisedPoint*>::const_iterator point = points_.begin(); point != points_.end(); ++point) {
+	// Here we need to check we have date!
+		double x = (**point)["x"];
+		if ( xdate_ ) {
+			DateTime ref(transformation.getReferenceX());
+			double shift = ref - xBase_;
+			x -= shift;
+		}
+
+		list_.push_back(new UserPoint(x, (**point)["y"], (**point)["value"]));
+		if ( (*point)->missing() )
+			list_.back()->flagMissing();
+	}
    pointsHandlers_.push_back(new PointsHandler(list_));
    return *pointsHandlers_.back();
 }
diff --git a/src/web/WrepJSon.h b/src/web/WrepJSon.h
index 27e7e68..e950f1f 100644
--- a/src/web/WrepJSon.h
+++ b/src/web/WrepJSon.h
@@ -75,7 +75,7 @@ struct InputWrep
 		 for (map< string, vector<double> >::iterator value = values_.begin(); value != values_.end(); ++ value) {
 			 string sep = value->first + "[";
 			 for (vector<double>::iterator val =  value->second.begin(); val !=  value->second.end(); ++ val) {
-			 	cout << sep << *val;
+			 	std::cout << sep << *val;
 			 	sep = ", ";
 			 }
 			 cout << "]" << endl;
@@ -118,10 +118,12 @@ public:
 	
 	void x_values(const json_spirit::Value&);
 	void y_values(const json_spirit::Value&);
+	void values(const json_spirit::Value&);
 	void x_date_values(const json_spirit::Value&);
 	void y_date_values(const json_spirit::Value&);
 
 	void location(const json_spirit::Value&);
+	void station_name(const json_spirit::Value&);
 	void epsz(const json_spirit::Value&);
 	void detz(const json_spirit::Value&);
 	void date(const json_spirit::Value&);
@@ -144,7 +146,8 @@ public:
 	json_spirit::Value temperature_adjustment();
 	json_spirit::Value eps_resolution();
 	json_spirit::Value deterministic_resolution();
-
+	json_spirit::Value height();
+	json_spirit::Value station_name();
 	MatrixHandler& matrix();
 	void customisedPoints(const std::set<string>&, CustomisedPointsList&);
 	void customisedPoints(const Transformation&, const std::set<string>&, CustomisedPointsList&);
@@ -190,6 +193,7 @@ protected:
 	 double scaling_factor_;
 	 double offset_factor_;
 	 double mask_;
+	 string station_name_;
 	 double station_latitude_;
 	 double station_longitude_;
 	 string date_;
@@ -208,6 +212,7 @@ protected:
 	 DateTime xBase_;
 	 bool ydate_;
 	 DateTime yBase_;
+	 bool regular_;
 
 private:
     //! Copy constructor - No copy allowed
diff --git a/src/web/WrepJSonAttributes.cc b/src/web/WrepJSonAttributes.cc
deleted file mode 100644
index de3bb92..0000000
--- a/src/web/WrepJSonAttributes.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-/*******************************  LICENSE  *******************************
-
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- *******************************  LICENSE  *******************************/
-
-/*! \file WrepJSonAttributes.cc
-    \brief Implementation of WrepJSon Attributes class.
-    \author Meteorological Visualisation Section, ECMWF
-
-    This file is automatically generated.
-    Do Not Edit!
-   
-    Generated: Mon Apr 15 17:55:26 2013
-*/    
-
-#include "WrepJSonAttributes.h"
-#include "MagicsParameter.h"
-#include "Factory.h"
-#include "MagTranslator.h"
-#include "XmlNode.h"
-#include "ParameterSettings.h"
-
-
-using namespace magics;
-
-
-WrepJSonAttributes::WrepJSonAttributes():
-	path_(ParameterManager::getString("wrepjson_input_filename")),
-	param_info_(ParameterManager::getString("wrepjson_parameter_information")),
-	product_info_(ParameterManager::getString("wrepjson_product_information")),
-	family_(ParameterManager::getString("wrepjson_family")),
-	plumes_(ParameterManager::getDouble("wrepjson_plumes_interval")),
-	information_(ParameterManager::getBool("wrepjson_information")),
-	keyword_(ParameterManager::getString("wrepjson_keyword")),
-	station_name_(ParameterManager::getString("wrepjson_station_name")),
-	param_(ParameterManager::getString("wrepjson_parameter")),
-	param_scaling_factor_(ParameterManager::getDouble("wrepjson_parameter_scaling_factor")),
-	param_offset_factor_(ParameterManager::getDouble("wrepjson_parameter_offset_factor")),
-	clim_param_(ParameterManager::getString("wrepjson_clim_parameter")),
-	clim_step_(ParameterManager::getInt("wrepjson_clim_step")),
-	steps_(ParameterManager::getIntArray("wrepjson_steps")),
-	percentile_(ParameterManager::getDouble("wrepjson_y_axis_percentile")),
-	threshold_(ParameterManager::getDouble("wrepjson_y_axis_threshold")),
-	y_max_threshold_(ParameterManager::getDouble("wrepjson_y_max_threshold")),
-	correction_(ParameterManager::getBool("wrepjson_temperature_correction")),
-	missing_value_(ParameterManager::getDouble("wrepjson_missing_value"))
-{
-} 
-
-
-
-WrepJSonAttributes::~WrepJSonAttributes()
-{
-}
-
-    
-void WrepJSonAttributes::set(const std::map<string, string>& params)
-{
-	vector<string> prefix(1);
-	prefix[0] = "wrepjson";
-
-	setAttribute(prefix, "wrepjson_input_filename", path_, params);
-	setAttribute(prefix, "wrepjson_parameter_information", param_info_, params);
-	setAttribute(prefix, "wrepjson_product_information", product_info_, params);
-	setAttribute(prefix, "wrepjson_family", family_, params);
-	setAttribute(prefix, "wrepjson_plumes_interval", plumes_, params);
-	setAttribute(prefix, "wrepjson_information", information_, params);
-	setAttribute(prefix, "wrepjson_keyword", keyword_, params);
-	setAttribute(prefix, "wrepjson_station_name", station_name_, params);
-	setAttribute(prefix, "wrepjson_parameter", param_, params);
-	setAttribute(prefix, "wrepjson_parameter_scaling_factor", param_scaling_factor_, params);
-	setAttribute(prefix, "wrepjson_parameter_offset_factor", param_offset_factor_, params);
-	setAttribute(prefix, "wrepjson_clim_parameter", clim_param_, params);
-	setAttribute(prefix, "wrepjson_clim_step", clim_step_, params);
-	setAttribute(prefix, "wrepjson_steps", steps_, params);
-	setAttribute(prefix, "wrepjson_y_axis_percentile", percentile_, params);
-	setAttribute(prefix, "wrepjson_y_axis_threshold", threshold_, params);
-	setAttribute(prefix, "wrepjson_y_max_threshold", y_max_threshold_, params);
-	setAttribute(prefix, "wrepjson_temperature_correction", correction_, params);
-	setAttribute(prefix, "wrepjson_missing_value", missing_value_, params);
-}
-
-void WrepJSonAttributes::copy(const WrepJSonAttributes& other)
-{
-	path_ = other.path_;
-	param_info_ = other.param_info_;
-	product_info_ = other.product_info_;
-	family_ = other.family_;
-	plumes_ = other.plumes_;
-	information_ = other.information_;
-	keyword_ = other.keyword_;
-	station_name_ = other.station_name_;
-	param_ = other.param_;
-	param_scaling_factor_ = other.param_scaling_factor_;
-	param_offset_factor_ = other.param_offset_factor_;
-	clim_param_ = other.clim_param_;
-	clim_step_ = other.clim_step_;
-	steps_ = other.steps_;
-	percentile_ = other.percentile_;
-	threshold_ = other.threshold_;
-	y_max_threshold_ = other.y_max_threshold_;
-	correction_ = other.correction_;
-	missing_value_ = other.missing_value_;
-} 
-
-
-bool WrepJSonAttributes::accept(const string& node)
-{	
-	if ( magCompare(node, "wrepjson")  )
-		return true;
-	return false;
-}
-
-void WrepJSonAttributes::set(const XmlNode& node)
-{
-	if ( this->accept(node.name()) == false ) 
-		return;
-
-	if ( magCompare(node.name(), "wrepjson") )
-		set(node.attributes());
-	else {
-	}
-	for (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {
-	}
-}
-
-void WrepJSonAttributes::print(ostream& out)  const
-{
-	out << "WrepJSonAttributes[";
-	out << "path = " << path_;
-	out << ", param_info = " << param_info_;
-	out << ", product_info = " << product_info_;
-	out << ", family = " << family_;
-	out << ", plumes = " << plumes_;
-	out << ", information = " << information_;
-	out << ", keyword = " << keyword_;
-	out << ", station_name = " << station_name_;
-	out << ", param = " << param_;
-	out << ", param_scaling_factor = " << param_scaling_factor_;
-	out << ", param_offset_factor = " << param_offset_factor_;
-	out << ", clim_param = " << clim_param_;
-	out << ", clim_step = " << clim_step_;
-	out << ", steps = " << steps_;
-	out << ", percentile = " << percentile_;
-	out << ", threshold = " << threshold_;
-	out << ", y_max_threshold = " << y_max_threshold_;
-	out << ", correction = " << correction_;
-	out << ", missing_value = " << missing_value_;
-	out << "]" << "\n";
-}
-
-
-void WrepJSonAttributes::toxml(ostream& out)  const
-{
-     out <<  "\"wrepjson\"";
-	 out << ", \"wrepjson_input_filename\":";
-	 niceprint(out,path_);
-	 out << ", \"wrepjson_parameter_information\":";
-	 niceprint(out,param_info_);
-	 out << ", \"wrepjson_product_information\":";
-	 niceprint(out,product_info_);
-	 out << ", \"wrepjson_family\":";
-	 niceprint(out,family_);
-	 out << ", \"wrepjson_plumes_interval\":";
-	 niceprint(out,plumes_);
-	 out << ", \"wrepjson_information\":";
-	 niceprint(out,information_);
-	 out << ", \"wrepjson_keyword\":";
-	 niceprint(out,keyword_);
-	 out << ", \"wrepjson_station_name\":";
-	 niceprint(out,station_name_);
-	 out << ", \"wrepjson_parameter\":";
-	 niceprint(out,param_);
-	 out << ", \"wrepjson_parameter_scaling_factor\":";
-	 niceprint(out,param_scaling_factor_);
-	 out << ", \"wrepjson_parameter_offset_factor\":";
-	 niceprint(out,param_offset_factor_);
-	 out << ", \"wrepjson_clim_parameter\":";
-	 niceprint(out,clim_param_);
-	 out << ", \"wrepjson_clim_step\":";
-	 niceprint(out,clim_step_);
-	 out << ", \"wrepjson_steps\":";
-	 niceprint(out,steps_);
-	 out << ", \"wrepjson_y_axis_percentile\":";
-	 niceprint(out,percentile_);
-	 out << ", \"wrepjson_y_axis_threshold\":";
-	 niceprint(out,threshold_);
-	 out << ", \"wrepjson_y_max_threshold\":";
-	 niceprint(out,y_max_threshold_);
-	 out << ", \"wrepjson_temperature_correction\":";
-	 niceprint(out,correction_);
-	 out << ", \"wrepjson_missing_value\":";
-	 niceprint(out,missing_value_);
-}
-static MagicsParameter<string> wrepjson_input_filename("wrepjson_input_filename", "", "");
-static MagicsParameter<string> wrepjson_parameter_information("wrepjson_parameter_information", "", "");
-static MagicsParameter<string> wrepjson_product_information("wrepjson_product_information", "", "");
-static MagicsParameter<string> wrepjson_family("wrepjson_family", "eps", "");
-static MagicsParameter<double> wrepjson_plumes_interval("wrepjson_plumes_interval", 1, "");
-static MagicsParameter<string> wrepjson_information("wrepjson_information", "on", "");
-static MagicsParameter<string> wrepjson_keyword("wrepjson_keyword", "", "");
-static MagicsParameter<string> wrepjson_station_name("wrepjson_station_name", "", "");
-static MagicsParameter<string> wrepjson_parameter("wrepjson_parameter", "1", "");
-static MagicsParameter<double> wrepjson_parameter_scaling_factor("wrepjson_parameter_scaling_factor", 1, "");
-static MagicsParameter<double> wrepjson_parameter_offset_factor("wrepjson_parameter_offset_factor", 0, "");
-static MagicsParameter<string> wrepjson_clim_parameter("wrepjson_clim_parameter", "", "");
-static MagicsParameter<int> wrepjson_clim_step("wrepjson_clim_step", 36, "");
-static MagicsParameter<intarray> wrepjson_steps("wrepjson_steps", intarray(), "");
-static MagicsParameter<double> wrepjson_y_axis_percentile("wrepjson_y_axis_percentile", 1, "");
-static MagicsParameter<double> wrepjson_y_axis_threshold("wrepjson_y_axis_threshold", 50, "");
-static MagicsParameter<double> wrepjson_y_max_threshold("wrepjson_y_max_threshold", INT_MAX, "");
-static MagicsParameter<string> wrepjson_temperature_correction("wrepjson_temperature_correction", "off", "");
-static MagicsParameter<double> wrepjson_missing_value("wrepjson_missing_value", -9999, "");
diff --git a/src/web/json_spirit_reader.cpp b/src/web/json_spirit_reader.cpp
index deabd68..38c2e0c 100644
--- a/src/web/json_spirit_reader.cpp
+++ b/src/web/json_spirit_reader.cpp
@@ -55,7 +55,7 @@ bool Error_position::operator==( const Error_position& lhs ) const
 
     return ( reason_ == lhs.reason_ ) &&
            ( line_   == lhs.line_ ) &&
-           ( column_ == lhs.column_ ); 
+           ( column_ == lhs.column_ );
 }
 
 //
@@ -94,7 +94,7 @@ namespace
         const Char_type c2( *( ++begin ) );
 
         return ( hex_to_num( c1 ) << 4 ) + hex_to_num( c2 );
-    }       
+    }
 
     template< class Char_type, class Iter_type >
     Char_type unicode_str_to_char( Iter_type& begin )
@@ -104,19 +104,19 @@ namespace
         const Char_type c3( *( ++begin ) );
         const Char_type c4( *( ++begin ) );
 
-        return ( hex_to_num( c1 ) << 12 ) + 
-               ( hex_to_num( c2 ) <<  8 ) + 
-               ( hex_to_num( c3 ) <<  4 ) + 
+        return ( hex_to_num( c1 ) << 12 ) +
+               ( hex_to_num( c2 ) <<  8 ) +
+               ( hex_to_num( c3 ) <<  4 ) +
                hex_to_num( c4 );
     }
 
     template< class String_type >
-    void append_esc_char_and_incr_iter( String_type& s, 
-                                        typename String_type::const_iterator& begin, 
+    void append_esc_char_and_incr_iter( String_type& s,
+                                        typename String_type::const_iterator& begin,
                                         typename String_type::const_iterator end )
     {
         typedef typename String_type::value_type Char_type;
-             
+
         const Char_type c2( *begin );
 
         switch( c2 )
@@ -129,19 +129,19 @@ namespace
             case '\\': s += '\\'; break;
             case '/':  s += '/';  break;
             case '"':  s += '"';  break;
-            case 'x':  
+            case 'x':
             {
                 if( end - begin >= 3 )  //  expecting "xHH..."
                 {
-                    s += hex_str_to_char< Char_type >( begin );  
+                    s += hex_str_to_char< Char_type >( begin );
                 }
                 break;
             }
-            case 'u':  
+            case 'u':
             {
                 if( end - begin >= 5 )  //  expecting "uHHHH..."
                 {
-                    s += unicode_str_to_char< Char_type >( begin );  
+                    s += unicode_str_to_char< Char_type >( begin );
                 }
                 break;
             }
@@ -149,7 +149,7 @@ namespace
     }
 
     template< class String_type >
-    String_type substitute_esc_chars( typename String_type::const_iterator begin, 
+    String_type substitute_esc_chars( typename String_type::const_iterator begin,
                                    typename String_type::const_iterator end )
     {
         typedef typename String_type::const_iterator Iter_type;
@@ -157,7 +157,7 @@ namespace
         if( end - begin < 2 ) return String_type( begin, end );
 
         String_type result;
-        
+
         result.reserve( end - begin );
 
         const Iter_type end_minus_1( end - 1 );
@@ -172,7 +172,7 @@ namespace
                 result.append( substr_start, i );
 
                 ++i;  // skip the '\'
-             
+
                 append_esc_char_and_incr_iter( result, i, end );
 
                 substr_start = i + 1;
@@ -185,7 +185,7 @@ namespace
     }
 
     template< class String_type >
-    String_type get_str_( typename String_type::const_iterator begin, 
+    String_type get_str_( typename String_type::const_iterator begin,
                        typename String_type::const_iterator end )
     {
         assert( end - begin >= 2 );
@@ -207,7 +207,7 @@ namespace
     {
         return get_str_< wstring >( begin, end );
     }
-    
+
     template< class String_type, class Iter_type >
     String_type get_str( Iter_type begin, Iter_type end )
     {
@@ -222,7 +222,7 @@ namespace
     // NB Iter_type could be a std::string iterator, wstring iterator, a position iterator or a multipass iterator
     //
     template< class Value_type, class Iter_type >
-    class Semantic_actions 
+    class Semantic_actions
     {
     public:
 
@@ -255,7 +255,7 @@ namespace
         void begin_array( Char_type c )
         {
             assert( c == '[' );
-     
+
             begin_compound< Array_type >();
        }
 
@@ -347,9 +347,9 @@ namespace
             if( current_p_ != &value_ )
             {
                 current_p_ = stack_.back();
-                
+
                 stack_.pop_back();
-            }    
+            }
         }
 
         Value_type* add_to_current( const Value_type& value )
@@ -362,9 +362,9 @@ namespace
             {
                 current_p_->get_array().push_back( value );
 
-                return &current_p_->get_array().back(); 
+                return &current_p_->get_array().back();
             }
-            
+
             assert( current_p_->type() == obj_type );
 
             return &Config_type::add( current_p_->get_obj(), name_, value );
@@ -390,7 +390,7 @@ namespace
        throw reason;
     }
 
-    // the spirit grammer 
+    // the spirit grammer
     //
     template< class Value_type, class Iter_type >
     class Json_grammer : public grammar< Json_grammer< Value_type, Iter_type > >
@@ -441,14 +441,14 @@ namespace
             {
                 typedef typename Value_type::String_type::value_type Char_type;
 
-                // first we convert the semantic action class methods to functors with the 
+                // first we convert the semantic action class methods to functors with the
                 // parameter signature expected by spirit
 
-                typedef function< void( Char_type )            > Char_action;
-                typedef function< void( Iter_type, Iter_type ) > Str_action;
-                typedef function< void( double )               > Real_action;
-                typedef function< void( int64_t )              > Int_action;
-                typedef function< void( uint64_t )             > Uint64_action;
+                typedef boost::function< void( Char_type )            > Char_action;
+                typedef boost::function< void( Iter_type, Iter_type ) > Str_action;
+                typedef boost::function< void( double )               > Real_action;
+                typedef boost::function< void( int64_t )              > Int_action;
+                typedef boost::function< void( uint64_t )             > Uint64_action;
 
                 Char_action   begin_obj  ( bind( &Semantic_actions_t::begin_obj,   &self.actions_, _1 ) );
                 Char_action   end_obj    ( bind( &Semantic_actions_t::end_obj,     &self.actions_, _1 ) );
@@ -470,16 +470,16 @@ namespace
                     ;
 
                 value_
-                    = string_[ new_str ] 
-                    | number_ 
-                    | object_ 
-                    | array_ 
-                    | str_p( "true" ) [ new_true  ] 
-                    | str_p( "false" )[ new_false ] 
+                    = string_[ new_str ]
+                    | number_
+                    | object_
+                    | array_
+                    | str_p( "true" ) [ new_true  ]
+                    | str_p( "false" )[ new_false ]
                     | str_p( "null" ) [ new_null  ]
                     ;
 
-                object_ 
+                object_
                     = ch_p('{')[ begin_obj ]
                     >> !members_
                     >> ( ch_p('}')[ end_obj ] | eps_p[ &throw_not_object ] )
@@ -505,20 +505,20 @@ namespace
                     = value_ >> *( ',' >> value_ )
                     ;
 
-                string_ 
+                string_
                     = lexeme_d // this causes white space inside a string to be retained
                       [
                           confix_p
-                          ( 
-                              '"', 
+                          (
+                              '"',
                               *lex_escape_ch_p,
                               '"'
-                          ) 
+                          )
                       ]
                     ;
 
                 number_
-                    = strict_real_p[ new_real   ] 
+                    = strict_real_p[ new_real   ]
                     | int64_p      [ new_int    ]
                     | uint64_p     [ new_uint64 ]
                     ;
@@ -536,9 +536,9 @@ namespace
     Iter_type read_range_or_throw( Iter_type begin, Iter_type end, Value_type& value )
     {
         Semantic_actions< Value_type, Iter_type > semantic_actions( value );
-     
-        const parse_info< Iter_type > info = parse( begin, end, 
-                                                    Json_grammer< Value_type, Iter_type >( semantic_actions ), 
+
+        const parse_info< Iter_type > info = parse( begin, end,
+                                                    Json_grammer< Value_type, Iter_type >( semantic_actions ),
                                                     space_p );
 
         if( !info.hit )
@@ -557,7 +557,7 @@ namespace
 
         const Posn_iter_t posn_begin( begin, end );
         const Posn_iter_t posn_end( end, end );
-     
+
         read_range_or_throw( posn_begin, posn_end, value );
     }
 
diff --git a/src/xml/ActionRoutines.xml b/src/xml/ActionRoutines.xml
deleted file mode 100644
index 729ff42..0000000
--- a/src/xml/ActionRoutines.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<actionroutine name='pcont' root_object='Contour' xml='contour'>
-  <documentation>
-    This action routine adds contours to a plot. Its parameters control the
-    plotting of isolines and high/low markers.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pcoast' root_object='Coastlines' xml='coastlines'>
-  <documentation>
-    This action routine adds coastlines to a plot. Its parameters control the
-    plotting of coastlines and latitude/longitude grids and labels.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pwind' root_object='Wind' xml='wind'>
-  <documentation>
-    This action routine adds wind symbols to a plot. Its parameters control 
-    all aspects of wind plotting.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pobs' root_object='ObsPlotting' xml='observation'>
-  <documentation>
-    This action routine adds observation symbols to a plot.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='psymb' root_object='SymbolPlotting' xml='symbol'>
-  <documentation>
-    This action routine adds symbols to a plot.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pgraph' root_object='GraphPlotting' xml='graph'>
-  <documentation>
-    This action routine plots graphs such as curves.
-  </documentation>
-</actionroutine>
-
-<actionroutine name='pboxplot' root_object='BoxPlotVisualiser' xml='boxplot'>
-  <documentation>
-    This action routine plots boxplots.
-  </documentation>
-</actionroutine>
-
-<actionroutine name='ptaylor' root_object='TaylorProjection' xml='taylor'>
-  <documentation>
-    This action routine plots Taylor diagrams.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pline' root_object='SimplePolyline' xml='pline'>
-  <documentation>
-    This action routine plots (optionally filled) polylines over geographical
-    areas.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='ptext' root_object='TextVisitor' xml='text'>
-  <documentation>
-    This action routine adds text to a plot. Its parameters control all
-    aspects of the text, whether it is for titles or annotations.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pimage' root_object='ImagePlotting' xml='image'>
-  <documentation>
-    This action routine controls the plotting of satellite images.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pnew(SUPER_PAGE)' root_object='FortranRootSceneNode' xml='superpage'>
-  <documentation>
-    This action routine controls the superpage layout.
-  </documentation>
-</actionroutine>
-
-<actionroutine name='pnew(PAGE)' root_object='FortranSceneNode' xml='page'>
-  <documentation>
-    This action routine controls the page layout.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pnew(SUBPAGE)' root_object='FortranViewNode' xml='subpage'>
-  <documentation>
-    This action routine controls the subpage layout.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='pnetcdf' root_object='NetcdfDecoder' xml='netcdf'>
-  <documentation>
-    This action routine controls the handling of netcdf files.
-  </documentation>
-</actionroutine>
-
-
-<!--
-<actionroutine name='podb' root_object='OdbDecoder' xml='odb'>
-  <documentation>
-    This action routine controls the handling of odb data.
-  </documentation>
-</actionroutine>
--->
-
-<actionroutine name='pgrib' root_object='GribDecoder' xml='grib'>
-  <documentation>
-    This action routine controls the handling of grib data.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='paxis' root_object='Axis' xml='axis'>
-  <documentation>
-    This action routine controls the plotting of axes
-  </documentation>
-</actionroutine>
-
-
-
-<actionroutine name='pmetgram' root_object='ClassicMtgDecoder' xml='metgram'>
-  <documentation>
-    This action routine plots a classic metgram.
-  </documentation>
-</actionroutine>
-
-<actionroutine name='peps' root_object='EpsgramDecoder' xml='eps'>
-  <documentation>
-    This action routine plots an EPS metgram.
-  </documentation>
-</actionroutine>
-
-<actionroutine name='legend' root_object='LegendVisitor' xml='legend'>
-  <documentation>
-    These parameters control the plotting of legends.
-  </documentation>
-</actionroutine>
-
-
-<actionroutine name='input_matrix' root_object='InputMatrix' xml='matrix'>
-  <documentation>
-    Parameters to set input data.
-  </documentation>
-</actionroutine>
-
-
-<!--
-<actionroutine name='pinfo' root_object='' xml='info'>
-  <documentation>
-    This action routine prints data about the used version of magics and its host.
-  </documentation>
-</actionroutine>
--->
-</magics>
diff --git a/src/xml/Akima.xml b/src/xml/Akima.xml
deleted file mode 100644
index 75ba53c..0000000
--- a/src/xml/Akima.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='Akima761Method' action='pcont' inherits='ContourMethod' used_by='ContourTechnique' directory='visualisers'>
-  <documentation>
-  Generates contour lines from an irregularly-distributed set of points.
-  </documentation>
-  
-  <parameter name='contour_akima_x_resolution' from='float' to='float'
-             member='resolutionX' default='1.5' xml='x_resolution'>
-         <documentation> X Resolution of the Akima output matrix </documentation>
-         <migration> New Magics: Parameter resolutionX sent to new Magics[AKIMA760].  </migration>
-         <release>Magics++0.1</release>
-         <related_info> url_path </related_info>
-  </parameter>
-  
-  <parameter name='contour_akima_y_resolution' from='float' to='float'
-             member='resolutionY' default='1.5' xml='y_resolution'>
-         <documentation> Y Resolution of the Akima output matrix </documentation>
-         <migration> New Magics: Parameter resolutionY sent to new Magics[AKIMA760].  </migration>
-         <release>Magics++0.1</release>
-         <related_info> url_path </related_info>
-  </parameter>
-</class>
-<class name='Akima760Method' action='pcont' inherits='ContourMethod' used_by='ContourTechnique' directory='visualisers'>
-  <documentation>
-  Generates contour lines from a regular/irregular grid of data points.
-  First a denser regular grid is created based on the original grid and then
-  the isolines are produced by applying a simple linear contouring algorithm.
-  The user may, by calling the parameter setting routines, 
-  select the interpolation level which defines the density of the output 
-  grid, which then determines the smoothness of the isolines.
-  </documentation>
-  <parameter name='contour_akima_x_resolution' from='float' to='float'
-             member='resolutionX' default='1.5' xml='x_resolution'>
-         <documentation>X resolution of Akima interpolation</documentation>
-         <migration> New Magics: Parameter resolutionX sent to new Magics[AKIMA760].  </migration>
-         <release>Magics++0.1</release>
-         <related_info> url_path </related_info>
-  </parameter>
-  <parameter name='contour_akima_y_resolution' from='float' to='float'
-             member='resolutionY' default='1.5' xml='y_resolution'>
-         <documentation>Y resolution of Akima interpolation</documentation>
-         <migration> New Magics: Parameter resolutionY sent to new Magics[AKIMA760].  </migration>
-         <release>Magics++0.1</release>
-         <related_info> url_path </related_info>
-  </parameter>
-</class>
-
-<class name='Akima474Method' xmltag='akima474'  prefix='akima' action='pcont' inherits='ContourMethod' used_by='ContourTechnique' directory='visualisers'>
-  <documentation>
-  Generates contour lines from a regular/irregular grid of data points.
-  First a denser regular grid is created based on the original grid and then
-  the isolines are produced by applying a simple linear contouring algorithm.
-  The user may, by calling the parameter setting routines, 
-  select the interpolation level which defines the density of the output  
-  grid, which then determines the smoothness of the isolines.
-  </documentation>
-  <parameter name='contour_akima_x_resolution' xml='x_resolution' from='float' to='float'
-             member='resolutionX' default='1.5'>
-         <documentation> X Resolution </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  <parameter name='contour_akima_y_resolution' xml='y_resolution' from='float' to='float'
-             member='resolutionY' default='1.5'>
-         <documentation> Y Resolution </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-</class>
-</magics>
diff --git a/src/xml/Axis.xml b/src/xml/Axis.xml
deleted file mode 100644
index 0612b96..0000000
--- a/src/xml/Axis.xml
+++ /dev/null
@@ -1,372 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='Axis' directory='visualisers'  xmltag='axis' metview='maxis'>
-  <documentation> This object creates an axis for non-geographical plots. </documentation>
- <parameter name='axis_orientation' from='string' to='string' member='orientation' 
- 	default='horizontal' values='horizontal/vertical'>
-         <documentation> Orientation of axis  </documentation>
-  </parameter>
- <parameter name='axis_position' from='string' to='string' member='position' default='automatic' values='bottom/top/left/right/automatic'>
-         <documentation> Position of the axes  </documentation>
-        
-  </parameter>
-
-  <parameter name='axis_type' from='string' to='AxisMethod' member='method' default='regular' >
-         <documentation> Method to position ticks on an axis  </documentation>
-         <option name='AxisMethod' fortran='regular' xml='regular' include='AxisMethod.h'/>
-         <option name='PositionListAxisMethod' fortran='position_list' xml='position_list' include='AxisMethod.h'/>
-         <option name='LogarithmicAxisMethod' fortran='logarithmic' xml='logarithmic' include='AxisMethod.h'/>
-         <option name='DateAxisMethod' fortran='date' xml='date' include='DateAxis.h'/> 
-         <option name='HyperAxisMethod' fortran='geoline' xml='geoline' include='AxisMethod.h'/>
-         <set value='position_list' name='axis_tick_position_list'/>
-         <set value='regular' name='axis_tick_interval'/> 
-         <set value='geoline' name='axis_tick_interval'/> 
-         <set value='date' name='axis_tick_interval'/> 
-  </parameter>
-  
-   <parameter name='axis_tick_interval' from='float' to='float' member='interval' xml='interval' default='INT_MAX' >
-         <documentation> Interval between ticks in user units </documentation>
-         <migration>Default changed from '1/7 of axis length' to'INT_MAX' </migration>
-  </parameter>
-  
-   <parameter name='axis_tick_position_list' from='floatarray' to='floatarray' member='positions' xml='position_list' default='floatarray()'>
-         <documentation> Array specifying the positions of ticks (in user coordinates!)</documentation>    
-         <migration>Units have changed from 'cm' to user coordinates</migration>
-  </parameter>
-
-  <parameter name='axis_line' from='string' to='bool' member='line' default='on' >
-         <documentation> Plot the axis line </documentation>  
-         <set value='on' name='axis_line_colour'/>
-         <set value='on' name='axis_line_style'/>
-         <set value='on' name='axis_line_thickness'/>
-             
-  </parameter>
-   <parameter name='axis_line_colour' from='string' to='Colour' member='line_colour' default='automatic'>
-         <documentation> Colour of axis line</documentation>
-  </parameter>
-  <parameter name='axis_line_style' from='string' to='LineStyle' member='line_style'  default='solid'>
-         <documentation> Line Style of axis line </documentation>
-  </parameter>
- 
-
-  <parameter name='axis_line_thickness' from='int' to='int' member='line_thickness'  default='2'>
-         <documentation>Thickness of axis line </documentation>
-  </parameter>
-  
-  
-
-
-  <parameter name='axis_grid' from='string' to='bool' member='grid'  default='off' >
-         <documentation> Plot axis grid lines </documentation>
-         <set value='on' name='axis_grid_colour'/>
-         <set value='on' name='axis_grid_line_style'/>
-         <set value='on' name='axis_grid_thickness'/>
-         <set value='on' name='axis_grid_reference_level'/>
-         <set value='on' name='axis_grid_reference_colour'/>
-         <set value='on' name='axis_grid_reference_line_style'/>  
-         <set value='on' name='axis_grid_reference_thickness'/>
-  </parameter>
- <parameter name='axis_grid_colour' from='string' to='Colour' member='grid_colour' default='yellow' >
-         <documentation>Colour of grid lines</documentation>
-         <migration>2.13.5 - Default changed fronm YELLOW to BLACK</migration>
-  </parameter>
- <parameter name='axis_grid_line_style' from='string' to='LineStyle' member='grid_style'  default='solid'>
-         <documentation> Line style of grid  </documentation>
-  </parameter>
-  
-  <parameter name='axis_grid_thickness' from='int' to='int' member='grid_thickness'  default='1'>
-         <documentation> Thickness of grid lines </documentation>
-  </parameter>
-  <parameter name='axis_grid_reference_level' from='float' to='float' member='grid_reference_level'  default='INT_MAX'>
-         <documentation> value to be used as reference for the grid</documentation> 
-  </parameter>
- <parameter name='axis_grid_reference_colour' from='string' to='Colour' member='grid_reference_colour' default='automatic' >
-         <documentation> Colour of the reference  grid line</documentation>
-  </parameter>
-  <parameter name='axis_grid_reference_line_style' from='string' to='LineStyle' member='grid_reference_style'  default='solid'>
-         <documentation> Line style of the reference  grid line  </documentation>
-  </parameter>
-  <parameter name='axis_grid_reference_thickness' from='int' to='int' member='grid_reference_thickness'  default='2'>
-         <documentation> Thickness of the reference grid line </documentation>
-  </parameter>
-
-  <parameter name='axis_title' from='string' to='bool' member='title' default='on' >
-         <documentation> Plot axis title  </documentation>
-		<set value='on' name ='axis_title_text'/>   
-		<set value='on' name ='axis_title_orientation'/>   
-		<set value='on' name ='axis_title_colour'/> 
-		<set value='on' name ='axis_title_height'/> 
-		<set value='on' name ='axis_title_font'/> 
-		<set value='on' name ='axis_title_font_style'/>          
-  </parameter>
-  
-  <parameter name='axis_title_text' from='string' to='string' member='title_text'  xml='text' default='' >
-         <documentation> The axis title text </documentation>
-  </parameter>
-  <parameter name='axis_title_orientation' from='string' to='string' member='title_orientation' xml='title_orientation' default='parallel' >
-         <documentation> Orientation of the axis title (HORIZONTAL/VERTICAL/PARALLEL) </documentation>
-  </parameter>
-  
- <parameter name='axis_title_colour' from='string' to='Colour' member='title_colour' default='automatic' >
-         <documentation> Colour of axis title</documentation>
-  </parameter>
-
-  <parameter name='axis_title_height' from='float' to='float' member='title_height' default='0.4'>
-         <documentation> Height of axis title</documentation>
-  </parameter>
-
-
-  <parameter name='axis_title_font' from='string' to='string' member='title_font'  default='sansserif'>
-         <documentation>Font of axis title </documentation>
-  </parameter>
-
-  <parameter name='axis_title_font_style' from='string' to='string' member='title_font_style'  default='normal'  >
-         <documentation>Font style of axis title </documentation>
-  </parameter>
-  
- 
-  <parameter name='axis_tick' from='string' to='bool' member='tick' default='on'>
-         <documentation> Plot ticks </documentation>
-          <set value='on' name='axis_tick_interval'/>  
-          <set value='on' name='axis_tick_position'/>
-  		  <set value='on' name='axis_tick_colour'/>
-  		  <set value='on' name='axis_tick_size'/>
-  		  <set value='on' name='axis_tick_thickness'/>  
-  </parameter>
- <parameter name='axis_tick_position' from='string' to='string' member='tick_position'  default='out' values='out/in' >
-         <documentation> Tick position, if in the ticks will positioned inside the frame.</documentation>
-  </parameter>
- 
-  <parameter name='axis_tick_colour' from='string' to='Colour' member='tick_colour'  default='automatic' >
-         <documentation> Colour of ticks</documentation>
-  </parameter>
-
-  <parameter name='axis_tick_size' from='float' to='float' member='tick_length'  default='0.175'>
-         <documentation> Size of ticks </documentation>
-  </parameter>
-
-  <parameter name='axis_tick_thickness' from='int' to='int' member='tick_thickness' xml='thickness' default='2'>
-         <documentation> Thickness of tick marks </documentation>
-  </parameter>
-   <parameter name='axis_tick_label' from='string' to='bool' member='label'  default='on'>
-         <documentation> Plot tick labels (ON/OFF) </documentation>
-  		  <set value='on' name='axis_tick_label_type'/>
-  		  <set value='on' name='axis_tick_label_frequency'/>
-  		  <set value='on' name='axis_tick_label_first'/>
-  		  <set value='on' name='axis_tick_label_last'/>   		 
-  		  <set value='on' name='axis_tick_label_position'/>
-  		  <set value='on' name='axis_tick_label_orientation'/> 
-  		  <set value='on' name='axis_tick_label_font'/>
-  		  <set value='on' name='axis_tick_label_font_style'/> 
-  		  <set value='on' name='axis_tick_label_colour'/>
-  		  <set value='on' name='axis_tick_label_height'/> 
-  		  
-  </parameter> 
-
-  
-  <parameter name='axis_tick_label_type' from='string' to='string' member='label_type' default='number' values='number/label_list/latitude/longitude'>
-        <documentation> Type of tick labels required  </documentation>
-        <set value='label_list' name='axis_tick_label_list'/>
-        <set value='number' name='axis_tick_label_format'/>
-  </parameter>
-  
-  <parameter name='axis_tick_label_frequency' from='int' to='int' member='label_frequency'  default='1'>
-         <documentation> Label every nth tick mark </documentation>
-  </parameter>
-  
-  <parameter name='axis_tick_label_first' from='string' to='bool' member='label_first' default='on' xml='first_label'>
-         <documentation> Turn off first (left or bottom) tick label  </documentation>
-  </parameter>
-
-  <parameter name='axis_tick_label_last' from='string' to='bool' member='label_last' xml='last_label' default='on'>
-         <documentation> Turn off last (right or top) tick label  </documentation>
-  </parameter>
-  
-  <parameter name='axis_tick_label_position' from='string' to='string' member='label_position'  default='on_tick' values='on_tick/inter_tick'>
-         <documentation> Position labels on or between ticks </documentation>
-  </parameter>
-  <parameter name='axis_tick_label_orientation' from='string' to='string' member='label_orientation' default='horizontal'  values='horizontal/vertical/parallel'>
-         <documentation> Orientation of the tick labels</documentation>
-  </parameter>
-  
-  <parameter name='axis_tick_label_font' from='string' to='string' member='label_font' xml='font' default='sansserif'>
-	<documentation>Font name - please make sure this font is installed!</documentation>
-  </parameter> 
-  
-  <parameter name='axis_tick_label_font_style' from='string' to='string' member='label_font_style' default=''>
-	<documentation>Font style. Set this to an empty string in order to remove all styling.</documentation>
-  </parameter>
-   <parameter name='axis_tick_label_colour' from='string' to='Colour' member='label_colour'  default='automatic' xml='colour'>
-         <documentation> Colour of tick labels</documentation>
-  </parameter>
-  <parameter name='axis_tick_label_height' from='float' to='float' member='label_height' xml='height' default='0.3'>
-         <documentation> Height of tick labels </documentation>
-  </parameter>
-  <parameter name='axis_tick_label_list' from='stringarray' to='stringarray' member='label_labels' xml='list' default='stringarray()' >
-         <documentation> Array for passing user defined tick labels </documentation>
-  </parameter>
-  <parameter name='axis_tick_label_format' from='string' to='string' member='label_format' xml='format' default='(automatic)'>
-         <documentation> Format of tick label values  </documentation>
-  </parameter>
-  <parameter name='axis_minor_tick' from='string' to='bool' member='minor_tick' default='off'>
-         <documentation> Plot minor ticks (ON/OFF) </documentation>
-        <set value='on' name='axis_minor_tick_count'/>
-        <set value='on' name='axis_minor_tick_colour'/>
-        <set value='on' name='axis_minor_tick_thickness'/>
-  </parameter>
-  
-  <parameter name='axis_minor_tick_count' from='int' to='int' member='minor_tick_count'  default='2'>
-         <documentation> Number of minor tick marks between two ticks </documentation>
-  </parameter>
-  
-  <parameter name='axis_minor_tick_colour' from='string' to='Colour' member='minor_tick_colour' default='automatic' >
-         <documentation> Colour of minor ticks</documentation>
-  </parameter>
-  <parameter name='axis_minor_tick_thickness' from='int' to='int' member='minor_tick_thickness' xml='thickness' default='1'>
-         <documentation> Thickness of minor ticks</documentation>
-  </parameter>
-  
-  <parameter name='axis_tip_title' from='string' to='bool' member='tip' default='off' include="AxisTip.h">
-         <documentation> Plot ticks (ON/OFF) </documentation>
-         <set value='on' name='axis_tip_title_text'/>
-         <set value='on' name='axis_tip_title_colour'/>
-         <set value='on' name='axis_tip_title_height'/>
-         <set value='on' name='axis_tip_title_quality'/>
-          
-  </parameter>
-   <parameter name='axis_tip_title_text' from='string' to='string' member='tip_text'  default=' '>
-         <documentation>Text to show in the tip</documentation>
-  </parameter>
- <parameter name='axis_tip_title_colour' from='string' to='Colour' member='tip_colour'  default='automatic' >
-   <documentation>Coloour of the tip</documentation>      
-  </parameter>
-
-  <parameter name='axis_tip_title_height' from='float' to='float' member='tip_height' default='0.4' >
-         <documentation>font size of the tip</documentation>
-  </parameter>
-
-  <parameter name='axis_tip_title_quality' from='string' to='string' member='tip_quality' default='medium' values='high/medium/low' >
-         <documentation>Quality of the font </documentation>
-  </parameter>
-
- 
-</class>
-
-
-
-
-
-
-
-
-<class name='AxisMethod' directory='visualisers' include='AxisMethod.h'/>
-
-
-
-<class name='DateAxisMethod' xmltag='date' prefix='axis/axis_date'  inherits='AxisMethod'  directory='visualisers' include='DateAxis.h'>
-
-  <parameter name='axis_date_type' from='string' to='string' member='method' default='days' values='automatic/years/months/days/hours'>
-         <documentation> Select the type of date axis. </documentation>
-       
-  </parameter>
-
- <parameter name='axis_years_label' from='string' to='bool' member='years' default='on'>
-         <documentation> controls the labeling of the years </documentation>   
-         <set value='on' name='axis_years_label_colour'/>
-         <set value='on' name='axis_years_label_quality'/>    
-         <set value='on' name='axis_years_label_height'/>         
-  </parameter> 
-  
-  <parameter name='axis_years_label_colour' from='string' to='Colour' member='year_colour' default='automatic' xml='colour' >
-         <documentation> Label colour for 'YEARS' </documentation> 
-  </parameter>
-
-  <parameter name='axis_years_label_quality' from='string' to='string' member='year_quality' xml='quality' default='medium '>
-         <documentation>Label quality (HIGH/MEDIUM/LOW)  </documentation>
-  </parameter>
-  
-  <parameter name='axis_years_label_height' from='float' to='float' member='year_height' xml='height' default='0.2'>
-         <documentation> Label height for 'YEARS'  </documentation>
-  </parameter>
-  
- <parameter name='axis_months_label' from='string' to='bool' include='MonthDateAxis.h' member='months' default='on'>
-         <documentation> controls the labeling of the months </documentation>      
-         <set value='on' name='axis_months_label_composition'/>
-         <set value='on' name='axis_months_label_colour'/>
-         <set value='on' name='axis_months_label_quality'/>    
-         <set value='on' name='axis_months_label_height'/>   
-  </parameter> 
-  <parameter name='axis_months_label_composition' from='string' to='string' member='month_composition' default='three' values='one/two/three'>
-          <documentation> Number of letters per month to plot  </documentation>
-  </parameter>
-  
-  <parameter name='axis_months_label_colour' from='string' to='Colour' member='month_colour' xml='colour' default='automatic'>
-         <documentation> Label colour for months </documentation>
-  </parameter>
-
-  <parameter name='axis_months_label_quality' from='string' to='string' member='month_quality' xml='quality' default='medium'>
-         <documentation> Label quality for months (HIGH/MEDIUM/LOW)  </documentation>
-  </parameter>
-
-  <parameter name='axis_months_label_height' from='float' to='float' member='month_height' xml='height' default='0.2'>
-         <documentation> Label height for months  </documentation>
-  </parameter>
-
-  
-  
-  <parameter name='axis_days_label' from='string' to='string' member='days' default='both' 
-  		values='day/number/both/off' >
-         <documentation> controls the labeling of the hours </documentation>
-         <set value='on' name='axis_days_label_composition'/>
-         <set value='on' name='axis_days_label_colour'/> 
-         <set value='on' name='axis_days_sunday_label_colour'/>
-         <set value='on' name='axis_days_label_quality'/>    
-         <set value='on' name='axis_hours_label_height'/> 
-  </parameter>
-  
-  <parameter name='axis_days_label_composition' from='string' to='string' member='day_composition' default='three' 
-  		values='one/three/full'>
-      <documentation>  Number of letters per days to plot </documentation>   
-  </parameter>
-  
-  <parameter name='axis_days_label_colour' from='string' to='Colour' member='day_colour' default='black' >
-         <documentation> Label quality for days </documentation>
-  </parameter>
-  <parameter name='axis_days_sunday_label_colour' from='string' to='Colour' member='sunday_colour' default='red' >
-         <documentation> Label quality for days </documentation>
-  </parameter>
-  <parameter name='axis_days_label_quality' from='string' to='string' member='day_quality' xml='quality' default='medium' >
-         <documentation> Label quality for days </documentation>
-  </parameter>
-  
-  <parameter name='axis_days_label_height' from='float' to='float' member='day_height' default='0.2'>
-         <documentation> Label height for  days </documentation>
-  </parameter>
-
-  <parameter name='axis_hours_label' from='string' to='bool' member='hours' default='off'>
-         <documentation> controls the labeling of the hours </documentation>    
-		 <set value='on' name='axis_hours_label_colour'/>
-         <set value='on' name='axis_hours_label_quality'/>    
-         <set value='on' name='axis_hours_label_height'/>    
-  </parameter>  
-   <parameter name='axis_hours_label_colour' from='string' to='Colour' member='hour_colour' default='black' >
-         <documentation> Label quality for hours </documentation>
-  </parameter>
-  <parameter name='axis_hours_label_quality' from='string' to='string' member='hour_quality' xml='quality' default='medium' >
-         <documentation> Label quality for hours </documentation>
-  </parameter>
-  
-  <parameter name='axis_hours_label_height' from='float' to='float' member='hour_height' default='0.2'>
-         <documentation> Label height for  hours </documentation>
-  </parameter>
- 
-</class>  
- 
-
-<class name='PositionListAxisMethod' directory='visualisers' inherits='AxisMethod'  include='AxisMethod.h'/>
-<class name='LogarithmicAxisMethod' directory='visualisers' inherits='AxisMethod' include='AxisMethod.h'/>
-<class name='HyperAxisMethod' directory='visualisers' inherits='AxisMethod' include='AxisMethod.h' />
-      
-
-
-</magics>
diff --git a/src/xml/BaseDriver.xml b/src/xml/BaseDriver.xml
deleted file mode 100644
index ce438a7..0000000
--- a/src/xml/BaseDriver.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='BaseDriver' xmltag='driver' directory='drivers' prefix='output' abstract='yes'>
-<documentation for_docs='no'>
-  These parameters are common to all the output drivers and can be used whichever output format is selected.
-</documentation>
-
-<parameter name='output_title' from='string' to='string' member='title' default='Magics++ plot'>
-    <documentation>Defines a title for the output which gets displayed if the format supports it.</documentation>
-</parameter>
-
-<!--
-<parameter name='output_units' from='string' to='string' member='units' default='cm'>
-  <documentation>Units system used to define the document's dimension: Could be pixel or cm... </documentation>
-</parameter>
--->
-
-
-<!--
-<parameter name='output_size' from='string' to='string' member='size' default='none'>
-  <documentation>Defines the dimension of the (graphical) output ("a4", "a3", "800x550", "24.1x14.6cm").</documentation>
-</parameter>
--->
-
-<parameter name='output_name' from='string' to='string' member='name' default=''>
-    <documentation>Defines the root of output filename.</documentation>
-</parameter>
-
-<parameter name='output_name_first_page_number' from='string' to='bool' member='firstnumber' default='on'>
-  <documentation>Determines whether, for the first page of multipage output, the number is included in the filename. </documentation>
-</parameter>
-
-<parameter name='output_fullname' from='string' to='string' member='fullname' default='' >
-  <documentation>Alternative way of specifying the output filename. Will be overwritten by output_name if defined.</documentation>
-</parameter>
-
-<parameter name='output_legacy_name' from='string' to='string' member='legacyname' default='' visible='no'>
-  <documentation>Alternative way of specifying the output filename. Will be overwritten by output_name if defined.</documentation>
-</parameter>
-
-<parameter name='output_file_minimal_width' from='int' to='int' member='numberingwidth' default='1'>
-  <documentation>Width of numbering of multi-file outputs (eg, 'plot.1.png' or 'plot.001.png').</documentation>
-</parameter>
-
-<parameter name='output_file_separator' from='string' to='string' member='separator' default='.'>
-  <documentation>Defines the separator between root name and the page number. Default is a dot.</documentation>
-</parameter>
-
-<parameter name='output_mgb_template' from='string' to='string' member='mgb_template' default='' visible='no'>
-  <documentation for_docs='no'>Path to the magics binary file to be used as a template </documentation>
-</parameter>
-
-<parameter name='output_debug' from='string' to='bool' member='debug' default='off'>
-  <documentation>Defines if extra debug information are written in the output file (PS, EPS, SVG) or console (GIF/PNG).</documentation>
-  <release>2.1</release>        
-</parameter>
-<parameter name='output_width' from='int' to='int' member='width' default='800'>
-  <documentation>Defines the width of the image in pixels.(For GD and SVG)</documentation>
-</parameter>
-<parameter name='output_resolution' from='int' to='int' member='resolution' default='300'>
-  <documentation>Defines the resolution of the (graphical) output in dpi (72 - screen, 300 - print).</documentation>
-</parameter>
-
-<parameter name='output_filelist' from='string' to='bool' member='filelist' default='off'>
- <documentation>Defines if a list of all generated files should be written.</documentation>
- <set value='on' name='output_filelist_name'/>
- <release>2.7.10</release>
-</parameter>   
-
-<parameter name='output_filelist_name' from='string' to='string' member='filelist_name' default='magics_outputs.lst'>
- <documentation>Defines the name of the file containing the list of generated files.</documentation>
- <release>2.7.10</release>
-</parameter>
- 
- <parameter name='output_frame_list' from='intarray' to='intarray' member='frame_list' default='intarray()' visible='no'>
- <documentation for_docs='no'>Defines the list of frames to plot ( if empty, all the frames will be plotted!).</documentation>
- </parameter>
-</class>
-</magics>
diff --git a/src/xml/BinaryDriver.xml b/src/xml/BinaryDriver.xml
deleted file mode 100644
index 4abccba..0000000
--- a/src/xml/BinaryDriver.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<!--
- ******************************** LICENSE ********************************
- 
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- ******************************** LICENSE ********************************
--->
-<magics>
-<class name='BinaryDriver' action='Binary' directory='drivers' inherits='BaseDriver'>
-	<documentation>
-		These are the attributes of the Binary output driver. This driver is still in the developing stage! 
-	</documentation>
-<!--
-	<parameter name='' from='string' to='string' member='' default='' xml=''>
-            <documentation></documentation>
-        </parameter>
--->
-</class>
-</magics>
-
diff --git a/src/xml/BinningObject.xml b/src/xml/BinningObject.xml
deleted file mode 100644
index 1fa8c5d..0000000
--- a/src/xml/BinningObject.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='BinningObject' action='pbinning' directory='decoders' xmltag='binning' prefix='binning' >
-	<documentation>
-		This is responsible for accessing biining data .. scattered data can displayed as matrix! 
-	</documentation>
-     
-	    <parameter name='binning_x_method' from='string' to='string'
-	       member='x' default ='count' >
-	    <documentation>Method to compute binns : count/list/interval </documentation>
-    </parameter>
-    <parameter name='binning_x_min_value' from='float' to='float'
-	       member='x_min' default ='-1.0e+21' >
-	    <documentation>Min value used to compute the binns  </documentation>
-    </parameter>
-     <parameter name='binning_x_max_value' from='float' to='float'
-	       member='x_max' default ='1.0e+21' >
-	    <documentation>Max value used to compute the binns  </documentation>
-    </parameter>
-    
-    <parameter name='binning_x_count' from='int' to='int'
-	       member='x_count' default ='10' >
-	    <documentation>Aprroximate number on binns when using the count method  </documentation>
-    </parameter> 
-    
-    <parameter name='binning_x_list' from='floatarray' to='floatarray'
-	       member='x_list' default ='floatarray()' >
-	    <documentation>list of binns when using the list method </documentation>
-    </parameter>
-    
-     <parameter name='binning_x_interval' from='float' to='float'
-	       member='x_interval' default ='10' >
-	    <documentation>list of binns when using the interval method </documentation>
-    </parameter>
-	
-	<parameter name='binning_x_reference' from='float' to='float'
-	       member='x_reference' default ='0' >
-	    <documentation> list of binns when using the interval method </documentation>
-    </parameter>
-	    <parameter name='binning_y_method' from='string' to='string'
-	       member='y' default ='count' >
-	    <documentation>Method to compute binns : count/list/interval </documentation>
-    </parameter>
-    <parameter name='binning_y_min_value' from='float' to='float'
-	       member='y_min' default ='-1.0e+21' >
-	    <documentation>Min value used to compute the binns  </documentation>
-    </parameter>
-     <parameter name='binning_y_max_value' from='float' to='float'
-	       member='y_max' default ='1.0e+21' >
-	    <documentation>Max value used to compute the binns  </documentation>
-    </parameter>
-    
-    <parameter name='binning_y_count' from='int' to='int'
-	       member='y_count' default ='10' >
-	    <documentation>Aprroximate number on binns when using the count method  </documentation>
-    </parameter> 
-    
-    <parameter name='binning_y_list' from='floatarray' to='floatarray'
-	       member='y_list' default ='floatarray()' >
-	    <documentation>list of binns when using the list method </documentation>
-    </parameter>
-    
-     <parameter name='binning_y_interval' from='float' to='float'
-	       member='y_interval' default ='10' >
-	    <documentation>list of binns when using the interval method </documentation>
-    </parameter>
-	
-	<parameter name='binning_y_reference' from='float' to='float'
-	       member='y_reference' default ='0' >
-	    <documentation> list of binns when using the interval method </documentation>
-    </parameter>
-</class>
-
-<class name='NoBinningObject' action='pbinning' include='BinningObject.h' directory='decoders' xmltag='binning' prefix='binning' inherits='BinningObject'/>
-</magics>
diff --git a/src/xml/BoxPlot.xml b/src/xml/BoxPlot.xml
deleted file mode 100644
index 8e5365a..0000000
--- a/src/xml/BoxPlot.xml
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='BoxPlotDecoder' directory='decoders' xmltag='boxplot_input' prefix='boxplot'>
-  <documentation>The following parameters allow the user to define both the data
-  and the plotting attributes of boxplots.</documentation>
-
-  <parameter name='boxplot_positions' from='floatarray' to='floatarray'
-             member='x' default='floatarray()'>
-         <documentation> Array containing the x-values</documentation>
-  </parameter>
-  
-  <parameter name='boxplot_date_positions' from='stringarray' to='stringarray'
-             member='date_x' default='stringarray()'>
-         <documentation> Array containing the dates X-values</documentation>
-  </parameter>
-  <parameter name='boxplot_minimum_values' from='floatarray' to='floatarray'
-             member='min'  default='floatarray()'>
-         <documentation> Array containing minimum values</documentation>
-  </parameter>
-  
-  <parameter name='boxplot_maximum_values' from='floatarray' to='floatarray'
-             member='max' default='floatarray()'>
-         <documentation> Array containing maximum values</documentation>
-  </parameter>
-  
-  <parameter name='boxplot_box_upper_values' from='floatarray' to='floatarray'
-             member='upper'  default='floatarray()'>
-         <documentation> Array containing the upper box values</documentation>
-  </parameter>
-  
-  <parameter name='boxplot_box_lower_values' from='floatarray' to='floatarray'
-             member='lower' default='floatarray()'>
-         <documentation> Array containing the lower box values</documentation>
-  </parameter>
-  
-  <parameter name='boxplot_median_values' from='floatarray' to='floatarray'
-             member='median' default='floatarray()'>
-         <documentation> Array containing the median values</documentation>
-  </parameter>
-
-</class>
-
-<class name='BoxPlotVisualiser' xmltag='boxplot' perfix='boxplot' 
-	directory='visualisers' inherits='BoxPlotDecoder'>
-  <documentation>The following parameters allow the user to define both the data
-  and the plotting attributes of boxplots.</documentation>
-
-  <parameter name='boxplot_box' from='string' to='NoBoxPlotBox'  include='BoxPlotBasicItem.h' 
-             member='box' default='on'>
-         <documentation> Turns the plotting of the box on or off</documentation>
-          <option name='BoxPlotBox'   fortran='on'  xml='box' include='BoxPlotItem.h'/>
-          <option name='NoBoxPlotBox' fortran='off' xml='noBox' include='BoxPlotBasicItem.h' />
-           <release>Magics++1.3</release>
-  </parameter>
-  
-  <parameter name='boxplot_whisker' from='string' to='NoBoxPlotWhisker'  include='BoxPlotBasicItem.h'
-             member='whisker' default='line'>
-         <documentation> Determines whether the whiskers are shown as lines, boxes or not at all</documentation>
-          <option name='BoxPlotWhiskerBox'  fortran='box'  xml='whiskerbox'  include='BoxPlotItem.h'/>
-          <option name='NoBoxPlotWhisker'   fortran='off'  xml='nowhisker'   include='BoxPlotBasicItem.h' />
-          <option name='BoxPlotWhiskerLine' fortran='line' xml='whiskerline' include='BoxPlotItem.h' />
-          <release>Magics++1.3</release>
-  </parameter>
-  
- 
-  </class> 
-
-  <class name='BoxPlotMedian' xmltag='median' prefix='boxplot/boxplot_median' directory='visualisers'>
-   <parameter name='boxplot_median_colour' from='string' to='Colour'
-             member='colour' default='navy'>
-         <documentation>Colour of the median line</documentation>
-  </parameter>
-  
-   <parameter name='boxplot_median_thickness' from='int' to='int'
-             member='thickness' 
-			 default='3'>
-         <documentation>Thickness of the median line</documentation>
-  </parameter>
-  
-   <parameter name='boxplot_median_line_style' from='string' to='LineStyle'
-             member='style' default='solid'>
-         <documentation>Line style of the median line</documentation>
-  </parameter>
-  
-  
-   
-  </class>
-  
-  <class name='BoxPlotBox' xmltag='box' prefix='boxplot/boxplot_box' directory='visualisers'>
-	   <parameter name='boxplot_box_colour' from='string' to='Colour'
-	             member='colour' 	 default='sky'>
-	         <documentation>Colour of the box</documentation>
-	  </parameter>
-	  
-	  <parameter name='boxplot_box_width' from='float' to='float'
-	             member='width'	 default='1.0'>
-	         <documentation>Width of the box in centimeters</documentation>
-	  </parameter>
-	  
-	  <parameter name='boxplot_box_border' from='string' to='NoBoxPlotBoxBorder' include='BoxPlotBasicItem.h'
-	             member='border' default='on'>
-	         <documentation>Determines whether the box border is drawn or not</documentation>
-	         <option name='BoxPlotBoxBorder'   fortran='on'  xml='border' include='BoxPlotItem.h'/>
-             <option name='NoBoxPlotBoxBorder' fortran='off' xml='noborder' include='BoxPlotBasicItem.h' />
-	  </parameter>
-	  
-	   <parameter name='boxplot_median' from='string' to='NoBoxPlotMedian'  include='BoxPlotBasicItem.h'
-             member='median' default='on'>
-         <documentation>Determines whether the median line is drawn or not</documentation>
-          <option name='BoxPlotMedian'   fortran='on'  xml='median' include='BoxPlotItem.h'/>
-          <option name='NoBoxPlotMedian' fortran='off' xml='nomedian' include='BoxPlotBasicItem.h' />
-          <release>Magics++1.3</release>
-       </parameter>
-  
-  </class>
-  
-  <class name='BoxPlotBoxBorder' xmltag='box_border' prefix='boxplot/boxplot_box_border' directory='visualisers'>
-	  <parameter name='boxplot_box_border_colour' from='string' to='Colour'
-	             member='colour'  default='navy'>
-	         <documentation>Colour of the box border</documentation>
-	  </parameter>
-	  
-	   <parameter name='boxplot_box_border_thickness' from='int' to='int'
-	             member='thickness' default='1'>
-	         <documentation>Thickness of the box border</documentation>
-	  </parameter>
-	  
-	   <parameter name='boxplot_box_border_line_style' from='string' to='LineStyle'
-	             member='style' default='solid'>
-	         <documentation>Line style of the box border</documentation>
-	  </parameter>
-  
-  </class>
-  
-  <class name='BoxPlotWhiskerLine' xmltag='whisker_line' 
-  	prefix='boxplot/boxplot_whisker/boxplot_whisker_line' directory='visualisers'>
-  	<parameter name='boxplot_whisker_line_colour' from='string' to='Colour'
-             member='colour'  default='navy'>
-         <documentation>Colour of the whisker line</documentation>
-  </parameter>
-  
-   <parameter name='boxplot_whisker_line_thickness' from='int' to='int'
-             member='thickness'  default='3'>
-         <documentation>Thickness of the whisker line</documentation>
-  </parameter>
-  
-   <parameter name='boxplot_whisker_line_style' from='string' to='LineStyle'
-             member='style'  default='solid'>
-         <documentation>Line style of the whisker line</documentation>
-  </parameter>
-  </class>
-  
-  <class name='BoxPlotWhiskerBox' xmltag='whisker_box' 
-  	prefix='boxplot/boxplot_whisker/boxplot_whisker_box' directory='visualisers'>
-   <parameter name='boxplot_whisker_box_colour' from='string' to='Colour'
-             member='colour' default='sky'>
-         <documentation>Colour of the whisker box</documentation>
-  </parameter>
-  
-  <parameter name='boxplot_whisker_box_width' from='float' to='float'
-             member='width' default='0.25'>
-         <documentation>Width of the whisker box in centimeters</documentation>
-  </parameter>
-  
-    <parameter name='boxplot_whisker_box_border' from='string' to='NoBoxPlotWhiskerBorder' include='BoxPlotBasicItem.h'
-	             member='border' default='on'>
-	         <documentation>Determines whether the whisker box border is drawn or not</documentation>
-	         <option name='BoxPlotWhiskerBorder'   fortran='on'  xml='border' include='BoxPlotItem.h'/>
-             <option name='NoBoxPlotWhiskerBorder' fortran='off' xml='noborder' include='BoxPlotBasicItem.h' />
-	  </parameter>
-</class>
-
- <class name='BoxPlotWhiskerBorder' xmltag='whisker_border' 
-  	prefix='boxplot/boxplot_whisker/boxplot_whisker_box/boxplot_whisker_box_border' directory='visualisers'>
-  <parameter name='boxplot_whisker_box_border_colour' from='string' to='Colour'
-             member='colour' default='navy'>
-         <documentation>Colour of the whisker box border</documentation>
-  </parameter>
-  
-   <parameter name='boxplot_whisker_box_border_thickness' from='int' to='int'
-             member='thickness' default='1'>
-         <documentation>Thickness of the whisker box border</documentation>
-  </parameter>
-  
-   <parameter name='boxplot_whisker_box_border_line_style' from='string' to='LineStyle'
-             member='style' default='solid'>
-         <documentation>Line style of the whisker box border</documentation>
-  </parameter>
-  
-  </class>
- 
-
-</magics>
diff --git a/src/xml/CairoDriver.xml b/src/xml/CairoDriver.xml
deleted file mode 100644
index 1349781..0000000
--- a/src/xml/CairoDriver.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-  <class name='CairoDriver' action='Cairo' prefix='output/output_cairo' xmltag='cairo' directory='drivers' include='CairoDriver.h' inherits='BaseDriver'>
-  <documentation for_docs='no'>
-   Output driver using the Cairo graphics library. This driver is still in the development stage!
-  </documentation>
-
- <parameter name='output_cairo_drawing_context' from='cairo_t*' to='cairo_t*' metview='no' visible='no' member='context' default='0'>
-   <documentation> Programs can pass their own Cairo context for Magics to draw into it.</documentation>
- </parameter> 
-
- <parameter name='output_cairo_transparent_background' from='string' to='string' member='transparent' default='off' xml='transparent' values='on/off'>
-   <documentation>Defines the background to be transparent (only for PNG).</documentation>
- </parameter>
-
- <parameter name='output_cairo_antialias' from='string' to='string' member='antialias' default='on' xml='antialias' values='on/off'>
-   <documentation>Defines if lines are antialiased (only for PNG).</documentation>
- </parameter>
-
-</class>
-</magics>
-   
diff --git a/src/xml/CoastPlotting.xml b/src/xml/CoastPlotting.xml
deleted file mode 100644
index 8d1e8b8..0000000
--- a/src/xml/CoastPlotting.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='NoCoastPlotting' action='pcoast' used_by='Coastlines' 
-	directory='visualisers' prefix='map/map_coastline' xmltag='coast' include='CoastPlotting.h'>
-	<documentation>
-		Coastlines may be turned off by setting the parameter MAP_COASTLINE  to 'OFF' , 
-        the default being 'ON' . 
-        The parameters MAP_COASTLINE_STYLE  and MAP_COASTLINE_COLOUR control line style and colour respectively.
-        The default value for the coastlines have been changed from YELLOW to BLACK.
-	</documentation>
-
-
-rivers
-<!--
-<parameter name='map_coastline_simplification_factor' from='double' to='double' member='simplification' default='0' xml='simplification_factor' implemented='no'>
- <documentation>Simplification factor: if 0, do not apply any simplification</documentation>
-</parameter>
--->
-
-<parameter name='map_coastline_resolution' from='string' to='string' member='resolution' default='automatic' values='automatic/low/medium/high'>
- <documentation>Select one of the pre-defined resolutions: automatic, low, medium, and high.
-  When set to AUTOMATIC, a resolution appropriate to the scale of the map is chosen in order to balance quality with speed.
- </documentation>
- <!-- Changed with 2.12 - before more levels were possible -->
- <!-- Changed with 2.13.5 - now also with 'full' -->
- <release>1.1</release>
-</parameter>
-
-
-       
-<parameter name='map_coastline_land_shade' from='string' to='bool' member='land' default='off'>
- <documentation>Sets if land areas are shaded</documentation>
-   <set value='on' name='map_coastline_land_shade_colour' />
-</parameter>
-
-<parameter name='map_coastline_land_shade_colour' from='string' to='Colour' member='land_colour' default='green' xml='colour' priority='0.2' >
- <documentation>Colour of Shading of land areas</documentation>
-   <set value='on' name='map_coastline_land_shade_colour' />
-</parameter>
-
-<parameter name='map_coastline_sea_shade' from='string' to='bool'  member='sea' default='off'>
- <documentation>Shade the sea areas</documentation>
-   <set value='on' name='map_coastline_sea_shade_colour' />
-  </parameter>    
-<parameter name='map_coastline_sea_shade_colour' from='string' to='Colour' member='sea_colour' default='blue' xml='colour' priority='0.2'>
- <documentation>Colour of Shading of sea areas</documentation>
-</parameter>
-<parameter name='map_boundaries' from='string' to='NoBoundaries' include='Boundaries.h' member='boundaries' default='off'>
-  <documentation>Add the political boundaries</documentation>
-    <option name='Boundaries'   fortran='on'  xml='boundaries' include='Boundaries.h'/>
-    <option name='NoBoundaries' fortran='off' xml='noboundaries' include='Boundaries.h'/>
-</parameter>
-
-<parameter name='map_cities' from='string' to='NoCities' include='Cities.h' member='cities' default='off'>
-  <documentation>Add the cities (capitals)</documentation>
-    <option name='Cities'   fortran='on'  xml='cities' include='Boundaries.h'/>
-    <option name='NoCities' fortran='off' xml='nocities' include='Boundaries.h'/>
-  <release>Work in progress</release>
-</parameter>
-
-<parameter name='map_preview' from='string' to='bool' member='preview' default='off' visible='no'>
- <documentation for_docs='no'>Add a preview : only for metview</documentation>
-</parameter>
-
-<parameter name='map_rivers' from='string' to='string' member='rivers' default='off' values='on/off'>
- <documentation>Display rivers (on/off)</documentation>
-  <set value='on' name='map_rivers_style'/>
-  <set value='on' name='map_rivers_colour'/>
-  <set value='on' name='map_rivers_thickness'/>           
- <release>2.11</release>
-</parameter>
-        
-<parameter name='map_rivers_style' from='string' to='LineStyle' member='rivers_style' default='solid'>
-  <documentation>Line style for rivers</documentation>
-  <release>2.11</release>
-</parameter>       
-
-<parameter name='map_rivers_colour' from='string' to='Colour' member='rivers_colour' default="blue">
- <documentation>Colour of the rivers</documentation>
- <release>2.12</release>
-</parameter>
-
-<parameter name='map_rivers_thickness' from='int' to='int' member='rivers_thickness' default='1' xml='thickness'>
-  <documentation>Line thickness of rivers</documentation>
-  <release>2.12</release>
-</parameter>
-</class>
-
-
-<class name='Cities' action='pcoast' directory='visualisers' include='Cities.h'  inherits='NoCities'>
-
-<parameter name='map_cities_unit_system' from='string' to='string' member='unit' default='percent' values='percent/cm'>
-  <documentation>Unit for city name sizes.</documentation>
-</parameter>
- 
-<parameter name='map_cities_font_name' from='string' to='string' member='font_name' default='sansserif'  >
-   <documentation>Font used to display the city names.</documentation>
-</parameter>
- 
-<parameter name='map_cities_font_style' from='string' to='string' member='font_style'  default='normal'  >
-  <release>Work in progress</release>
- <documentation>Font style used for city names.</documentation>
-</parameter>
-
-<parameter name='map_cities_font_size' from='float' to='float' member='font_size' default='2.5'  >
- <documentation>Font size of city names.</documentation>
-</parameter>
-
-<parameter name='map_cities_font_colour' from='string' to='Colour' member='font_colour' default='navy'  >
- <documentation>Colour used for city names.</documentation>
-</parameter>
-
-<parameter name='map_cities_name_position' from='string' to='string' member='position' default='above'  values='above/below/left/right'>
- <documentation>Position where to display the city names.</documentation>
-</parameter>
-
-<parameter name='map_cities_marker' from='string' to='string' member='marker' default='plus'  values='circle/box/snowflake/plus'>
-  <documentation>Marker for cities.</documentation>
-</parameter>
-
-<parameter name='map_cities_marker_height' from='float' to='float' member='marker_height' default='0.7'  >
-  <documentation>Height of city markers.</documentation>
- </parameter>
-
-<parameter name='map_cities_marker_colour' from='string' to='Colour' member='marker_colour' default='evergreen'  >
-  <documentation>Colour for city markers.</documentation>
-</parameter>
-
-</class>
-
-
-<class name='NoCities' action='pcoast' xmltag='noboundaries' directory='visualisers' include='Cities.h'>
-   <documentation>This object suppresses the plotting of cities.</documentation>
-</class>
-
-<class name='Boundaries' action='pcoast' directory='visualisers' include='Boundaries.h' 
-	xmltag='boundaries' prefix='map/map_boundaries/map_boundaries' inherits='NoBoundaries' >
- <documentation>This object sets the properties of the political boundaries.</documentation>
-   
-
-<parameter name='map_boundaries_style' from='string' to='LineStyle' member='style' default='solid' xml='style'>
-  <documentation>Line style of boundaries</documentation>
-  <release>1.3</release>
-</parameter>
-
-<parameter name='map_boundaries_colour' from='string' to='Colour' member='colour' default='grey' xml='colour'>
- <documentation>Colour of boundaries</documentation>
- <release>1.3</release>
-</parameter>
-
-<parameter name='map_boundaries_thickness' from='int' to='int' member='thickness' default='1' xml='thickness'>
- <documentation>Line thickness of boundaries</documentation>
- <release>2.11</release>
-</parameter>
-
-<parameter name='map_disputed_boundaries' from='string' to='bool' member='disputed' default='on'>
- <documentation>Display the disputed boundaries (on/off)</documentation>
-    <set value='on' name='map_disputed_boundaries_style'/>
-    <set value='on' name='map_disputed_boundaries_colour'/>
-    <set value='on' name='map_disputed_boundaries_thickness'/>           
- <release>2.11</release>
-</parameter>
-
-<parameter name='map_disputed_boundaries_style' from='string' to='LineStyle' member='disputed_style' default='dash'>
- <documentation>Line style of disputed boundaries</documentation>
- <release>2.11</release>
-</parameter>       
-
-<parameter name='map_disputed_boundaries_colour' from='string' to='Colour' member='disputed_colour' default="automatic">
- <documentation>Colour of disputed boundaries</documentation>
- <release>2.11</release>
-</parameter>
-
-<parameter name='map_disputed_boundaries_thickness' from='int' to='int' member='disputed_thickness' default='1' xml='thickness'>
- <documentation>Line thickness of disputed boundaries</documentation>
- <release>2.11</release>
-</parameter>
-
-<parameter name='map_administrative_boundaries' from='string' to='bool' member='admistrative' default='off'>
- <documentation>Display second level administrative boundaries (on/off)</documentation>
-    <set value='on' name='map_administrative_boundaries_countries_list'/>
-    <set value='on' name='map_administrative_boundaries_style'/>
-    <set value='on' name='map_administrative_boundaries_colour'/>
-    <set value='on' name='map_administrative_boundaries_thickness'/>
-</parameter>
-
-<parameter name='map_administrative_boundaries_countries_list' from='stringarray' to='stringarray' member='administrative_list' default='stringarray()' values='AGO:Angola/DZA:Algeria/EGY:Egypt/BGD:Bangladesh/NAM:Namibia/BOL:Bolivia/GHA:Ghana/CCK:Australia/PAK:Pakistan/LBY:Libya/MYS:Malaysia/PRK:Korea, North/TZA:Tanzania/BWA:Botswana/PRY:Paraguay/SAU:Saudi Arabia/MRT:Mauritania/CHL:Chile/CHN:China/LAO:Laos/GIB:United Kingdom/GIN:Guinea/FIN:Finland/URY:Uruguay/NPL:Nepal/CXR:Australia/MAR:M [...]
-  <documentation>List of countries for which to show second level administrative borders.</documentation>
-</parameter> 
-
-<parameter name='map_administrative_boundaries_style' from='string' to='LineStyle' member='administrative_style' default='dash'>
-  <documentation>Line style of second level administrative boundaries</documentation>
-  <release>2.11</release>
-</parameter>       
-
-<parameter name='map_administrative_boundaries_colour' from='string' to='Colour' member='administrative_colour' default="automatic">
- <documentation>Colour of administrative boundaries</documentation>
- <release>2.11</release>
-</parameter>
-
-<parameter name='map_administrative_boundaries_thickness' from='int' to='int' member='administrative_thickness' default='1' xml='thickness'>
- <documentation>Line thickness of boundaries</documentation>
- <release>2.11</release>
-</parameter>
-</class>
-
-
-<class name='NoBoundaries' action='pcoast' xmltag='noboundaries' directory='visualisers' include='Boundaries.h'>
-   <documentation>This object suppresses the political boundaries</documentation>
-</class>
-<class name='CoastPlotting' action='pcoast' used_by='Coastlines' 
-	directory='visualisers' prefix='map/map_coastline' xmltag='coast' inherits='NoCoastPlotting'>
-<parameter name='map_coastline_colour' from='string' to='Colour' member='colour' default='black'>
- <documentation>Colour of coastlines</documentation>
- <release>0.1</release>
- <migration>Default changed from YELLOW to BLACK</migration>
-</parameter>
-<parameter name='map_coastline_style' from='string' to='LineStyle' member='style' default='solid'>
- <documentation>Line style of coastlines</documentation>
-</parameter> 
-
-<parameter name='map_coastline_thickness' from='int' to='int' member='thickness' default='1'>
- <documentation>Line thickness of coastlines</documentation>
-</parameter>	
-</class>
-
-
-
-
-
-
-
-</magics>
diff --git a/src/xml/Coastlines.xml b/src/xml/Coastlines.xml
deleted file mode 100644
index 09c6e8a..0000000
--- a/src/xml/Coastlines.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics> 
-<class name='Coastlines' metview='MCOAST' action='pcoast' xmltag='coastlines' directory='visualisers' prefix='map'>
-	<documentation> 
-		The parameters relating to action routine PCOAST (C++ class Coastlines) enable
-        users to control the plotting of coastlines and grid lines. 
-	</documentation>
-        <parameter name='map_coastline' from='string' to='NoCoastPlotting' 
-        	member='coastlines' default='on' include='CoastPlotting.h'> 
-            <documentation> 
-             Plot coastlines on map (ON/OFF)
-           </documentation>
-            <option name='CoastPlotting'   fortran='on'  xml='coast' description='CoastPlotting.xml' include='CoastPlotting.h'/>
-            <option name='NoCoastPlotting' fortran='off' xml='nocoast' description='CoastPlotting.xml' include='CoastPlotting.h' />
-           <release>Magics++0.1</release>
-       </parameter> 
-       <parameter name='map_grid' from='string' to='NoGridPlotting'
-            member='grid' default='on' include='GridPlotting.h'> 
-            <documentation>
-            Plot grid lines on map (On/OFF)
-           </documentation>
-           <option name='GridPlotting'   fortran='on'  xml='grid' description='GridPlotting.xml' include='GridPlotting.h'/>
-           <option name='NoGridPlotting' fortran='off' xml='nogrid' description='GridPlotting.xml' include='GridPlotting.h'/>
-           <release>Magics++0.1</release>
-           <set value='on' name='map_grid_latitude_reference'/>
-           <set value='off' name='map_grid_latitude_reference'/>
-           '/>
-        </parameter>
-        <parameter name='map_label' from='string' to='NoLabelPlotting' include='LabelPlotting.h'
-            member='label' default='on'>
-            <documentation>
-            Plot label  on map grid lines (On/OFF)
-           </documentation>
-           <option name='LabelPlotting'   fortran='on'  xml='label' description='LabelPlotting.xml' include='LabelPlotting.h'/>
-           <option name='NoLabelPlotting' fortran='off' xml='nolabel' description='LabelPlotting.xml' include='LabelPlotting.h'/>
-           <release>Magics++0.1</release>
-        </parameter>
-</class>
-
-</magics>
diff --git a/src/xml/Contour.xml b/src/xml/Contour.xml
deleted file mode 100644
index 23679e0..0000000
--- a/src/xml/Contour.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='Contour' fortan='pcont' metview='MCONT'  xmltag='contour'  action='pcont' root='contour' directory='visualisers' prefix='contour'>
-  <documentation>
-    This controls the plotting of isolines, contour bands and grid points.
-  </documentation>
-
-  <parameter name='legend' from='string' to='bool' member='legend' default='off'> 
-		<documentation> Turn legend on or off </documentation> 
-		<release>2.12</release>
-  </parameter>
-
-  <parameter name='contour' from='string' to='IsoPlot' member='contour' default='on'> 
-         <documentation> Turn contouring on or off  </documentation>
-          <option name='IsoPlot'   fortran='on'  xml='isoline' include='IsoPlot.h'/>
-          <option name='NoIsoPlot' fortran='off' xml='noisoline'  include='IsoPlot.h' />
-		 <unset value='off' name='contour_line_style'/>
-		 <unset value='off' name='contour_line_thickness'/>
-		 <unset value='off' name='contour_line_colour'/>
-  </parameter> 
-      
-  <parameter name='contour_method' from='string' to='ContourMethod' member='method' default='automatic'>
-         <documentation> Contouring method  </documentation>
-         <option name='AutomaticContourMethod'  fortran='automatic' xml='automatic' 
-         		include='AutomaticContourMethod.h' />
-           <option name='SampleContourMethod'   fortran='sample' xml='sample' 
-         		include='AutomaticContourMethod.h'  />		
-         <option name='ContourMethod'           fortran='linear'    xml='linear'
-         		include='ContourMethod.h'          />
-         <option name='Akima760Method'          fortran='akima760'  xml='akima760'
-         		include='Akima760Method.h'         />
-         <option name='Akima474Method'          fortran='akima474'  xml='akima474'
-         		include='Akima474Method.h'         />
-         <release>0.1</release>
-         <release>Two akima algorithms have been implemented akima760/akima474 </release>
-</parameter>
-
-<parameter name='contour_interpolation_floor' from='float' to='float' member='floor' default='-INT_MAX'>
-         <documentation>Any value below this floor will be forced  to the floor value.
-		avoid the bubbles artificially created by the interpolation method</documentation>
-         <release_info>2.8</release_info>
-</parameter>
-
-<parameter name='contour_interpolation_ceiling' from='float' to='float' member='ceiling'   default='INT_MAX'>
-         <documentation> any value above this ceiling will be forced  to the ceiling value.
-		avoid the bubbles artificially created by the interpolation method </documentation>
-         <release_info>2.8</release_info>
-</parameter>
-
-<parameter name='contour_automatic_setting' from='string' to='bool'  member='setting' default='off' visible='off'> 
-        <documentation> Turn the automatic setting of contouring attributes  </documentation>
-	<unset value='off' name='contour_automatic_library_path'/>
-</parameter>
-
-<parameter name='contour_automatic_library_path' from='string' to='string'  member='library_path' default='' visible='off'> 
-         <documentation> Users can give their own file to setup the automatic library of contours </documentation>
-</parameter>
-
-
-<parameter name='contour_hilo' from='string' to='HiLoBase' member='hilo' default='off'>
-         <documentation> Plot local maxima/minima  </documentation>
-         <option name='HiLo'   fortran='on'  xml='hilo' include='HiLo.h' />
-         <option name='NoHiLo' fortran='off' xml='nohilo'  include='HiLo.h' />
-         <option name='HighHiLo' fortran='hi' xml='high'  include='HiLo.h' />
-         <option name='LowHiLo' fortran='lo' xml='low'  include='HiLo.h' />
-</parameter>
-  
-
-<parameter name='contour_grid_value_plot' from='string' to='ValuePlotBase' member='grid'  default='off'>
-         <documentation> Plot Grid point values </documentation>
-         <option name='ValuePlot'   fortran='on'  xml='gridvalues' include='ValuePlot.h' />
-         <option name='NoValuePlot' fortran='off' xml='nogridvalues' include='ValuePlot.h' />
-         <release>Magics++0.3</release>
-</parameter>
-</class>
-
-
-<class name='ContourMethod' include='ContourMethod.h'  directory='visualisers'/>
-<class name='AutomaticContourMethod' include='AutomaticContourMethod.h'  inherits='ContourMethod' directory='visualisers'/>
-
-
-<class name='SampleContourMethod' include='AutomaticContourMethod.h'    inherits='ContourMethod' directory='visualisers'>
-
-<parameter name='contour_sample_x_interval' xml='x_interval' from='int' to='int' member='x' default='2'>
-    <documentation>X sampling interval used in 'sample' method (takes every nth point)</documentation>/>
-</parameter>
-
-<parameter name='contour_sample_y_interval' xml='y_interval' from='int' to='int' member='y' default='2'>
-    <documentation>Y sampling interval used in 'sample' method (takes every nth point)</documentation>/>
-</parameter>
-</class>
-
-</magics>
diff --git a/src/xml/Drivers.xml b/src/xml/Drivers.xml
deleted file mode 100644
index 9e554ce..0000000
--- a/src/xml/Drivers.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<driver name='BaseDriver' root_object='BaseDriver' recursive_docs='do-recursive'>
-</driver>
-
-<driver name='PostScript' root_object='PostScriptDriver' recursive_docs='no-recursive'>
-</driver>
-
-<driver name='GD' root_object='GDDriver' recursive_docs='no-recursive'>
-</driver>
-
-<driver name='SVG' root_object='SVGDriver' recursive_docs='no-recursive'>
-</driver>
-
-<driver name='KML' root_object='KMLDriver' recursive_docs='no-recursive'>
-</driver>s
-
-<driver name='Qt' root_object='QtDriver' recursive_docs='no-recursive'>
-</driver>
-
-<driver name='Cairo' root_object='CairoDriver' recursive_docs='no-recursive'>
-</driver>
-
-</magics> 
-   
\ No newline at end of file
diff --git a/src/xml/EpsJSon.xml b/src/xml/EpsJSon.xml
deleted file mode 100644
index b2d3901..0000000
--- a/src/xml/EpsJSon.xml
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name="WrepJSon" xmltag='wrepjson' prefix='wrepjson' action='pwrepjson'  
-           directory='web' include='EpsJSon.h' >
- <parameter name='wrepjson_input_filename' from='string' to='string' 
- 	    member='path' default=''>
-  	<documentation> Path to the file containing the Bufr data </documentation>
- </parameter>
-    <parameter name='wrepjson_parameter_information' from='string' to='string'
-             member='param_info' default='' >
-         <documentation> Product information for  key=parameter_info  </documentation>
-        </parameter> 
-   <parameter name='wrepjson_product_information' from='string' to='string'
-             member='product_info' default='' >
-         <documentation> Product information for  key=product_info </documentation>
-        </parameter>
-    <parameter name='wrepjson_family' from='string' to='string' 
-             member='family' default='eps' >
-         <documentation> Forecast information to plot!  </documentation>
-   
-        </parameter>
- 
- <parameter name='wrepjson_plumes_interval' from='float' to='float' 
- 	    member='plumes' default='1'>
-  	<documentation> plumes interval </documentation>
- </parameter>
-  <parameter name='wrepjson_information' from='string' to='bool' 
- 	    member='information' default='on'>
-  	<documentation> Plot or not information about station/forecast  in a long title   </documentation>  
- </parameter>
- <parameter name='wrepjson_keyword' from='string' to='string' 
- 	    member='keyword' default=''>
-  	<documentation> if several eps data are put in the same json object, give the keyowrd to find them   </documentation>  
- </parameter>
-   <parameter name='wrepjson_station_name' from='string' to='string'
-            member='station_name' default='' >
-       <documentation>Name of the station to use in the title </documentation>
-   </parameter>
-  <parameter name='wrepjson_parameter' from='string' to='string'
-            member='param' default='1'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-         <parameter name='wrepjson_parameter_scaling_factor' from='float' to='float'
-            member='param_scaling_factor' default='1'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-         <parameter name='wrepjson_parameter_offset_factor' from='float' to='float'
-            member='param_offset_factor' default='0'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-        <parameter name='wrepjson_clim_parameter' from='string' to='string'
-            member='clim_param' default='' >           
-            <documentation> date to select for the clim In date format (YYYYMMDDHHHH)</documentation>
-        </parameter>  
-        
-        
-        <parameter name='wrepjson_clim_step' from='int' to='int'
-            member='clim_step' default='36' >           
-            <documentation> date to select for the clim In date format (YYYYMMDDHHHH)</documentation>
-        </parameter> 
-        
-        <parameter name='wrepjson_steps' from='intarray' to='intarray'
-            member='steps' default='intarray()' >           
-            <documentation> steps to extract ( legend will use step+12) </documentation>
-        </parameter>
-         
-       <parameter name='wrepjson_y_axis_percentile' from='float' to='float'
-            member='percentile' default='1'>           
-        <documentation> use of threshold   </documentation>
-        </parameter>
-        
-         <parameter name='wrepjson_y_axis_threshold' from='float' to='float'
-            member='threshold' default='50'>           
-            <documentation> use of threshold   to get rid of the unlikely values</documentation>
-     
-        </parameter>
-         <parameter name='wrepjson_y_max_threshold' from='float' to='float'
-            member='y_max_threshold' default='INT_MAX'>           
-            <documentation> If all the values are below the threshold, use the threshold as max value when automatic setting of y axis</documentation>
-     
-        </parameter>
-
-	   <parameter name='wrepjson_temperature_correction' from='string' to='bool'
-            member='correction' default='off'>
-            <documentation> Temperature correction  </documentation>
-
-        </parameter>
-
-	   <parameter name='wrepjson_missing_value' from='float' to='float'
-            member='missing_value' default='-9999'>
-            <documentation> Missing value  </documentation>
-
-        </parameter>
-
-        
-</class>
-<class name="EfiJSon" xmltag='efijson' prefix='efijson' action='pmetgram'  directory='web' >
-	 <parameter name='efijson_input_filename' from='string' to='string' 
- 	    member='path' default=''>
-  	<documentation> Path to the file containing the Efi data (JSon format) </documentation>
- 	</parameter>
- 	
-         
-        <parameter name='efi_long_title' from='string' to='bool'
-            member='long_title' default='off' xml='long_title'>
-            <documentation> efigram long title ( Point Position ... General title!) </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-        <parameter name='efi_title' from='string' to='bool'
-            member='title' default='off' xml='title'>
-            <documentation> epsgram title ( parameter name) </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-        
-        
-          <parameter name='efi_legend' from='string' to='bool'
-            member='legend' default='on'>           
-            <documentation> legend </documentation>
-        </parameter>  
-       
-        
-         <parameter name='efi_legend_colour_list' from='stringarray' to='stringarray'
-            member='legend_colours' default='stringarray()'>           
-            <documentation> legend box colour list  </documentation>
-        </parameter>
-         <parameter name='efi_legend_box_type' from='string' to='string'
-            member='legend_type' default='both'>           
-            <documentation> both/negative/positive </documentation>
-        </parameter>
-        <parameter name='efi_legend_normal_colour' from='string' to='Colour'
-            member='legend_normal_colour' default='black'>           
-            <documentation> legend colour box </documentation>
-        </parameter>
-          <parameter name='efi_legend_normal_thickness' from='int' to='int'
-            member='legend_normal_thickness' default='4'>           
-            <documentation> legend colour box </documentation>
-        </parameter>
-         
- </class>
-</magics>
diff --git a/src/xml/Epsgram.xml b/src/xml/Epsgram.xml
deleted file mode 100644
index 40d46f7..0000000
--- a/src/xml/Epsgram.xml
+++ /dev/null
@@ -1,812 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='ClassicMtgDecoder' xmltag='metgram' prefix='metgram' action='pmetgram'  directory='decoders' >
-	<documentation>
-		The Classic Metgram  is responsible for accessing the classic metgram database and prepare the data to plotting.
-	</documentation>
-		
-	   
-        <parameter name='metgram_database' from='string' to='string'
-            member='database' default='/vol/epsgram/data/spotbase/epsdb' xml='database'>
-           
-            <documentation> Classic Metgram Database Path </documentation>
-            <migration> New Magics: Parameter eps_database sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-          <parameter name='metgram_parameter' from='string' to='string'
-            member='param' default='' xml='parameter'>
-            <metview default='' class='' >  
-            </metview>
-            <documentation> Classic Metgram Parameter </documentation>
-            <migration> New Magics: Parameter eps_parameter sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='metgram_latitude' from='float' to='float'
-            member='latitude' default='0' xml='latitude'>
-           
-            <documentation> Classic Metgram  latitude </documentation>
-           
-        </parameter>
-        
-         <parameter name='metgram_parameter_scaling_factor' from='float' to='float'
-            member='param_scaling' default='1' xml='parameter_scaling_factor'>
-           
-            <documentation> metgram scaling factor : used only in case of an unknow parameter  </documentation>
-        </parameter>
-        
-          <parameter name='metgram_parameter_offset' from='float' to='float'
-            member='param_offset' default='0' xml='parameter_offset'>
-           
-            <documentation> metgram offset : used only in case of an unknow parameter  </documentation>
-        </parameter>
-        
-         <parameter name='metgram_parameter_title' from='string' to='string'
-            member='param_title' default='' xml='parameter_title'>
-           
-            <documentation> metgram parameter title : used only in case of an unknow parameter  </documentation>
-            <migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-       <parameter name='metgram_longitude' from='float' to='float'
-            member='longitude' default='0' xml='longitude'>
-            <metview default='0' class='' >  
-            </metview>
-            <documentation> Classic Metgram  longitude</documentation>
-            
-        </parameter>
-        <parameter name='metgram_date' from='string' to='string'
-            member='date' default='-1' xml='date'>
-            <metview default='-1' class='' >  
-            </metview>
-            <documentation>Classic Metgram  date</documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='metgram_time' from='string' to='string'
-            member='time' default='0000' xml='time'>
-            <metview default='0000' class='' >  
-            </metview>
-            <documentation> Classic Metgram  time</documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-		 <parameter name='metgram_long_title' from='string' to='bool'
-            member='long_title' default='off' xml='long_title'>
-            <documentation> epsgram long title </documentation>
-        </parameter>
-         <parameter name='metgram_station_name' from='string' to='string'
-            member='station' default='' xml='station'>
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='metgram_station_height' from='float' to='float'
-            member='height' default='-1.' xml='height'>
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='metgram_temperature_correction' from='string' to='bool'
-            member='correction' default='yes'>           
-            <documentation> Temperature correction  </documentation>
-            
-            <migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  </migration>
-        </parameter>
-        
-</class>
-
-
-
-<class name='EpsgramDecoder' action='peps'  xmltag='epsgram' prefix='eps' xml_data='eps_title' directory='decoders'>
-	<documentation>
-		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
-	</documentation>
-		
-	    <parameter name='eps_title' from='stringarray' to='stringarray'
-             member='title' default='stringarray()' >
-         <documentation> text block to be plotted </documentation>
-        </parameter>
-        <parameter name='eps_type' from='string' to='string'
-             member='type' xml = 'type' default='eps10' >
-         <documentation>Eps Metgram type : eps10 or eps15  </documentation>
-        </parameter>
-        
-        <parameter name='eps_database' from='string' to='string'
-            member='database' default='/vol/epsgram/data/spotbase/epsdb' xml='database'>
-           
-            <documentation> Epsgram Database Path </documentation>
-            <migration> New Magics: Parameter eps_database sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-        <parameter name='eps_title_text' from='string' to='string'
-            member='title_text' default='EPS Meteogram'>
-            <metview default='' class='' >  
-            </metview>
-            <documentation> Epsgram Parameter </documentation>
-            <migration> New Magics: Parameter eps_parameter sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-          <parameter name='eps_parameter' from='string' to='string'
-            member='param' default='' xml='parameter'>
-            <metview default='' class='' >  
-            </metview>
-            <documentation> Epsgram Parameter </documentation>
-            <migration> New Magics: Parameter eps_parameter sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_parameter_title' from='string' to='string'
-            member='param_title' default='' xml='parameter_title'>
-           
-            <documentation> epsgram parameter title : used only in case of an unknow parameter  </documentation>
-            <migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_latitude' from='float' to='float'
-            member='latitude' default='0' xml='latitude'>
-            <metview default='0' class='' >  
-            </metview>
-            <documentation> epsgram latitude column name </documentation>
-            <migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-       <parameter name='eps_longitude' from='float' to='float'
-            member='longitude' default='0' xml='longitude'>
-            <metview default='0' class='' >  
-            </metview>
-            <documentation> epsgram longitude column name</documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_parameter_hour_shift' from='float' to='float'
-            member='param_hour_shift' default='0'>
-             <documentation> valid date is shifted ( temporary..)  </documentation>
-        </parameter>
-         <parameter name='eps_parameter_scaling_factor' from='float' to='float'
-            member='param_scaling_factor' default='1'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-         <parameter name='eps_parameter_offset_factor' from='float' to='float'
-            member='param_offset_factor' default='0'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-        <parameter name='eps_date' from='string' to='string'
-            member='date' default='-1' xml='date'>
-            <metview default='-1' class='' >  
-            </metview>
-            <documentation> epsgram longitude column name</documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_time' from='string' to='string'
-            member='time' default='0000' xml='time'>
-            <metview default='0000' class='' >  
-            </metview>
-            <documentation> epsgram date </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-		 <parameter name='eps_long_title' from='string' to='bool'
-            member='long_title' default='off' xml='long_title'>
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_long_title_station' from='string' to='bool'
-            member='long_title_station' default='on' xml='long_title_station'>
-            <documentation> epsgram long title : add the station name </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_long_title_height' from='string' to='bool'
-            member='long_title_height' default='on' xml='long_title_height'>
-            <documentation> epsgram long title: add the station height </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_long_title_point' from='string' to='bool'
-            member='long_title_point' default='on' xml='long_title_point'>
-            <documentation> epsgram long title: add the grid point position </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_station_name' from='string' to='string'
-            member='station' default='' xml='station'>
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_station_height' from='float' to='float'
-            member='height' default='INT_MAX' xml='height'>
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='eps_temperature_correction' from='string' to='bool'
-            member='correction' default='yes'>           
-            <documentation> Temperature correction  </documentation>
-            <available>yes</available>
-            <available>no</available>
-           
-            <migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  </migration>
-        </parameter>
-        
-        <parameter name='eps_y_axis_percentile' from='float' to='float'
-            member='percentile' default='1'>           
-            <documentation> Temperature correction  </documentation>
-            <available>yes</available>
-            <available>no</available>
-           
-            <migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  </migration>
-        </parameter>
-        
-         <parameter name='eps_y_axis_threshold' from='float' to='float'
-            member='threshold' default='50'>           
-            <documentation> Temperature correction  </documentation>
-            <available>yes</available>
-            <available>no</available>
-           
-            <migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  </migration>
-        </parameter>
-        
-</class>
-
-<class name='EpsWave'  xmltag='epswave' prefix='eps/eps_rose_wave' action='peps' directory='visualisers'  >
-	<documentation>
-		The Epsgraph is repsonsible for plotting the espgram using wind rose visualisation
-	</documentation>
-	<parameter name='eps_rose_wind_colour' from='stringarray' to='stringarray' 
-                member='colour' default='magstringarray()' > 
-    <documentation> Rose wind darker colour  </documentation>          
-    </parameter>
-</class>
-<class name='EpsWind'  xmltag='epswind' prefix='eps/eps_rose_wind' action='peps' directory='visualisers'  >
-	<documentation>
-		The Epsgraph is repsonsible for plotting the espgram using wind rose visualisation
-	</documentation>
-	<parameter name='eps_rose_wind_colour' from='string' to='Colour' 
-                member='colour' default='grey' > 
-    <documentation> Rose wind darker colour  </documentation>          
-    </parameter>
-    <parameter name='eps_rose_wind_border_colour' from='string' to='Colour' 
-                member='border_colour' default='grey' >    
-    <documentation> Rose wind border colour  </documentation>       
-    </parameter>
-    <parameter name='eps_rose_wind_convention' from='string' to='string' 
-                member='convention' default='meteorological' >    
-    <documentation> Define the convention to use to plot the wind direction 
-    	[ meteorological : Direction the parameter is coming from, 
-    	  oceanographic : Direction the parameter is goint to]  </documentation>       
-    </parameter>
-</class>  
-  <class name='EpsCloud'  xmltag='epscloud' prefix='eps/eps_rose_cloud' action='peps' directory='visualisers'  >
-	<documentation>
-		The EpsCloud is repsonsible for plotting the espgram using Cloud rose visualisation
-	</documentation>
-	<parameter name='eps_rose_cloud_colour' from='string' to='Colour' 
-                member='colour' default='black' > 
-    <documentation> Rose wind darker colour  </documentation>          
-    </parameter>
-    <parameter name='eps_rose_cloud_border_colour' from='string' to='Colour' 
-                member='border_colour' default='none' >    
-    <documentation> Rose wind border colour  </documentation>       
-    </parameter>
-    
-</class>    
-
-
-<class name='EpsGraph' xmltag='epsgraph' prefix='eps' action='peps' directory='visualisers'  >
-	<documentation>
-		The Epsgraph is repsonsible for plotting the espgram using box and whisker visualisation
-	</documentation>
-        <parameter name='eps_font' from='string' to='string' 
-                member='font' default='sansserif' xml='font'>           
-        </parameter>
-         <parameter name='eps_font_size' from='float' to='float' 
-                member='font_size' default='0.25' xml='font_size'>           
-        </parameter>
-        <parameter name='eps_font_style' from='string' to='string' 
-                member='font_style' default='' xml='font_style'>           
-        </parameter>
-        <parameter name='eps_font_colour' from='string' to='Colour' 
-                member='font_colour' default='blue' xml='font_colour'>           
-        </parameter>
-        <parameter name='eps_box_colour' from='string' to='Colour' 
-                member='colour' default='cyan' xml='box_colour' >           
-        </parameter>
-          <parameter name='eps_box_shift' from='int' to='int' 
-                member='box_shift' default='0'>           
-        </parameter>
-        <parameter name='eps_right_box_colour' from='string' to='Colour' 
-                member='right_colour' default='red' xml='right_box_colour' >           
-        </parameter>
-        <parameter name='eps_left_box_colour' from='string' to='Colour' 
-                member='left_colour' default='blue' xml='left_box_colour' >           
-        </parameter>
-        <parameter name='eps_box_border_colour' from='string' to='Colour' 
-                member='border_colour' default='black' xml='border_colour'>            
-        </parameter>
-        <parameter name='eps_box_border_thickness' from='int' to='int' 
-                member='border_thickness' default='3' xml='border_thickness'>            
-        </parameter>
-          <parameter name='eps_box_median_thickness' from='int' to='int' 
-                member='median_thickness' default='3'>            
-        </parameter>
-         <parameter name='eps_box_median_colour' from='string' to='Colour' 
-                member='median_colour' default='black'>            
-        </parameter>
-        <parameter name='eps_maximum' from='float' to='float' 
-                member='max' default='INT_MAX' xml='max'>            
-        </parameter>
-        <parameter name='eps_maximum_font_name' from='string' to='string' 
-                member='max_font_name' default='sansserif' xml='max_font_name'>            
-        </parameter>
-        <parameter name='eps_maximum_font_style' from='string' to='string' 
-                member='max_font_style' default='normal' xml='max_font_style'>            
-        </parameter>
-        <parameter name='eps_maximum_font_size' from='float' to='float' 
-                member='max_font_size' default='0.25' xml='max_font_size'>            
-        </parameter>
-         <parameter name='eps_maximum_font_colour' from='string' to='Colour' 
-                member='max_font_colour' default='red' xml='max_font_colour'>            
-        </parameter>
-        <parameter name='eps_box_width' from='float' to='float'
-        	 member='box_width' default='-1'/>
-        	 
-        <parameter name='eps_whisker' from='string' to='bool'
-        	 member='whisker' default='on' xml='whisker'/>
-        
-         <parameter name='eps_legend_resolution' from='string' to='string'
-        	 member='legend_resolution' default='truncature'/>	 
-        	       <parameter name='eps_legend_control_text' from='string' to='string'
-        	 member='legend_control_text' default=''/>	    
-        	  <parameter name='eps_legend_forecast_text' from='string' to='string'
-        	 member='legend_forecast_text' default=''/>	 
-        	 
-         <parameter name='eps_deterministic' from='string' to='bool'
-        	 member='deterministic' default='on'>
-        	 <documentation> plot the deterministic Forecast</documentation>
-        </parameter>
-         <parameter name='eps_deterministic_line_colour' from='string' to='Colour'
-        	 member='deterministic_colour' default='blue'>
-        	 <documentation>Colour of  deterministic Forecast</documentation>
-        </parameter>
-         
-          <parameter name='eps_deterministic_line_style' from='string' to='LineStyle'
-        	 member='deterministic_style' default='solid'>
-        	 <documentation>line style of  deterministic Forecast</documentation>
-        </parameter>
-        <parameter name='eps_deterministic_line_thickness' from='int' to='int'
-        	 member='deterministic_thickness' default='2'>
-        	 <documentation>line style of  deterministic Forecast</documentation>
-        </parameter>
-                 <parameter name='eps_control' from='string' to='bool'
-        	 member='control' default='on'>
-        	 <documentation> plot the deterministic Forecast</documentation>
-        </parameter>
-         <parameter name='eps_control_line_colour' from='string' to='Colour'
-        	 member='control_colour' default='red'>
-        	 <documentation>Colour of  deterministic Forecast</documentation>
-        </parameter>
-        
-          <parameter name='eps_control_line_style' from='string' to='LineStyle'
-        	 member='control_style' default='dash'>
-        	 <documentation>Control of  deterministic Forecast</documentation>
-        </parameter>
-        <parameter name='eps_control_line_thickness' from='int' to='int'
-        	 member='control_thickness' default='2'>
-        	 <documentation>line style of  deterministic Forecast</documentation>
-        </parameter>
-        	 
-        <parameter name='legend' from='string' to='bool' 
-                member='legend' default='on'>           
-        </parameter>	 
-</class>
-
-
-<class name='EfigramDecoder' xmltag='efigram' prefix='efi' action='pefigram' directory='decoders' >
-	<documentation>
-		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
-	</documentation>
-         <parameter name='efi_root_database' from='string' to='string'
-            member='database' default='' xml='database' >           
-            <documentation> database to access </documentation>
-        </parameter> 
-        <parameter name='efi_legend_root_database' from='string' to='string'
-            member='legend_database' default='' xml='legend_database'>           
-            <documentation> legend </documentation>
-        </parameter>
-        <parameter name='efi_clim_root_database' from='string' to='string'
-            member='clim_database' default='' >           
-            <documentation> climatalogy database </documentation>
-        </parameter>
-         <parameter name='efi_dates' from='stringarray' to='stringarray'
-            member='dates' default='stringarray()' >           
-            <documentation> date to select In date format (YYYYMMDDHHHH)</documentation>
-        </parameter>   
-        <parameter name='efi_clim_parameter' from='string' to='string'
-            member='clim_param' default='' >           
-            <documentation> date to select for the clim In date format (YYYYMMDDHHHH)</documentation>
-        </parameter>  
-          <parameter name='efi_clim_date' from='string' to='string'
-            member='clim_date' default='' >           
-            <documentation> date to select for the clim In date format (YYYYMMDDHHHH)</documentation>
-        </parameter>  
-        
-        <parameter name='efi_clim_step' from='int' to='int'
-            member='clim_step' default='36' >           
-            <documentation> date to select for the clim In date format (YYYYMMDDHHHH)</documentation>
-        </parameter> 
-        
-        <parameter name='efi_steps' from='intarray' to='intarray'
-            member='steps' default='intarray()' >           
-            <documentation> steps to extract ( legend will use step+12) </documentation>
-        </parameter>
-         <parameter name='efi_parameter' from='string' to='string'
-            member='param' default='' xml='parameter'>
-            <metview default='0' class='' >  
-            </metview>
-            <documentation> epsgram latitude column name </documentation>
-            <migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         
-        <parameter name='efi_long_title' from='string' to='bool'
-            member='long_title' default='off' xml='long_title'>
-            <documentation> efigram long title ( Point Position ... General title!) </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-        <parameter name='efi_title' from='string' to='bool'
-            member='title' default='off' xml='title'>
-            <documentation> epsgram title ( parameter name) </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-        <parameter name='efi_latitude' from='float' to='float'
-            member='latitude' default='0' xml='latitude'>
-            <metview default='0' class='' >  
-            </metview>
-            <documentation> epsgram latitude column name </documentation>
-            <migration> New Magics: Parameter eps_latitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-       <parameter name='efi_longitude' from='float' to='float'
-            member='longitude' default='0' xml='longitude'>
-            <metview default='0' class='' >  
-            </metview>
-            <documentation> epsgram longitude column name</documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-        
-          <parameter name='efi_legend' from='string' to='bool'
-            member='legend' default='on'>           
-            <documentation> legend </documentation>
-        </parameter>  
-       
-        
-         <parameter name='efi_legend_colour_list' from='stringarray' to='stringarray'
-            member='legend_colours' default='stringarray()'>           
-            <documentation> legend box colour list  </documentation>
-        </parameter>
-         <parameter name='efi_legend_box_type' from='string' to='string'
-            member='legend_type' default='both'>           
-            <documentation> both/negative/positive </documentation>
-        </parameter>
-        <parameter name='efi_legend_normal_colour' from='string' to='Colour'
-            member='legend_normal_colour' default='black'>           
-            <documentation> legend colour box </documentation>
-        </parameter>
-          <parameter name='efi_legend_normal_thickness' from='int' to='int'
-            member='legend_normal_thickness' default='4'>           
-            <documentation> legend colour box </documentation>
-        </parameter>
-         
-       
-       
-         
-</class>
-
-
-
-<class name='EfiGraph' xmltag='efigraph' prefix='efi' action='pcdfgram' directory='visualisers' >
-	<documentation>
-		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
-	</documentation>
-        <parameter name='efi_box_colour_array' from='stringarray' to='stringarray'
-            member='box_colour' default='stringarray()' >           
-            <documentation> Colour of the curve  </documentation>
-        </parameter>
-        
-        <parameter name='efi_box_border_colour' from='string' to='Colour'
-            member='border_colour' default='black'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-          <parameter name='efi_box_border_thickness' from='int' to='int'
-            member='border_thickness' default='1'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-          <parameter name='efi_box_border_line_style' from='string' to='LineStyle'
-            member='border_style' default='solid'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-            <parameter name='efi_normal_colour' from='string' to='Colour'
-            member='normal_colour' default='black'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-         <parameter name='efi_normal_thickness' from='int' to='int'
-            member='normal_thickness' default='4'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-          <parameter name='efi_normal_line_style' from='string' to='LineStyle'
-            member='normal_style' default='solid'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-         <parameter name='efi_font' from='string' to='string' 
-                member='font' default='sansserif' xml='font'>           
-        </parameter>
-         <parameter name='efi_font_size' from='float' to='float' 
-                member='font_size' default='0.25' xml='font_size'>           
-        </parameter>
-        <parameter name='efi_font_style' from='string' to='string' 
-                member='font_style' default='' xml='font_style'>           
-        </parameter>
-        <parameter name='efi_font_colour' from='string' to='Colour' 
-                member='font_colour' default='black' xml='font_colour'>           
-        </parameter>
-        
-</class>
-<class name='CdfGraph' xmltag='cdfgraph' prefix='cdf' action='pcdfgram' directory='visualisers' >
-	<documentation>
-		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
-	</documentation>
-        <parameter name='cdf_lines_colour_array' from='stringarray' to='stringarray'
-            member='colour' default='stringarray()' >           
-            <documentation> Colour of the curve  </documentation>
-        </parameter>
-        
-        
-        <parameter name='cdf_lines_style_array' from='stringarray' to='stringarray'
-            member='style' default='stringarray()'>           
-            <documentation> Style of the curve  </documentation>
-        </parameter>
-        <parameter name='cdf_lines_thickness_array' from='intarray' to='intarray'
-            member='thickness' default='intarray()' >           
-            <documentation> Thickness of the curve  </documentation>
-        </parameter>
-        
-        <parameter name='cdf_clim_line_colour' from='string' to='Colour'
-            member='clim_colour' default='black'>           
-            <documentation> Colour of the clim curve  </documentation>
-        </parameter>
-        <parameter name='cdf_clim_line_thickness' from='int' to='int'
-            member='clim_thickness' default='4' >           
-            <documentation> Thickness of the clim curve  </documentation>
-        </parameter>
-        <parameter name='cdf_clim_line_style' from='string' to='LineStyle'
-            member='clim_style' default='solid' >           
-            <documentation> Style of the clim curve  </documentation>
-        </parameter>         
-</class>
-
-<class name='MetgramGraph' xmltag='metgraph' prefix='metgram' action='pmetgram' directory='visualisers' >
-	<documentation>
-		The Epsgram is responsible for accessing the espgram database its data to MAGICS.
-	</documentation>
-        <parameter name='metgram_plot_style' from='string' to='MetgramStyle'
-            member='style' default='curve'>           
-            <documentation> Type of plot  </documentation>
-            <option name='MetgramBar'   fortran='bar'  xml='bar' include='MetgramStyle.h'/>
-            <option name='MetgramFlags'   fortran='flags'  xml='flags' include='MetgramStyle.h'/>
-			<option name='MetgramCurve'   fortran='curve'  xml='curve' include='MetgramStyle.h'/>
-        </parameter>
-</class>
-<class name='MetgramFlags'  xmltag='metflags' prefix='metgram' action='pmetgram' directory='visualisers' >
-    <documentation>
-        The metgram curve will plot the metgram a s a curve! 
-    </documentation>
-        <parameter name='metgram_flag_colour' from='string' to='Colour'
-            member='colour' default='red'>           
-            <documentation> Colour of Flag  </documentation>
-        </parameter>
-        <parameter name='metgram_flag_frequency' from='int' to='int'
-            member='frequency' default='1'>           
-            <documentation> Frequency to plot the flags  </documentation>
-        </parameter>
-        <parameter name='metgram_flag_length' from='float' to='float'
-            member='length' default='0.5'>           
-            <documentation> length of the flag  </documentation>
-        </parameter>
-</class>
-<class name='MetgramCurve' xmltag='metgraph' prefix='metgram' action='pmetgram' directory='visualisers' >
-    <documentation>
-        The metgram curve will plot the metgram a s a curve! 
-    </documentation>
-        <parameter name='metgram_curve_line_style' from='string' to='LineStyle'
-            member='style' default='solid'>           
-            <documentation> LineStyle of the curve  </documentation>
-        </parameter>
-        <parameter name='metgram_curve2_line_style' from='string' to='LineStyle'
-            member='style2' default='solid'>           
-            <documentation> LineStyle of the second curve  </documentation>
-        </parameter>
-        <parameter name='metgram_curve_colour' from='string' to='Colour'
-            member='colour' default='red'>           
-            <documentation> Colour of the curve  </documentation>
-        </parameter>
-         <parameter name='metgram_curve2_colour' from='string' to='Colour'
-            member='colour2' default='blue'>           
-            <documentation> Colour of the second curve  </documentation>
-        </parameter>
-        <parameter name='metgram_curve_thickness' from='int' to='int'
-            member='thickness' default='2'>           
-            <documentation> Thickness of the curve  </documentation>
-        </parameter>
-        <parameter name='metgram_curve2_thickness' from='int' to='int'
-            member='thickness2' default='2'>           
-            <documentation> Thickness of the second curve  </documentation>
-        </parameter>
-</class>
-
-<class name='EpsShade' xmltag='epsshade' prefix='eps' action='pmetgram' directory='visualisers' >
-	<documentation>
-		The EpsSahde is responsible for plotting climate information as Shaded area.
-	</documentation>
-        <parameter name='eps_shade_colour' from='string' to='Colour'
-            member='colour' default='red'>           
-            <documentation> Colour of the darkest shade area ...  </documentation>
-        </parameter>
-        <parameter name='eps_shade_line_colour' from='string' to='Colour'
-            member='line_colour' default='red'>           
-            <documentation> Colour of the darkest shade area ...  </documentation>
-        </parameter>
-         <parameter name='eps_shade_line_style' from='string' to='LineStyle'
-            member='line_style' default='solid'>           
-            <documentation> Colour of the darkest shade area ...  </documentation>
-        </parameter>
-           <parameter name='eps_shade_line_thickness' from='int' to='int'
-            member='line_thickness' default='1'>           
-            <documentation> Colour of the darkest shade area ...  </documentation>
-        </parameter>
-</class>
-<class name='EpsPlume' xmltag='epsplume' prefix='eps/eps_plume' action='pmetgram' directory='visualisers' >
-	<documentation>
-		The EpsPlumeis responsible for plotting epsplume graph
-	</documentation>  
-		<parameter name='eps_plume_method' from='string' to='string' values='time_serie/vertical_profile'
-            member='method' default='time_serie'>           
-            <documentation> Type of visualisation required : time_serie or vertical_profile </documentation>
-        </parameter>
-        <parameter name='eps_plume_line_colour' from='string' to='Colour'
-            member='line_colour' default='magenta'>           
-            <documentation>Line colour of the eps members  </documentation>
-        </parameter>
-        
-         <parameter name='eps_plume_line_style' from='string' to='LineStyle'
-            member='line_style' default='solid'>           
-            <documentation> Line style of the eps members </documentation>
-        </parameter>
-           <parameter name='eps_plume_line_thickness' from='int' to='int'
-            member='line_thickness' default='1'>           
-            <documentation> Line thickness of the eps members  </documentation>
-        </parameter>
-        
-          <parameter name='eps_plume_forecast_line_colour' from='string' to='Colour'
-            member='forecast_line_colour' default='cyan'>           
-            <documentation> Line colour of the deterministic forecast  </documentation>
-        </parameter>
-        
-         <parameter name='eps_plume_forecast_line_style' from='string' to='LineStyle'
-            member='forecast_line_style' default='dash'>           
-            <documentation>   Line Style of the deterministic forecast </documentation>
-        </parameter>
-           <parameter name='eps_plume_forecast_line_thickness' from='int' to='int'
-            member='forecast_line_thickness' default='5'>           
-            <documentation>  Line thickness of the deterministic forecast  </documentation>
-        </parameter>
-        
-        <parameter name='eps_plume_control_line_colour' from='string' to='Colour'
-            member='control_line_colour' default='cyan'>           
-            <documentation>  Line colour of the control forecast  </documentation>
-        </parameter>
-        
-         <parameter name='eps_plume_control_line_style' from='string' to='LineStyle'
-            member='control_line_style' default='solid'>           
-            <documentation>  Line Style of the control forecast</documentation>
-        </parameter>
-           <parameter name='eps_plume_control_line_thickness' from='int' to='int'
-            member='control_line_thickness' default='5'>           
-            <documentation>  Line thickness of the deterministic forecast  </documentation>
-        </parameter>
-        
-</class>
-<class name='EpsDirection' xmltag='epsdirection' prefix='eps/eps_direction' action='pmetgram' directory='visualisers' >
-	<documentation>
-		The EpsPlumeis responsible for plotting epsplume graph
-	</documentation>
-    <parameter name='eps_direction_keyword' from='string' to='string'
-            member='keyword' default='forecast'>           
-            <documentation> keyword to plot : forecast/control! </documentation>
-        </parameter>
-        <parameter name='eps_direction_line_colour' from='string' to='Colour'
-            member='line_colour' default='red'>           
-            <documentation> Colour of lines ...  </documentation>
-        </parameter>
-        
-         <parameter name='eps_direction_line_style' from='string' to='LineStyle'
-            member='line_style' default='solid'>           
-            <documentation> Line Style </documentation>
-        </parameter>
-           <parameter name='eps_direction_line_thickness' from='int' to='int'
-            member='line_thickness' default='1'>           
-            <documentation> Thickness of the line ...  </documentation>
-        </parameter>
-</class>
-
-<class name="EpsXmlInput" xmltag='epsxml' prefix='epsxml' action='pmetgram'  directory='decoders' >
- <parameter name='epsxml_input_filename' from='string' to='string' 
- 	    member='path' default=''>
-  	<documentation> Path to the file containing the Xml Description </documentation>
- </parameter>
-  <parameter name='epsxml_parameter' from='string' to='string' 
- 	    member='param' default=''>
-  	<documentation> Parameter to extract </documentation>
- </parameter>
-   <parameter name='epsxml_long_title' from='string' to='bool'
-            member='long_title' default='off' >
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         <parameter name='epsxml_title' from='string' to='bool'
-            member='short_title' default='on' >
-            <documentation> epsgram long title </documentation>
-            <migration> New Magics: Parameter eps_longitude sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-</class>
-
-<class name="EpsBufr" xmltag='epsbufr' prefix='epsbufr' action='pmetgram'  directory='decoders' >
- <parameter name='epsbufr_input_filename' from='string' to='string' 
- 	    member='path' default=''>
-  	<documentation> Path to the file containing the Bufr data </documentation>
- </parameter>
-    <parameter name='epsbufr_title' from='string' to='string'
-             member='title' default='' >
-         <documentation> text block to be plotted </documentation>
-        </parameter>
-  <parameter name='epsbufr_parameter_title' from='string' to='string' 
- 	    member='param_title' default=''>
-  	<documentation> Title to use to describe the parameter </documentation>
- </parameter>
-  <parameter name='epsbufr_information' from='string' to='bool' 
- 	    member='information' default='on'>
-  	<documentation> Plot or not information about station/forecast  in a long title   </documentation>  
- </parameter>
-  <parameter name='epsbufr_short_title' from='string' to='bool' 
- 	    member='short_title' default='on'>
-  	<documentation> Plot or not information about station/forecast  in a long title   </documentation>  
- </parameter>
- <parameter name='epsbufr_parameter_descriptor' from='int' to='int' 
- 	    member='param_descriptor' default='0'>
-  		<documentation> Descriptor to use </documentation>
-  </parameter>
-  <parameter name='epsbufr_parameter_2_descriptor' from='int' to='int' 
- 	    member='param_descriptor_2' default='0'>
-  		<documentation> Descriptor to use </documentation>
-  </parameter>
-  <parameter name='epsbufr_accumulated_parameter' from='string' to='bool' 
- 	    member='accumulated' default='off'>
-  		<documentation> Descriptor to use </documentation>
-  </parameter>
-   <parameter name='epsbufr_station_name' from='string' to='string'
-            member='station_name' default='' >
-       <documentation>Name of the station to use in the title </documentation>
-   </parameter>
-   <parameter name='epsbufr_station_latitude' from='float' to='float'
-            member='latitude' default='0'>
-            <documentation>Latitude of the point to extract </documentation>
-        </parameter>
-         <parameter name='epsbufr_station_longitude' from='float' to='float'
-            member='longitude' default='0'>           
-            <documentation> Longitude of the point to extract </documentation>
-        </parameter>
-         <parameter name='epsbufr_parameter_scaling_factor' from='float' to='float'
-            member='param_scaling_factor' default='1'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-         <parameter name='epsbufr_parameter_offset_factor' from='float' to='float'
-            member='param_offset_factor' default='0'>
-             <documentation> Scaling factor to apply to the values</documentation>
-        </parameter>
-    <parameter name='epsbufr_y_axis_percentile' from='float' to='float'
-            member='percentile' default='1'>           
-            <documentation> Temperature correction  </documentation>
-            <available>yes</available>
-            <available>no</available>
-           
-            <migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  </migration>
-        </parameter>
-        
-         <parameter name='epsbufr_y_axis_threshold' from='float' to='float'
-            member='threshold' default='50'>           
-            <documentation> Temperature correction  </documentation>
-            <available>yes</available>
-            <available>no</available>
-           
-            <migration> New Magics: Parameter eps_temperature_correction sent to new Magics[EpsTempe].  </migration>
-        </parameter>
-</class>
-</magics>
diff --git a/src/xml/Frame.xml b/src/xml/Frame.xml
deleted file mode 100644
index c59bc9e..0000000
--- a/src/xml/Frame.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-
-
-<class name='Frame' action='pnew' used_by='XmlPage/XmlSubPage/Page' directory='common' inherits='FrameBase'>
-  <parameter name='frame_colour' from='string' to='Colour'
-             member='colour' xml='colour' default='blue' >
-         <release>Magics++0.5</release>
-         <documentation> Colour of  frame </documentation>
-  </parameter>
-
-  <parameter name='frame_line_style' from='string' to='LineStyle'
-             member='style' xml='line_style' default='solid' >
-         <release>Magics++0.5</release>
-         <documentation> Style of  frame(SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-  </parameter>
-
-  <parameter name='frame_thickness' from='int' to='int'
-             member='thickness' xml='thickness' default='1'>
-         <release>Magics++0.5</release>
-         <documentation> Thickness of  frame </documentation>
-  </parameter>
-  
-   <parameter name='frame_blanking' from='string' to='bool'
-             member='blanking' xml='blanking' default='on'>
-         <release>Magics++0.5</release>
-         <release_info>Work in progress...</release_info>
-         <documentation> blanking of the box </documentation>
-  </parameter>
- </class>
- 
-
-<class name='NoFrame' action='pnew' directory='common' include='Frame.h' inherits='FrameBase'>
-   <documentation>
-   This object suppresses plotting of a frame.
-   </documentation>
-</class>
-<class name='FrameBase' action='pnew' directory='common' include='FrameBase.h'>
-   <documentation>
-   Base Object for frame
-   </documentation>
-</class>
-  
-</magics>
diff --git a/src/xml/GDDriver.xml b/src/xml/GDDriver.xml
deleted file mode 100644
index 455b46c..0000000
--- a/src/xml/GDDriver.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='GDDriver' xmltag='gd' prefix='output' directory='drivers' inherits='BaseDriver'>
-	<documentation for_docs='no'>
-		This output driver produces raster output in PNG, GIF, and JPEG format.
-		PNG output can be produced with a transparent background which can be used for overlays.
-
-		JPEG output is included here for backwards compatibility, but is not an ideal format for 
-		scientific plots in raster format. 
-
-		See also the parameters for the Base Driver.
-	</documentation>
-
-	<parameter name='output_jpeg_quality' from='int' to='int' member='quality' default='-1'>
-            <documentation>Defines the quality of Jpeg output. The default of -1 should yield a good general quality/size tradeoff. Should be a value in the range 0-95.</documentation>
-            <migration />
-        </parameter>
-
-	<parameter name='output_gif_delay' from='int' to='int' member='delay' default='100'>
-            <documentation>Defines the delay in 1/100 seconds for GIF animations.</documentation>
-        </parameter>
-
-	<parameter name='output_png_transparent' from='string' to='bool' member='transparent' default='off'>
-            <documentation>Sets the background to transparent for overlays. Works only with PNG output. (ON/OFF)</documentation>
-        </parameter>
-<!--
-	<parameter name='output_xml' from='string' to='bool' member='xml' default='off' >
-            <documentation>Should an XML description be output? (ON/OFF)</documentation>
-        </parameter>
--->
-</class>
-
-</magics>
diff --git a/src/xml/GeoRectangularProjection.xml b/src/xml/GeoRectangularProjection.xml
deleted file mode 100644
index b6e0cf9..0000000
--- a/src/xml/GeoRectangularProjection.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<!--
- ******************************** LICENSE ********************************
- 
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- ******************************** LICENSE ********************************
--->
-<magics> 
-<class name='GeoRectangularProjection' inherits='Transformation'
-	action='projection' directory='common' xmltag='cylindrical' prefix='subpage'>
-	<documentation>
-		These are the attributes of the GeoRectangular projection. 
-	</documentation>
-  <parameter name='subpage_lower_left_latitude' from='float' to='float'
-             member='min_latitude' default='-90.0'>
-         <release>Magics++0.1</release>
-         <documentation> Latitude of lower left corner of map. </documentation>
-  </parameter>
-
-  <parameter name='subpage_lower_left_longitude' from='float' to='float'
-             member='min_longitude' default='-180.0' >
-         <release>Magics++0.1</release>
-         <documentation> Longitude of lower left corner of map </documentation>
-  </parameter>
-
-  <parameter name='subpage_upper_right_latitude' from='float' to='float'
-             member='max_latitude' default='90.0' >
-         <release>Magics++0.1</release>
-         <documentation> Latitude of upper right corner of map </documentation>
-  </parameter>
-
-  <parameter name='subpage_upper_right_longitude' from='float' to='float'
-             member='max_longitude' default='180.0' >
-         <release>Magics++0.1</release>
-         <documentation> Longitude of upper right corner of map </documentation>
-  </parameter>
-  <parameter name='subpage_minimal_area'  from='float'  to='float'  member='min_area' default='0.1' visible='off' >
-         <release>Magics++2.11</release>
-         <documentation> Dimension in degrees of the minimal area to display  </documentation>
-  </parameter>
-</class>
-
-<class name='MercatorProjection' inherits='GeoRectangularProjection' include='GeoRectangularProjection.h'
-	action='projection' directory='common' xmltag='rectangular' prefix='subpage'/>
-
-
-</magics>
-
diff --git a/src/xml/Geopoints.xml b/src/xml/Geopoints.xml
deleted file mode 100644
index 3ad5aa1..0000000
--- a/src/xml/Geopoints.xml
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name = 'GeoPointsDecoder' xmltag='geopoints' prefix='geo/geo_input' action='pgeo' directory='decoders'>
-   <parameter name='geo_input_file_name' from='string' to='string'
-             member='path' default=''>
-         <release>Magics++1.1</release>
-         <documentation> The name of the input file containing the GeoPoints code field(s) </documentation>
-  </parameter>
-</class>
-   
-<class name = 'SimplePolylineInput'  xmltag='polyline_input' prefix='polyline/polyline_input' action='pline' directory='decoders' >
-  
-  <parameter name='polyline_input_latitudes' from='floatarray' to='floatarray'
-             member='latitudes' default='floatarray()'>
-         <release>Magics++2.1</release>
-         <documentation> Array containing the latitudes of the polylines. Each polyline is separated by the break value </documentation>
-  </parameter>
-  <parameter name='polyline_input_longitudes' from='floatarray' to='floatarray'
-             member='longitudes'  default='floatarray()'>
-         <release>Magics++2.1</release>
-         <documentation> Array containing the longitudes of the polylines. Each polyline is separated by the break value </documentation>
-  </parameter>
-   <parameter name='polyline_input_values' from='floatarray' to='floatarray'
-             member='values' default='floatarray()'>
-         <release>Magics++2.1</release>
-         <documentation> Array containing the values for each polyline </documentation>
-  </parameter>
-   <parameter name='polyline_input_break_indicator' from='float' to='float'   
-             member='breakvalue'  default='-999'>
-         <release>Magics++2.1</release>
-         <documentation> Value used as either a latitude or longitude to denote a separation between polylines </documentation>
-  </parameter>
-  <parameter name='polyline_input_positions_filename' from='string' to='string'
-             member='position_filename' xml='position_filename'
-			 default=''>
-         <release>Magics++2.1</release>
-         <documentation> Path to a file containing the coordinates for all polylines' points. </documentation>
-  </parameter>
-  <parameter name='polyline_input_values_filename' from='string' to='string'
-             member='values_filename'  default=''>
-         <release>Magics++2.1</release>
-         <documentation> Path to a file containing the values for each polyline. </documentation>
-  </parameter>
-</class>
-
-<class name = 'SimplePolyline'  xmltag='polyline' prefix='polyline/polyline_line' action='pline' directory='visualisers'  interface='ColourTechniqueInterface/LevelSelectionInterface' inherits='SimplePolylineInput'>
- <parameter name='legend' from='string' to='bool'
-             member='legend' default='off'>
-         <release>Magics++2.80</release>
-         <documentation> Turn the legend on </documentation>
-  </parameter>
-  <parameter name='polyline_line_colour' from='string' to='Colour'
-             member='colour' default='blue'>
-         <release>Magics++2.1</release>
-         <documentation> Colour of the polylines </documentation>
-  </parameter>
-  <parameter name='polyline_line_style' from='string' to='LineStyle'
-             member='style' default='solid'>
-         <release>Magics++2.1</release>
-         <documentation> Style of the polylines (SOLID/ DASH/ DOT/ CHAIN_DASH/ CHAIN_DOT) </documentation>
-  </parameter>
-  <parameter name='polyline_line_thickness' from='int' to='int'
-             member='thickness' default='1'>
-         <release>Magics++2.1</release>
-         <documentation> Thickness of the polylines </documentation>
-  </parameter>
-  
-  <parameter name='polyline_level_count' from='int' to='int'
-             member='count'  default='10'>
-         <documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
-         this means that the number of levels could be slightly different from the requested number of levels</documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-  <parameter name='polyline_level_tolerance' from='int' to='int'
-             member='tolerance'  default='2'>
-         <documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-  <parameter name='polyline_reference_level' from='float' to='float'
-             member='reference'  default='0.0'>
-         <documentation> Level from which the level interval is calculated </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-
-  <parameter name='polyline_interval' from='float' to='float'
-             member='interval'  default='8.0'>
-         <documentation> Interval in data units between different bands of shading </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
- <parameter name='polyline_level_list' from='floatarray' to='floatarray'
-             member='list'	 default='floatarray()'>
-         <documentation> List of shading band levels to be plotted </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-  
-  <parameter name='polyline_shade' from='string' to='bool'
-             member='shade' default='none'>
-         <release>Magics++2.1</release>
-         <documentation> Whether to shade polygons or not (ON/OFF) </documentation>
-  </parameter>
-  
-   <parameter name='polyline_shade_max_level' from='float' to='float'
-             member='max'  default='1.0e+21' >
-         <documentation> Maximum level for which shading is required </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-  <parameter name='polyline_shade_min_level' from='float' to='float'
-             member='min'  default='-1.0e+21'>
-         <documentation> Minimum level for which shading is required </documentation>
-         <release>Magics++2.1</release>
-       
-  </parameter>
-  
-  <parameter name='polyline_shade_level_selection_type' from='string' to='LevelSelection'
-             member='levelSelection'  default='count'>
-         <documentation> Can be set to one of: (COUNT/ INTERVAL/ LEVEL_LIST) </documentation>
-         <release>Magics++2.1</release>
-         <option name='CountSelectionType'     fortran='count'    xml='count'    docdive='no' include='CountSelectionType.h'/>
-         <option name='IntervalSelectionType'  fortran='interval' xml='interval' docdive='no' include='IntervalSelectionType.h'/>
-         <option name='LevelListSelectionType' fortran='list'     xml='list'     docdive='no' include='LevelListSelectionType.h'/>
-  </parameter>
-
-  <parameter name='polyline_shade_colour_method' from='string' to='ColourTechnique'
-             member='colourMethod' 	 default='calculate'>
-         <documentation> Method of generating the colours of the bands in polygon shading (LIST/CALCULATE) </documentation>
-         <option name='CalculateColourTechnique' fortran='calculate' xml='calculate' docdive='no' include='CalculateColourTechnique.h'/>
-         <option name='ListColourTechnique'      fortran='list'      xml='list'      docdive='no' include='ListColourTechnique.h'/>
-         <available>list</available>
-         <release>Magics++2.1</release>
-  </parameter>
-
-  <parameter name='polyline_shade_max_level_colour' from='string' to='Colour'
-             member='maxColour' default='blue'>
-         <documentation> Highest shading band colour </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-  <parameter name='polyline_shade_min_level_colour' from='string' to='Colour'
-             member='minColour'  default='red'>
-         <documentation> Lowest shading band colour </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-  <parameter name='polyline_shade_colour_direction' from='string' to='string'
-             member='direction' default='anti_clockwise'>
-         <documentation> Direction of colour sequencing for shading (CLOCKWISE/ ANTI_CLOCKWISE) </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-  <parameter name='polyline_shade_colour_list'  colourlist='on' from='stringarray' to='stringarray'
-             member='colours' default='stringarray()'>
-         <documentation> List of colours to be used in polygon shading. </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-
-</class>
-
-
-
-<class name = 'MapGenDecoder' xmltag='mapgen' perfix='mapgen' action='pmapgen' directory='decoders'>
-   <parameter name='mapgen_input_file_name' from='string' to='string'
-             member='path'  default=''>
-         <release>Magics++2.1</release>
-         <documentation> The name of the input file containing the MapGen data </documentation>
-  </parameter>
-   <parameter name='mapgen_record' from='int' to='int'
-             member='record'  default='-1'>
-         <release>Magics++2.1</release>
-         <documentation> The name of the input file containing the MapGen data to plot </documentation>
-  </parameter>
-</class>
-
-<class name = 'ShapeDecoder' xmltag='shape' prefix='shape' action='pshape' directory='decoders'>
-   <parameter name='shape_input_file_name' from='string' to='string'
-             member='path'  default=''>
-         <release>Magics++2.1</release>
-         <documentation> The name of the input file containing the shape data ( geography only) </documentation>
-  </parameter>
-   
-</class>
-
-</magics>
diff --git a/src/xml/Grib.xml b/src/xml/Grib.xml
deleted file mode 100644
index e6e83a4..0000000
--- a/src/xml/Grib.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name = 'GribDecoder' action='pgrib' directory='decoders' xmltag='grib' prefix='grib/grib'>
-	<documentation>
-		Responsible for reading and interpolating GRIB data.
-	</documentation>
-
-   <parameter name='grib_input_file_name' from='string' to='string'
-             member='file_name' default=''>
-         <release>Magics++0.1</release>
-         <documentation> The name of the input file containing the GRIB code field(s) </documentation>
-  </parameter>
-
-  <parameter name='grib_id' from='string' to='string'
-             member='id' default=''>
-         <release>Magics++2.6</release>
-         <documentation>Id used to identify a grib file in the title production</documentation>
-  </parameter>
-
- 
-  <parameter name='grib_automatic_scaling' from='string' to='bool'
-             member='scaling' default='on'>
-         <release>Magics++0.3</release>
-         <documentation> Scaling of the decoded field </documentation>
-  </parameter>
-
-  <parameter name='grib_automatic_derived_scaling' from='string' to='bool' for_docs='no'
-             member='derived_scaling' default='off'>
-         <release>Magics++2.13.5</release>
-         <documentation> Scaling of the decoded derived field. A field is considered derived if the GRIB_API key generatingProcessIdentifier is 254. </documentation>
-  </parameter>
-
-  <parameter name='grib_scaling_factor' from='float' to='float'
-             member='scaling_factor' default='1'>
-         <release>Magics++2.10</release>
-         <documentation> Apply a scaling factor to the field. </documentation>
-  </parameter>
-  <parameter name='grib_scaling_offset' from='float' to='float'
-             member='scaling_offset' default='0'>
-         <release>Magics++2.10</release>
-         <documentation> Apply a scaling offset to the field. </documentation>
-  </parameter>
-
- 
-  <parameter name='grib_text_experiment' from='string' to='bool'
-             member='expver'  default='off' visible='false'>
-         <release>Magics++0.3</release>
-         <documentation> Include the name or number of the experiment, used to generate the GRIB code field, in the automatic text  (ON/OFF)  </documentation>
-  </parameter>
-
-  <parameter name='grib_text_units' from='string' to='bool'
-             member='units' 	 default='off'  visible='false'>
-         <release>Magics++0.3</release>
-         <documentation> Include the units of the input field in the automatic text  </documentation>
-  </parameter>
-
-  
-
-  
-
- 
-
-  <parameter name='grib_file_address_mode' from='string' to='GribAddressMode'
-             member='address_mode' 	 default='record' metview='on'>
-	     <option name='GribAddressRecordMode' fortran='record' xml='record' include='GribAddressMode.h'/>
-	     <option name='GribAddressByteMode' fortran='byte_offset' xml='byte_offset' include='GribAddressMode.h'/>
-         <documentation> Normally GRIB fields are stored as records on a file. If the BYTE offset method is being used, the parameter GRIB_FILE_ADDRESS_MODE should be set to 'BYTE_OFFSET'.(RECORD_NUMBER/BYTE_OFFSET) </documentation>
-  </parameter>
-
-  
-
-  <parameter name='grib_wind_mode' from='string' to='WindMode'
-             member='wind_mode'  default='uv'>
-         <documentation> The incoming wind field may contain data other than wind components, e.g. wave height and direction.
-	                 grib_wind_mode should be set to indicate how to interpret the incoming wind field, 
-	                 as u/v components, or speed/direction (uv/vd).
-         </documentation>
-         <option name='UVWindMode' fortran='uv' xml='uvmode' include='WindMode.h' />
-         <option name='SDWindMode' fortran='sd' xml='vdmode' include='WindMode.h' />
-  </parameter>
-
-  
-
-  <parameter name='grib_field_position' from='int' to='int'
-             member='grib_field_position'  default='1'>
-         <documentation> The position in the input file of a field other than a wind component </documentation>
-  </parameter>
-
-  
-  
-
- 
-
-  <parameter name='grib_wind_position_1' from='int' to='int'
-             member='position_1' default='1'>
-         <documentation> The position in the input file of a wind component field </documentation>
-  </parameter>
-
-  <parameter name='grib_wind_position_2' from='int' to='int'
-             member='position_2' default='2'>
-         <documentation> The position in the input file of a wind component field </documentation>
-  </parameter>
-  
-
-  <parameter name='grib_wind_position_colour' from='int' to='int'
-             member='colour_position' default='3'>
-         <documentation> The position in the input file of a wind component field used to colour the flag</documentation>
-  </parameter>
-  
-  
-
-  <parameter name='grib_missing_value_indicator' from='float' to='float'
-             member='missing_value' 	 default='-1.5e+21' visible='false'>
-         <documentation> When MAGICS is decoding GRIB code, this is the value to be assigned to field values where data is missing, as indicated by the bit map in the GRIB file. </documentation>
-  </parameter>
-
-  
-</class>
-
-<class name='GribAddressMode' include='GribAddressMode.h' directory='decoders'/>
-
-<class name='GribAddressByteMode' include='GribAddressMode.h' inherits='GribAddressMode' directory='decoders'/>
-
-<class name='GribAddressRecordMode' include='GribAddressMode.h' inherits='GribAddressMode' directory='decoders'/>
-
-<class name='WindMode'   action='pgrib' directory='decoders' include='WindMode.h'/>
-<class name='UVWindMode' action='pgrib' directory='decoders' include='WindMode.h' inherits='WindMode'/>
-<class name='VDWindMode' action='pgrib' directory='decoders' include='WindMode.h' inherits='WindMode'/>
-<class name='SDWindMode' action='pgrib' directory='decoders' include='WindMode.h' inherits='WindMode'/>
-
-<class name = 'GribLoop' action='pgrib' directory='decoders' xmltag='gribloop' prefix='grib' include='GribDecoder.h'>
-	<documentation>
-		The purpose of the GRIB loop is to easily create an animation. This feature
-        is only available in MagML.
-	</documentation> 
-	<parameter name='grib_file_address_mode' from='string' to='GribAddressMode'
-             member='address_mode' 	 default='record'>
-	     <option name='GribAddressRecordMode' fortran='record' xml='record' include='GribAddressMode.h'/>
-	     <option name='GribAddressByteMode' fortran='byte_offset' xml='byte_offset' include='GribAddressMode.h'/>
-         <documentation> Normally GRIB fields are stored as records on a file. If the BYTE offset method is being used, the parameter GRIB_FILE_ADDRESS_MODE should be set to 'BYTE_OFFSET'.(RECORD_NUMBER/BYTE_OFFSET) </documentation>
-  </parameter>
-	<parameter name='grib_dimension' from='intarray' to='intarray'
-             member='dimension' default='intarray()'>
-         <documentation> Metview:dimension of the input : 1 for field, 2 for wind </documentation>
-  </parameter>
-  
-  <parameter name='grib_position_1' from='intarray' to='intarray'
-             member='dim_1' default='intarray()'>
-         <documentation> Metview:position of the fields for x component in the fieldset </documentation>
-  </parameter>
-  <parameter name='grib_position_2' from='intarray' to='intarray'
-             member='dim_2' default='intarray()'>
-         <documentation>  Metview:position of the fields for y component in the fieldset </documentation>
-  </parameter>
-  <parameter name='grib_position_colour' from='intarray' to='intarray'
-             member='dim_colour' default='intarray()'>
-         <documentation>  Metview:position of the fields for colour component in the fieldset </documentation>
-  </parameter>
-  <parameter name='grib_position' from='intarray' to='intarray'
-             member='dim' default='intarray()'>
-         <documentation> Metview:position of the fields to plot in the fieldset </documentation>
-  </parameter>
-	<parameter name='grib_loop_path' from='string' to='string'
-             member='path' default=''>
-         <documentation> Path of the grib to animate </documentation>
-    </parameter>
-    <parameter name='grib_loop_step' from='string' to='GribLoopStep'
-             member='step' default='loopondate' >
-	      <option name='DateGribLoopStep' xml='loopondate' fortran='loopondate' include='GribLoopStep.h' />
-	      <option name='ParamGribLoopStep' xml='looponparam' fortran='looponparam' include='GribLoopStep.h' />
-         <documentation> Method to create the steps names for each plot of the animation</documentation>
-    </parameter>
-    <parameter name='grib_automatic_scaling' from='string' to='bool'
-             member='scaling' default='on'>
-         <release>Magics++0.3</release>
-         <documentation> Scaling of the decoded field (ON/OFF) </documentation>
-  </parameter>
-  <parameter name='grib_automatic_derived_scaling' from='string' to='bool' for_docs='no'
-             member='derived_scaling' default='off'>
-         <release>Magics++2.13.5</release>
-         <documentation> Scaling of the decoded derived field (ON/OFF). A field is considered derived if the GRIB_API key generatingProcessIdentifier is 254. </documentation>
-  </parameter>
-  <parameter name='grib_scaling_factor' from='float' to='float'
-             member='scaling_factor' default='1'>
-         <release>Magics++2.10</release>
-         <documentation> Apply a scaling factor to the field. </documentation>
-  </parameter>
-  <parameter name='grib_scaling_offset' from='float' to='float'
-             member='scaling_offset' default='0'>
-         <release>Magics++2.10</release>
-         <documentation> Apply a scaling offset to the field. </documentation>
-  </parameter> 
-  <parameter name='grib_wind_mode' from='string' to='WindMode'
-             member='wind_mode'  default='uv'>
-         <documentation> The incoming wind field may contain data other than wind components, e.g. wave height and direction.
-	                 grib_wind_mode should be set to indicate how to interpret the incoming wind field, 
-	                 as u/v components, or speed/direction (uv/vd).
-         </documentation>
-         <option name='UVWindMode' fortran='uv' xml='uvmode' include='WindMode.h' />
-         <!--option name='VDWindMode' fortran='vd' xml='vdmode' include='WindMode.h' /-->
-         <option name='SDWindMode' fortran='sd' xml='sdmode' include='WindMode.h' />
-  </parameter>
-</class>
-<class name = 'GribLoopStep' action='pgrib' xmltag='loopondate' directory='decoders' prefix = 'grib/grib_loop_step' />
-<class name = 'ParamGribLoopStep' action='pgrib' xmltag='looponparam' directory='decoders' inherits='GribLoopStep' prefix = 'grib/grib_loop_step' include='GribLoopStep.h'>
-	<documentation/> 
-</class>
-<class name = 'DateGribLoopStep' action='pgrib' xmltag='loopondate' directory='decoders' inherits='GribLoopStep' prefix = 'grib/grib_loop_step' include='GribLoopStep.h'>
-	<documentation> 
-		Sets the parameters related to looping on dates in a GRIB loop. 
-	</documentation>
-	<parameter name='grib_loop_step_span' from='float' to='float'
-             member='span' xml='loop_step_span' default='3'>
-         <documentation> Time interval  </documentation>
-    </parameter>
-    
-    <parameter name='grib_file_address_mode' from='string' to='GribAddressMode'
-             member='address_mode' 	 default='record'>
-	     <option name='GribAddressRecordMode' fortran='record' xml='record' include='GribAddressMode.h'/>
-	     <option name='GribAddressByteMode' fortran='byte_offset' xml='byte_offset' include='GribAddressMode.h'/>
-         <documentation> Normally GRIB fields are stored as records on a file. If the BYTE offset method is being used, the parameter GRIB_FILE_ADDRESS_MODE should be set to 'BYTE_OFFSET'.(RECORD_NUMBER/BYTE_OFFSET) </documentation>
-  </parameter>
-
-  
-
-  
-    
-  
-    
-  
-</class>
-</magics>
diff --git a/src/xml/GridPlotting.xml b/src/xml/GridPlotting.xml
deleted file mode 100644
index 1ddfba2..0000000
--- a/src/xml/GridPlotting.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='GridPlotting' action='pcoast' directory='visualisers' 
-	xmltag='grid' prefix='map/map_grid' inherits='NoGridPlotting' >
-	<documentation>
-		This object will control the settings of the Map Grids.
-	</documentation>
-        <parameter name='map_grid_line_style' from='string' to='LineStyle'
-            member='style' default='solid' >
-            <documentation>
-            Line style of map grid lines
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-      
-        <parameter name='map_grid_thickness' from='int' to='int'
-            member='thickness' default='1'>
-            <documentation>
-            Thickness of map grid lines
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-        <parameter name='map_grid_colour' from='string' to='Colour'
-            member='colour' default='BLACK'>
-            <documentation>
-            Colour of map grid lines
-           </documentation>
-           <release>Magics++0.1</release>
-           <migration> Default changed fronm YELLOW to BLACK </migration>
-       </parameter>
-      
-</class>
-
-
-<class name='NoGridPlotting' xmltag='nogrid' action='pcoast' directory='visualisers' include='GridPlotting.h' >
-   <documentation>
-   This object suppresses the plotting of the map grid.
-   </documentation> 
-   <parameter name='map_grid_latitude_reference' from='float' to='float'
-            member='latReference' default='0' metview='on'>
-            <documentation>
-            Reference Latitude from which all latitude lines are drawn
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-        <parameter name='map_grid_latitude_increment' from='float' to='float'
-            member='latIncrement' default='10' metview='on'>
-            <documentation>
-            Interval between latitude grid lines
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-        <parameter name='map_grid_longitude_reference' from='float' to='float'
-            member='lonReference' default='0' metview='on'>
-            <documentation>
-            Reference Longitude from which all longitude lines are drawn
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-        <parameter name='map_grid_longitude_increment' from='float' to='float'
-            member='lonIncrement' default='20' metview='on'>
-            <documentation>
-            Interval between longitude grid lines
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-</class>
-
-
-</magics>
diff --git a/src/xml/HiLo.xml b/src/xml/HiLo.xml
deleted file mode 100644
index 5a93af5..0000000
--- a/src/xml/HiLo.xml
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='HiLo' action='pcont'
-	xmltag='hilo' prefix='contour/contour_hilo'  directory='visualisers' inherits='HiLoBase' >
-  <documentation>
-  Maxima/minima may be plotted as text and/or as numerical values, 
-  default being symbols (H and L ). 
-  The user may, by calling the parameter setting routines, 
-  plot maxima/minima values in various colours, heights, qualities etc. 
-  Users have facilities for plotting only one of these values, 
-  i.e. local maxima or local minima.
-  </documentation>
-
-<parameter name='contour_hilo_type' from='string' to='HiLoTechnique' member='type'  default='text'>
-         <documentation> Type of high/low (TEXT/NUMBER/BOTH) </documentation>
-         <migration> New Magics: Parameter contour_hilo_type sent to new Magics[HiLo].  </migration>
-         <release>0.2</release>
-         <option name='HiLoText'   fortran='text'   xml='text' include='HiLoText.h'/>
-         <option name='HiLoNumber' fortran='number' xml='number' include='HiLoNumber.h' />
-         <option name='HiLoBoth'   fortran='both'   xml='both' include='HiLoBoth.h' />
-</parameter>
-
-<parameter name='contour_hilo_window_size' from='int' to='int' member='window_size' default='3' new_parameter='on'>
-         <documentation> Size of the window used to calculate the Hi/Lo </documentation>
-         <migration> New Magics: Parameter contour_hilo_window_size sent to new Magics[HiLo].  </migration>
-         <release>0.1</release>
-         <release_info>new Parameter : we envisage  to have different methods to calculate Hi/Lo in future releases</release_info>
-</parameter>
-
-<parameter name='contour_hilo_reduction_radius' from='float' to='float' member='reduction_radius'    default='0.0' implemented='no'>
-         <documentation> Search radius (in grid points) for reducing the number of minima </documentation>
-         <migration> New Magics: Parameter contour_hilo_reduction_radius sent to new Magics[HiLo].  </migration>
-         <release_info>Parameter defined but not implemented : expected in 0.7</release_info>
-</parameter>
-  
-<parameter name='contour_hilo_suppress_radius' from='float' to='float'
-             member='suppress_radius'  default='15.0'>
-         <documentation> Radius of HiLo search in grid points (default value is for global cylindrical map) </documentation>
-         <migration> New Magics: Parameter contour_hilo_suppress_radius sent to new Magics[HiLo].  </migration>
-         <release_info>Parameter defined but not implemented: expected in 0.7</release_info>
-</parameter>
-
-<parameter name='contour_hilo_max_value' from='float' to='float' member='hilo_max_value'   default='1.0e+21'>
-         <documentation> Local HiLo above specified value are not drawn </documentation>
-         <migration> New Magics: Parameter contour_hilo_max_value sent to new Magics[HiLo].  </migration>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_hilo_min_value' from='float' to='float' member='hilo_min_value'    default='-1.0e+21' >
-         <documentation> Local HiLo below specified value are not drawn </documentation>
-         <migration> New Magics: Parameter contour_hilo_min_value sent to new Magics[HiLo].  </migration>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_hi_max_value' from='float' to='float'
-             member='hi_max_value' default='1.0e+21'>
-         <documentation> Local HI above specified value are not drawn </documentation>
-         <migration> New Magics: Parameter contour_hi_max_value sent to new Magics[HiLo].  </migration>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_hi_min_value' from='float' to='float'
-             member='hi_min_value'   default='-1.0e+21' >
-         <documentation> Local HI below specified value are not drawn </documentation>
-         <migration> New Magics: Parameter contour_hi_min_value sent to new Magics[HiLo].  </migration>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_lo_max_value' from='float' to='float'
-             member='lo_max_value'  default='1.0e+21' >
-         <documentation> Local Lo above specified value are not drawn </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_lo_min_value' from='float' to='float' member='lo_min_value'   default='-1.0e+21' >
-         <documentation> Local Lo below specified value are not drawn </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_hilo_marker' from='string' to='HiLoMarkerBase' member='marker' default='off' >
-         <documentation> Plot hilo marker (ON/OFF) </documentation>
-         <option name='HiLoMarker'   fortran='on'  xml='marker' include='HiLoMarker.h' />
-         <option name='NoHiLoMarker' fortran='off' xml='nomarker'  include='HiLoMarker.h' />
-         <release>0.2</release>
-</parameter>
-
-
-</class>
-
-
-<class name='NoHiLo' xmltag='nohilo' action='pcont' directory='visualisers' include='HiLo.h'  inherits='HiLoBase' >
-   <documentation>This object suppresses Hi/Lo information.</documentation>
-</class>
-
-<class name='HighHiLo'  xmltag='high' action='pcont' directory='visualisers' include='HiLo.h'  inherits='HiLoBase'  />
-<class name='LowHiLo'  xmltag='low' action='pcont' directory='visualisers' include='HiLo.h'  inherits='HiLoBase' />
-<class name='HiLoBase'  include='HiLoBase.h' directory='visualisers' />
-<class name='HiLoMarkerBase' include='HiLoMarkerBase.h' directory='visualisers'/> 
-
-<class name='HiLoMarker' action='pcont'  xmltag='marker' prefix='contour/contour_hilo/contour_hilo_marker' directory='visualisers' inherits='HiLoMarkerBase' > 
-  <documentation>
-  The position of a maxima/minima value may be marked by plotting a symbol on the precise location. 
-  Users may define their own symbol by setting the parameter CONTOUR_HiLo_MARKER_INDEX
-  </documentation>
-
-<parameter name='contour_hilo_marker_height' from='float' to='float' member='height' default='0.1' >
-         <documentation> Height of HiLo marker symbol </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_hilo_marker_index' from='int' to='int' member='index' default='3' >
-         <documentation> Table number of marker symbol. See chapter on Plotting Attributes </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_hilo_marker_colour' from='string' to='Colour' member='colour' default='red' >
-         <documentation> Colour of grid point markers(Full choice of colours) </documentation>
-         <release>0.2</release>
-</parameter>
-
-</class>
-
-
-
-<class name='NoHiLoMarker' xmltag='nomarker' action='pcont' directory='visualisers'  include='HiLoMarker.h' inherits='HiLoMarkerBase'  >
-   <documentation>
-   This object suppresses the plotting of Hi/Lo markers
-   </documentation>
-</class>
-
-<class name='HiLoSaveBase'  action='pcont' directory='visualisers'/>
-
-
-<class name='HiLoSave' xmltag='save' prefix='contour/contour_hilo' action='pcont' directory='visualisers' inherits='HiLoSaveBase' >
-  <documentation>The User can dowload the positions of the High and Lows in a file. The information will be stored using the Metview GeoPoint file format.</documentation>
-
-<parameter name='contour_hilo_position_file_name' from='string' to='Path' member='file_name' xml='position_file_name' default=''>
-         <documentation> Path/filename of  HiLo file to write </documentation>
-         <release>0.2</release>
-</parameter>
-</class>
-
-<class name='NoHiLoSave' xmltag='nosave' action='pcont' directory='visualisers'  inherits='HiLoSaveBase' include='HiLoSave.h' >
-   <documentation>This object suppresses the saving of Hi/Lo information.</documentation>
-</class>
-
-<class name='HiLoNumber' xmltag='number' prefix='contour/contour_hilo' action='pcont' directory='visualisers' inherits='HiLoTechnique' >
-  <documentation>This object is reponsible for plotting the HI/Lo as text.</documentation>
-
-<parameter name='contour_hilo_format' from='string' to='string' member='format' xml='format' default='(automatic)' >
-         <documentation> Format of HiLo numbers (MAGICS Format/(AUTOMATIC)) </documentation>
-</parameter>
-
-<parameter name='contour_hilo_blanking' from='string' to='bool' member='blanking' default='off'>
-         <documentation>Blank around highs and lows (ON/OFF)</documentation>
-</parameter> 
-</class>
-
-
-<class name='HiLoTechnique' action='pcont' xmltag='hilo' prefix='contour/contour_hilo' directory='visualisers'>
-  <documentation> common attributes to the HiLo technique plotting</documentation> 
-
-<parameter name='contour_hilo_height' from='float' to='float' member='contour_hilo_height' xml='height' default='0.4'>
-         <documentation> Height of local maxima/minima text or numbers </documentation>
-         <release>0.1</release>
-</parameter>
-
-<parameter name='contour_hilo_quality' from='string' to='string' member='contour_hilo_quality' xml='quality' default='low'>
-         <documentation> (LOW/MEDIUM/HIGH) </documentation>
-         <release>0.1</release>
-</parameter>
-
-<parameter name='contour_hi_colour' from='string' to='Colour' member='hi_colour' xml='hi_colour' default='blue' >
-         <documentation> Colour of local maxima text or number </documentation>
-         <release>0.1</release>
-</parameter>
-
-<parameter name='contour_lo_colour' from='string' to='Colour' member='lo_colour' xml='lo_colour' default='blue'>
-         <documentation> Colour of local minima text or number </documentation>
-         <release>0.1</release>
-</parameter>
-</class> 
-
-
-<class name='HiLoBoth' action='pcont' xmltag='both' directory='visualisers'  inherits='HiLoTechnique'  />
-</magics>
diff --git a/src/xml/HiLoMarker.xml b/src/xml/HiLoMarker.xml
deleted file mode 100644
index 46879b1..0000000
--- a/src/xml/HiLoMarker.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='HiLoMarkerBase' include='HiLoMarkerBase.h' directory='visualisers'/> 
-
-<class name='HiLoMarker' action='pcont' used_by='HiLo' directory='visualisers' inherits='HiLoMarkerBase'> 
-  <documentation>
-  The position of a maxima/minima value may be marked by plotting a symbol on the precise location. 
-  Users may define their own symbol by setting the parameter CONTOUR_HILO_MARKER_INDEX
-  </documentation>
-  <parameter name='contour_hilo_marker_height' from='float' to='float'
-             member='height' xml='height' default='0.1' >
-         <documentation> Height of HILO marker symbol </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-
-  <parameter name='contour_hilo_marker_index' from='int' to='int'
-             member='index' xml='index' default='3' >
-         <documentation> Table number of marker symbol. See chapter on Plotting Attributes </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-
-<parameter name='contour_hilo_marker_colour' from='string' to='Colour'
-           member='colour' xml='colour' default='red' >
-         <documentation> Colour of grid point markers(Full choice of colours) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-
-</class>
-
-
-
-<class name='NoHiLoMarker' action='pcont' directory='visualisers'include='HiLoMarker.h' inherits='HiLoMarkerBase'>
-   <documentation>
-   This object suppresses the plotting of Hi/Lo markers
-   </documentation>
-</class>
- 
-
-
-
-</magics>
diff --git a/src/xml/HiLoNumber.xml b/src/xml/HiLoNumber.xml
deleted file mode 100644
index fc07ae2..0000000
--- a/src/xml/HiLoNumber.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='HiLoNumber' action='pcont' directory='visualisers' inherits='HiLoTechnique'>
-  <documentation>
-This object is reponsible for plotting the HI/Lo as text.
-  </documentation>
-  <parameter name='contour_hilo_format' from='string' to='string'
-             member='format' xml='format' default='(automatic)' >
-         <documentation> Format of HILO numbers (MAGICS Format/(AUTOMATIC)) </documentation>
-         <release>Magics++0.1</release>
-         <release_info>Parameter defined but not implemented : expected in 0.7</release_info>
-  </parameter> 
- 
-</class>
-</magics>
diff --git a/src/xml/HiLoTechnique.xml b/src/xml/HiLoTechnique.xml
deleted file mode 100644
index 3c84367..0000000
--- a/src/xml/HiLoTechnique.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-
-<class name='HiLoTechnique'action='pcont' used_by='HiLo' directory='visualisers'>
-  <documentation> common attributes to the HiLo technique plotting</documentation> 
-  <parameter name='contour_hilo_height' from='float' to='float'
-             member='contour_hilo_height' xml='height' default='0.4'>
-         <documentation> Height of local maxima/minima text or numbers </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-   <parameter name='contour_hilo_quality' from='string' to='string'
-             member='contour_hilo_quality' xml='quality' default='low'>
-         <documentation> (LOW/MEDIUM/HIGH) </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  <parameter name='contour_hi_colour' from='string' to='Colour'
-             member='hi_colour' xml='hi_colour' default='blue' >
-         <documentation> Colour of local maxima text or number </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='contour_lo_colour' from='string' to='Colour'
-             member='lo_colour' xml='lo_colour' default='blue'>
-         <documentation> Colour of local minima text or number </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-</class> 
-<class name='HiLoBoth' action='pcont' used_by='HiLo' directory='visualisers'  inherits='HiLoTechnique'  /> 
-
-</magics>
diff --git a/src/xml/HiLoText.xml b/src/xml/HiLoText.xml
deleted file mode 100644
index 0871d1a..0000000
--- a/src/xml/HiLoText.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='HiLoText'  xmltag='text' prefix='contour' action='pcont' directory='visualisers' inherits='HiLoTechnique' >
-   <documentation>
-   This object is reponsible for plotting the HI/Lo as text.
-   </documentation>
-   <parameter name='contour_hi_text' from='string' to='string'
-              member='hi_text' xml='hi_text' default='H'>
-         <documentation> Text to represent local maxima </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='contour_lo_text' from='string' to='string'
-             member='lo_text' xml='lo_text' default='L'>
-         <documentation> Text to represent local minima </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-   <parameter name='contour_hilo_blanking' from='string' to='bool' member='blanking' default='off'>
-         <documentation> Blank around highs and lows (ON/OFF)</documentation>         
-         <release>Magics++2.6</release>
-  </parameter>
-</class>
-</magics>
diff --git a/src/xml/Histogram.xml b/src/xml/Histogram.xml
deleted file mode 100644
index f068f2b..0000000
--- a/src/xml/Histogram.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='Histogram' xmltag='histogram' directory='visualisers'>
-	<documentation>
-		Here comes the description of the Histogram action 
-	</documentation>
-
-    <parameter name='histogram_selection_type' 
-             from='string' to='LevelSelection'
-             member='levels' default='count'>
-         <documentation>  (COUNT/ INTERVAL/ LEVEL_LIST) </documentation>
-         <release>Magics++2.6</release>
-         <option name='CountSelectionType'   fortran='count'  xml='count' docdive='no' include='CountSelectionType.h'/>
-         <option name='IntervalSelectionType'   fortran='interval'  xml='interval' docdive='no' include='IntervalSelectionType.h'/>
-         <option name='LevelListSelectionType'   fortran='list'  xml='list' docdive='no' include='LevelListSelectionType.h'/>
-     </parameter>     
-
-  <parameter name='histogram_min_value' from='float' to='float'
-             member='min'  default='-1.e21'>
-         <documentation> Min value </documentation>
-         <release>Magics++2.6</release>
-  </parameter>
-  
-  <parameter name='histogram_max_value' from='float' to='float'
-             member='max'  default='1.e21'>
-         <documentation> max value to plot </documentation>
-         <release>Magics++2.6</release>
-  </parameter>
-  
-   <parameter name='histogram_level_count' from='int' to='int'
-             member='count'  default='10'>
-         <documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
-         this means that the number of levels could be slightly different from the requested number of levels</documentation>
-         <release>Magics++2.6</release>
-  </parameter>
-  
-  <parameter name='histogram_level_tolerance' from='int' to='int'
-             member='tolerance'  default='2'>
-         <documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] </documentation>
-         <release>Magics++2.6</release>
-  </parameter>
-  
-  <parameter name='histogram_reference_level' from='float' to='float'
-             member='reference'  default='0.0'>
-         <documentation> Level from which the level interval is calculated </documentation>
-         <release>Magics++2.6</release>
-  </parameter>
-
-
-  <parameter name='histogram_interval' from='float' to='float'
-             member='interval'  default='8.0'>
-         <documentation> Interval in data units between different bands of shading </documentation>
-         <release>Magics++2.6</release>
-  </parameter>
-
- <parameter name='histogram_level_list' from='floatarray' to='floatarray'
-             member='list'	 default='floatarray()'>
-         <documentation> List of shading band levels to be plotted </documentation>
-         <release>Magics++2.6</release>
-  </parameter>  
-  
-  <parameter name='histogram_bar_colour' from='string' to='Colour'
-             member='colour'	 default='evergreen'>
-         <documentation> Colour of the bars. </documentation>
-         <release>Magics++2.6</release>
-  </parameter>  
-  
-  <parameter name='histogram_bar_width' from='float' to='float'
-             member='width'	 default='1'>
-         <documentation> Width of the bar in user unit </documentation>
-         <release>Magics++2.6</release>
-  </parameter>  
-           
-</class>
-
-
-
-
-</magics>
diff --git a/src/xml/ImagePlotting.xml b/src/xml/ImagePlotting.xml
deleted file mode 100644
index d319c17..0000000
--- a/src/xml/ImagePlotting.xml
+++ /dev/null
@@ -1,264 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='ImagePlotting' action = 'pimage' 
-	xmltag='image' prefix='image' directory='visualisers'>
-  <documentation> Here comes the documentation of the ImagePlotting object </documentation>
-
-<parameter name='image_colour_table_creation_mode' from='string' to='LookupTableMode'
-             member='mode' default='equidistant' >
-         <documentation> Method for computing the output image according to the Colour table. </documentation>
-         <available> normal </available>
-         <available> equidistant </available>
-         <available> default </available>
-          <option name='FixedTableMode' fortran='fixed' xml='lut_fixed' include='LookupTableMode.h'/>
-         <option name='NormalTableMode'      fortran='normal'      xml='lut_normal'     include='NormalTableMode.h'/>
-         <option name='EquidistantTableMode' fortran='equidistant' xml='lut_equidistant' include='EquidistantTableMode.h'/>
-         <option name='LinearTableMode'     fortran='linear'     xml='lut_linear'     include='LinearTableMode.h'/>
-         <release>Magics++0.7</release>     
-         <release_info>work in constant progress...</release_info>     
-  </parameter>
-  
-  <parameter name='image_colour_table_type' from='string' to='ColourTableDefinition'
-             member='colourMethod'  default='computed' >
-         <documentation> Method for setting Colour table for imaging. </documentation>
-         <option name='ImageListColourTechnique'    fortran='list'      xml='lut_list'     include='ImageListColourTechnique.h'/>
-         <option name='ImageCalculateColourTechnique' fortran='computed'  xml='lut_computed' include='ImageCalculateColourTechnique.h'/>
-
-         <release>Magics++0.8</release>     
-         <release_info>work in constant progress...</release_info>     
-         <migration>Default changde from calculate to computed </migration>
-  </parameter>
-
-  <parameter name='image_level_count' from='int' to='int'
-             member='count'  default='127' >
-         <documentation> Number of levels </documentation>
-         <release>Magics++0.8</release>     
-         <release_info>work in constant progress...</release_info>     
-  </parameter>
-
-    <parameter name='image_pixel_selection_frequency' from='int' to='int'
-             member='pixelFrequency' default='10'>
-         <documentation> Number of pixels/centimetre to be plotted 
- </documentation>
-  </parameter>
-
-</class>
-
-<class name='ImageCalculateColourTechnique' 
-	xmltag='lut_computed' prefix='image' action='pimage' directory='visualisers' implements='ColourTableDefinitionComputeInterface'>
-  <parameter name='image_max_level_colour' from='string' to='Colour'
-             member='max' default='blue'>
-         <documentation> Highest image band colour </documentation>
-         <release>Magics++0.8</release>
-  </parameter>
-
-  <parameter name='image_min_level_colour' from='string' to='Colour'
-             member='min' default='red'>
-         <documentation> Lowest image band colour </documentation>
-         <migration> New Magics: Parameter Contour sent to new Magics[Image].  </migration>
-         <release>Magics++0.8</release>
-  </parameter>
-   <parameter name='image_colour_direction' from='string' to='string'
-             member='direction' default='anti_clockwise'>
-         <documentation> Direction of colour sequencing for image (CLOCKWISE / ANTI_CLOCKWISE) </documentation>
-         <migration> New Magics: Parameter image_colour_direction sent to new Magics[Image].  </migration>
-         <release>Magics++0.8</release>
-  </parameter>
-
-</class>
-
-
-<class name='ImageListColourTechnique' action='pcont' 
-	xmltag='list' prefix='image' directory='visualisers' implements='ColourTableDefinitionListInterface'>
-  <parameter name='image_colour_table' from='stringarray' to='stringarray'
-             member='values' default='stringarray()'>
-         <documentation> List of colours to be used in image plotting. </documentation>
-         <release>Magics++0.8</release>
-  </parameter>
-</class>
-
-
-
-
-<class name='LookupTableMode' prefix='image' directory='visualisers'>
-
-  <parameter name='image_min_level' from='int' to='int'
-             member='minLevel' default='-1.0e+21'>
-         <documentation> The lowest pixel value to be plotted  </documentation>
-         <migration> New Magics: Parameter image_min_level sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_max_level' from='int' to='int'
-             member='maxLevel'  default='1.0e+21'>
-         <documentation> The highest pixel value to be plotted  </documentation>
-         <migration> New Magics: Parameter image_max_level sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_outlayer_rejection' from='float' to='float'
-             member='outlayer'  default='0'>
-         <documentation> The outlayer rejection factor </documentation>
-         <migration> New Magics: Parameter image_outlayer_rejection sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-</class>
-
-
-<class name='FixedTableMode' inherits='LookupTableMode' directory='visualisers'>
-	<parameter name='image_level_list' from='intarray' to='intarray'
-             member='levels' default='intarray()'>
-         <documentation> The list  </documentation> 
-      </parameter>
-         <parameter name='image_index_list' from='intarray' to='intarray'
-             member='indexes' default='intarray()'>
-         <documentation> The list of indexes of the Lut to be used! (size of level_list -1 )  </documentation>
-      </parameter>
-       
-</class>
-
-<class name='EquidistantTableMode' implements='LookupTableMode' directory='visualisers'>
-	
-</class>
-
-<class name ='todo' directory='visualisers'>
-
-
-  <parameter name='image_colour_direction' from='string' to='string'
-             member='colour_direction' xml='colour_direction'
-			 default='' implemented='no'>
-         <documentation> Direction for pixel colour calculation
- </documentation>
-         <migration> New Magics: Parameter image_colour_direction sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='(clockwise/anti_clockwise)' from='' to=''
-             member='(clockwise/anti_clockwise)' xml='(clockwise/anti_clockwise)'
-			 default='' implemented='no'>
-         <documentation>  </documentation>
-         <migration> New Magics: Parameter (clockwise/anti_clockwise) sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='clockwise' from='' to=''
-             member='clockwise' xml='clockwise' default='' implemented='no'>
-         <documentation> 
- </documentation>
-         <migration> New Magics: Parameter clockwise sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_background_colour' from='string' to='string'
-             member='background_colour' xml='background_colour'
-			 default='grey' implemented='no'> 
-         <documentation> Colour of the area on the map that is not part of the satellite image. </documentation>
-         <migration> New Magics: Parameter image_background_colour sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_subarea_selection' from='string' to='string'
-             member='subarea_selection' xml='subarea_selection'
-			 default='' implemented='no'>
-         <documentation> Plot subarea of satellite projection
- </documentation>
-         <migration> New Magics: Parameter image_subarea_selection sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  
-
-  <parameter name='image_legend' from='string' to='string'
-             member='legend' xml='legend'
-			 default='off' implemented='no'>
-         <documentation> Plot image legend (ON/OFF) </documentation>
-         <migration> New Magics: Parameter image_legend sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_title' from='string' to='string'
-             member='legend_title' xml='legend_title'
-			 default='off' implemented='no'>
-         <documentation> Plot image legend title (ON/OFF) </documentation>
-         <migration> New Magics: Parameter image_legend_title sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_title_text' from='string' to='string'
-             member='legend_title_text' xml='legend_title_text'
-			 default='legend' implemented='no'>
-         <documentation> Text string for plotting as image legend title </documentation>
-         <migration> New Magics: Parameter image_legend_title_text sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_text_quality' from='string' to='string'
-             member='legend_text_quality' xml='legend_text_quality'
-			 default='' implemented='no'>
-         <documentation> Quality of image legend text 
- </documentation>
-         <migration> New Magics: Parameter image_legend_text_quality sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_text_colour' from='string' to='string'
-             member='legend_text_colour' xml='legend_text_colour'
-			 default='blue' implemented='no'>
-         <documentation> Colour of image legend text </documentation>
-         <migration> New Magics: Parameter image_legend_text_colour sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_border' from='string' to='string'
-             member='legend_border' xml='legend_border'
-			 default='on' implemented='no'>
-         <documentation> Draw border round image legend box (ON/OFF) </documentation>
-         <migration> New Magics: Parameter image_legend_border sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_border_line_style' from='string' to='string'
-             member='legend_border_line_style' xml='legend_border_line_style'
-			 default='solid' implemented='no'>
-         <documentation> Line style of image legend border </documentation>
-         <migration> New Magics: Parameter image_legend_border_line_style sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_border_colour' from='string' to='string'
-             member='legend_border_colour' xml='legend_border_colour'
-			 default='blue' implemented='no'>
-         <documentation> Colour of image legend border </documentation>
-         <migration> New Magics: Parameter image_legend_border_colour sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_border_thickness' from='int' to='int'
-             member='legend_border_thickness' xml='legend_border_thickness'
-			 default='1' implemented='no'>
-         <documentation> Thickness of image legend border </documentation>
-         <migration> New Magics: Parameter image_legend_border_thickness sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_box_blanking' from='string' to='string'
-             member='legend_box_blanking' xml='legend_box_blanking'
-			 default='off' implemented='no'>
-         <documentation> Blank area behind the legend box (ON/OFF) </documentation>
-         <migration> New Magics: Parameter image_legend_box_blanking sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_box_x_position' from='float' to='float'
-             member='legend_box_x_position' xml='legend_box_x_position'
-			 default='see text' implemented='no'>
-         <documentation> X position of image legend box within page  </documentation>
-         <migration> New Magics: Parameter image_legend_box_x_position sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_box_y_position' from='float' to='float'
-             member='legend_box_y_position' xml='legend_box_y_position'
-			 default='see text' implemented='no'>
-         <documentation> Y position of image legend box within page  </documentation>
-         <migration> New Magics: Parameter image_legend_box_y_position sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_box_x_length' from='float' to='float'
-             member='legend_box_x_length' xml='legend_box_x_length'
-			 default='see text' implemented='no'>
-         <documentation> X length of the image legend box </documentation>
-         <migration> New Magics: Parameter image_legend_box_x_length sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-  <parameter name='image_legend_box_y_length' from='float' to='float'
-             member='legend_box_y_length' xml='legend_box_y_length'
-			 default='see text' implemented='no'>
-         <documentation> Y length of the image legend box </documentation>
-         <migration> New Magics: Parameter image_legend_box_y_length sent to new Magics[ImagePlotting].  </migration>
-  </parameter>
-
-</class>
-</magics>
diff --git a/src/xml/Import.xml b/src/xml/Import.xml
deleted file mode 100644
index efbbd80..0000000
--- a/src/xml/Import.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-
-
-<class name='ImportPlot' action='pplot' directory='visualisers' >
-
-<parameter name='import_format' from='string' to='string' member='format' default='PNG'>
-  <documentation>Specify the format of the imported file </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-<parameter name='import_system_coordinates' from='string' to='string' member='system' default='user'>
-  <documentation>Specify the format of the imported file </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-<parameter name='import_x_position' from='float' to='float' member='x' default='0'>
-  <documentation>X position of the imported image </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-  
-<parameter name='import_y_position' from='float' to='float' member='y' default='0'>
-  <documentation>Y position of the imported image </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-<parameter name='import_width' from='float' to='float' member='width' default='-1'>
-  <documentation>Width of the imported image (-1 means use the dimension of the image)</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-<parameter name='crs' from='string' to='string' member='crs'  default=''>
-  <documentation>Metview info :Crs used for the import</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter> 
-<parameter name='crs_minx' from='float' to='float' member='crs_minx'  default='-180.'>
-  <documentation>Metview info :Crs used for the import</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter> 
-<parameter name='crs_maxx' from='float' to='float' member='crs_maxx'  default='180.'>
-  <documentation>Metview info :Crs used for the import</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-  </parameter> 
-  <parameter name='crs_miny' from='float' to='float' member='crs_miny'  default='-90.'>
-  <documentation>Metview info :Crs used for the import</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-  </parameter> 
-  <parameter name='crs_maxy' from='float' to='float' member='crs_maxy'  default='-90.'>
-  <documentation>Metview info :Crs used for the import</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-  </parameter> 
-    
-
-<parameter name='import_height' from='float' to='float' member='height'  default='-1'>
-  <documentation>Height of the imported image (-1 means use the dimension of the image)</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-
-</class>
-<class name='ImportAction' xmltag='import' prefix='import' action='pimport' directory='decoders' >
-  <documentation> Import facilities allow users to import external graphics files (jpeg/gif/eps) </documentation>
-
-  <parameter name='import_file_name' from='string' to='string'
-             member='path'  default=''>
-         <documentation>File to import </documentation>
-         <release>Basic implementation in Magics++0.6</release>
-  </parameter>
-  <parameter name='import_valid_time' from='string' to='string'
-             member='valid_time'  default=''>
-         <documentation>Valid Time  </documentation>
-         <release>Basic implementation in Magics++2.9</release>
-  </parameter>
-   <parameter name='service' from='string' to='string' member='service'  default=''>
-  <documentation>Metview info : which service created this image</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-<parameter name='url' from='string' to='string' member='url'  default=''>
-  <documentation>Metview info : which url created this image : add it in the titles</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-<parameter name='layers' from='string' to='string' member='short_name'  default=''>
-  <documentation>Metview info :Short name to be put in the layers!</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-</class> 
-
-<class name='ImportObjectHandler' action='pimport' directory='basic' xmltag='import'>
- <parameter name='import_file_name' from='string' to='string'
-             member='path'  default=''>
-         <documentation>File to import </documentation>
-         <release>Basic implementation in Magics++0.6</release>
-  </parameter>
-<parameter name='import_format' from='string' to='string' member='format' default='PNG'>
-  <documentation>Specify the format of the imported file </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-<parameter name='import_x_position' from='float' to='float' member='x' default='0'>
-  <documentation>X position of the imported image </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-  
-<parameter name='import_y_position' from='float' to='float' member='y' default='0'>
-  <documentation>Y position of the imported image </documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-<parameter name='import_width' from='float' to='float' member='width' default='-1'>
-  <documentation>Width of the imported image (-1 means use the dimension of the image)</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-<parameter name='import_height' from='float' to='float' member='height'  default='-1'>
-  <documentation>Height of the imported image (-1 means use the dimension of the image)</documentation>
-  <release>Basic implementation in Magics++0.6</release>
-</parameter>
-
-</class>
-</magics>
diff --git a/src/xml/InputData.xml b/src/xml/InputData.xml
deleted file mode 100644
index 262eebb..0000000
--- a/src/xml/InputData.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='InputData' directory='decoders'  xmltag='input' >
-  <documentation> Input data for curve </documentation>
- 
- <parameter name='input_x_type' from='string' to='string'
-             member='x_type' default='number'  values='date/number'>
-         <documentation>Type used for X values: number or date </documentation>
-         <set value='number' name='input_x_values'/>
-         <set value='date' name='input_date_x_values'/>
-  </parameter>
-  <parameter name='input_y_type' from='string' to='string'
-             member='y_type' default='number' values='date/number'>
-         <documentation>Type used for Y values: number or date </documentation> 
-		<set value='number' name='input_y_values'/>
-         <set value='date' name='input_date_y_values'/>
-  </parameter>
-  
-  <parameter name='input_x_values' from='floatarray' to='floatarray'
-             member='x' default='floatarray()' >
-         <documentation> X Values  </documentation>
-  </parameter>
-  <parameter name='input_y_values' from='floatarray' to='floatarray'
-             member='y' default='floatarray()' >
-         <documentation> Y Values  </documentation>
-  </parameter>
-  
-   <parameter name='input_date_x_values' from='stringarray' to='stringarray'
-             member='date_x' default='stringarray()' >
-         <documentation> X Date Values  </documentation>
-  </parameter>
-  <parameter name='input_date_y_values' from='stringarray' to='stringarray'
-             member='date_y' default='stringarray()' >
-         <documentation> Y Date Values  </documentation>
-  </parameter>
-  <parameter name='input_x2_values' from='floatarray' to='floatarray'
-             member='x2' default='floatarray()' >
-         <documentation> Array containing X positions for second AREA curve.  </documentation>
-  </parameter>
-  <parameter name='input_y2_values' from='floatarray' to='floatarray'
-             member='y2' default='floatarray()' >
-         <documentation> Array containing X positions for second AREA curve.  </documentation>
-  </parameter>
-  
-   <parameter name='input_date_x2_values' from='stringarray' to='stringarray'
-             member='date_x2' default='stringarray()' >
-         <documentation> Array containing X positions for second AREA curve when X axis is a DATE/TIME axis.  Format is YYYY-MM-DD HH:mm:ss </documentation>
-  </parameter>
-  <parameter name='input_date_y2_values' from='stringarray' to='stringarray'
-             member='date_y2' default='stringarray()' >
-         <documentation> Array containing Y positions for second AREA curve when X axis is a DATE/TIME axis.  Format is YYYY-MM-DD HH:mm:ss  </documentation>
-  </parameter>
-  
-  <parameter name='input_x_missing_value' from='float' to='float'
-             member='x_missing' default='-21.e6' >
-         <documentation> mssing value for x   </documentation> 
-  </parameter> 
-  <parameter name='input_y_missing_value' from='float' to='float'
-             member='y_missing' default='-21.e6' >
-         <documentation> missing value for x   </documentation>
-  </parameter>
-  <parameter name='input_values' from='floatarray' to='floatarray'
-             member='values' default='floatarray()' >
-         <documentation>  Values  </documentation>
-  </parameter>
-  
-   <parameter name='input_latitude_values' from='floatarray' to='floatarray'
-             member='latitudes' default='floatarray()' >
-         <documentation>  Latitudes  </documentation>
-  </parameter>
- <parameter name='input_longitude_values' from='floatarray' to='floatarray'
-             member='longitudes' default='floatarray()' >
-         <documentation>  longitudes  </documentation>
-  </parameter>
-  <parameter name='input_x_component_values' from='floatarray' to='floatarray'
-             member='x_component' default='floatarray()' >
-         <documentation>  u components for vectors  </documentation>
-  </parameter>
-  <parameter name='input_y_component_values' from='floatarray' to='floatarray'
-             member='y_component' default='floatarray()' >
-         <documentation>  v components for vectors  </documentation>
-  </parameter>
-
- <parameter name='input_binning' from='string' to='BinningObject' include='BinningObject.h'
-             member='input_binning' default='on' >
-         <documentation> Binning information </documentation>
-         <option name='NoBinningObject'   fortran='off'  xml='nobinning' include='BinningObject.h'/>
-         <option name='BinningObject'   fortran='on'  xml='binning' include='BinningObject.h'/>
-  </parameter>
- </class>
-
-
-
-</magics>
diff --git a/src/xml/InputMatrix.xml b/src/xml/InputMatrix.xml
deleted file mode 100644
index a9f53aa..0000000
--- a/src/xml/InputMatrix.xml
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='InputMatrix' directory='decoders'   prefix='input' xmltag='matrix' >
-  <documentation>
-    This object contains this attributes to set how to interpret data stored in 2-dimensional arrays in memory.
- </documentation>
-
-  <parameter name='input_field' from='Matrix' to='Matrix' member='field' xml='field' default='Matrix()'>
-         <documentation> Array containing data for contouring </documentation>
-  </parameter>
-  
-  <parameter name='input_simple_field' from='string' to='bool' member='simple_field' xml='field' default='off'>
-         <documentation for_docs='no'>For internal testing only, or very specifivc users request!</documentation>
-  </parameter>
-  
- <parameter name='input_wind_u_component' from='Matrix' to='Matrix' member='u_component' xml='u_component' default='Matrix()'>
-         <documentation> Array containing U velocity component for wind field </documentation>
-  </parameter>
-
-  <parameter name='input_wind_v_component' from='Matrix' to='Matrix' member='v_component' xml='v_component' default='Matrix()'>
-         <documentation> Array containing V velocity component for wind field </documentation>
-  </parameter>
-
-   <parameter name='input_field_organization' from='string' to='InputMatrixInterpretor' member='organization' xml='input_field_organization' default='regular'>
-         <option name='InputMatrixRegularInterpretor'   fortran='regular'  xml='gaussian' include='InputMatrixInterpretor.h'/>
-         <option name='InputMatrixIrregularInterpretor'   fortran='nonregular'  xml='irregular' include='InputMatrixInterpretor.h'/>
-         <documentation> How data is organized in the input field (REGULAR /IRREGULAR/) </documentation>
-  </parameter>
-
-  <parameter name='input_field_subpage_mapping' from='string' to='string' member='mapping' xml='input_field_subpage_mapping' default='upper_left'>
-         <documentation> Position of first point of array (1,1) on the subpage, (see text)(UPPER_LEFT / UPPER_RIGHT / LOWER_LEFT / LOWER_RIGHT /
-         UPPER_LEFT_TRANSPOSED / UPPER_RIGHT_TRANSPOSED / LOWER_LEFT_TRANSPOSED / LOWER_RIGHT_TRANSPOSED) </documentation>
-  </parameter>  
-   
-  <parameter name='input_wind_speed' from='Matrix' to='Matrix' member='wind_speed'  default='Matrix()'>
-         <documentation> Array containing speed component for wind field </documentation>
-  </parameter>
-
-  <parameter name='input_wind_direction' from='Matrix' to='Matrix' member='wind_direction' default='Matrix()'>
-         <documentation> Array containing direction component for wind field </documentation>
-  </parameter>
-
-     <parameter name='input_field_suppress_below' from='float' to='float' member='suppress_below' xml='input_field_suppress_below' default='-1.0e+21'>
-         <documentation> Values in the input field(s) below this value are to be suppressed, i.e. not to be taken into consideration for plotting purposes </documentation>
-  </parameter>
-
-  <parameter name='input_field_suppress_above' from='float' to='float' member='suppress_above' xml='input_field_suppress_above' default='1.0e+21'>
-         <documentation> Values in the input field(s) above this value are to be suppressed, i.e not to be taken into consideration for plotting purposes </documentation>
-  </parameter>
-</class>
-
-<class name='InputMatrixIrregularInterpretor' directory='decoders'>
-
-  <parameter name='input_field_latitudes' from='Matrix' to='Matrix' member='latitudes' default='Matrix()'>
-         <documentation> latitudes </documentation>
-  </parameter>
-  
-  <parameter name='input_field_longitudes' from='Matrix' to='Matrix' member='longitudes' default='Matrix()'>
-         <documentation> longitudes </documentation>
-  </parameter>
-  
-  <parameter name='input_field_y_coordinates' from='Matrix' to='Matrix' member='y' default='Matrix()'>
-         <documentation> y-coordinates of the field </documentation>
-  </parameter>
-  
-  <parameter name='input_field_x_coordinates' from='Matrix' to='Matrix' member='x' default='Matrix()'>
-         <documentation> x-coordinates of the field </documentation>
-  </parameter>
- </class>
- 
- 
-<class name='InputMatrixRegularInterpretor' directory='decoders'>
-
-  <parameter name='input_field_initial_latitude' from='float' to='float' member='latitude' xml='origin_latitude' default='90'>
-         <documentation> used in a geographical projection context: Latitude of the point (1,1) in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_initial_longitude' from='float' to='float' member='longitude' xml='origin_longitude' default='0'>
-         <documentation> used in a geographical projection context: Longitude of the point (1,1) in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_latitude_step' from='float' to='float' member='latitude_step' xml='latitude_step' default='-1.5'>
-         <documentation> used in a geographical projection context: Distance between two latitude points in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_longitude_step' from='float' to='float' member='longitude_step' xml='longitude_step' default='1.5'>
-         <documentation> used in a geographical projection context: Distance between two longitude points in the input array </documentation>
-  </parameter>
-  
-    <parameter name='input_field_initial_y' from='float' to='float' member='y_first' default='0'>
-         <documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_final_x' from='float' to='float' member='x_last' default='100'>
-         <documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-  
-   <parameter name='input_field_final_y' from='float' to='float' member='y_last' default='100'>
-         <documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-  <parameter name='input_field_x_list' from='floatarray' to='floatarray' member='x_coords' default='floatarray()'>
-         <documentation> used in a cartesian projection context: vector containing the x-coordinates </documentation>
-  </parameter>
-   <parameter name='input_field_y_list' from='floatarray' to='floatarray' member='y_coords' default='floatarray()'>
-         <documentation> used in a cartesian projection context: vector containing the y-coordinates </documentation>
-  </parameter>
-   
-  <parameter name='input_field_initial_x' from='float' to='float' member='x_first' default='0'>
-         <documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-  
-    <parameter name='input_field_initial_y_date' from='string' to='string' member='y_first_date' default=''>
-         <documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_final_x_date' from='string' to='string' member='x_last_date' default=''>
-         <documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-  
-   <parameter name='input_field_final_y_date' from='string' to='string' member='y_last_date' default=''>
-         <documentation> used in a cartesian projection context: y-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_initial_x_date' from='string' to='string' member='x_first_date' default=''>
-         <documentation> used in a cartesian projection context: x-coordinate of the point (1,1) in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_y_step' from='float' to='float' member='y_step' default='1'>
-         <documentation> used in a cartesian projection context: y-step in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_x_step' from='float' to='float' member='x_step' default='1'>
-         <documentation> used in a cartesian projection context: x-step in the input array </documentation>
-  </parameter>
-
-  <parameter name='input_field_primary_index' from='string' to='string' member='primary_index' xml='input_field_primary_index' default='longitude' implemented='no'>
-         <documentation> Primary or first index of input array(LATITUDE/LONGITUDE) </documentation>
-  </parameter>
-
-  <parameter name='input_field_gradient_control' from='string' to='string'  member='input_field_gradient_control' xml='input_field_gradient_control' default='off' implemented='no'>
-         <documentation> How to calculate the contour gradients(LEAST/FLAT_ONLY/OFF) </documentation>
-  </parameter>
-
-  <parameter name='input_field_gradient_limitation' from='string' to='string' member='input_field_gradient_limitation' xml='input_field_gradient_limitation' default='off' implemented='no'>
-         <documentation> Set  gradient to 0 for minimum and/or maximum values(MINIMUM/MAXIMUM/BOTH/OFF) </documentation>
-  </parameter>
-  
-  
-</class>
-
-</magics>
diff --git a/src/xml/IsoHighlight.xml b/src/xml/IsoHighlight.xml
deleted file mode 100644
index ca8bd98..0000000
--- a/src/xml/IsoHighlight.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='IsoHighlight' action='pcont' xmltag='highlight' directory='visualisers'  inherits='NoIsoHighlight' prefix='contour/contour/contour_highlight'>
-<documentation> This object is responsible of plotting the hightlight isolines </documentation>
-  <parameter name='contour_highlight_style' from='string' to='LineStyle'
-             member='style' xml='style'
-			 default='solid' priority='0.2'>
-         <documentation> Style of highlighting (SOLID/ DASH/ DOT/ CHAIN_DASH/ CHAIN_DOT) </documentation>
-         <migration> New Magics: Parameter Contour sent to new Magics[Contour].  </migration>
-         <release>Magics++0.2</release>
-  </parameter>
- <parameter name='contour_reference_level' from='float' to='float'
-             member='reference'  default='0.0'>
-         <documentation> Contour level reference </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  
-  <parameter name='contour_highlight_colour' from='string' to='Colour'
-             member='colour' default='blue' priority='0.2'>
-         <documentation> Colour of highlight line </documentation>
-         <release>Magics++0.2</release>
-         <migration> New Magics: Parameter Contour sent to new Magics[Contour].  </migration>
-  </parameter>
-
-  <parameter name='contour_highlight_thickness' from='int' to='int'
-             member='thickness' default='3' priority='0.2'>
-         <release>Magics++0.2</release>
-         <documentation> Thickness of highlight line </documentation>
-         <migration> New Magics: Parameter Contour sent to new Magics[Contour].  </migration>
-  </parameter>
-
-  <parameter name='contour_highlight_frequency' from='int' to='int'
-             member='frequency'  default='4'  priority='0.2'>
-         <release>Magics++0.2</release>
-         <documentation> Frequency of highlight line </documentation>
-         <migration> New Magics: Parameter contour_highlight_frequency sent to new Magics[Contour].  </migration>
-  </parameter>
-</class>
-
-<class name='NoIsoHighlight' action='pcont' xmltag='nohighlight' include='IsoHighlight.h'  doc_inherits='no' directory='visualisers' />
-
-</magics>
diff --git a/src/xml/IsoLabel.xml b/src/xml/IsoLabel.xml
deleted file mode 100644
index 681681f..0000000
--- a/src/xml/IsoLabel.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='IsoLabel' xmltag='label' inherits='NoIsoLabel' action='pcont' prefix='contour/contour/contour_label' directory='visualisers'>
-  <documentation>
-  The action routine PCONT will plot labels on contour lines either by default
-  or as directed by the user. 
-  Contour labels may be plotted with different attributes from the contour line, 
-  e.g. colour and thickness. 
-  Contour labels are, by default, plotted on every 2nd contour line, 
-  but this may be changed by the user, if desired.
-  </documentation>
-  <parameter name='contour_label_type' from='string' to='string'
-             member='type' default='number' >
-         <documentation> Type of label (TEXT/NUMBER/BOTH) </documentation>
-         <migration> New Magics: Parameter contour_label_type sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++2.8</release>
-         <release_info>number is used by default in: expected in 0.6 </release_info>
-  </parameter>
-  
-  <parameter name='contour_label_text' from='string' to='string' member='text' default='' >
-         <documentation> Text for labels </documentation>
-         <migration> New Magics: Parameter Contour sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++2.8</release>
-  </parameter>
-
-  <parameter name='contour_label_height' from='float' to='float' member='height' xml='height' default='0.3'>
-         <documentation> Height of contour labels </documentation>
-         <migration> New Magics: Parameter contour_label_height sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='contour_label_format' from='string' to='string' member='format' xml='format' default='(automatic)' >
-         <documentation> Format of contour labels (MAGICS Format/(AUTOMATIC)) </documentation>
-         <migration> New Magics: Parameter contour_label_format sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='contour_label_blanking' from='string' to='bool' member='blanking' xml='blanking' default='on' >
-         <documentation>Label Blanking</documentation>
-         <release>Magics++ 0.4</release>
-  </parameter>
-
-  <parameter name='contour_label_quality' from='string' to='string' member='quality' xml='quality' default='low' implemented='no'>
-         <documentation> (LOW/MEDIUM/HIGH) </documentation>
-         <release>Deprecated </release>
-         <release_info> Use label_font and label_font_style</release_info>
-  </parameter>
-  
-  <parameter name='contour_label_font' from='string' to='string' member='font' default='sansserif'>
-         <documentation> Name of the font  </documentation>
-         <migration> New Magics: Parameter contour_label_quality sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++0.1</release>
-  </parameter>
-  
-  <parameter name='contour_label_font_style' from='string' to='string'
-             member='style' xml='font_style' default='normal'>
-         <documentation>Style of the font bold/italic</documentation>
-         <migration>New Magics: Parameter contour_label_quality sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++ 1.4</release>
-  </parameter>
-
-  <parameter name='contour_label_colour' from='string' to='string'
-             member='colour'
-			 default='contour_line_colour'>
-         <documentation> Colour of contour labels </documentation>
-         <migration> New Magics: Parameter contour_label_colour sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++0.4</release>
-        
-  </parameter>
-
-  <parameter name='contour_label_frequency' from='int' to='int'
-             member='frequency' 
-			 default='2'>
-         <documentation> Every Nth contour line is labelled </documentation>
-         <migration> New Magics: Parameter contour_label_frequency sent to new Magics[IsoLabel].  </migration>
-         <release>Magics++0.4</release>
-         
-  </parameter>
-</class>
-
-<class name='NoIsoLabel' xmltag='nolabel' action='pcont' used_by='IsoPlot' directory='visualisers'  doc_inherits='no' include='IsoLabel.h'/>
-
-</magics>
diff --git a/src/xml/IsoPlot.xml b/src/xml/IsoPlot.xml
deleted file mode 100644
index 8805fe8..0000000
--- a/src/xml/IsoPlot.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
- 
-<class name='IsoPlot' 
-                      action='pcont' used_by='Contour' xmltag='isoline'
-                      directory='visualisers' prefix='contour/contour_line'>
-  <documentation> This object contains all the attributes of the isolines </documentation>
-
-
-<parameter name='contour_special_legend' from='string' to='string' member='legend_special' default='' visible='off'> 
-		<documentation> Used in wrep to produce specail legend such as spaguetti! </documentation>
-		<release>2.10</release>
-</parameter>
-  
-<parameter name='contour_internal_reduction_factor' from='float' to='float' documented='off'  member='resolution' default='4' visible='no'>
-         <documentation> internal factor for contouring   </documentation>
-         <release>2.10</release> 
-</parameter>
-<parameter name='contour_internal_technique' from='string' to='string' documented='off'  member='technique' default='interpolate' visible='no'>
-         <documentation> internal technique for contouring : interpolate/nearest   </documentation>
-</parameter>
-
-<parameter name='contour_legend_text' from='string' to='string' documented='off'  member='legend_text' default=' ' visible='no'>
-         <documentation>Text to be used in legend</documentation>
-         <release>2.10</release>
-	 <!-- Introduced for WREP for standalone titles -->
-</parameter>
-
-<parameter name='contour_line_style' from='string' to='LineStyle' member='style' xml='style' default='solid'>
-         <documentation> Style of contour line  </documentation>
-         <migration> New Magics: Parameter contour_line_style sent to new Magics[IsoPlot].  </migration>
-         <release>0.1</release>
-</parameter>
-
-<parameter name='contour_line_thickness' from='int' to='int' member='thickness' xml='thickness' default='1' >
-         <documentation> Thickness of contour line </documentation>
-         <migration> New Magics: Parameter contour_line_thickness sent to new Magics[IsoPlot].  </migration>
-         <release>0.1</release>
-</parameter>
-
-<parameter name='contour_line_colour' from='string' to='Colour' member='colour' xml='colour' default='blue'>
-         <documentation> Colour of contour line </documentation>
-         <migration> New Magics: Parameter contour_line_colour sent to new Magics[IsoPlot].  </migration>
-         <release>0.1</release>
-</parameter>
-
-<parameter name='contour_highlight' from='string' to='NoIsoHighlight' member='highlight' xml='highlight' include='IsoHighlight.h' default='on' priority='0.2'>
-         <documentation> Plot contour highlights (ON/OFF) </documentation>
-          <option name='IsoHighlight'   fortran='on'  xml='highlight' include='IsoHighlight.h' />
-         <option name='NoIsoHighlight' fortran='off' xml='nohighlight'  include='IsoHighlight.h' />
-         <migration> New Magics: Parameter contour_highlight sent to new Magics[IsoPlot].  </migration>
-         <release>0.2</release>         
-</parameter>
-  
-<parameter name='contour_level_selection_type' from='string' to='LevelSelection' member='levelSelection' xml='level_selection_type' default='count'>
-         <documentation> count: calculate a reasonable  contour interval taking into account the min/max and the requested number of isolines. 
-         interval: regularly spaced intervals using the reference_level as base.
-         level_list: uses the given list of levels. </documentation>
-           <option name='CountSelectionType'   fortran='count'  xml='count' include='CountSelectionType.h'/>
-         <option name='IntervalSelectionType'   fortran='interval'  xml='interval' include='IntervalSelectionType.h'/>
-         <option name='LevelListSelectionType'   fortran='level_list'  xml='list' include='LevelListSelectionType.h'/>
-</parameter>
-
-<parameter name='contour_label' from='string' to='NoIsoLabel' include="IsoLabel.h" member='label' xml='label' default='on'>
-         <documentation> Plot labels on contour lines  </documentation>
-         <migration> New Magics: Parameter Contour sent to new Magics[Contour].  </migration>
-         <release>0.1</release>
-          <option name='IsoLabel'   fortran='on'  xml='label' include='IsoLabel.h' />
-         <option name='NoIsoLabel' fortran='off' xml='nolabel'  include='IsoLabel.h'/>
-</parameter>
-
-<parameter name='contour_shade' from='string' to='NoIsoShading'  include='IsoShading.h' member='shading' xml='shade' default='off'>
-         <documentation> Turn shading on </documentation>
-         <migration> New Magics: Parameter contour_label sent to new Magics[Contour].  </migration>
-         <release>0.2</release>
-         <option name='IsoShading'   fortran='on'  xml='shading' include='IsoShading.h'/>
-         <option name='NoIsoShading' fortran='off' xml='noshading'  include='IsoShading.h' />
-  </parameter>
-<parameter name='contour_legend_only' from='string' to='bool' member='legend_only' default='off'> 
-		<documentation> Inform the contour object do generate only the legend and not the plot!</documentation>  		       
-		<release>2.10</release>
-</parameter>
-</class>
-<class name='NoIsoPlot'  include='IsoPlot.h' inherits='IsoPlot' inherits_doc_inherits='no' directory='visualisers'/> 
-
-</magics>
diff --git a/src/xml/IsoShading.xml b/src/xml/IsoShading.xml
deleted file mode 100644
index a7039dd..0000000
--- a/src/xml/IsoShading.xml
+++ /dev/null
@@ -1,177 +0,0 @@
-
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='NoIsoShading' action='pcont'  doc_inherits='no' include='IsoShading.h' directory='visualisers'  />
-
-<class name='IsoShading' action='pcont' xmltag='shading' inherits='NoIsoShading' 
-	directory='visualisers'
-	prefix='contour/contour/contour_shade/contour_shade/contour_shade'>
-
-   <parameter name='contour_shade_technique' from='string' to='ShadingTechnique'  member='technique'  default='polygon_shading'>
-         <documentation> Technique used for shading (POLYGON_SHADING/ CELL_SHADING/ MARKER) </documentation>
-         <option name= 'PolyShadingTechnique' fortran ='polygon_shading' xml='polygon' include='PolyShadingTechnique.h' />
-          <option name= 'GridShading' fortran ='grid_shading' xml='grid_shading' include='PolyShadingTechnique.h' visible='no' />
-         <option name= 'CellShading' fortran ='cell_shading' xml='cell_shading' include='CellShading.h' visible='no' />
-         <option name= 'MarkerShadingTechnique' fortran ='marker' xml='marker' include='MarkerShadingTechnique.h' /> 
-         <release>0.2</release>
-  </parameter>
-  
-  <parameter name='contour_shade_max_level' from='float' to='float'  member='max' default='1.0e+21' >
-         <documentation> Maximum level for which shading is required </documentation>
-          <release>0.2</release>
-  </parameter>
-
-  <parameter name='contour_shade_min_level' from='float' to='float' member='min' default='-1.0e+21'>
-         <documentation> Minimum level for which shading is required </documentation>
-          <release>0.2</release>
-  </parameter>
-  
-  <parameter name='contour_shade_colour_method' from='string' to='ColourTechnique' member='colourMethod' default='calculate'>
-         <documentation> Method of generating the colours of the bands in contour shading (LIST/CALCULATE) </documentation>
-         <option name='CalculateColourTechnique' fortran='calculate' xml='calculate' include='CalculateColourTechnique.h'/>
-         <option name='ListColourTechnique' fortran='list' xml='list' include='ListColourTechnique.h'/>
-  </parameter>
-  
- 
-</class>
-
-
-<class name='ShadingTechnique' include='ShadingTechnique.h'  directory='visualisers' />
-<class name='PolyShadingMethod' include='PolyShadingMethod.h'  directory='visualisers'/>
-
-
-<class name='PolyShadingTechnique' action='pcont' 
-	 directory='visualisers' inherits='ShadingTechnique' prefix='contour/contour/contour_shade/contour_shade/contour_shade' xmltag='polygon'>
-
-  <parameter name='contour_shade_method' from='string' to='PolyShadingMethod'  member='method'   default='dot'>
-         <documentation> Method used for shading (DOT/ AREA_FILL/ HATCH) </documentation>
-         <option name='PolyShadingMethod' fortran='area_fill' xml='area_fill'  include='PolyShadingMethod.h'/>
-         <option name='DotPolyShadingMethod' fortran='dot' xml='dot'  include='DotPolyShadingMethod.h'/>
-         <option name='HatchPolyShadingMethod' fortran='hatch' xml='hatch'  include='HatchPolyShadingMethod.h'/>
-  </parameter>
-</class>
-
-
-<class name='CellShading' action='pcont' 
-	xmltag='cell_shading' directory='visualisers' 
-	inherits='ShadingTechnique'  prefix='contour/contour/contour_shade/contour_shade_cell'>
-	
-  <parameter name='contour_shade_cell_resolution' from='float' to='float' member='resolution' default='10'>
-         <documentation> Number of cells per cm for CELL shading </documentation> 
-         <release>0.8</release>
-  </parameter>
-  
-  <parameter name='contour_shade_cell_method' from='string' to='string' member='method' default='nearest'>
-         <documentation> NMethod of determining the colour of a cell (INTERPOLATE/ NEAREST) </documentation>
-         <release>0.8</release>
-  </parameter>
-</class>
-
-
-<class name='GridShading' action='pcont'  inherits='PolyShadingTechnique' include='PolyShadingTechnique.h' directory='visualisers'  >
-
-  <parameter name='contour_grid_shading_position' from='string' to='string'  member='position' default='middle'>
-         <documentation> Middle : the point is in the midlle of the cell, bottom_left : the point is in the bottom left corner </documentation>
-         <release>0.2</release>
-  </parameter>
-  </class>
-
-<class name='MarkerShadingTechnique' action='pcont' directory='visualisers'
-	inherits='ShadingTechnique' xmltag='marker' prefix='contour/contour/contour_shade/contour_shade/contour_shade'>
-	
-  <parameter name='contour_shade_colour_table' from='stringarray' to='stringarray' member='colour' default='stringarray()'>
-         <documentation> Colour table to be used with MARKER shading technique </documentation>
-  </parameter>
-
-  <parameter name='contour_shade_height_table' from='floatarray' to='floatarray' member='height' default='floatarray()'>
-         <documentation> Height table to be used with MARKER shading technique </documentation>
-         <release>0.2</release>
-  </parameter>
-
-  <parameter name='contour_shade_marker_table' from='intarray' to='intarray' member='marker' default='intarray()'>
-         <documentation> Marker table to be used with MARKER shading technique </documentation>
-         <release>0.2</release>
-  </parameter>
-</class>
-
-
-<class name='CalculateColourTechnique' action='pcont' directory='visualisers'   inherits='ColourTechnique'
-	implements='ColourTableDefinitionComputeInterface'  xmltag='calculate' prefix='contour/contour/contour_shade/contour_shade/contour_shade'>
-	
-  <parameter name='contour_shade_max_level_colour' from='string' to='Colour' member='max'  default='blue'>
-         <documentation> Highest shading band colour </documentation>
-         <release>0.2</release>
-  </parameter>
-
-  <parameter name='contour_shade_min_level_colour' from='string' to='Colour' member='min'  default='red'>
-         <documentation> Lowest shading band colour </documentation>
-         <release>0.2</release>
-  </parameter>
-  
-  <parameter name='contour_shade_colour_direction' from='string' to='string' member='direction'  default='anti_clockwise' values='clockwise/anti_clockwise'>
-         <documentation> Direction of colour sequencing for shading (CLOCKWISE/ ANTI_CLOCKWISE) </documentation>
-         <release>0.2</release>
-  </parameter>
-
-</class>
-
-
-<class name='ListColourTechnique' action='pcont' directory='visualisers' implements='ColourTableDefinitionListInterface' 
-	   inherits='ColourTechnique'  prefix='contour/contour/contour_shade/contour_shade/contour_shade' xmltag='list'>
-	   
-  <parameter name='contour_shade_colour_list'  colourlist='on' from='stringarray' to='stringarray' member='values'  default='stringarray()'>
-         <documentation> List of colours to be used in contour shading. </documentation>
-         <release>0.2</release>
-  </parameter>
-</class>
-
-
-<class name = 'DotPolyShadingMethod' action = 'pcont' directory='visualisers' 
-	inherits='PolyShadingMethod'  prefix='contour/contour/contour_shade/contour_shade/contour_shade' xmltag='dot'>
-
-  <parameter name='contour_shade_dot_size' from='float' to='float' member='size' default='0.02'>
-         <documentation> Size of dot in shading pattern </documentation>
-         <release>0.2</release>
-  </parameter>
-
- <parameter name='contour_shade_max_level_density' from='float' to='float' member='max_density' default='50.0'>
-    <documentation> Dots/square centimetre in highest shading band </documentation>
-    <release>0.2</release>
- </parameter>
-
- <parameter name='contour_shade_min_level_density' from='float' to='float' member='min_density' xml='min_level_density' default='1.0'>
-         <documentation> Dots/square centimetre in lowest shading band </documentation>
-         <release>0.2</release>
- </parameter>
-
- <parameter name='contour_shade_angle' from='float' to='float' member='angle' default='45.0'>
-         <documentation> Angle of shading line to the horizontal in degrees in an anticlockwise direction </documentation>
-         <release>0.2</release>
-  </parameter>
-</class>
-
-
-<class name = 'HatchPolyShadingMethod' action = 'pcont' directory='visualisers' 
-	inherits='PolyShadingMethod'  prefix='contour/contour/contour_shade/contour_shade/contour_shade_hatch' xmltag='hatch'> 
-
-  <parameter name='contour_shade_hatch_index' from='int' to='int' member='index' default='0' >
-         <documentation>The hatching pattern(s) to use. 0 Provides an automatic sequence of patterns, other values set a constant pattern across all contour bands.</documentation>
-         <release>0.8</release>
-  </parameter>
-
-  <parameter name='contour_shade_hatch_thickness' from='int' to='int' member='thickness' default='1' >
-         <documentation> Thickness of hatch lines </documentation>
-         <release>0.5</release>
-  </parameter>
-
-  <parameter name='contour_shade_hatch_density' from='float' to='float' member='density' default='18.0' >
-         <documentation> Number of hatch lines per cm. </documentation>
-         <release>0.5</release>
-  </parameter>
-</class>
-
-
-<class name='ColourTechnique'  directory='visualisers' />
-
-</magics>
diff --git a/src/xml/KMLDriver.xml b/src/xml/KMLDriver.xml
deleted file mode 100644
index e27440d..0000000
--- a/src/xml/KMLDriver.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='KMLDriver' action='KML' directory='drivers' inherits='BaseDriver' xmltag='kml' prefix='kml'>
-	<documentation for_docs='no'>
-		This output driver produces output in the KML (Keyhole XML) format. This is the input format for 
-		Google Earth (http://earth.google.com) and Google Maps (http://maps.google.com).
-		
-		The output driver differs much from other drivers, because it describes not only a two-dimensional 
-		visualisation but also describes the dimensions of height and time.
-
-		See also the parameters for the BaseDriver.
-	</documentation>
-
-<parameter name='kml_kmz' from='string' to='bool' member='kmz' default='on'>
-  <documentation>Defines if output files will be zipped into a KMZ file.</documentation>
-</parameter>
-
-<parameter name='kml_description' from='string' to='string' member='description' default='Generated by Magics++'>
-  <documentation>Short description for the product.</documentation>
-</parameter>
-
-<parameter name='kml_author' from='string' to='string' member='author' default=''>
-  <documentation>Gives the author of the product.</documentation>
-</parameter>
-
-<parameter name='kml_link' from='string' to='string' member='link' default=''>
-  <documentation>Gives the HTTP link to the product (Example: http://www.ecmwf.int/products).</documentation>
-</parameter>
-
-<parameter name='kml_height' from='float' to='float' member='height' default='5.0'>
-  <documentation>Default height of all layers! [This is still WORK IN PROGRESS!!!]</documentation>
-</parameter>
-
-<parameter name='kml_latitude' from='float' to='float' member='latitude' default='40.0'>
-  <documentation>Defines the latitude of initial viewpoint.</documentation>
-  </parameter>
-
-<parameter name='kml_longitude' from='float' to='float' member='longitude' default='0.0'>
-  <documentation>Defines the longitude of initial viewpoint.</documentation>
-</parameter>
-
-<parameter name='kml_transparency' from='int' to='int' member='transparency' default='100'>
-  <documentation>Defines the transparency in percentage ( 0% = invisible) of the layers saved.</documentation>
-</parameter>
-
-<parameter name='kml_tilt' from='int' to='int' member='tilt' default='0'>
-  <documentation>Defines the tilting angle for the default view (0 equals from above).</documentation>
-</parameter>
-
-<parameter name='kml_range' from='int' to='int' member='range' default='6000'>
-  <documentation>Defines the distance (km) to the default view in km.</documentation>
-</parameter>
-
-<parameter name='kml_coastlines' from='string' to='bool' member='coastlines' default='off'>
-  <documentation>Determines if coastlines are plotted by Magics or not. Default is OFF because Google Earth and Google Maps have their own coastlines.</documentation>
-</parameter>
-</class>
-</magics>
diff --git a/src/xml/LabelPlotting.xml b/src/xml/LabelPlotting.xml
deleted file mode 100644
index 199f428..0000000
--- a/src/xml/LabelPlotting.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='LabelPlotting' action='pcoast'  directory='visualisers' 
-	xmltag='label' prefix='map/map_label' inherits='NoLabelPlotting'>
-	<documentation>
-		This object will control the settings of the Map Labels.
-	</documentation>
-        <parameter name='map_label_quality' from='string' to='string'
-            member='quality' default='MEDIUM' >
-            <documentation>
-            Quality of grid labels
-           </documentation>
-            <release>Magics++0.1</release>
-       </parameter>
-       <parameter name='map_label_colour' from='string' to='Colour'
-            member='colour' default='black'>
-            <documentation>
-            Colour of map labels
-           </documentation>
-            <release>Magics++0.1</release>
-       </parameter>
-       <parameter name='map_label_height' from='float' to='float'
-            member='height' default='0.25'>
-            <documentation>
-            Height og grid labels
-           </documentation>
-            <release>Magics++0.1</release>
-       </parameter>
-       
-        <parameter name='map_label_latitude_frequency' from='int' to='int'
-            member='latFrequency' default='1'>
-            <documentation>
-            Evry Nth latitue grid is labelled
-           </documentation>
-            <release>Magics++0.1</release>
-       </parameter>
-        <parameter name='map_label_longitude_frequency' from='int' to='int'
-            member='lonFrequency' default='1'>
-            <documentation>
-            Evry Nth longitude grid is labelled
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-        <parameter name='map_label_left' from='string' to='bool'
-            member='left' default='on'>
-            <documentation>
-           Enable the labels on the left of the map
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-       <parameter name='map_label_right' from='string' to='bool'
-            member='right' default='on'>
-            <documentation>
-           Enable the labels on the right of the map
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-       <parameter name='map_label_top' from='string' to='bool'
-            member='top' default='on'>
-            <documentation>
-           Enable the labels on the top of the map
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-       <parameter name='map_label_bottom' from='string' to='bool'
-            member='bottom' default='on'>
-            <documentation>
-           Enable the labels on the bottom of the map
-           </documentation>
-           <release>Magics++0.1</release>
-       </parameter>
-</class>
-
-
-<class name='NoLabelPlotting' xmltag='nolabel' action='pcoast' 
-	directory='visualisers' include='LabelPlotting.h'>
-   <documentation>
-   This object suppresses the plotting of the map grid labels
-   </documentation>
-</class>
-
-   
-</magics>
diff --git a/src/xml/Landgram.xml b/src/xml/Landgram.xml
deleted file mode 100644
index 49143f6..0000000
--- a/src/xml/Landgram.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<magics>
-<class name='LandgramDecoder' directory='decoders' xmltag='landgram' prefix='landgram'>
-  <documentation> Landgram aplication</documentation>
-
-  <parameter name='landgram_input_file_name' from='string' to='string'
-             member='path' default=''>
-         <documentation> path to the file containing the xml description of the lansdgram</documentation>
-  </parameter>
-  <parameter name='landgram_input_scaling_factor' from='float' to='float'
-             member='scaling' default='1'>
-         <documentation> path to the file containing the xml description of the lansdgram</documentation>
-  </parameter>
-  <parameter name='landgram_input_offset_factor' from='float' to='float'
-             member='offset' default='0'>
-         <documentation> path to the file containing the xml description of the lansdgram</documentation>
-  </parameter>
-  <parameter name='landgram_title' from='string' to='string'
-             member='title' default='landgram parameter'>
-         <documentation> title to display </documentation>
-  </parameter>
-</class>
-<class name='LandgramBox' directory='visualisers' xmltag='landgrambox' prefix='landbox'>
-  <documentation> LandBox visualisation</documentation>
-<parameter name='landgram_width' from='float' to='float'
-             member='width' default='6'>
-         <documentation> Colour of the box </documentation>
-  </parameter>
-  <parameter name='landgram_top_box1_colour' from='string' to='Colour'
-             member='top1_colour' default='evergreen'>
-         <documentation> Colour of the box </documentation>
-  </parameter>
-   <parameter name='landgram_top_box1_shading' from='string' to='string'
-             member='top1_shading' default='solid'>
-         <documentation> could be solid or dot</documentation>
-  </parameter>
-   <parameter name='landgram_top_box2_colour' from='string' to='Colour'
-             member='top2_colour' default='evergreen'>
-         <documentation> Colour of the box </documentation>
-  </parameter>
-   <parameter name='landgram_top_box2_shading' from='string' to='string'
-             member='top2_shading' default='dot'>
-         <documentation> could be solid or dot</documentation>
-  </parameter>
-  <parameter name='landgram_bottom_box1_colour' from='string' to='Colour'
-             member='bottom1_colour' default='evergreen'>
-         <documentation> Colour of the box </documentation>
-  </parameter>
-   <parameter name='landgram_bottom_box1_shading' from='string' to='string'
-             member='bottom1_shading' default='solid'>
-         <documentation> could be solid or dot</documentation>
-  </parameter>
-  
-  <parameter name='landgram_bottom_box2_colour' from='string' to='Colour'
-             member='bottom2_colour' default='evergreen'>
-         <documentation> Colour of the box </documentation>
-  </parameter>
-   <parameter name='landgram_bottom_box2_shading' from='string' to='string'
-             member='bottom2_shading' default='dot'>
-         <documentation> could be solid or dot</documentation>
-  </parameter>
-</class>
-</magics>
-
diff --git a/src/xml/Layout.xml b/src/xml/Layout.xml
deleted file mode 100644
index e188452..0000000
--- a/src/xml/Layout.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<!--class name='MagicsSingleton' action ='popen' embedded_object='AutomaticPlotManager' directory='common'>
-    <parameter name='layout' from='string' to='PlotManager'
-             member='layout' xml='layout'
-			 default='automatic'>
-         <documentation> Type of page layout (POSITIONAL/AUTOMATIC) </documentation>
-         <migration> New Magics: Parameter layout sent to new Magics[MagicsSingleton].  </migration>
-         <available>automatic</available>
-         <available>positional</available>
-         <release>Magics++0.2</release>
-         <release_info>Only the automatic layout has been implemented</release_info>
-   </parameter>
-
-   
-</class-->
-
-<class name='AutomaticPlotManager' action='popen/pnew' directory='common'>
-  <documentation> Object used to handle the call to the Pseudo action routine PNEW </documentation>
-  <parameter name='plot_start' from='string' to='string'
-             member='plot_start' xml='plot_start'
-			 default='bottom'>
-         <documentation> Position of first page plotted (BOTTOM/TOP) </documentation>
-         <migration> New Magics: Parameter plot_start sent to new Magics[Page].  </migration>
-         <release>Magics++0.2</release>
-  </parameter>
-
-  <parameter name='plot_direction' from='string' to='string'
-             member='plot_direction' xml='plot_direction'
-			 default='vertical'>
-         <documentation> Direction of plotting (HORIZONTAL/VERTICAL) </documentation>
-         <migration> New Magics: Parameter plot_direction sent to new Magics[Page].  </migration>
-         <release>Magics++0.2</release>
-  </parameter>
-
-  <parameter name='page_x_gap' from='float' to='float'
-             member='page_x_gap' xml='page_x_gap'
-			 default='0.0cm' implemented='no'>
-         <documentation> Gap between pages in X direction </documentation>
-         <migration> New Magics: Parameter page_x_gap sent to new Magics[Page].  </migration>
-         <release>Magics++0.2</release>
-         <release_info>Not fully implemented</release_info>
-  </parameter>
-
-  <parameter name='page_y_gap' from='float' to='float'
-             member='page_y_gap' xml='page_y_gap'
-			 default='0.0cm' implemented='no'>
-         <documentation> Gap between pages in Y direction </documentation>
-         <migration> New Magics: Parameter page_y_gap sent to new Magics[Page].  </migration>
-         <release>Magics++0.2</release>
-          <release_info>Not fully implemented</release_info>
-  </parameter>
-</class>
-</magics>
diff --git a/src/xml/Legend.xml b/src/xml/Legend.xml
deleted file mode 100644
index 7b8b90f..0000000
--- a/src/xml/Legend.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='NoLegendVisitor' directory='basic' include='LegendVisitor.h'/> 
-
-<class name='LegendVisitor' action='legend'  xmltag='legend' prefix='legend' directory='basic' xml_doc_inherits='XmlBasicNode'>
-	<documentation>
-	   Collection of parameters defining how a legend will be plotted. To plot a legend the parameter 'Legend' 
-	   needs to set to 'on'. 
-	</documentation>
-
-<parameter name='legend_text_colour' from='string' to='Colour' member='colour' default='blue' metview_default='navy'>
-    <documentation> Legend text colour </documentation>
-    <migration> New Magics: Parameter legend_text_colour sent to new Magics[Legend].  </migration>
-</parameter>
-        
- <parameter name='legend_title' from='string' to='bool' member='title' default='off' >
-    <documentation> plot legend title text  </documentation>
-    <set value='on' name='legend_title_text'/>
-    <set value='on' name='legend_title_orientation'/>
-</parameter>
-
-<parameter name='legend_title_text' from='string' to='string' member='title_text' default='legend' >
-    <documentation> Text to plot as legend title </documentation>
-</parameter>
-<parameter name='legend_title_orientation' from='string' to='string' member='title_orientation' default='automatic' values='vertical/horizontal/automatic'>
-    <documentation> Orientation of legend title, if automatic the title will be 
-    	horizontal for horizontal legend and vertical for vertical  </documentation>
-</parameter>
-<parameter name='legend_units' from='string' to='bool' member='units' default='off' visible='off'>
-   <documentation> plot legend title text </documentation>
-</parameter>
-
-<parameter name='legend_units_text' from='string' to='string' member='units_text' default='' visible='off' >
-    <documentation> Text to plot as units </documentation>
-</parameter>
-
-<parameter name='legend_user_minimum' from='string' to='bool' member='use_min' default='off' >
-   <documentation> Use of user tailored text for minimum </documentation>
-   <set value='on' name='legend_user_minimum_text'/>
-</parameter>
-
-<parameter name='legend_user_minimum_text' from='string' to='string' member='use_min_text' default='' >
-   <documentation> User tailored text for minimum </documentation>
-</parameter>
-
-<parameter name='legend_user_maximum' from='string' to='bool' member='use_max' default='off' >
-   <documentation> Use of user tailored text for maximum </documentation>
-   <set value='on' name='legend_user_maximum_text'/>
-</parameter>
-
-<parameter name='legend_user_maximum_text' from='string' to='string' member='use_max_text' default='' >
-  <documentation> User tailored text for maximum   </documentation>
-</parameter>
-        
-<parameter name='legend_display_type' from='string' to='LegendMethod' member='method' default='disjoint' metview_default='continuous'>
-            <option name='LegendMethod' fortran='disjoint' xml='disjoint' include='LegendMethod.h'/>
-            <option name='ContinuousLegendMethod' fortran='continuous' xml='continuous' include='LegendMethod.h'/> 
-            <option name='HistogramLegendMethod' fortran='histogram' xml='histogram' include='LegendMethod.h'/>
-            <documentation> type of shaded legend required </documentation>
-</parameter>       
-
-<parameter name='legend_text_format' from='string' to='string' member='format' default='(automatic)'>
-     <documentation> Format of automatic text (MAGICS Format/(AUTOMATIC)) </documentation>
-</parameter>  
-        
-<parameter name='legend_box_mode' from='string' to='string' member='box' default='automatic' values='automatic/positional'>
-        	
-        	<set value='positional' name='legend_box_x_position'/>
-        	<set value='positional' name='legend_box_x_length'/>
-        	<set value='positional' name='legend_box_y_position'/>
-        	<set value='positional' name='legend_box_y_length'/>
-        	<documentation>Whether legend box is positioned automatically or by the user  </documentation>
-</parameter>
-<parameter name='legend_text_font' from='string' to='string' member='font' xml='font' default='sansserif'>
-	<documentation>Font name - please make sure this font is installed!</documentation>
-</parameter>
-<parameter name='legend_text_font_style' from='string' to='string' member='font_style' default='normal' values='normal/bold/italic/bolditalic'>
-		<documentation>Font style. Set this to an empty string in order to remove all styling.</documentation>
-</parameter>
-
-
-  
-<parameter name='legend_text_font_size' from='string' to='string' member='font_dimension' default='0.3' metview_default='0.2'>
-	<documentation>Font size, specified in cm or in % ex: 0.5cm or 10% </documentation>
-</parameter>
-  
-
-<parameter name='legend_text_quality' from='string' to='string' member='text_quality' default='medium' visible='off'>
-	<documentation>Quality of text in legend :
-		deprecated use legend_text_font and legend_text_font_style </documentation>
-</parameter>
-         
-<parameter name='legend_text_orientation' from='float' to='float' member='orientation' default='0' >
-	<documentation>Orientation of the text : horizontal by default </documentation>
-</parameter>
-      
-<parameter name='legend_user_lines' from='stringarray' to='stringarray' member='lines' default='stringarray()' >
-             <documentation> List of text for legend entries </documentation>        
-</parameter>
-
-<parameter name='legend_column_count' from='int' to='int' member='columns' default='1' >
-             <documentation> Number of columns in the legend </documentation>        
-</parameter>
-
-<parameter name='legend_entry_plot_direction' from='string' to='string' member='direction' default='automatic' values='automatic/row/column'>
-             <documentation> Method of filling in legend entries</documentation>        
-</parameter>
-<parameter name='legend_entry_plot_orientation' from='string' to='string' member='entry_orientation' default='bottom_top' values='bottom_top/top_bottom'>
-             <documentation> going from bootom to top ot top to bottom in column mode!   </documentation>        
-</parameter>
-
-<parameter name='legend_text_composition' from='string' to='string' member='composition' 
-		default='automatic_text_only' values='automatic_text_only/user_text_only/both'>
-             <documentation> Determines whether to use automatically-generated or user-generated text (or both) in the legend () </documentation>        
-</parameter>
-
-<parameter name='legend_user_text' from='string' to='string' member='text'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>
-</parameter>
-
-<parameter name='legend_user_text_1' from='string' to='string' member='text1'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter> 
-
-<parameter name='legend_user_text_2' from='string' to='string' member='text2' default='' visible='off' >
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter>
-
-<parameter name='legend_user_text_3' from='string' to='string' member='text3'  default='' visible='off' >
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter>
-
-<parameter name='legend_user_text_4' from='string' to='string' member='text4'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter>
-
-<parameter name='legend_user_text_5' from='string' to='string' member='text5'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter>
-
-<parameter name='legend_user_text_6' from='string' to='string' member='text6'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter>
-
-<parameter name='legend_user_text_7' from='string' to='string' member='text7'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter> 
-
-<parameter name='legend_user_text_8' from='string' to='string' member='text8'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter> 
-
-<parameter name='legend_user_text_9' from='string' to='string' member='text9' default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>        
-</parameter>
-
-<parameter name='legend_user_text_10' from='string' to='string' member='text10'  default='' visible='off'>
-             <documentation> User text to be associated with a legend sub-entry from a multiple entry </documentation>
-</parameter> 
-
-<parameter name='legend_box_x_position' from='float' to='float' member='box_x'  default='0'>
-         <documentation> X coordinate of lower left corner of legend box (Relative to page_x_position) </documentation>
-         <migration> New Magics: Parameter legend_box_x_position sent to new Magics[TextBox].  </migration>
-</parameter>
-
-<parameter name='legend_box_y_position' from='float' to='float' member='box_y'  default='0' >
-         <release>Magics++0.7</release>
-         <documentation> Y coordinate of lower left corner of legend box (Relative to page_y_position) </documentation>
-</parameter>
-
-<parameter name='legend_box_x_length' from='float' to='float' member='box_width'  default='0'>
-         <release>Magics++0.7</release>
-         <documentation> Length of legend box in X direction </documentation>
-</parameter>
-
-<parameter name='legend_box_y_length' from='float' to='float' member='box_height'  default='0'>
-         <documentation> Length of legend box in Y direction </documentation>
-</parameter>
-
-<parameter name='legend_box_blanking' from='string' to='bool' member='blanking' default='off'>
-         <documentation>  blanking of legend box  </documentation>
-</parameter>
-
-<parameter name='legend_border' from='string' to='bool' member='border'  default='off'>
-         <documentation> Plot border around legend box  </documentation>
-         <set value='on' name='legend_border_colour'/>  
-         <set value='on' name='legend_border_line_style'/>
-         <set value='on' name='legend_border_thickness'/>
-</parameter>
-  
-<parameter name='legend_border_line_style' from='string' to='LineStyle' member='border_line_style'  default='solid'>
-         <documentation> Line style of border around legend box </documentation>
-</parameter>
-
-<parameter name='legend_border_colour' from='string' to='Colour' member='border_colour'  default='blue' >
-          <release>Magics++0.7</release>    
-         <documentation> Colour of border around text box (Full choice of colours) </documentation>
-</parameter>
-
-<parameter name='legend_border_thickness' from='int' to='int' member='border_thickness'  default='1'>
-          <release>Magics++0.7</release>    
-         <documentation> Thickness of legend box border </documentation>
-</parameter>
-<parameter name='legend_wrep' from='string' to='bool' member='wrep' default='off' visible='off'>
-    <documentation> activate wrep mode for legend building</documentation>
-</parameter>
-<parameter name='legend_entry_text_width' from='float' to='float' member='text_width' default='60'>
-    <documentation> Width in percent used for the text part of a legend Entry </documentation>
-</parameter>
-<parameter name='legend_entry_border' from='string' to='bool' member='entry_border' default='on' >
-         	<documentation> add a border to the graphical part of each legend entry </documentation>
-         	set value='on' name='legend_entry_border_colour'/>
-   </parameter>  
- <parameter name='legend_entry_border_colour' from='string' to='Colour' member='entry_border_colour' default='black' >
-         	<documentation> border colour </documentation>
-   </parameter>  
-</class>
-
-
-<class name='LegendBox' xmltag='legend' prefix='legend' action='legend' used_by='Legend' directory='visualisers' />  
-<class name='NoLegendNode' include='LegendNode.h' directory='visualisers'/>
-<class name='XmlLegendNode' include='LegendNode.h' directory='visualisers' inherits='XmlBasicNode/LegendNode'/>
-<class name='AutomaticLegendBox' xmltag='automatic' action='legend'  include='LegendBox.h' inherits='LegendBox' directory='visualisers'/>
-<class name='LegendMethod' action='legend' used_by='Legend' include='LegendMethod.h' directory='visualisers'/>
-
-<class name='ContinuousLegendMethod' action='legend' used_by='Legend' include='LegendMethod.h' inherits='LegendMethod' directory='visualisers'>
-
-<parameter name='legend_label_frequency' from='int' to='int' member='label_frequency' default='1' >
-         	<documentation>Frequency of the labels. </documentation>
-</parameter>
-
-</class>
-<class name='HistogramLegendMethod' action='legend' used_by='Legend' include='LegendMethod.h' inherits='LegendMethod' directory='visualisers'>
-	<parameter name='legend_label_frequency' from='int' to='int' member='label_frequency' default='1' >
-         	<documentation> Frequency of the labels. </documentation>
-   </parameter>
-   <parameter name='legend_histogram_border' from='string' to='bool' member='histo_border' default='on' >
-         	<documentation> add a border to the the bars </documentation>
-   </parameter>  
-  <parameter name='legend_histogram_border_colour' from='string' to='Colour' member='histo_border_colour' default='black' >
-         	<documentation> border colour of the bars</documentation>
-   </parameter>   
-   <parameter name='legend_histogram_mean_value' from='string' to='bool' member='histo_mean' default='off' >
-         	<documentation> show the mean value </documentation>
-   </parameter>  
-    <parameter name='legend_histogram_mean_value_marker' from='int' to='int' member='histo_mean_marker' default='15' >
-         	<documentation> show the mean value </documentation>
-   </parameter> 	
-    <parameter name='legend_histogram_mean_value_marker_colour' from='string' to='Colour' member='histo_mean_colour' default='black' >
-         	<documentation> show the mean value </documentation>
-   </parameter>  
-   <parameter name='legend_histogram_mean_value_marker_size' from='float' to='float' member='histo_mean_size' default='0.4' >
-         	<documentation> show the mean value </documentation>
-   </parameter> 
-   <parameter name='legend_histogram_max_value' from='string' to='bool' member='histo_max' default='on' >
-         	<documentation> show the max value </documentation>
-   </parameter>   
-   <parameter name='legend_histogram_grid_colour' from='string' to='Colour' member='histo_grid_colour' default='black' >
-         	<documentation> Colour of the grids </documentation>
-   </parameter>   
-   <parameter name='legend_histogram_grid_line_style' from='string' to='LineStyle' member='histo_grid_style' default='solid' >
-         	<documentation>  Line Style of the grids </documentation>
-   </parameter>  
-   <parameter name='legend_histogram_grid_thickness' from='int' to='int' member='histo_grid_thickness' default='1' >
-         	<documentation>  thickness of the grids </documentation>
-   </parameter>  
-</class>
-
-</magics>
diff --git a/src/xml/LevelSelection.xml b/src/xml/LevelSelection.xml
deleted file mode 100644
index 88ba148..0000000
--- a/src/xml/LevelSelection.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='LevelSelection' action='pcont' directory='visualisers' 
-	prefix='contour' xml_tag='level'>
-  <documentation>  </documentation>
-
-  <parameter name='contour_max_level' from='float' to='float'
-             member='max' 
-			 default='1.0e+21'>
-         <documentation> Highest level for contours to be drawn </documentation>
-         <migration> New Magics: Parameter contour_max_level sent to new Magics[LevelSelection].  </migration>
-         <release>Magics++0.3</release>
-        
-  </parameter>
-
-  <parameter name='contour_min_level' from='float' to='float'
-             member='min' 
-			 default='-1.0e+21'>
-         <documentation> Lowest level for contours to be drawn </documentation>
-         <migration> New Magics: Parameter contour_min_level sent to new Magics[LevelSelection].  </migration>
-         <release>Magics++0.3</release>
-    
-  </parameter>
-  <parameter name='contour_shade_max_level' from='float' to='float'
-             member='max_shade' 
-			 default='1.0e+21'>
-         <documentation> Highest level for contours to be shaded </documentation>
-        
-        
-  </parameter>
-
-  <parameter name='contour_shade_min_level' from='float' to='float'
-             member='min_shade' 
-			 default='-1.0e+21'>
-         <documentation> Lowest level for contours to be shaded </documentation>
-      
-    
-  </parameter>
-</class>
-<class name='LevelListSelectionType' action='pcont' 
-	xmltag='list' prefix='contour' directory='visualisers' inherits='LevelSelection'>
- <documentation>Users may supply a list of the contour levels to be plotted 
- by setting the parameter CONTOUR_LEVEL_SELECTION_TYPE to 'LEVEL_LIST' 
- and passing an array of contour level values. 
- This method enables users to plot contours with irregular intervals.
- </documentation>
- <parameter name='contour_level_list' from='floatarray' to='floatarray'
-             member='list' xml='level_list'
-			 default='floatarray()'>
-         <documentation> List of contour levels to be plotted </documentation>
-         <migration> New Magics: Parameter contour_level_list sent to new Magics[LevelListSelectionType].  </migration>
-         <release>Magics++0.1</release>
-  </parameter>
-</class>
-
-<class name='IntervalSelectionType' action='pcont' 
-	xmltag='interval' prefix='contour/contour/contour' directory='visualisers' inherits='LevelSelection'>
-  <documentation>
-  If the parameter CONTOUR_LEVEL_SELECTION_TYPE is set to 'INTERVAL' , 
-  MAGICS will plot contours at regularly spaced intervals
-  using the value of CONTOUR_REFERENCE_LEVEL as a base
-  and the value in CONTOUR_INTERVAL as the interval between levels.
-  </documentation>
-  <parameter name='contour_reference_level' from='float' to='float'
-             member='reference'  default='0.0'>
-         <documentation> Contour level from which contour interval is calculated </documentation>
-         <release>Magics++0.1</release>        
-  </parameter>
-  <parameter name='contour_interval' from='float' to='float'
-             member='interval'  default='8.0'>
-         <documentation> Interval in data units between two contour lines </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-</class>
-<class name='CountSelectionType' action='pcont' 
-	xmltag='count' prefix='contour/contour/contour_level'
-	directory='visualisers' inherits='LevelSelection'>
-  <documentation>
-  The number of contour levels may be set by the user by setting 
-  the parameter CONTOUR_LEVEL_SELECTION_TYPE to 'COUNT' (default)
-  and CONTOUR_LEVEL_COUNT to the number of levels to be plotted. 
-  MAGICS will then calculate the contour interval
-  and the user's plot will consist of the number of levels specified
-  with a regular contour interval.
-  This is the default method and the default number of levels is 10. 
-  The exact number of contour levels plotted may not be CONTOUR_LEVEL_COUNT as
-  PCONT will always use the value stored in CONTOUR_REFERENCE_LEVEL as a starting point
-  and will pick reasonable values for the contour interval.
-  </documentation>
-  <parameter name='contour_level_count' from='int' to='int'
-             member='levelCount'  default='10'>
-         <documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
-         this means that the number of levels could be slightly different from the asked number of levels</documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  <parameter name='contour_level_tolerance' from='int' to='int'
-             member='tolerance'  default='2'>
-         <documentation> Tolerance: Do not use nice levels if the number of levels is really to different [count +/- tolerance] </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  <parameter name='contour_reference_level' from='float' to='float'
-             member='reference'  default='0.0'>
-         <documentation> Contour level from which contour interval is calculated </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-</class>
-</magics>
\ No newline at end of file
diff --git a/src/xml/Makefile.am b/src/xml/Makefile.am
deleted file mode 100644
index 7748ce6..0000000
--- a/src/xml/Makefile.am
+++ /dev/null
@@ -1,134 +0,0 @@
-AUTOMAKE_OPTIONS	= foreign
-
-
-SUFFIXES: .xml .x .nx
-
-EXTRA_DIST =  \
-	Proj4Projection.xml Drivers.xml  output.xml BaseDriver.xml PostScriptDriver.xml SVGDriver.xml BinaryDriver.xml KMLDriver.xml \
-	Akima.xml ActionRoutines.xml HiLoText.xml XYList.xml \
-	BoxPlot.xml  Histogram.xml   LevelSelection.xml \
-	Epsgram.xml  Landgram.xml    ImagePlotting.xml      MetaData.xml  SubPage.xml \
-	SubPageProj4.xml XYTransformation.xml \
-	Frame.xml              Import.xml        TextVisitor.xml         NetcdfDecoder.xml  SuperPage.xml XmlBox.xml \
-	Axis.xml               NetcdfInterpretor.xml SymbolInput.xml InputData.xml TableDecoder.xml\
-	InputMatrix.xml        SymbolPlotting.xml      XmlPage.xml \
-	Geopoints.xml          Obs.xml        TextVisitor.xml     XmlSubPage.xml \
-	CoastPlotting.xml      Grib.xml               IsoHighlight.xml   ObsPlotting.xml     graph_params.xml \
-	Coastlines.xml         GridPlotting.xml       IsoLabel.xml       ObsStat.xml                          \
-	HiLo.xml               IsoPlot.xml            OdaDecoder.xml     Title.xml           magml.xml \
-	Contour.xml            HiLoMarker.xml         IsoShading.xml     TitleTemplate.xml \
-	HiLoNumber.xml         LabelPlotting.xml      Page.xml           ValuePlot.xml \
-	Layout.xml         PageID.xml           View.xml \
-	HiLoTechnique.xml      Legend.xml  Wind.xml   Taylor.xml SelectionMode.xml \
-	GeoRectangularProjection.xml SatelliteProjection.xml PolarStereographicProjection.xml\
-	EpsJSon.xml ObsJSon.xml QtDriver.xml CairoDriver.xml GDDriver.xml BinningObject.xml
-	
-XML_NODIST=	\
-	Title.nx \
-	XmlBox.nx \
-	Layout.nx \
-	XmlPage.nx \
-	Frame.nx \
-	SatelliteProjection.nx\
-	XYList.nx \
-	InputData.nx \
-	TableDecoder.nx \
-	TitleTemplate.nx \
-	graph_params.nx \
-	Histogram.nx \
-	ObsStat.nx \
-	Landgram.nx \
-	Taylor.nx
-
-NEW_XML_NODIST=	output.nx \
-        Coastlines.nx \
-	CoastPlotting.nx \
-	GridPlotting.nx \
-	LabelPlotting.nx \
-	InputMatrix.nx \
-	Grib.nx \
-	Epsgram.nx \
-	Contour.nx \
-	IsoPlot.nx \
-	IsoShading.nx \
-	IsoLabel.nx \
-	ValuePlot.nx \
-	LevelSelection.nx \
-	View.nx \
-	Page.nx \
-	TextVisitor.nx \
-	SymbolPlotting.nx \
-	SymbolInput.nx \
-	BaseDriver.nx PostScriptDriver.nx SVGDriver.nx BinaryDriver.nx KMLDriver.nx \
-	OdaDecoder.nx \
-	Obs.nx \
-	NetcdfInterpretor.nx \
-	NetcdfDecoder.nx \
-	IsoHighlight.nx \
-	HiLo.nx \
-	HiLoText.nx \
-	Akima.nx \
-	Import.nx \
-	Proj4Projection.nx \
-	SubPage.nx \
-	Wind.nx \
-	ImagePlotting.nx \
-	PageID.nx \
-	ObsPlotting.nx \
-	Legend.nx \
-	SuperPage.nx \
-	XYTransformation.nx \
-	Geopoints.nx \
-	MetaData.nx \
-	BoxPlot.nx \
-	Axis.nx \
-	SymbolPlotting.nx \
-	SelectionMode.nx\
-	EpsJSon.nx ObsJSon.nx BinningObject.nx
-
-PROJECTION_XML= \
-	GeoRectangularProjection.nx \
-	PolarStereographicProjection.nx
-
-
-if MAGICS_QT
-   NEW_XML_NODIST += QtDriver.nx
-endif
-
-if MAGICS_CAIRO
-   NEW_XML_NODIST += CairoDriver.nx
-endif
-
-if MAGICS_RASTER
-   NEW_XML_NODIST += GDDriver.nx
-endif
-
-if MAGICS_PROJ4
-   NEW_XML_NODIST += SubPageProj4.nx
-else 
-   NEW_XML_NODIST += SubPage.nx
-endif
-
-.xml.nx:
-	perl $(top_srcdir)/tools/xml2cc_new.pl $< $(top_srcdir)/src
-	cp $< $@
-	chmod +w $@
-if MAGICS_METVIEW
-	perl $(top_srcdir)/tools/xml2mv.pl $< $(top_srcdir)/src/libMagWrapper
-endif
-	cp $< $@
-	chmod +w $@
-
-.xml.x:
-	perl $(top_srcdir)/tools/xml2cc.pl $< $(top_srcdir)/src
-	cp $< $@
-	chmod +w $@
-
-install:$(XML_NODIST) $(NEW_XML_NODIST) $(PROJECTION_XML)
-
-all: $(XML_NODIST) $(NEW_XML_NODIST) $(PROJECTION_XML) #../common/OutputFactory.h
-	echo "make attributes"
-
-clean-local:
-	-rm -f $(XML_NODIST) $(NEW_XML_NODIST) $(PROJECTION_XML) QtDriver.nx SubPageProj4.nx SubPage.nx
-	-rm -f $(top_srcdir)/src/libMagWrapper/*Wrapper.cc $(top_srcdir)/src/libMagWrapper/*Wrapper.h $(top_srcdir)/src/*/*Attributes.cc $(top_srcdir)/src/*/*Attributes.h
diff --git a/src/xml/Makefile.in b/src/xml/Makefile.in
deleted file mode 100644
index 06db7cd..0000000
--- a/src/xml/Makefile.in
+++ /dev/null
@@ -1,526 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_QT_TRUE@am__append_1 = QtDriver.nx
- at MAGICS_CAIRO_TRUE@am__append_2 = CairoDriver.nx
- at MAGICS_RASTER_TRUE@am__append_3 = GDDriver.nx
- at MAGICS_PROJ4_TRUE@am__append_4 = SubPageProj4.nx
- at MAGICS_PROJ4_FALSE@am__append_5 = SubPage.nx
-subdir = src/xml
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = \
-	Proj4Projection.xml Drivers.xml  output.xml BaseDriver.xml PostScriptDriver.xml SVGDriver.xml BinaryDriver.xml KMLDriver.xml \
-	Akima.xml ActionRoutines.xml HiLoText.xml XYList.xml \
-	BoxPlot.xml  Histogram.xml   LevelSelection.xml \
-	Epsgram.xml  Landgram.xml    ImagePlotting.xml      MetaData.xml  SubPage.xml \
-	SubPageProj4.xml XYTransformation.xml \
-	Frame.xml              Import.xml        TextVisitor.xml         NetcdfDecoder.xml  SuperPage.xml XmlBox.xml \
-	Axis.xml               NetcdfInterpretor.xml SymbolInput.xml InputData.xml TableDecoder.xml\
-	InputMatrix.xml        SymbolPlotting.xml      XmlPage.xml \
-	Geopoints.xml          Obs.xml        TextVisitor.xml     XmlSubPage.xml \
-	CoastPlotting.xml      Grib.xml               IsoHighlight.xml   ObsPlotting.xml     graph_params.xml \
-	Coastlines.xml         GridPlotting.xml       IsoLabel.xml       ObsStat.xml                          \
-	HiLo.xml               IsoPlot.xml            OdaDecoder.xml     Title.xml           magml.xml \
-	Contour.xml            HiLoMarker.xml         IsoShading.xml     TitleTemplate.xml \
-	HiLoNumber.xml         LabelPlotting.xml      Page.xml           ValuePlot.xml \
-	Layout.xml         PageID.xml           View.xml \
-	HiLoTechnique.xml      Legend.xml  Wind.xml   Taylor.xml SelectionMode.xml \
-	GeoRectangularProjection.xml SatelliteProjection.xml PolarStereographicProjection.xml\
-	EpsJSon.xml ObsJSon.xml QtDriver.xml CairoDriver.xml GDDriver.xml BinningObject.xml
-
-XML_NODIST = \
-	Title.nx \
-	XmlBox.nx \
-	Layout.nx \
-	XmlPage.nx \
-	Frame.nx \
-	SatelliteProjection.nx\
-	XYList.nx \
-	InputData.nx \
-	TableDecoder.nx \
-	TitleTemplate.nx \
-	graph_params.nx \
-	Histogram.nx \
-	ObsStat.nx \
-	Landgram.nx \
-	Taylor.nx
-
-NEW_XML_NODIST = output.nx Coastlines.nx CoastPlotting.nx \
-	GridPlotting.nx LabelPlotting.nx InputMatrix.nx Grib.nx \
-	Epsgram.nx Contour.nx IsoPlot.nx IsoShading.nx IsoLabel.nx \
-	ValuePlot.nx LevelSelection.nx View.nx Page.nx TextVisitor.nx \
-	SymbolPlotting.nx SymbolInput.nx BaseDriver.nx \
-	PostScriptDriver.nx SVGDriver.nx BinaryDriver.nx KMLDriver.nx \
-	OdaDecoder.nx Obs.nx NetcdfInterpretor.nx NetcdfDecoder.nx \
-	IsoHighlight.nx HiLo.nx HiLoText.nx Akima.nx Import.nx \
-	Proj4Projection.nx SubPage.nx Wind.nx ImagePlotting.nx \
-	PageID.nx ObsPlotting.nx Legend.nx SuperPage.nx \
-	XYTransformation.nx Geopoints.nx MetaData.nx BoxPlot.nx \
-	Axis.nx SymbolPlotting.nx SelectionMode.nx EpsJSon.nx \
-	ObsJSon.nx BinningObject.nx $(am__append_1) $(am__append_2) \
-	$(am__append_3) $(am__append_4) $(am__append_5)
-PROJECTION_XML = \
-	GeoRectangularProjection.nx \
-	PolarStereographicProjection.nx
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .nx .x .xml
-$(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) --foreign src/xml/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign src/xml/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
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-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-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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 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 \
-	uninstall uninstall-am
-
-
-SUFFIXES: .xml .x .nx
-
-.xml.nx:
-	perl $(top_srcdir)/tools/xml2cc_new.pl $< $(top_srcdir)/src
-	cp $< $@
-	chmod +w $@
- at MAGICS_METVIEW_TRUE@	perl $(top_srcdir)/tools/xml2mv.pl $< $(top_srcdir)/src/libMagWrapper
-	cp $< $@
-	chmod +w $@
-
-.xml.x:
-	perl $(top_srcdir)/tools/xml2cc.pl $< $(top_srcdir)/src
-	cp $< $@
-	chmod +w $@
-
-install:$(XML_NODIST) $(NEW_XML_NODIST) $(PROJECTION_XML)
-
-all: $(XML_NODIST) $(NEW_XML_NODIST) $(PROJECTION_XML) #../common/OutputFactory.h
-	echo "make attributes"
-
-clean-local:
-	-rm -f $(XML_NODIST) $(NEW_XML_NODIST) $(PROJECTION_XML) QtDriver.nx SubPageProj4.nx SubPage.nx
-	-rm -f $(top_srcdir)/src/libMagWrapper/*Wrapper.cc $(top_srcdir)/src/libMagWrapper/*Wrapper.h $(top_srcdir)/src/*/*Attributes.cc $(top_srcdir)/src/*/*Attributes.h
-
-# 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/xml/MetaData.xml b/src/xml/MetaData.xml
deleted file mode 100644
index 9cb087a..0000000
--- a/src/xml/MetaData.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='MetaData' xmltag='meta' prefix='metadata' directory='common'>
-  <documentation></documentation>
-  
-  <parameter name='metadata_path' from='string' to='string'
-             member='path' xml='path' default='meta.xml'>
-          <release>Magics 1.1</release>
-         <documentation> Path of the Meta data File </documentation>
-  </parameter>
-  <parameter name='javascript_path' from='string' to='string'
-             member='javascript' default='' >
-          <release>Magics 2.6</release>
-         <documentation> Path of the javascript </documentation>
-  </parameter>
-  <parameter name='profile_path' from='string' to='string'
-             member='profile' default='' >
-          <release>Magics 2.6</release>
-         <documentation> Path of the javascript </documentation>
-  </parameter>
-  <parameter name='world_file_path' from='string' to='string'
-             member='world_file' default='' >
-          <release>Magics 2.6</release>
-         <documentation> if defined,  a world file description will be generated </documentation>
-  </parameter>
-  <parameter name='efi_path' from='string' to='string'
-             member='efi'  default=''>     
-         <documentation> Path of the Meta data File </documentation>
-  </parameter> 
-  <parameter name='efi_template' from='string' to='string'
-             member='efi_template' default='efi_template.js'>     
-         <documentation> Path of the Meta data File </documentation>
-  </parameter> 
-</class>
-
-
-</magics>
diff --git a/src/xml/NetcdfDecoder.xml b/src/xml/NetcdfDecoder.xml
deleted file mode 100644
index d2193d9..0000000
--- a/src/xml/NetcdfDecoder.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='NetcdfDecoder' action='pnetcdf' prefix='netcdf' xmltag='netcdf' 
-	directory='decoders' >
-	<documentation>
-       This handles the decoding of NetCDF Files.
-	</documentation>
-
-    <!--parameter name='netcdf_convention' from='string' to='NetcdfConvention'
-               member='convention' default='mars' >
-        <release>Magics++0.1</release>
-           <option name='NetcdfMarsConvention' fortran='mars' xml='mars'
-                include='NetcdfMarsConvention.h'/>
-        <release_info>Parameter defined but not implemented</release_info>
-        <documentation>Not currently used</documentation>
-    </parameter-->
-
-     <parameter name='netcdf_type' from='string' to='NetcdfInterpretor'
-                member='interpretor' default='matrix'>
-        <option name='NetcdfMatrixInterpretor' fortran='matrix' xml='matrix'
-                include='NetcdfMatrixInterpretor.h'/>
-                
-           <option name='NetcdfGeoMatrixInterpretor' fortran='geomatrix' xml='geomatrix'
-                include='NetcdfGeoMatrixInterpretor.h'/>
-          
-          <option name='NetcdfVectorInterpretor' fortran='vector' xml='vector'
-                include='NetcdfVectorInterpretor.h'/>
-           <option name='NetcdfGeoVectorInterpretor' fortran='geovector' xml='geovector'
-                include='NetcdfVectorInterpretor.h'/>
-           <option name='NetcdfGeoPolarMatrixInterpretor' fortran='geopolarmatrix' xml='geopolarmatrix'
-                include='NetcdfVectorInterpretor.h'/>
-        
-        <option name='NetcdfGeopointsInterpretor' fortran='geopoint' xml='geopoint'
-                include='NetcdfGeopointsInterpretor.h'/>  
-          <option name='NetcdfXYpointsInterpretor' fortran='xypoint'
-                include='NetcdfGeopointsInterpretor.h'/>  
-         <option name='NetcdfOrcaInterpretor' fortran='complex_matrix' xml='complex_matrix'
-                include='NetcdfOrcaInterpretor.h'/>
-
-        <release>Magics++0.1</release>
-        <release_info>Only matrix is implemented</release_info>
-        <documentation>Type of data arrangement in the file (possible values: matrix) </documentation>
-    </parameter>
-</class>
-
-
-</magics>
diff --git a/src/xml/NetcdfInterpretor.xml b/src/xml/NetcdfInterpretor.xml
deleted file mode 100644
index 8b04725..0000000
--- a/src/xml/NetcdfInterpretor.xml
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
- 
-<class name='NetcdfInterpretor' action='pnetcdf' xmltag='netcdf' prefix='netcdf' directory='decoders'>
-	<documentation>
-		This object contains this attributes to set how to load the data from the file.
-        It is possible to load only a subarray of the data, by setting the dimensions.
-	</documentation>
-        <parameter name='netcdf_filename' from='string' to='string'
-            member='path' default=''>
-            <release>Magics++0.1</release>
-            <documentation>Path of the file to be read</documentation>
-        </parameter>
-
-        <parameter name='netcdf_dimension_setting' from='stringarray' to='stringarray'
-            member='dimension' default='stringarray()'>
-            <metview default='' class='' >  </metview>
-             <release>Magics++0.1</release>
-            <documentation>The dimensions of the data to load, eg. p/100/10</documentation>
-        </parameter>
-        
-         <parameter name='netcdf_value_variable' from='string' to='string'
-            member='field' default=''>
-              <release>Magics++0.1</release>
-              <documentation>Variable name to plot</documentation>
-        </parameter> 
-       
-          <parameter name='netcdf_field_scaling_factor' from='float' to='float'
-            member='scaling' default='1'>
-            <release>Magics++0.1</release>
-            <documentation>Scaling factor to multiply the field value by</documentation>
-        </parameter>
-         <parameter name='netcdf_field_add_offset' from='float' to='float'
-            member='offset' default='0'>
-            <release>Magics++0.1</release>
-            <documentation>Offset added to the field values</documentation>
-           </parameter>
-           <parameter name='netcdf_missing_attribute' from='string' to='string'
-            member='missing_attribute' default='missing_value'>
-            <release>Magics++2.15</release>
-            <documentation>Attribute to read to know the value used to indicate a missing value in the data</documentation>
-           </parameter>  
-            <parameter name='netcdf_reference_date' from='string' to='string'
-            member='reference' default='0'>
-            <release>Magics++0.7</release>
-            <documentation>attributes name to find the refernce date</documentation>
-           </parameter> 
-           <parameter name='netcdf_field_suppress_below' from='float' to='float'
-             member='suppress_below' default='-1.0e+21' >
-         <documentation> Values in the input field(s) below this value are to be suppressed, i.e. not to be taken into consideration for plotting purposes </documentation>
-  </parameter>
-
-  <parameter name='netcdf_field_suppress_above' from='float' to='float'
-             member='suppress_above'	 default='1.0e+21' >
-         <documentation> Values in the input field(s) above this value are to be suppressed, i.e not to be taken into consideration for plotting purposes </documentation>
-  </parameter>
-</class>
-<class name='NetcdfGeopointsInterpretor' action='pnetcdf' xmltag='geopoints' prefix='netcdf' directory='decoders' inherits='NetcdfInterpretor'>
-  <parameter name='netcdf_latitude_variable' from='string' to='string'
-            member='latitude' default='latitude'>
-             
-              <documentation>Variable name representing the x dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_longitude_variable' from='string' to='string'
-            member='longitude' default='longitude'>
-            
-            <documentation>Variable name representing the y dimension</documentation>
-        </parameter>
- </class>
- <class name='NetcdfXYpointsInterpretor' action='pnetcdf' xmltag='xypoints' prefix='netcdf' directory='decoders'
-  inherits='NetcdfInterpretor' include='NetcdfGeopointsInterpretor.h'>
-  <parameter name='netcdf_x_variable' from='string' to='string'
-            member='x' default='x'>
-              <release>Magics++0.1</release>
-              <documentation>Variable name representing the latitude dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_y_variable' from='string' to='string'
-            member='y' default='y'>
-            
-             <release>Magics++0.1</release>
-            <documentation>Variable name representing the longitude dimension</documentation>
-        </parameter>
- </class>
- <class name='NetcdfGeoPolarMatrixInterpretor' action='pnetcdf' xmltag='netcdf' prefix='netcdf' directory='decoders' 
-        inherits='NetcdfInterpretor' include='NetcdfVectorInterpretor.h'>
-        <parameter name='netcdf_speed_component_variable' from='string' to='string'
-            member='speed' default=''>
-              <release>Magics++2.6</release>
-              <documentation>Variable name representing the speed component of the vector</documentation>
-        </parameter> 
-         <parameter name='netcdf_direction_component_variable' from='string' to='string'
-            member='direction' default=''>
-             <release>Magics++2.6</release>
-            <documentation>Variable name representing the direction component of the vector</documentation>
-        </parameter>
-        <parameter name='netcdf_latitude_variable' from='string' to='string'
-            member='latitude' default='latitude'>
-              
-              <documentation>Variable name representing the latitude dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_longitude_variable' from='string' to='string'
-            member='longitude' default='longitude'>
-            
-            <documentation>Variable name representing the longitude dimension</documentation>
-        </parameter>
-</class>
-
-<class name='NetcdfGeoVectorInterpretor' action='pnetcdf' xmltag='geopoints' prefix='netcdf' directory='decoders' 
-        inherits='NetcdfInterpretor' include='NetcdfVectorInterpretor.h'>
-        <parameter name='netcdf_x_component_variable' from='string' to='string'
-            member='x_component' default=''>
-              <release>Magics++2.6</release>
-              <documentation>Variable name representing the x component of the vector</documentation>
-        </parameter> 
-         <parameter name='netcdf_y_component_variable' from='string' to='string'
-            member='y_component' default=''>
-             <release>Magics++2.6</release>
-            <documentation>Variable name representing the y component of the vector</documentation>
-        </parameter>
-        <parameter name='netcdf_latitude_variable' from='string' to='string'
-            member='latitude' default='latitude'>
-              <release>Magics++0.1</release>
-              <documentation>Variable name representing the latitude dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_longitude_variable' from='string' to='string'
-            member='longitude' default='longitude'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>Variable name representing the longitude dimension</documentation>
-        </parameter>
-</class>
-<class name='NetcdfVectorInterpretor' action='pnetcdf' xmltag='geopoints' prefix='netcdf' directory='decoders' 
-	inherits='NetcdfInterpretor' >
-        <parameter name='netcdf_x_component_variable' from='string' to='string'
-            member='x_component' default=''>
-              <release>Magics++2.6</release>
-              <documentation>Variable name representing the x component of the vector</documentation>
-        </parameter> 
-         <parameter name='netcdf_y_component_variable' from='string' to='string'
-            member='y_component' default=''>
-             <release>Magics++2.6</release>
-            <documentation>Variable name representing the y component of the vector</documentation>
-        </parameter>
-        <parameter name='netcdf_y_position_variable' from='string' to='string'
-            member='y' default='y'>
-              <release>Magics++0.1</release>
-              <documentation>Variable name representing the x dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_x_position_variable' from='string' to='string'
-            member='x' default='x'>
-            <metview default='' class='' >   </metview>
-            
-            <documentation>Variable name representing the y dimension</documentation>
-        </parameter>
-</class>
-
-<class name='NetcdfGeoMatrixInterpretor' action='pnetcdf' xmltag='geopoints' prefix='netcdf' directory='decoders' 
-         inherits='NetcdfInterpretor'>
-        <parameter name='netcdf_latitude_variable' from='string' to='string'
-            member='latitude' default='latitude'>
-              <release>Magics++0.1</release>
-              <documentation>Variable name representing the latitude dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_longitude_variable' from='string' to='string'
-            member='longitude' default='longitude'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>Variable name representing the longitude dimension</documentation>
-        </parameter>
-         <parameter name='netcdf_longitude_sample' from='int' to='int'
-            member='longitude_sample' default='1'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>sample the input data by taking aa longitude every nth longitude</documentation>
-        </parameter>
-         <parameter name='netcdf_latitude_sample' from='int' to='int'
-            member='latitude_sample' default='1'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>sample the input data by taking a latitude every nth latitude</documentation>
-        </parameter>
-        
-            <parameter name='netcdf_matrix_primary_index' from='string' to='string'
-            member='primary_index' default='longitude'>
-             <release>Magics++2.4</release>
-            <documentation> Primary index latitude/longitude</documentation>
-        </parameter>
-</class>
-<class name='NetcdfOrcaInterpretor' action='pnetcdf' xmltag='geopoints' prefix='netcdf' directory='decoders' 
-         inherits='NetcdfInterpretor'>
-        <parameter name='netcdf_latitude_variable' from='string' to='string'
-            member='latitude' default='latitude'>
-              <release>Magics++0.1</release>
-              <documentation>Variable name representing the latitude dimension</documentation>
-        </parameter> 
-         <parameter name='netcdf_longitude_variable' from='string' to='string'
-            member='longitude' default='longitude'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>Variable name representing the longitude dimension</documentation>
-        </parameter>
-         <parameter name='netcdf_longitude_sample' from='int' to='int'
-            member='longitude_sample' default='1'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>sample the input data by taking aa longitude every nth longitude</documentation>
-        </parameter>
-         <parameter name='netcdf_latitude_sample' from='int' to='int'
-            member='latitude_sample' default='1'>
-            <metview default='' class='' >   </metview>
-             <release>Magics++0.1</release>
-            <documentation>sample the input data by taking a latitude every nth latitude</documentation>
-        </parameter>
-       
-            <parameter name='netcdf_matrix_primary_index' from='string' to='string'
-            member='primary_index' default='longitude'>
-             <release>Magics++2.4</release>
-            <documentation> Primary index latitude/longitude</documentation>
-        </parameter>
-</class>
-<class name='NetcdfMatrixInterpretor' action='pnetcdf' xmltag='geopoints' prefix='netcdf' directory='decoders' inherits='NetcdfInterpretor'>
-        
-         <parameter name='netcdf_y_variable' from='string' to='string'
-            member='y' default='y'>
-             <release>Magics++0.1</release>
-            <documentation>Variable name representing the y dimension</documentation>
-        </parameter>
-        <parameter name='netcdf_x_variable' from='string' to='string'
-            member='x' default='x'>
-             <release>Magics++0.1</release>
-        <documentation>Variable name representing the x dimension</documentation>
-        </parameter> 
-        <parameter name='netcdf_x_auxiliary_variable' from='string' to='string'
-            member='aux_x' default=''>
-             <release>Magics++0.1</release>
-        <documentation>variable can used to define geoline definition.</documentation>
-        </parameter>  
-        <parameter name='netcdf_y_auxiliary_variable' from='string' to='string'
-            member='aux_y' default=''>
-             <release>Magics++0.1</release>
-        <documentation>variable can used to define geoline definition.</documentation>
-        </parameter>
-            <parameter name='netcdf_matrix_primary_index' from='string' to='string'
-            member='primary_index' default='longitude'>
-             <release>Magics++2.4</release>
-            <documentation> Primary index latitude/longitude</documentation>
-        </parameter>
-</class>
-</magics>
diff --git a/src/xml/Obs.xml b/src/xml/Obs.xml
deleted file mode 100644
index 35c77b9..0000000
--- a/src/xml/Obs.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name = 'ObsDecoder' action_routine='pobs' directory='decoders' xmltag='bufr' prefix='obs'>
-
-  <parameter name='obs_input_file_name' from='string' to='string' member='file_name' default=''>
-         <documentation> The name of the input file containing the BUFR code field(s) </documentation>
-  </parameter>
-  
-  <parameter name='obs_level' from='int' to='int' member='level' default='500'>
-	<documentation> Pressure level to be plotted (upper air only) </documentation>
-  </parameter>
-  
-  <parameter name='obs_level_2' from='int' to='int' member='level2' default='1000' >
-	<documentation> 2nd pressure level (for thickness plots only) </documentation>
-  </parameter>
-  
-  <parameter name='obs_level_tolerance' from='int' to='int' member='tolerance' default='0'>
-	<documentation> Tolerance (hPa) above and below the requested level for which observations may be plotted (applies to OBS_LEVEL only) </documentation>
-  </parameter>
-
-  <parameter name='obs_type_list' from='stringarray' to='stringarray' member='types' default='stringarray()' >
-	<documentation> A list of observation types (SATEM, TEMP, etc) for which observations are to be plotted </documentation>
-  </parameter>
-</class>
-  
-</magics>
diff --git a/src/xml/ObsJSon.xml b/src/xml/ObsJSon.xml
deleted file mode 100644
index fb87be1..0000000
--- a/src/xml/ObsJSon.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name="ObsJSon" xmltag='obsjson' prefix='obsjson' action='pobsjson'  
-           directory='web' include='ObsJSon.h' >
- <parameter name='obsjson_input_filename' from='string' to='string' 
- 	    member='path' default=''>
-  	<documentation> Path to the file containing the Observation data </documentation>
- </parameter>
- </class>
-</magics>
diff --git a/src/xml/ObsPlotting.xml b/src/xml/ObsPlotting.xml
deleted file mode 100644
index 695842d..0000000
--- a/src/xml/ObsPlotting.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name = 'ObsPlotting' action_routine='pobs' directory='visualisers'  xmltag='obs' prefix='obs'>
-
- <parameter name='obs_distance_apart' from='float' to='float' member='apart' xml='distance_apart' default='1.0'>
-   <release>Magics++ 2.10</release>
-   <documentation>Minimum distance between the centre of any two observations in cm</documentation>
- </parameter>
-
-</class>
-<class name = 'ObsTable' action_routine='pobs' directory='visualisers'  xmltag='obs' prefix='obs'>
-
- <parameter name='obs_template_file_name' from='string' to='string' member='path'  default=''>
-   <release>Magics++ 2.10</release>
-   <documentation> User defined template </documentation>
- </parameter>
-
-</class>
-
-
-<class name='ObsItem' prefix='obs' action_routine='pobs' directory='visualisers'>
-
- <parameter name='obs_size' from='float' to='float' member='size' default='0.2'>
-   <documentation> Height of plotted variables </documentation>
-   <release_info>work in progress</release_info>
- </parameter>
-
- <parameter name='obs_quality' from='string' to='string' member='obs_quality' default='medium' implemented='no' priority='0.2'>
-    <documentation>Plotting quality of variables (LOW/MEDIUM/HIGH)</documentation>
- </parameter> 
-
-</class>
-
-
-
-<class name = 'ObsStationRing' xmltag='station' prefix='obs/obs_station' action_routine='pobs' directory='visualisers'>
-
- <parameter name = 'obs_station_ring' from='string' to='bool' member='visible' default='on'>
-    <documentation> Turn On/off the station ring </documentation>
- </parameter>
-
- <parameter name = 'obs_station_ring_colour' from='string' to='Colour' member='colour'  default='foreground'>
-   <documentation> Colour the station ring </documentation>
- </parameter>
-
-</class>
-
-
-<class name = 'ObsWind' xmltag='wind' prefix='obs'  action_routine='pobs' directory='visualisers'>
-
- <parameter name = 'obs_wind' from='string' to='bool' member='visible'  default='on'>
-    <documentation> Turn On/off the wind </documentation>
- </parameter>
-
- <parameter name = 'obs_wind_colour' from='string' to='Colour' member='colour' default='foreground'>
-    <documentation> Colour the station ring </documentation>
- </parameter>
-</class>
-
-<class name = 'ObsTemperature'   xmltag='tempe' prefix='obs' action_routine='pobs' directory='visualisers'>
-
- <parameter name = 'obs_temperature' from='string' to='bool' member='visible' default='on'>
-    <documentation> Turn On/off the Air temperature</documentation>
- </parameter>
-
- <parameter name = 'obs_temperature_colour' from='string' to='Colour' member='colour' default='foreground'>
-    <documentation> Colour the station ring </documentation>
- </parameter>
-</class>
-
-<class name = 'ObsPressure' xmltag='pressure' prefix='obs' action_routine='pobs' directory='visualisers'>
-
- <parameter name = 'obs_pressure' from='string' to='bool' member='visible'  default='on'>
-    <documentation> Turn On/off the pressure</documentation>
- </parameter>
-
- <parameter name = 'obs_pressure_colour' from='string' to='Colour' member='colour' default='foreground'>
-    <documentation> Colour the pressure info </documentation>
- </parameter>
-</class>
-
-<class name = 'ObsPressureTendency' xmltag='pressure_tendency' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_pressure_tendency' from='string' to='bool' member='visible'  default='on'>
-		<documentation> Turn On/off the pressure</documentation>
-    </parameter>
-    
-    <parameter name = 'obs_pressure_tendency_colour' from='string' to='Colour' member='colour' default='foreground'>
-		<documentation> Colour the pressure info </documentation>
-    </parameter>
-</class>
-
-<class name = 'ObsDewPoint' xmltag='dewpoint' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_dewpoint' from='string' to='bool' member='visible'  default='on'>
-		<documentation> Turn On/off the pressure</documentation>
-    </parameter>
-    <parameter name = 'obs_dewpoint_colour' from='string' to='Colour' member='colour' default='red'>
-		<documentation> Colour the pressure info </documentation>
-    </parameter>
-</class>
-
-<class name = 'ObsVisibility' xmltag='visi' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_visibility' from='string' to='bool' member='visible'  default='on'>
-		<documentation> Turn On/off the pressure</documentation>
-    </parameter>
-    
-    <parameter name = 'obs_visibility_colour' from='string' to='Colour' member='colour' default='foreground'>
-		<documentation> Colour the pressure info </documentation>
-    </parameter>
-</class>
-
-<class name = 'ObsPresentWeather' xmltag='present_weather' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_present_weather' from='string' to='bool' member='visible'  default='on'>
-		<documentation> Turn On/off the pressure</documentation>
-    </parameter>
-
-    <parameter name = 'obs_present_weather_colour' from='string' to='Colour' member='colour' default='foreground'>
-		<documentation> Colour the pressure info </documentation>
-    </parameter>
-</class>
-
-<class name = 'ObsTimePlot' xmltag='time' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_time' from='string' to='bool' member='visible'  default='off'>
-		<documentation> Turn On/off the Air temperature</documentation>
-    </parameter>
-    
-    <parameter name = 'obs_time_colour' from='string' to='Colour' member='colour'  default='foreground'>
-		<documentation> Colour the station ring </documentation>
-    </parameter>
-</class>
-
-<class name = 'ObsThickness' xmltag='thickness' prefix='obs' action_routine='pobs' directory='visualisers'>
-    <parameter name = 'obs_thickness' from='string' to='bool' member='visible'  default='on'>
-        <documentation> Turn On/off the Thickness</documentation>
-        <release>2.6</release>
-    </parameter>
-    
-    <parameter name = 'obs_thickness_colour' from='string' to='Colour' member='colour'  default='foreground'>
-        <documentation> Colour the thickness </documentation>
-    </parameter>
-</class>
-
-
-<class name = 'ObsPressureLevel' xmltag='pressure_level' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_upper_air_pressure' from='string' to='bool' 
-			member='visible'  default='off'>
-		<documentation> Turn On/off the pressure level ( satob)  </documentation>
-    </parameter>
-
-    <parameter name = 'obs_upper_level_pressure_colour' from='string' to='Colour' 
-			member='colour' xml='colour' default='foreground'>
-		<documentation> Colour the station ring </documentation>
-    </parameter>
-</class>
-
-<class name = 'ObsHeight'  xmltag='height' prefix='obs' action_routine='pobs' directory='visualisers'>
-    <parameter name = 'obs_upper_air_pressure' from='string' to='bool' 
-            member='visible'  default='on'>
-        <documentation> Turn On/off the height (geopotential)  </documentation>
-        <release>2.6</release>
-    </parameter>
-    <parameter name = 'obs_height_colour' from='string' to='Colour' 
-            member='colour' default='foreground'>
-        <documentation> Colour of the height information </documentation>
-        <release>2.6</release>
-    </parameter>
-</class>
-
-<class name = 'ObsIdentifier' xmltag='ident' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_identification' from='string' to='bool' 
-			member='visible'  default='off'>
-		<documentation> Turn On/off the pressure level ( satob)  </documentation>
-    </parameter>
-
-    <parameter name = 'obs_identification_colour' from='string' to='Colour' 
-			member='colour'  default='foreground'>
-		<documentation> Colour the identification info </documentation>
-    </parameter>
-</class>
-
-
-<class name = 'ObsPastWeather' xmltag='past_weather' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_past_weather' from='string' to='bool' member='visible'  default='on'>
-		<documentation> Turn On/off the pressure level (satob)</documentation>
-    </parameter>
-    
-    <parameter name = 'obs_past_weather_colour' from='string' to='Colour' member='colour'  default='red'>
-		<documentation> Colour of the past weather </documentation>
-    </parameter>
-</class>
-
-
-<class name = 'ObsCloud' xmltag='cloud' prefix='obs' action_routine='pobs' directory='visualisers'>
-
-    <parameter name = 'obs_cloud' from='string' to='bool' member='visible'  default='on'>
-		<documentation> Turn On/off the pressure level ( satob)  </documentation>
-    </parameter>
-
-    <parameter name = 'obs_low_cloud' from='string' to='bool' member='low'  default='on'>
-		<documentation> Turn On/off the low cloud  </documentation>
-    </parameter>
-    
-    <parameter name = 'obs_low_cloud_colour' from='string' to='Colour' member='low_colour'  default='foreground'>
-		<documentation> Colour of the low cloud </documentation>
-    </parameter>
-    
-     <parameter name = 'obs_medium_cloud' from='string' to='bool' member='medium'  default='on'>
-		<documentation> Turn On/off the medium cloud  </documentation>
-    </parameter>    
-
-    <parameter name = 'obs_medium_cloud_colour' from='string' to='Colour' member='medium_colour'  default='foreground'>
-       <documentation> Colour of  medium cloud </documentation>
-    </parameter>
-
-    <parameter name = 'obs_high_cloud' from='string' to='bool' member='high'  default='on'>
-      <documentation> Turn On/off the high cloud  </documentation>
-    </parameter>
-
-    <parameter name = 'obs_high_cloud_colour' from='string' to='Colour' member='high_colour'  default='red'>
-      <documentation> Colour of the high cloud </documentation>
-    </parameter>    
-</class>
-
-<class name = 'ObsDemoItem2' xmltag='demo2' prefix='obs' action_routine='pobs' directory='visualisers'>
-	<parameter name = 'obs_demo2_missing_text' from='string' to='string' member='text'  default='///'>
-		<documentation> text to be displayed in case of missinmg data </documentation>
-    </parameter>
-    <parameter name = 'obs_demo2_text_colour' from='string' to='string' member='text_colour'  default='cyan'>
-		<documentation> Text colour </documentation>
-    </parameter>
-</class>
-
-</magics>
diff --git a/src/xml/ObsStat.xml b/src/xml/ObsStat.xml
deleted file mode 100644
index 221a522..0000000
--- a/src/xml/ObsStat.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='ObsStatDecoder' action='pobsstat' directory='decoders'>
-	<documentation>
-		The Obstat decoder is responsible for decoding Obstat Ascii file.
-	</documentation>
-        <parameter name='obsstat_filename' from='string' to='string'
-            member='path' default='' xml='path'>
-           
-            <documentation> Epsgram Database Path </documentation>
-            <migration> New Magics: Parameter eps_database sent to new Magics[EpsgramDecoder].  </migration>
-        </parameter>
-         
-	
-</class>
-
-<class name='EfiDataDecoder' action='xml' directory='decoders'>
-	<documentation>
-		The Efi decoder is responsible for decoding EFi Ascii file.(Metops)
-	</documentation>
-        <parameter name='efi_filename' from='string' to='string'
-            member='path' default='' xml='path'>           
-            <documentation> Efi file name Path </documentation>
-        </parameter>        
-         <parameter name='efi_record' from='int' to='int'
-            member='record' default='0' xml='record'>
-            <documentation> Efi record ( starting at 0) </documentation>
-        </parameter>
-</class>
-<static name='obstat' class='ObsStatDecoder' base='BaseSceneObject' include_class='yes'/> 
-
-</magics>
diff --git a/src/xml/OdaDecoder.xml b/src/xml/OdaDecoder.xml
deleted file mode 100644
index 579f115..0000000
--- a/src/xml/OdaDecoder.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='OdaGeoDecoder' include="OdaDecoder.h" action='podb' directory='oda' xmltag='odb' prefix='odb' >
-	<documentation>
-		New odb Access (Prototype Status) 
-	</documentation>
-    <parameter name='odb_filename' from='string' to='string'
-            member='path' default='' >
-            <documentation> odb Database Path </documentation>
-    </parameter>
-    
-    <parameter name='odb_latitude_variable' from='string' to='string'
-            member='latitude' default='lat'>          
-            <documentation> odb Column name for the latitudes   </documentation>
-    </parameter>
-    <parameter name='odb_longitude_variable' from='string' to='string'
-            member='longitude' default='lon'>        
-            <documentation> odb Column name for the longitudes   </documentation>
-    </parameter>
-    
-    <parameter name='odb_value_variable' from='string' to='string'  
-            member='value' default=''>        
-            <documentation> odb Column name for the values </documentation>
-    </parameter>
-    <parameter name='odb_y_component_variable' from='string' to='string'
-            member='y' default=''>        
-            <documentation> odb Column name for the y component of a vector </documentation>
-    </parameter>
-    <parameter name='odb_x_component_variable' from='string' to='string'
-            member='x' default=''>        
-            <documentation> odb Column name  for the x component of a vector</documentation>
-    </parameter>
-    <parameter name='odb_nb_rows' from='int' to='int'
-	       member='nb_rows' default ='-1' >
-	    <documentation> umber of rows to be retrieved </documentation>
-    </parameter>
-      <parameter name='odb_user_title' from='string' to='string'
-	       member='title' default ='' >
-	    <documentation> User defined title for automatic title </documentation>
-    </parameter>
-      <parameter name='odb_coordinates_unit' from='string' to='string'
-	       member='unit' default ='degrees' >
-	    <documentation> Coordinates unit used to define the location of the points (degrees/radians) </documentation>
-    </parameter>
-    <parameter name='odb_binning' from='string' to='BinningObject' member='odb_binning' default ='off' >
-     	<documentation> Information for the binning (degrees/radians) </documentation>
-     	  <option name='BinningObject'   fortran='on'  xml='binning' include='BinningObject.h'/>
-          <option name='NoBinningObject' fortran='off' xml='nobinning' include='BinningObject.h'/>
-    </parameter>
-</class>    
-<class name='OdaXYDecoder' include='OdaDecoder.h' action='podb' directory='oda' xmltag='odb' prefix='odb' >
-	<documentation>
-		New odb Access (Prototype Status) 
-	</documentation>
-    <parameter name='odb_filename' from='string' to='string'
-            member='path' default='' >
-            <documentation> odb Database Path </documentation>
-    </parameter>
-    
-    <parameter name='odb_x_variable' from='string' to='string'
-            member='x' default='lat'>          
-            <documentation> odb Column name for the x coordinates   </documentation>
-    </parameter>
-    <parameter name='odb_y_variable' from='string' to='string'
-            member='y' default='lon'>        
-            <documentation> odb Column name for the y coordinates   </documentation>
-    </parameter>
-    
-    <parameter name='odb_value_variable' from='string' to='string'  
-            member='value' default=''>        
-            <documentation> odb Column name for the values </documentation>
-    </parameter>
-    <parameter name='odb_y_component_variable' from='string' to='string'
-            member='y_component' default=''>        
-            <documentation> odb Column name for the y component of a vector </documentation>
-    </parameter>
-    <parameter name='odb_x_component_variable' from='string' to='string'
-            member='x_component' default=''>        
-            <documentation> odb Column name  for the x component of a vector</documentation>
-    </parameter>
-    <parameter name='odb_nb_rows' from='int' to='int'
-	       member='nb_rows' default ='-1' >
-	    <documentation> umber of rows to be retrieved </documentation>
-    </parameter>
-      <parameter name='odb_user_title' from='string' to='string'
-	       member='title' default ='' >
-	    <documentation> User defined title for automatic title </documentation>
-    </parameter>
-      <parameter name='odb_binning' from='string' to='BinningObject' member='odb_binning' default ='off' >
-     	<documentation> Information for the binning (degrees/radians) </documentation>
-     	  <option name='BinningObject'   fortran='on'  xml='binning' include='BinningObject.h'/>
-          <option name='NoBinningObject' fortran='off' xml='nobinning' include='BinningObject.h'/>
-    </parameter>
-    
-
-</class>    
-
-</magics>
-
diff --git a/src/xml/Page.xml b/src/xml/Page.xml
deleted file mode 100644
index 8922cab..0000000
--- a/src/xml/Page.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='FortranSceneNode' include='SceneNode.h' action='pnew' 
-	xmltag='page' prefix='page' directory='common'>
-  <parameter name='page_x_position' from='float' to='float'
-             member='x' default='0'>
-         <release>Magics++0.1</release>
-         <documentation> X-Coordinate of lower left hand corner of page.Default </documentation>
-  </parameter>
-
-  <parameter name='page_y_position' from='float' to='float'
-             member='y' 	 default='0' >
-         <release>Magics++0.1</release>
-         <documentation> Y-Coordinate of lower left hand corner of page.Default </documentation>
-  </parameter>
-
-  <parameter name='page_x_length' from='float' to='float'
-             member='width'  default='29.7' >
-          <release>Magics++0.1</release>
-         <documentation> Length of page in horizontal direction </documentation>
-  </parameter>
-
-  <parameter name='page_y_length' from='float' to='float'
-             member='height'  default='21' >
-         <release>Magics++0.1</release>
-         <documentation> Length of page in vertical direction </documentation>
-  </parameter>
-
- 
-  <parameter name='page_frame' from='string' to='bool'
-             member='frame' default='off'>
-         <release>Magics++2.4</release>
-         <documentation> Plot frame around page (ON/OFF) </documentation>
-         <migration> Default as changed from magics6) </migration>
-  </parameter>
-
-  <parameter name='page_frame_colour' from='string' to='Colour'
-             member='frame_colour'  default='blue' >
-         <release>Magics++0.5</release>
-         <documentation> Colour of page frame (Full choice of colours) </documentation>
-  </parameter>
-
-  <parameter name='page_frame_line_style' from='string' to='LineStyle'
-             member='frame_line_style' 	 default='solid'>
-         <release>Magics++0.5</release>
-         <documentation> Style of page frame(SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-  </parameter>
-
-  <parameter name='page_frame_thickness' from='int' to='int'
-             member='frame_thickness'  default='1' >
-         <documentation> Thickness of page frame </documentation>
-         <release>Magics++0.5</release>
-  </parameter>
-
-  <parameter name='page_id_line' from='string' to='NoPageID' include='PageID.h' 
-             member='page_id'  default='on'>
-         <release>Magics++0.6</release>
-         <release>Logo expected in 0.7</release>
-         <option name='PageID' fortran='on' include='PageID.h'/>
-         <option name='NoPageID' fortran='off' include='PageID.h'/>
-         <documentation> Plot identification line and ECMWF logo (ON/OFF) </documentation>
-  </parameter>
-  
- 
-  
-  <parameter name='page_x_gap' from='float' to='float'
-             member='page_x_gap' 	 default='0.0cm' implemented='no'>
-         <documentation> Gap between pages in X direction </documentation>
-         <release>Magics++0.2</release>
-         <release_info>Not fully implemented</release_info>
-  </parameter>
-
-  <parameter name='page_y_gap' from='float' to='float'
-             member='page_y_gap'  default='0.0cm' implemented='no'>
-         <documentation> Gap between pages in Y direction </documentation>
-         <release>Magics++0.2</release>
-          <release_info>Not fully implemented</release_info>
-  </parameter>
-
-    <parameter name='layout' from='string' to='string'
-             member='plot_layout' 	 default='automatic'>
-         <documentation> Type of page layout (POSITIONAL/AUTOMATIC) </documentation>
-   </parameter>
-
-  <parameter name='plot_start' from='string' to='string'
-             member='plot_start'  default='bottom'>
-         <documentation> Position of first page plotted (BOTTOM/TOP) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-
-  <parameter name='plot_direction' from='string' to='string'
-             member='plot_direction'  default='vertical'>
-         <documentation> Direction of plotting (HORIZONTAL/VERTICAL) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-  
-</class>
-
-
-  
-  
-</magics>
diff --git a/src/xml/PageID.xml b/src/xml/PageID.xml
deleted file mode 100644
index 49cabc0..0000000
--- a/src/xml/PageID.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-
-<class name='PageID' directory='common' xmltag='pageid' prefix='page_id/page_id_line' inherits='NoPageID'>
-
-  <parameter name='page_id_line_height' from='float' to='float' member='height' default='0.25'>
-         <documentation> Height of identification line</documentation>
-         <release>2.0</release>
-  </parameter>
- <parameter name='page_id_line_colour' from='string' to='Colour' member='colour'  default='blue'>
-         <documentation> Colour of identification line. Default based on page_y_length</documentation>
-         <release>2.0</release>
-  </parameter>
-
-  <parameter name='page_id_line_magics' from='string' to='bool' member='magics'  default='on'>
-         <documentation>Display magics version in identification line (ON/OFF)</documentation>
-         <release>2.9</release>
-  </parameter>
-
-  <parameter name='page_id_line_user_text' from='string' to='string' member='user_text' default=''>
-         <documentation> User-supplied text for inclusion in identification line </documentation>
-         <release>2.0</release>
-  </parameter>
-
-  <parameter name='page_id_line_system_plot' from='string' to='bool' member='system'  default='on' >
-         <documentation> Plot system part of the identification line (ON/OFF) </documentation>
-         <release>2.0</release>
-  </parameter>
-
-  <parameter name='page_id_line_date_plot' from='string' to='bool' member='date'  default='on' >
-         <documentation> Plot date part of the identification line (ON/OFF) </documentation>
-         <release>2.0</release>
-  </parameter>
-
-  <parameter name='page_id_line_errors_plot' from='string' to='bool' member='errors'  default='on' >
-         <documentation> Plot error part of the identification line (ON/OFF) </documentation>
-         <release>2.0</release>
-         <release_info> Parameter defined but not implemented: no plan</release_info>
-  </parameter>
-
-  <parameter name='page_id_line_user_text_plot' from='string' to='bool' member='text'  default='on'>
-         <documentation> Plot user text part of the identification line (ON/OFF) </documentation>
-         <release>2.0</release>
-  </parameter>
-
-<parameter name='page_id_line_logo_plot' from='string' to='NoLogoPlotting' include='LogoPlotting.h' member='logo' default='on'>
-         <documentation>Plot logo part of the identification line (ON/OFF)</documentation>
-         <option name='LogoPlotting'     fortran='on'   xml='logo'     include='LogoPlotting.h'> </option>
-         <option name='NoLogoPlotting'   fortran='off'  xml='nologo' include='LogoPlotting.h'> </option>
-</parameter>
-  
-<parameter name='page_id_line_font' from='string' to='string' member='font' default='sansserif'>
-         <documentation> Font to be used </documentation>
-         <release>1.3</release>
-</parameter>
-
-<parameter name='page_id_line_font_style' from='string' to='string' member='font_style' default='normal'>
-         <documentation> Style of the Font to be used </documentation>
-         <release>1.3</release>
-</parameter>
- 
-</class>
-
-<class name='LogoPlotting' xmltag='logo' inherits='NoLogoPlotting' include='LogoPlotting.h' directory='common'/>
-<class name='NoLogoPlotting' xmltag='nologo' include='LogoPlotting.h'  directory='common'/>
-<class name='LogoPlottingBase'  include='LogoPlotting.h' directory='common'/>
-
-
-<class name='UserLogoPlotting' xmltag='userlogo' prefix='page/page/user_logo' directory='common'  include='LogoPlotting.h' inherits='NoLogoPlotting'>  
-
-<parameter name='user_logo_filename' from='string' to='string' member='path' default=''>
-         <documentation for_docs='no'> Logo's Path </documentation>
-         <release>Basic implementation in 0.6</release>
-</parameter>
-
-<parameter name='user_logo_format' from='string' to='string' member='format' default='PNG'>
-  <documentation for_docs='no'>Specify the format of the logo</documentation>
-  <release>Basic implementation in 0.6</release>
-</parameter>
-
-<parameter name='user_logo_position_units' from='string' to='string' member='units' default='cm'>
-         <documentation for_docs='no'>Units used to define the position of the logo: cm or percent</documentation>
-         <release>Basic implementation in 0.6</release>
-</parameter>
-
-<parameter name='user_logo_y_position' from='float' to='float' member='y' default='2.5'>
-         <documentation for_docs='no'> Y position of the imported image </documentation>
-         <release>Basic implementation in 0.6</release>
-</parameter>
-  
-  <parameter name='user_logo_x_position' from='float' to='float' member='x' default='80'>
-         <documentation for_docs='no'> X position of the imported image </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
- 
-  <parameter name='user_logo_bottom' from='string' to='string' member='bottom'  default=''>
-         <documentation for_docs='no'> Y position of the imported image </documentation>
-         <release>Implementation in 2.4</release>
-  </parameter>
-  
-  <parameter name='user_logo_left' from='string' to='string' member='left' default=''>
-         <documentation for_docs='no'> X position of the imported image </documentation>
-         <release>implementation in 2.4</release>
-  </parameter>
-      
-  <parameter name='user_logo_width' from='float' to='float' member='width' default='-1'>
-         <documentation for_docs='no'> width of the imported image (-1 means use the dimension of the image) </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
-  <parameter name='user_logo_height' from='float' to='float' member='height' default='-1'>
-         <documentation for_docs='no'> height of the imported image (-1 means use the dimension of the image) </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-</class>
-
-
-<class name='NoPageID' xmltag='nopageid' directory='common' include='PageID.h' >
-   <documentation>This object suppresses the plotting the page ID</documentation>
-</class>
-
-</magics>
diff --git a/src/xml/PolarStereographicProjection.xml b/src/xml/PolarStereographicProjection.xml
deleted file mode 100644
index f3e9ce5..0000000
--- a/src/xml/PolarStereographicProjection.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<!--
- ******************************** LICENSE ********************************
- 
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- ******************************** LICENSE ********************************
--->
-<magics>
-<class name='PolarStereographicProjection' 
-		action='projection' 
-		xmltag='polar_stereographic' 
-		prefix='subpage/subpage/subpage_map/subpage_map_area' 
-		directory='common'
-		inherits='Transformation'>
-	<documentation>
-		These are the attributes of the PolarStereographic projection. 
-	</documentation>
-	<parameter name='subpage_map_area_coordinate_system' from='string' to='string'
-             member='system' default='users' visible='off'>
-         <release>Magics++2.8</release>
-         
-         
-         <documentation> If set to projection, the coordinates of the bounding box are described in projection coordinates
-          instead of the more natural lat/lon system  ( this is useful in the WMS context) </documentation>
-  </parameter>
-    <parameter name='subpage_map_area_definition_polar' from='string' to='string' 
-             member='area' default='corners' values='full/corners/centre'>
-             <set value="corners" name='subpage_lower_left_latitude'/>
-             <set value="corners" name='subpage_lower_left_longitude'/>
-             <set value="corners" name='subpage_upper_right_latitude'/>
-             <set value="corners" name='subpage_upper_right_longitude'/>
-             <set value="corners" name='subpage_upper_right_longitude'/>
-             <set value="centre" name='subpage_map_vertical_longitude'/>
-             <set value="centre" name='subpage_map_centre_latitude'/>
-             <set value="centre" name='subpage_map_centre_longitude'/>
-             <set value="centre" name='subpage_map_scale'/>
-         <release>Magics++0.1</release>
-         
-         <release_info>Basic implementation: only used for steroGraphicPolar Projection</release_info>
-         <documentation> Method of defining a polar stereographic map</documentation>
-  </parameter>
-  <parameter name='subpage_map_hemisphere' from='string' to='Hemisphere'
-             member='hemisphere' default='north'  >
-         <release>Magics++0.1</release>    
-         <documentation> Hemisphere required for polar stereographic map(NORTH/SOUTH) </documentation>
-  </parameter>
-
- 
-  
-   <parameter name='subpage_lower_left_latitude' from='float' to='float'
-             member='min_latitude' default='-90.0' >
-         <release>Magics++0.1</release>
-         <documentation> Latitude of lower left corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC </documentation>
-  </parameter>
-
-  <parameter name='subpage_lower_left_longitude' from='float' to='float'
-             member='min_longitude' default='-180.0' >
-         <release>Magics++0.1</release>
-         <documentation> Longitude of lower left corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC </documentation>
-  </parameter>
-
-  <parameter name='subpage_upper_right_latitude' from='float' to='float'
-             member='max_latitude' default='90.0' >
-         <release>Magics++0.1</release>
-         <documentation> Latitude of upper right corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC </documentation>
-  </parameter>
-
-  <parameter name='subpage_upper_right_longitude' from='float' to='float'
-             member='max_longitude' default='180.0' >
-         <release>Magics++0.1</release>
-         <documentation> Longitude of upper right corner of map, if map is CYLINDRICAL, MERCATOR or defined by 'CORNERS' in POLAR STEREOGRAPHIC </documentation>
-  </parameter>
-   <parameter name='subpage_map_vertical_longitude' from='float' to='float'
-             member='vertical_longitude'  default='0.0' >
-         <documentation> Vertical longitude of polar stereographic or Aitoff map </documentation>
-         <release>Magics++0.1</release>   
-         <release_info>Only available for polar sterepgraphic projection</release_info>
-  </parameter>
-   <parameter name='subpage_map_centre_latitude' from='float' to='float'
-             member='centre_latitude'  default='90.0'>
-         <release>Magics++0.3</release>   
-         <documentation> Latitude of centre of polar stereographic map defined by 'CENTRE' or centre latitude of Lambert/satellite subarea projections </documentation>
-  </parameter>
-
-  <parameter name='subpage_map_centre_longitude' from='float' to='float'
-             member='centre_longitude' default='0.0'>
-         <release>Magics++0.3</release>   
-         <documentation> Longitude of centre of polar stereographic map defined by 'CENTRE' or centre longitude of Lambert/satellite subarea projections </documentation>
-  </parameter>
-
-  <parameter name='subpage_map_scale' from='float' to='float'
-             member='map_scale'		 default='50.e6' >
-         <release>Magics++0.3</release>   
-         <release_info> only for polar stereographic projection</release_info>
-         <documentation> Scale of polar stereographic or Aitoff  map </documentation>
-  </parameter>
-
-
-</class>
-</magics>
-
diff --git a/src/xml/PostScriptDriver.xml b/src/xml/PostScriptDriver.xml
deleted file mode 100644
index 8ae4eab..0000000
--- a/src/xml/PostScriptDriver.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='PostScriptDriver' action='PostScript' directory='drivers' inherits='BaseDriver' xmltag='ps' prefix='output_ps/output'>
-	<documentation for_docs='no'>
-		This is the default driver for Magics, and PostScript is the default output format. 
-	</documentation>
-
-<parameter name='output_ps_colour_model' from='string' to='string' member='colour_model' default='cmyk' values='rgb/cmyk/monochrome/gray/cmyk_monochrome/cmyk_gray'>
-   <metview default='' class='' >  </metview>
-   <documentation>Defines the PostScript colour model .</documentation>
-<!--         <option name='RGB'  fortran='rgb'  xml='rgb'/>
-             <option name='CMYK'  fortran='CMYK'  xml='CMYK'/>
-             <option name='MONOCHROME'  fortran='MONOCHROME'  xml='MONOCHROME'/>
-             <option name='GRAY'  fortran='GRAY'  xml='GRAY'/>
-             <option name='CMYK_MONOCHROME' fortran='CMYK_MONOCHROME'  xml='CMYK_MONOCHROME'/>
-             <option name='CMYK_GRAY' fortran='CMYK_GRAY'  xml='CMYK_GRAY'/>
--->
-</parameter>
-
-<parameter name='output_ps_scale' from='float' to='float' member='scale' default='1.0'>
-   <documentation>Defines the PostScript scale between 0.1 and 1.0 (1.0 being the full page size).</documentation>
-</parameter>
-
-<parameter name='output_ps_split' from='string' to='bool' member='split' default='off'>
-   <documentation>Enables the output to be split into different (single page) PostScript files.</documentation>
-</parameter>
-</class>
-
-</magics>
diff --git a/src/xml/Proj4Projection.xml b/src/xml/Proj4Projection.xml
deleted file mode 100644
index cc994e7..0000000
--- a/src/xml/Proj4Projection.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<!--
- ******************************** LICENSE ********************************
- 
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- ******************************** LICENSE ********************************
--->
-<magics>
-<class name='Proj4Projection' inherits='Transformation' action='projection' prefix='subpage' directory='common'>
-	<documentation>
-		These are the attributes of the Proj4 projection. 
-	</documentation>
-	
-     <parameter name='subpage_map_area_definition' from='string' to='string' member='setting' default='full' values='corners/full'>
-            <documentation>method used to define the geographical area.</documentation>
-            <set value='corners' name='subpage_lower_left_latitude'/>
-            <set value='corners' name='subpage_lower_left_longitude'/>
-            <set value='corners' name='subpage_upper_right_latitude'/>
-            <set value='corners' name='subpage_upper_right_longitude'/>
-        </parameter>   
- <parameter name='subpage_lower_left_latitude' from='float' to='float'
-             member='min_latitude' default='-90.0'>
-         <release>Magics++0.1</release>
-         <documentation> Latitude of lower left corner of map. </documentation>
-  </parameter>
-
-  <parameter name='subpage_lower_left_longitude' from='float' to='float'
-             member='min_longitude' default='-180.0' >
-         <release>Magics++0.1</release>
-         <documentation> Longitude of lower left corner of map. </documentation>
-  </parameter>
-
-  <parameter name='subpage_upper_right_latitude' from='float' to='float'
-             member='max_latitude' default='90.0' >
-         <release>Magics++0.1</release>
-         <documentation> Latitude of upper right corner of map. </documentation>
-  </parameter>
-
-  <parameter name='subpage_upper_right_longitude' from='float' to='float'
-             member='max_longitude' default='180.0' >
-         <release>Magics++0.1</release>
-         <documentation> Longitude of upper right corner of map. </documentation>
-  </parameter>
-  </class>
-
-  <class name='Proj4PolarNorth' inherits='Proj4Projection'  include='Proj4Projection.h' prefix='subpage' directory='common'/>
-  <class name='Proj4Geos' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4EPSG3857' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4Goode' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4Lambert' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4Bonne' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4Collignon' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4Mollweide' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4EPSG4326' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  <class name='Proj4EPSG32661' inherits='Proj4Projection' prefix='subpage' include='Proj4Projection.h' directory='common'/>
-  
-</magics>
-
diff --git a/src/xml/QtDriver.xml b/src/xml/QtDriver.xml
deleted file mode 100644
index c88fd64..0000000
--- a/src/xml/QtDriver.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<!--
- ******************************** LICENSE ********************************
- 
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
- 
- Licensed under the Apache License, Version 2.0 (the "License"); 
- you may not use this file except in compliance with the License. 
- You may obtain a copy of the License at 
- 
- 	http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing, software 
- distributed under the License is distributed on an "AS IS" BASIS, 
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- See the License for the specific language governing permissions and 
- limitations under the License.
-
-
- ******************************** LICENSE ********************************
--->
-<magics>
-<class name='QtDriver' action='Qt' prefix='output/output_qt' xmltag='qt' directory='drivers' include='Qt/qgraphicsscene.h' inherits='BaseDriver'>
-
-<documentation>
-These are the attributes of the Qt output driver. This driver is intended for Qt applications such as Metview.
-</documentation>
-
-<parameter name='output_qt_widget' from='QWidget*' to='QWidget*' member='widget' default='0'>
-	<documentation>Enable an application to instantiate its own QGraphicsScene and to pass it to Magics++ for it to use it.</documentation>
-</parameter>
-
-<parameter name='output_qt_scene' from='QGraphicsScene*' to='QGraphicsScene*' member='scene' default='0'>
-	<documentation>Enable an application to instantiate its own QGraphicsScene and to pass it to Magics++ for it to use it.</documentation>
-</parameter>
-
-</class>
-</magics>
diff --git a/src/xml/SVGDriver.xml b/src/xml/SVGDriver.xml
deleted file mode 100644
index e07ef02..0000000
--- a/src/xml/SVGDriver.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='SVGDriver' action='SVG' directory='drivers' inherits='BaseDriver' xmltag='svg' prefix='output_svg/output'>
-	<documentation for_docs='no'>
-		The output driver produces vector graphics in the SVG format. See also the parameters for the Base Driver.
-	</documentation>
-	<parameter name='output_svg_logo_location' from='string' to='string' member='logoLocation' default='inline' values='inline/share/www/local'>
-		<documentation>Sets where the (ECMWF) logo can be found. Possible values are 'inline'(default),'share', 'www' or 'local'.</documentation>
-	</parameter>
-	<parameter name='output_svg_desc' from='string' to='string' member='desc' default='' >
-		<documentation>Defines a text describing the content of the SVG output.</documentation>
-	</parameter>
-
-	<parameter name='output_svg_meta' from='string' to='string' member='meta' default='' >
-		<documentation>Defining meta data in RDF to be added to the SVG output.</documentation>
-	</parameter>
-
-	<parameter name='output_svg_use_external_files' from='string' to='bool' member='external' default='off'>
-		<documentation>Can the SVG driver use external files for cell and image plotting. External files will reduce the SVG file size but add an external dependency!</documentation>
-	</parameter>
-
-	<parameter name='output_svg_scripting' from='string' to='bool' member='scripting' default='off'>
-		<documentation>Integrates scripting for interaction (toggle layers and pan/zooming).</documentation>
-	</parameter>
-
-	<parameter name='output_svg_fix_size' from='string' to='bool' member='fixSize' default='off' >
-		<documentation>Decides if the size is fixed in the SVG document.</documentation>
-	</parameter>
-
-
-<!--
-	<parameter name='output_svg_compress' from='string' to='bool' member='compress' default='off' >
-		<documentation for_docs='no'>Forces Magics to write compressed svgz files.</documentation>
-	</parameter>	
--->
-</class>
-
-</magics>
diff --git a/src/xml/SatelliteProjection.xml b/src/xml/SatelliteProjection.xml
deleted file mode 100644
index e4ba49e..0000000
--- a/src/xml/SatelliteProjection.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-  
- 
-  <class name='SatelliteProjection' action='pnew'  directory='common' inherits='Transformation' >
-  <parameter name='subpage_map_corner_latitude' from='float' to='float' 
- 	member='latitude' xml='latitude' default='-90' >
-	  <release>Magics++1.2</release>  
-	  <documentation>Latitude of one corner of subarea of satellite map</documentation>
-  </parameter>
-  <parameter name='subpage_map_corner_longitude' from='float' to='float' 
- 	member='longitude' xml='longitude' default='-75' >
-	  <release>Magics++1.2</release>  
-	  <documentation>Longitude of one corner of subarea of satellite map</documentation>
-  </parameter>
-  </class>
- 
-  
-</magics>
diff --git a/src/xml/SelectionMode.xml b/src/xml/SelectionMode.xml
deleted file mode 100644
index 58a775b..0000000
--- a/src/xml/SelectionMode.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-  
-
-<class name='SelectionMode' action='Interactive' directory='drivers' xmltag='interactive_mode' prefix='selection_mode'> 
-  <parameter name='selection_mode_background_colour' from='string' to='Colour'
-             member='background_colour'  default='blue'>
-         <release>Magics++3.2</release>
-         <documentation> Background colour of selectables objets.</documentation>
-  </parameter>
-   <parameter name='selection_mode_background_opacity' from='int' to='int'
-             member='background_opacity'  default='75'>
-         <release>Magics++3.2</release>
-         <documentation> Background opacity of selectables objets.</documentation>
-  </parameter>
-   <parameter name='selection_mode_line_colour' from='string' to='Colour'
-             member='line_colour'  default='blue'>
-         <release>Magics++3.2</release>
-         <documentation> line colour of selectables objets.</documentation>
-  </parameter>
-    <parameter name='selection_mode_line_thickness' from='int' to='int'
-             member='line_thickness'  default='2'>
-         <release>Magics++3.2</release>
-         <documentation> line thickness of selectables objets.</documentation>
-  </parameter>
-    <parameter name='selection_mode_line_style' from='string' to='LineStyle'
-             member='line_style'  default='solid'>
-         <release>Magics++3.2</release>
-         <documentation> line style of selectables objets.</documentation>
-  </parameter>
-	  <parameter name='selection_mode_object_instancies' from='int' to='int'
-             member='object_instancies'  default='1'>
-         <release>Magics++3.2</release>
-         <documentation> max number of  selectables objets.</documentation>
-  </parameter>
-</class>
-
-  
-</magics>
diff --git a/src/xml/SubPage.xml b/src/xml/SubPage.xml
deleted file mode 100644
index d9bbf8f..0000000
--- a/src/xml/SubPage.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='FortranViewNode' action='pnew' include='ViewNode.h'
-	xmltag='subpage' prefix='subpage/subpage/subpage' directory='common'> 
-    
-
-
-
-<parameter name='subpage_x_position' from='float' to='float'  member='left'  default='-1' >
-         <documentation> Y-Coordinate of lower left hand corner of subpage in cm. 
-          -1 is the  default: 7.5% of the parent page </documentation>
-</parameter>
-<parameter name='subpage_y_position' from='float' to='float' member='bottom' default='-1' >
-         <documentation> X-Coordinate of lower left hand corner of subpage in cm. 
-          -1 is the  default: 5% of the parent page</documentation>
-</parameter>
-
-<parameter name='subpage_x_length' from='float' to='float' member='width'  default='-1'>
-         <documentation> Length of subpage in horizontal direction in cm.  
-          -1 is the  default: 85% of the parent page </documentation>
-</parameter>
-<parameter name='subpage_y_length' from='float' to='float' member='height'  default='-1'>
-         <documentation> Length of subpage in vertical direction in cm.
-         -1 is the  default:  85% of the parent page </documentation>
-</parameter>
-
-<parameter name='subpage_map_projection' from='string' to='Transformation' member='transformation'  default='cylindrical'>
-         <documentation>Projection to set in the drawing area </documentation>
-
-            <option name='GeoRectangularProjection' fortran='cylindrical' xml='cylindrical' include='GeoRectangularProjection.h'/>
-
-               <option name='PolarStereographicProjection' fortran='polar_stereographic' xml='polar_stereographic' include='PolarStereographicProjection.h'/>
-        <option name='Proj4PolarNorth' fortran='polar_north' include='Proj4Projection.h'/>
- 		<option name='Proj4Geos' fortran='geos' include='Proj4Projection.h'/>
- 		<option name='Proj4Lambert' fortran='lambert' include='Proj4Projection.h'/>
- 		<option name='Proj4EPSG3857' fortran='EPSG3857' include='Proj4Projection.h'/>
- 		<option name='Proj4Goode' fortran='goode' include='Proj4Projection.h'/>
- 		<option name='Proj4Collignon' fortran='collignon' include='Proj4Projection.h'/>
- 		<option name='Proj4Mollweide' fortran='mollweide' include='Proj4Projection.h'/>
- 		<option name='Proj4Bonne' fortran='bonne' include='Proj4Projection.h'/>
- 		<option name='Proj4EPSG4326' fortran='EPSG4326' include='Proj4Projection.h'/>
- 		<option name='Proj4EPSG32661' fortran='EPSG32661' include='Proj4Projection.h'/>
-
-        <option name='MercatorProjection' fortran='mercator' xml='mercator' include='GeoRectangularProjection.h'/>
-		<option name='CartesianTransformation' fortran='cartesian' xml='cartesian' include='CartesianTransformation.h'/>
-        <option name='TaylorProjection' fortran='taylor' xml='taylor' include='TaylorProjection.h'/>
-        <!--option name='Tephigram' fortran='tephigram' xml='tephigram' include='Tephigram.h'/-->
-         <!-- Code to update to add a new projection...
-         	<option name='NewProjection' fortran='fortran-new-projection' xml='xm-tag-for-new-projection' include='NewProjection.h'/>
-         -->     
-</parameter>
-<parameter name='subpage_y_position_internal' from='float' to='float' member='bottom_internal' 
-		default='-1' visible='off'>
-         <documentation> X-Coordinate of lower left hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_x_position_internal' from='float' to='float'  member='left_internal' 
-		 default='-1' visible='off'>
-         <documentation> Y-Coordinate of lower left hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_right_position' from='float' to='float' member='right'  default='-1'  visible='off' >
-         <documentation> X-Coordinate of lower right  hand corner of subpage </documentation>
-</parameter>
-
-
-
-<parameter name='subpage_y_length_internal' from='float' to='float' member='height_internal'  default='-1'  visible='off'>
-         <documentation> Length of subpage in vertical direction.Default </documentation>
-</parameter>
-<parameter name='subpage_x_length_internal' from='float' to='float' member='width_internal'  default='-1' visible='off' >
-         <documentation> Length of subpage in horizontal direction.Default </documentation>
-</parameter>
-
-<parameter name='subpage_top_position' from='float' to='float' member='top' default='-1' visible='off'>
-         <release>Magics++2.4</release>
-         <documentation> Y-Coordinate of upper left hand corner of subpage </documentation>
-</parameter>
-
-
-<parameter name='subpage_background_colour' from='string' to='Colour' member='background'  default='white'>
-         <documentation> Colour of the subpage background </documentation>
-</parameter>
-
-<parameter name='subpage_frame' from='string' to='bool' member='frame' default='on' >
-         <documentation> Plot frame around subpage (ON/OFF) </documentation>
-         <set value='on' name='subpage_frame_colour'/>
-         <set value='on' name='subpage_frame_line_style'/>
-         <set value='on' name='subpage_frame_thickness'/>
-</parameter>
-
-<parameter name='subpage_frame_colour' from='string' to='Colour' member='frame_colour'  default='black'>
-         <documentation> Colour of subpage frame (Full choice of colours) </documentation>
-</parameter>
-
-<parameter name='subpage_frame_line_style' from='string' to='LineStyle' member='frame_line_style'  default='solid'>
-         <documentation> Style of subpage frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-</parameter>
-
-<parameter name='subpage_frame_thickness' from='int' to='int' member='frame_thickness'  default='2'>
-         <documentation> Thickness of subpage frame </documentation>
-</parameter>
-
-<parameter name='subpage_vertical_axis_width' from='float' to='float' member='vertical_axis_with' default='1'>
-         <documentation> width of the vertical  axis in cm </documentation>
-</parameter>
-<parameter name='subpage_horizontal_axis_height' from='float' to='float' member='horizontal_axis_height' default='0.5'>
-         <documentation> height of the horizontal  axis in cm</documentation>
-</parameter>
- <parameter name='subpage_map_overlay_control' from='string' to='string' member='overlay'  default='basic' visible='metview'>
-         <documentation for_docs='no'> Metview Only: overlay method. always: plot the fields as they come; never: never overlay; by_date/by_level: only overlay data with the same valid date/level  </documentation>
-  </parameter>
-<parameter name='subpage_align_horizontal' from='string' to='string'  member='horizontal' default='left' values='left/right'>
-         <release>Magics++2.4</release>     
-         <documentation>  Used in automatic layout to setup the horizontal alignment of the drawing area in the subpage  </documentation>
-</parameter>
-<parameter name='subpage_align_vertical' from='string' to='string' member='vertical' default='bottom'  values='bottom/top'>
-         <release>Magics++2.4</release>     
-         <documentation>  Used in automatic layout to setup the vertical alignment of the drawing area in the subpage </documentation>
-</parameter>
-
-
-
-<parameter name='subpage_map_json_definition' from='string' to='string' member='json'  default='' visible='off'>
-	<documentation> Metview only : store internal information about zooned area </documentation>
-</parameter>
-
-  
- 
-
-<parameter name='automatic_title' from='string' to='bool' member='title'  default='off' visible='off'>
-         <documentation> Plot the title (ON/OFF) </documentation>
-</parameter>
-
-<parameter name='subpage_map_preview' from='string' to='NoPreviewVisitor' include="PreviewVisitor.h" member='preview'  
-	default='off' visible='metview'>
-         <documentation  for_docs='no'> Mv4: turn on/off the generation of the infomation for the preview box </documentation>
-         <release>Magics++2.8</release>
-         <option name='NoPreviewVisitor' fortran='off' xml='off' include='PreviewVisitor.h'/>
-         <option name='PreviewVisitor' fortran='on' xml='on' include='PreviewVisitor.h'/>
-</parameter> 
-
-<parameter name='subpage_map_magnifier' from='string' to='NoMagnifierVisitor' 
-		include="MagnifierVisitor.h" member='magnify'  default='off' visible='metview'>
-         <documentation for_docs='no'> Mv4: turn on/off the generation of the infomation for the magnifier tool </documentation>
-         <release>Magics++2.8</release>
-         <option name='NoMagnifierVisitor' fortran='off' xml='off' include='MagnifierVisitor.h'/>
-         <option name='MagnifierVisitor' fortran='on' xml='on' include='MagnifierVisitor.h'/>
-</parameter>
-</class>
-
-<class name='Transformation' directory='common'/>
-
-<class name='NoPreviewVisitor' directory='basic' include='PreviewVisitor.h'/>
-
-<class name='PreviewVisitor' directory='basic' inherits='NoPreviewVisitor'/>
-
-<class name='NoMagnifierVisitor' directory='basic' include='MagnifierVisitor.h'/>
-
-<class name='MagnifierVisitor' directory='basic' inherits='NoMagnifierVisitor'>
-<parameter name='magnifier_symbol_name' from='string' to='string' member='symbol_name'  default='magics_3'>
-         <documentation for_docs='no'> Mv4: Symbol used in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter> 
-
-<parameter name='magnifier_hidden_symbol_name' from='string' to='string' member='hidden_symbol_name'  default='magics_3'>
-         <documentation for_docs='no'> Mv4: Symbol used in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-    
-<parameter name='magnifier_symbol_colour' from='string' to='Colour' member='symbol_colour'  default='red'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter> 
-
-<parameter name='magnifier_hidden_symbol_colour' from='string' to='Colour' member='hidden_symbol_colour' default='navy'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_symbol_height' from='float' to='float' member='symbol_height' default='0.2'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_hidden_symbol_height' from='float' to='float' member='hidden_symbol_height'  default='0.1'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_text_font_name' from='string' to='string' member='text_font_name'  default='sanserif'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_text_font_size' from='float' to='float' member='text_font_size'  default='0.2'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_text_font_colour' from='string' to='Colour' member='text_font_colour' default='navy'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>  
-
-<parameter name='magnifier_text_format' from='string' to='string' member='text_format' default='(automatic)'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-</class>
- 
-</magics>
diff --git a/src/xml/SubPageProj4.xml b/src/xml/SubPageProj4.xml
deleted file mode 100644
index 2b03b2e..0000000
--- a/src/xml/SubPageProj4.xml
+++ /dev/null
@@ -1,212 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='FortranViewNode' action='pnew' include='ViewNode.h'
-	xmltag='subpage' prefix='subpage/subpage/subpage' directory='common'> 
-  
-<parameter name='subpage_align_vertical' from='string' to='string' member='vertical' default='bottom' >
-         <release>Magics++2.4</release>     
-         <documentation>  vertical alignment of the drawing area in the subpage: bottom/top </documentation>
-</parameter>
-
-<parameter name='subpage_align_horizontal' from='string' to='string'  member='horizontal' default='left' >
-         <release>Magics++2.4</release>     
-         <documentation>   horizontal alignment of the drawing area in the subpage: left/right  </documentation>
-</parameter>
-  
-<parameter name='subpage_top_position' from='float' to='float' member='top' default='-1' >
-         <release>Magics++2.4</release>
-         <documentation> Y-Coordinate of upper left hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_y_position' from='float' to='float' member='bottom' default='-1' >
-         <documentation> X-Coordinate of lower left hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_x_position' from='float' to='float'  member='left'  default='-1' >
-         <documentation> Y-Coordinate of lower left hand corner of subpage </documentation>
-</parameter>
-<parameter name='subpage_y_position_internal' from='float' to='float' member='bottom_internal' default='-1' >
-         <documentation> X-Coordinate of lower left hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_x_position_internal' from='float' to='float'  member='left_internal'  default='-1' >
-         <documentation> Y-Coordinate of lower left hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_right_position' from='float' to='float' member='right'  default='-1' >
-         <documentation> X-Coordinate of lower right  hand corner of subpage </documentation>
-</parameter>
-
-<parameter name='subpage_x_length' from='float' to='float' member='width'  default='-1'>
-         <documentation> Length of subpage in horizontal direction.Default </documentation>
-</parameter>
-<parameter name='subpage_y_length' from='float' to='float' member='height'  default='-1'>
-         <documentation> Length of subpage in vertical direction.Default </documentation>
-</parameter>
-
-<parameter name='subpage_y_length_internal' from='float' to='float' member='height_internal'  default='-1'>
-         <documentation> Length of subpage in vertical direction.Default </documentation>
-</parameter>
-<parameter name='subpage_x_length_internal' from='float' to='float' member='width_internal'  default='-1'>
-         <documentation> Length of subpage in horizontal direction.Default </documentation>
-</parameter>
-
-
-
-<parameter name='subpage_background_colour' from='string' to='Colour' member='background'  default='white'>
-         <documentation> Colour of the subpage background </documentation>
-</parameter>
-
-<parameter name='subpage_frame' from='string' to='bool' member='frame' default='on' >
-         <documentation> Plot frame around subpage (ON/OFF) </documentation>
-</parameter>
-
-<parameter name='subpage_frame_colour' from='string' to='Colour' member='frame_colour'  default='black'>
-         <documentation> Colour of subpage frame (Full choice of colours) </documentation>
-</parameter>
-
-<parameter name='subpage_frame_line_style' from='string' to='LineStyle' member='frame_line_style'  default='solid'>
-         <documentation> Style of subpage frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-</parameter>
-
-<parameter name='subpage_frame_thickness' from='int' to='int' member='frame_thickness'  default='2'>
-         <documentation> Thickness of subpage frame </documentation>
-</parameter>
-
-<parameter name='subpage_vertical_axis_width' from='float' to='float' member='vertical_axis_with' default='1'>
-         <documentation> width of the vertical  axis in cm </documentation>
-</parameter>
-<parameter name='subpage_horizontal_axis_height' from='float' to='float' member='horizontal_axis_height' default='0.5'>
-         <documentation> height of the horizontal  axis in cm</documentation>
-</parameter>
- <parameter name='subpage_map_overlay_control' from='string' to='string' member='overlay'  default='basic'>
-         <documentation for_docs='no'> overlay method. always: plot the fields as they come; never: never overlay; by_date/by_level: only overlay data with the same valid date/level  </documentation>
-  </parameter>
-<parameter name='subpage_map_projection' from='string' to='Transformation' member='transformation'  default='cylindrical'>
-         <documentation>Projection required(CYLINDRICAL, POLAR_STEREOGRAPHIC, MERCATOR, CARTESIAN) </documentation>
-
-         <!--option name='CylindricalProjection' fortran='cylindrical' xml='cylindrical' include='CylindricalProjection.h'/-->
-         <!-- New cylindrical prokjection...-->
-        <option name='GeoRectangularProjection' fortran='cylindrical' xml='cylindrical' include='GeoRectangularProjection.h'/>
-
-         <!--option name='Proj4Projection' fortran='proj4' xml='proj4' include='Proj4Projection.h'/-->
-         <!--option name='PolarStereoProjection' fortran='polar_stereographic' xml='polar_stereographic' include='PolarStereoProjection.h'/-->
-         <!-- New polar stereographic projection...-->
-        <option name='PolarStereographicProjection' fortran='polar_stereographic' xml='polar_stereographic' include='PolarStereographicProjection.h'/>
-        <option name='Proj4PolarNorth' fortran='polar_north' include='Proj4Projection.h'/>
- 		<option name='Proj4Geos' fortran='geos' include='Proj4Projection.h'/>
- 		<option name='Proj4Lambert' fortran='lambert' include='Proj4Projection.h'/>
- 		<option name='Proj4Goode' fortran='goode' include='Proj4Projection.h'/>
- 		<option name='Proj4Collignon' fortran='collignon' include='Proj4Projection.h'/>
- 		<option name='Proj4Mollweide' fortran='mollweide' include='Proj4Projection.h'/>
- 		<option name='Proj4Bonne' fortran='bonne' include='Proj4Projection.h'/>
- 		<option name='Proj4EPSG4326' fortran='EPSG4326' include='Proj4Projection.h'/>
- 		<option name='Proj4EPSG32661' fortran='EPSG32661' include='Proj4Projection.h'/>
-
-        <option name='MercatorProjection' fortran='mercator' xml='mercator' include='GeoRectangularProjection.h'/>
-	<option name='CartesianTransformation' fortran='none' xml='cartesian' include='CartesianTransformation.h'/>
-         <!--later 
-            <option name='TaylorProjection' fortran='taylor' xml='taylor' include='TaylorProjection.h'/>
-         	<option name='SatelliteProjection' fortran='satellite' xml='satellite' include='SatelliteProjection.h'/>
-         	<option name='TaylorProjection' fortran='taylor' xml='taylor' include='TaylorProjection.h'/-->
-         <!-- Code to update to add a new projection...
-         	<option name='NewProjection' fortran='fortran-new-projection' xml='xm-tag-for-new-projection' include='NewProjection.h'/>
-         -->     
-</parameter>
-<parameter name='subpage_map_json_definition' from='string' to='string' member='json'  default=''>
-	<documentation> Metview only : store internal information about zooned area </documentation>
-</parameter>
-
-  
-  <!--parameter name='legend' from='string' to='LegendBase'
-             member='legend' xml='legend'
-			 default='off' >
-         <documentation> Plot the legend (ON/OFF) </documentation>
-         <release>Magics++0.3</release>
-         <option name='Legend' fortran='on' xml='legend' include='Legend.h'/>
-         <option name='NoLegend' fortran='off' xml='nolegend' include='Legend.h'/>
-         <migration> New Magics: Parameter legend sent to new Magics[SubPage].  </migration>
-  </parameter-->
-
-<parameter name='automatic_title' from='string' to='bool' member='title'  default='off' >
-         <documentation> Plot the title (ON/OFF) </documentation>
-</parameter>
-
-<parameter name='subpage_map_preview' from='string' to='NoPreviewVisitor' include="PreviewVisitor.h" member='preview'  default='off'>
-         <documentation  for_docs='no'> Mv4: turn on/off the generation of the infomation for the preview box </documentation>
-         <release>Magics++2.8</release>
-         <option name='NoPreviewVisitor' fortran='off' xml='off' include='PreviewVisitor.h'/>
-         <option name='PreviewVisitor' fortran='on' xml='on' include='PreviewVisitor.h'/>
-</parameter> 
-
-<parameter name='subpage_map_magnifier' from='string' to='NoMagnifierVisitor' include="MagnifierVisitor.h" member='magnify'  default='off'>
-         <documentation for_docs='no'> Mv4: turn on/off the generation of the infomation for the magnifier tool </documentation>
-         <release>Magics++2.8</release>
-         <option name='NoMagnifierVisitor' fortran='off' xml='off' include='MagnifierVisitor.h'/>
-         <option name='MagnifierVisitor' fortran='on' xml='on' include='MagnifierVisitor.h'/>
-</parameter>
-</class>
-
-<class name='Transformation' directory='common'/>
-
-<class name='NoPreviewVisitor' directory='basic' include='PreviewVisitor.h'/>
-
-<class name='PreviewVisitor' directory='basic' inherits='NoPreviewVisitor'/>
-
-<class name='NoMagnifierVisitor' directory='basic' include='MagnifierVisitor.h'/>
-
-<class name='MagnifierVisitor' directory='basic' inherits='NoMagnifierVisitor'>
-<parameter name='magnifier_symbol_name' from='string' to='string' member='symbol_name'  default='magics_3'>
-         <documentation for_docs='no'> Mv4: Symbol used in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter> 
-
-<parameter name='magnifier_hidden_symbol_name' from='string' to='string' member='hidden_symbol_name'  default='magics_3'>
-         <documentation for_docs='no'> Mv4: Symbol used in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-    
-<parameter name='magnifier_symbol_colour' from='string' to='Colour' member='symbol_colour'  default='red'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter> 
-
-<parameter name='magnifier_hidden_symbol_colour' from='string' to='Colour' member='hidden_symbol_colour' default='navy'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_symbol_height' from='float' to='float' member='symbol_height' default='0.2'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_hidden_symbol_height' from='float' to='float' member='hidden_symbol_height'  default='0.1'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_text_font_name' from='string' to='string' member='text_font_name'  default='sanserif'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_text_font_size' from='float' to='float' member='text_font_size'  default='0.2'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-<parameter name='magnifier_text_font_colour' from='string' to='Colour' member='text_font_colour' default='navy'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>  
-
-<parameter name='magnifier_text_format' from='string' to='string' member='text_format' default='(automatic)'>
-         <documentation for_docs='no'> Mv4: Colour of the symbol in the magnifier </documentation>
-         <release>Magics++2.8</release>
-</parameter>
-
-</class>
- 
-</magics>
diff --git a/src/xml/SuperPage.xml b/src/xml/SuperPage.xml
deleted file mode 100644
index 7ffdb4c..0000000
--- a/src/xml/SuperPage.xml
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-
-<class name='FortranRootSceneNode' action = 'pnew' xmltag='super_page' prefix='super_page' include='RootSceneNode.h' directory='common'>
-  
-  <parameter name='super_page_x_length' from='float' to='float' member='width'  default='29.7'>
-         <documentation> Horizontal length of super page </documentation>
-  </parameter>
-
-  <parameter name='super_page_y_length' from='float' to='float' member='height'  default='21.0'>
-           <release>Magics++0.1</release>
-         <documentation> Vertical length of super page </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame' from='string' to='bool' member='frame'  default='off'>
-         <release>Magics++0.5</release>
-         <documentation> Plot frame around super page (ON/OFF) </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame_colour' from='string' to='Colour' member='colour'  default='blue' >
-           <release>Magics++0.5</release>
-         <documentation> Colour of super page frame </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame_line_style' from='string' to='LineStyle' member='style'  default='solid' >
-         <release>Magics++0.5</release>
-         <documentation> Style of super page frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame_thickness' from='int' to='int' member='thickness'  default='1'>
-         <documentation> Thickness of super page frame </documentation>
-         <release>Magics++0.5</release>
-  </parameter>
-  
-    <parameter name='layout' from='string' to='string' member='plot_layout'  default='automatic'>
-         <documentation> Type of page layout (POSITIONAL/AUTOMATIC) </documentation>
-   </parameter>
-
-  <parameter name='plot_start' from='string' to='string' member='plot_start' default='bottom'>
-         <documentation> Position of first page plotted (BOTTOM/TOP) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-
-  <parameter name='plot_direction' from='string' to='string' member='plot_direction'  default='vertical'>
-         <documentation> Direction of plotting (HORIZONTAL/VERTICAL) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-  
-  <parameter name='legend' from='string' to='bool' member='legend' default='off'>
-         <documentation>Turn on/off legend</documentation>
-         <release>Improved in Magics2.1</release>
-  </parameter>
-</class>
-
-
-
-<class name='MvRootSceneNode' action = 'pnew' xmltag='super_page' prefix='super_page' include='RootSceneNode.h' directory='common'>
-
-  <parameter name='super_page_x_length' from='float' to='float' member='width'  default='29.7'>
-           <release>Magics++0.1</release>
-         <documentation> Horizontal length of super page </documentation>
-  </parameter>
-
-  <parameter name='super_page_y_length' from='float' to='float' member='height'  default='21.0'>
-           <release>Magics++0.1</release>
-         <documentation> Vertical length of super page </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame' from='string' to='bool' member='frame'  default='off'>
-         <release>Magics++0.5</release>
-         <documentation> Plot frame around super page (ON/OFF) </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame_colour' from='string' to='Colour' member='colour'  default='blue' >
-           <release>Magics++0.5</release>
-         <documentation> Colour of super page frame </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame_line_style' from='string' to='LineStyle' member='style'  default='solid' >
-         <release>Magics++0.5</release>
-         <documentation> Style of super page frame (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-  </parameter>
-
-  <parameter name='super_page_frame_thickness' from='int' to='int' member='thickness'  default='1'>
-         <documentation> Thickness of super page frame </documentation>
-         <release>Magics++0.5</release>
-  </parameter>
-  
-    <parameter name='layout' from='string' to='string' member='plot_layout'  default='automatic'>
-         <documentation> Type of page layout (POSITIONAL/AUTOMATIC) </documentation>
-   </parameter>
-
-  <parameter name='plot_start' from='string' to='string' member='plot_start' default='bottom'>
-         <documentation> Position of first page plotted (BOTTOM/TOP) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-
-  <parameter name='plot_direction' from='string' to='string' member='plot_direction'  default='vertical'>
-         <documentation> Direction of plotting (HORIZONTAL/VERTICAL) </documentation>
-         <release>Magics++0.2</release>
-  </parameter>
-  
-  <parameter name='legend' from='string' to='bool' member='legend' default='off'>
-         <documentation>Turn on/off legend </documentation>
-         <release>Improved in Magics2.1</release>
-  </parameter>
-</class>
-
-
-
-<class name='XmlRootNode' xmltag='magics' prefix='root_node' directory='basic'>
- <parameter name='root_node_format' from='string' to='string' member='format'  default='a4'>
-           <release>Magics++2.4 </release>
-         <documentation>Format of super page (A4/A3/A2)</documentation>
-  </parameter>
-  
-   <parameter name='root_node_orientation' from='string' to='string' member='orientation'  default='landscape'>
-           <release>Magics++2.4</release>
-         <documentation>Orientation of super page (landscape/portrait)</documentation>
-  </parameter>
-  
-  <parameter name='root_node_width' from='float' to='float' member='width'  default='-1'>
-           <release>Magics++0.1</release>
-         <documentation> Horizontal length of super page </documentation>
-  </parameter>
-
-  <parameter name='root_node_height' from='float' to='float' member='height' default='-1'>
-           <release>Magics++0.1</release>
-         <documentation> Vertical length of super page </documentation>
-  </parameter>
-  
-  <parameter name='root_node_frame' from='string' to='bool' member='border'  default='off'>
-           <release>Magics++2.1</release>
-         <documentation> Frame on/off </documentation>
-  </parameter>
-  
-  <parameter name='root_node_frame_colour' from='string' to='Colour' member='border_colour'  default='blue'>
-           <release>Magics++2.1</release>
-         <documentation>Colour of frame</documentation>
-  </parameter>
-  
-  <parameter name='root_node_frame_line_style' from='string' to='LineStyle' member='border_style' 	 default='solid'>
-           <release>Magics++2.1</release>
-         <documentation> Frame Line Style </documentation>
-  </parameter>
-  
-  <parameter name='root_node_frame_thickness' from='int' to='int' member='border_thickness' default='1'>
-           <release>Magics++2.1</release>
-         <documentation> Frame thickness </documentation>
-  </parameter>
-   <parameter name='root_node_application' from='string' to='string' member='application' default='magml'>
-           <release>Magics++2.1</release>
-         <documentation> magml/wrep : set specail behaviour for wrep project </documentation>
-  </parameter>
-</class>
-
-
-
-<class name='WrepRootNode' xmltag='magics' prefix='wrep_node' directory='basic'>
- <documentation>
- 	In the wrep mode, magics will always try to fill the space: ie  the geographical area can be extended!
- 	Different methods cab be used to control this extension.. 
- 	centre : the middle point of the geographical will be put in the middle of the output ..
- 	 top_left : the top_left point of the geographical will be put in the top_left of the output ..
- 	 The other possibilities could be implemented but do not seem to be so important!
- </documentation>
-  <parameter name='wrep_node_width' from='float' to='float' member='pixel_width'  default='800'>
-           <release>Magics++2.9</release>
-         <documentation> dimension in pixel of the output width </documentation>
-  </parameter>
-  <parameter name='wrep_node_height' from='float' to='float' member='pixel_height'  default='400'>
-           <release>Magics++2.9</release>
-         <documentation> dimension in pixel of the output height</documentation>
-  </parameter>
-
-  <parameter name='wrep_node_mapping_anchor' from='string' to='string' member='anchor'  default='centre'>
-           <release>Magics++2.9</release>
-         <documentation> method name used for the extension </documentation>
-  </parameter>
-</class>
- 
-</magics>
diff --git a/src/xml/SymbolInput.xml b/src/xml/SymbolInput.xml
deleted file mode 100644
index bc4c109..0000000
--- a/src/xml/SymbolInput.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='SymbolInput' action_routine='psymb' directory='decoders' xmltag='input' prefix='symbol/symbol_input'>
-<documentation>
-	Here comes the description of the Symbol Plotting action
-</documentation>
-
-<parameter name='symbol_input_x_position' from='floatarray' to='floatarray' member='x' default='floatarray()' >
-   <documentation> array containing x positions for symbol plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type </documentation>
-   <release>0.6</release>
-   <release_info> only GEOGRAPHICAL position is implemented </release_info>
-</parameter>
-
-<parameter name='symbol_input_y_position' from='floatarray' to='floatarray' member='y' default='floatarray()'>
-   <documentation> array containing y positions for symbol plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type </documentation>
-   <release>0.6</release>
-   <release_info> only GEOGRAPHICAL position is implemented </release_info>
-</parameter>
-
-<parameter name='symbol_input_wind_speed' from='floatarray' to='floatarray' member='speed' default='floatarray()'>
-   <documentation> array containing wind speed for wind plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type </documentation>
-   <release_info> only GEOGRAPHICAL position is implemented </release_info>
-</parameter>
-
-<parameter name='symbol_input_wind_direction' from='floatarray' to='floatarray' member='direction' default='floatarray()'>
-   <documentation> array containing wind direction for wind plotting. values may be geographic, paper or graph units depending on the value set in symbol_position_type </documentation>
-   <release_info> only GEOGRAPHICAL position is implemented </release_info>
-</parameter>  
-
-<parameter name='symbol_input_number_list' from='floatarray' to='floatarray' member='value' default='floatarray()'>
-   <documentation> Array containing REAL VALUES. The value in a particular element of the array is plotted at the position defined by the corresponding 
-    elements of SYMBOL_INPUT_X_POSITION and SYMBOL_INPUT_Y_POSITION. This parameter may also be used with TEXT and MARKER plotting in TABLE mode </documentation>
-   <release>0.6</release>
-</parameter>
-
-<parameter name='symbol_position_mode' from='string' to='string' member='position' default='geographic'>
-   <documentation> Defines the input position data, valid values: GEOGRAPHIC, PAPER and GRAPH </documentation>
-   <release>1.3</release>
-</parameter>
-
-</class>
-
-</magics>
diff --git a/src/xml/SymbolPlotting.xml b/src/xml/SymbolPlotting.xml
deleted file mode 100644
index a07e1b6..0000000
--- a/src/xml/SymbolPlotting.xml
+++ /dev/null
@@ -1,441 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='SymbolPlotting' action='psymb' directory='visualisers'  metview='MSYMB' xmltag='symbol' prefix='symbol' >
-<documentation>
-This action routine (and C++object) controls the plotting of meteorological and marker symbols.
-</documentation>
-<parameter name='legend' from='string' to='bool' member='legend' default='off'>
-	 <documentation> Turn legend on or off (ON/OFF) : New Parameter! </documentation>
-</parameter>
-
-<parameter name='symbol_type' from='string' to='string' values='number/text/marker/wind/both' member='type' default='number'>
-            <documentation> Defines the type of symbol plotting required   </documentation>
-        <set value='text' name='symbol_text_list'/>
-        <set value='text' name='symbol_text_position'/> 
-        <set value='text' name='symbol_text_font_name'/>
-        <set value='text' name='symbol_text_font_size'/>
-        <set value='text' name='symbol_text_font_style'/>
-        <set value='text' name='symbol_text_font_colour'/>  
-        <set value='marker' name='symbol_text_list'/>
-        <set value='marker' name='symbol_text_position'/> 
-        <set value='marker' name='symbol_text_font_name'/>
-        <set value='marker' name='symbol_text_font_size'/>
-        <set value='marker' name='symbol_text_font_style'/>
-        <set value='marker' name='symbol_text_font_colour'/> 
-        <set value='number' name='symbol_format'/>
-        <set value='both' name='symbol_text_position'/> 
-        <set value='both' name='symbol_text_font_name'/>
-        <set value='both' name='symbol_text_font_size'/>
-        <set value='both' name='symbol_text_font_style'/>
-        <set value='both' name='symbol_text_font_colour'/> 
-        <set value='both' name='symbol_format'/>
-</parameter>
-
-<parameter name='symbol_table_mode' from='string' to='SymbolMode' member='mode' xml='table_mode' default='OFF'>
-            <option name='SymbolIndividualMode' fortran='off' xml='individual' include='SymbolMode.h'/>
-            <option name='SymbolAdvancedTableMode' fortran='advanced' xml='advanced' include='SymbolAdvancedTableMode.h' />
-            <option name='SymbolTableMode'      fortran='on'  xml='table' include='SymbolMode.h'/>
-            <documentation> Specifies if plotting is to be in advanced, table (on) or individual mode (off).
-            	Note:  The simple table mode is not recommended anymore, try to use the advanced mode instead, 
-            		   this  should give you easier control of the plot. </documentation>
-       
-</parameter>
-<parameter name='symbol_format' from='string' to='string' member='format' xml='format' default='(automatic)' >
-         <documentation> Format used to plot values (MAGICS Format/(AUTOMATIC)) </documentation>
-</parameter>
-	<parameter name='symbol_outline' from='string' to='bool' member='outline' default='off'> 
-            <set value='on' name='symbol_outline_colour'/> 
-            <set value='on' name='symbol_outline_thickness'/>
-            <set value='on' name='symbol_outline_style'/>
-            <documentation> Add an outline to each symbol </documentation>
-        </parameter>
-         <parameter name='symbol_outline_colour' from='string' to='Colour' member='outline_colour' default='black'>
-            <documentation> Colour of the outline </documentation>
-        </parameter>  
-         <parameter name='symbol_outline_thickness' from='int' to='int' member='outline_thickness' default='1'>
-            <documentation> thickness of the outline </documentation>
-        </parameter>
-       <parameter name='symbol_outline_style' from='string' to='LineStyle' member='outline_style'  default='solid'>
-         <documentation> Line Style of outline </documentation>
-  	</parameter>
-
-	<parameter name='symbol_connect_line' from='string' to='bool'
-            member='connect' default='off'> 
-            <set value='on' name='symbol_connect_automatic_line_colour'/> 
-            <set value='on' name='symbol_connect_line_colour'/> 
-            <set value='on' name='symbol_connect_line_thickness'/>
-            <set value='on' name='symbol_connect_line_style'/>
-            <documentation> Connect all the symbols with a line </documentation>
-        </parameter> 
-		<parameter name='symbol_connect_automatic_line_colour' from='string' to='bool'
-            member='automatic_connect_colour' default='on'>  
-             <set value='on' name='symbol_connect_line_colour'/>  
-            <documentation> if on, will use the colour of the symbol  </documentation>
-        </parameter>  
-         <parameter name='symbol_connect_line_colour' from='string' to='Colour'
-            member='connect_colour' default='black'>
-            <documentation> Colour of the connecting line  </documentation>
-        </parameter>  
-         <parameter name='symbol_connect_line_thickness' from='int' to='int'
-            member='connect_thickness' default='1'>
-            <documentation> thickness of the  connecting line </documentation>
-        </parameter>
-       <parameter name='symbol_connect_line_style' from='string' to='LineStyle' member='connect_style'  default='solid'>
-         <documentation> Line Style of  connecting line </documentation>
-  		</parameter>
-</class>
-
-
-<class name='SymbolIndividualMode' directory='visualisers' xmltag='individual' prefix='symbol' include='SymbolMode.h' inherits='SymbolMode'>
-	<documentation>Here comes the description of the SymbolIndividualMode object</documentation>
-        <parameter  name='legend_user_text' to='string' default='' from='string' member='legend_text' >
-	 		<documentation > if set, the text to be shown for the symbol group in the legend		</documentation>
-	</parameter>
-        <parameter name='symbol_marker_mode' from='string' to='string' member='marker_mode' default='index' values='index/name/image'>
-            <documentation> Method to select a marker : by name, by index, by image : in that case, Magics will use an external image as marker.  
-            	
-            </documentation>
-            <set value='index' name='symbol_marker_index'/>
-            <set value='image' name='symbol_image_path'/>
-            <set value='image' name='symbol_image_format'/> 
-            <set value='image' name='symbol_image_width'/>
-            <set value='image' name='symbol_image_height'/>
-        </parameter>
-        
-       
-        <parameter name='symbol_marker_index' from='int' to='int' member='marker' default='1'>
-            <documentation> Marker indice:  An integer between 1 and 28</documentation>
-        </parameter>
-        
-        <parameter name='symbol_marker_name' from='string' to='string'
-            member='symbol' default='dot' >
-            <documentation> Symbol name. Choose in a list of available markers dot/circle/ww_00 ... </documentation>
-        </parameter>
-        
-        
-        
-       <parameter name='symbol_colour' from='string' to='Colour' member='colour' default='BLUE'>
-            <documentation> Colour of symbols.   </documentation>
-        </parameter>
-        <parameter name='symbol_height' from='float' to='float' member='height' default='0.2'>
-            <documentation> Height of symbols.  </documentation>
-        </parameter>
-		<parameter name='symbol_image_path' from='string' to='string' member='image_path' default=''>
-            <documentation> Path to the image </documentation>
-        </parameter>
-        
-        <parameter name='symbol_image_format' from='string' to='string' member='image_format' default='' values='png/svg/gif/jpeg' >
-            <documentation>  Format of the image </documentation>
-        </parameter>
-        
-        <parameter name='symbol_image_width' from='float' to='float' member='image_width' default='-1' >
-            <documentation>  width of the image </documentation>
-        </parameter> 
-        <parameter name='symbol_image_height' from='float' to='float' member='image_height' default='-1' >
-            <documentation>  height of the image </documentation>
-        </parameter>
-        <parameter name='symbol_text_list' from='stringarray' to='stringarray'
-            member='text' default='stringarray()'>
-            <documentation> lsit of texts to plot </documentation>
-        </parameter>
-        <parameter name='symbol_text_position' from='string' to='string'
-            member='text_position' default='right' values='right/left/bottom/top'>
-            <documentation> Position of the text </documentation>
-        </parameter>
-         <parameter name='symbol_text_font_name' from='string' to='string'
-            member='text_font_name' default='sansserif'>
-            <documentation> Font to use  </documentation>
-        </parameter>
-          <parameter name='symbol_text_font_size' from='float' to='float'
-            member='text_font_size' default='0.25'>
-            <documentation> Font size  </documentation>
-        </parameter>
-         <parameter name='symbol_text_font_style' from='string' to='string'
-            member='text_font_style' default='normal'>
-            <documentation> Font style  </documentation>
-        </parameter>
-         <parameter name='symbol_text_font_colour' from='string' to='Colour'
-            member='text_font_colour' default='automatic'>
-            <documentation> Font colour.  </documentation>
-        </parameter> 
-        <parameter name='symbol_text_blanking' from='string' to='bool'
-            member='text_blanking' default='off'>
-            <documentation> blanking of the text </documentation>
-        </parameter>
-</class>
-
-
-<class name='SymbolMode' directory='visualisers' xmltag='table' prefix='symbol'>
-
-</class>
-
-<class name='SymbolTableMode' directory='visualisers' xmltag='table' prefix='symbol' include='SymbolMode.h' inherits='SymbolMode'>
-    <documentation>
-		Here comes the description of the SymbolTableMode object 
-	</documentation>
-    <parameter name='symbol_min_table' from='floatarray' to='floatarray'
-            member='min' default='floatarray()'>
-            <documentation> Table of minimum values.  The table is used in conjunction with SYMBOL_MAX_TABLE  </documentation>
-        </parameter>
-      <parameter name='symbol_max_table' from='floatarray' to='floatarray'
-            member='max' default='floatarray()' >
-            <documentation> Table of maximum values. The table is used in conjunction with SYMBOL_MIN_TABLE  </documentation>
-        </parameter>
-        <parameter name='symbol_marker_table' from='intarray' to='intarray'
-            member='marker' default='intarray()'>
-            <documentation> Table of MARKER indices. The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  </documentation>
-        </parameter>
-          <parameter name='symbol_name_table' from='stringarray' to='stringarray'
-            member='symbol' default='stringarray()'>
-            <documentation> Table of Symbol names. The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  </documentation>
-        </parameter>
-         <parameter name='symbol_colour_table' from='stringarray' to='stringarray'
-            member='colour' default='stringarray()'>
-            <documentation> Table of SYMBOL colours. T The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  </documentation>
-        </parameter>
-        <parameter name='symbol_height_table' from='floatarray' to='floatarray'
-            member='height' default='floatarray()'>
-            <documentation> Table of SYMBOL heights.  The table is to be used in conjunction with SYMBOL_MIN_TABLE and SYMBOL_MAX_TABLE  </documentation>
-        </parameter>
-
-</class>
-
-
-
-
-
-
-
-
-<class name='SymbolAdvancedTableMode' directory='visualisers' 
-		prefix='symbol/symbol_advanced_table' xmltag='advanced' inherits='SymbolMode'>
-    <documentation>
-		Here comes the description of the SymbolTableMode object 
-	</documentation>
-     <parameter name='symbol_advanced_table_selection_type' 
-             from='string' to='LevelSelection'
-             member='levels' default='count' values='count/interval/list'>
-         <documentation>  Technique to use to calculate the shading band levels. </documentation>
-         <migration> New Magics: Parameter contour_level_selection_type sent to new Magics[IsoPlot].  </migration>
-         <release>2.6</release>
-         <option name='CountSelectionType'   fortran='count'  xml='count' docdive='no' include='CountSelectionType.h'/>
-         <option name='IntervalSelectionType'   fortran='interval'  xml='interval' docdive='no' include='IntervalSelectionType.h'/>
-         <option name='LevelListSelectionType'   fortran='list'  xml='list' docdive='no' include='LevelListSelectionType.h'/>
-       
-        
-         <set value='list' name='symbol_advanced_table_level_list'/>
-     	<set value='interval' name='symbol_advanced_table_interval'/> 
-     	<set value='interval' name='symbol_advanced_table_reference_level'/>
-         <set value='count' name='symbol_advanced_table_level_count'/>
-         <set value='count' name='symbol_advanced_table_level_tolerance'/>
-         
-     </parameter>
-   
-      <parameter name='symbol_advanced_table_min_value' from='float' to='float'
-             member='min'  default='-1.e21'>
-         <documentation> Min value to plot</documentation>
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_max_value' from='float' to='float'
-             member='max'  default='1.e21'>
-         <documentation> Max value to plot </documentation>
-         <release>2.6</release>
-  </parameter>
-       <parameter name='symbol_advanced_table_level_count' from='int' to='int'
-             member='count'  default='10'>
-         <documentation> Count or number of levels to be plotted. Magics will try to find "nice levels", 
-         this means that the number of levels could be slightly different from the requested number of levels</documentation>
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_level_tolerance' from='int' to='int'
-             member='tolerance'  default='2'>
-         <documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] </documentation>
-         <release>2.6</release>
-  </parameter>
-
-
-
-  <parameter name='symbol_advanced_table_interval' from='float' to='float'
-             member='interval'  default='8.0'>
-         <documentation> Interval in data units between different bands of shading </documentation>
-         <release>2.6</release>
-  </parameter>
-   <parameter name='symbol_advanced_table_reference_level' from='float' to='float'
-             member='reference'  default='0.0'>
-         <documentation> Level from which the level interval is calculated </documentation>
-         <release>2.6</release>
-  </parameter>
- <parameter name='symbol_advanced_table_level_list' from='floatarray' to='floatarray'
-             member='list'	 default='floatarray()'>
-         <documentation> List of shading band levels to be plotted </documentation>
-         <release>2.6</release>
-  </parameter>
-        
-     
-     
-      <parameter name='symbol_advanced_table_colour_method' from='string' to='ColourTechnique'
-             member='colourMethod' 	 default='calculate'>
-         <documentation> Method of generating the colours of the bands in polygon shading  </documentation>
-         <option name='CalculateColourTechnique' fortran='calculate' xml='calculate' docdive='no' include='CalculateColourTechnique.h'/>
-         <option name='ListColourTechnique'      fortran='list'      xml='list'      docdive='no' include='ListColourTechnique.h'/>
-         <available>list</available>
-         <release>2.6</release>
-         <set value='list' name='symbol_advanced_table_colour_list'/>
-         <set value='list' name='symbol_advanced_table_colour_list_policy'/>
-         <set value='calculate' name='symbol_advanced_table_max_level_colour'/>
-         <set value='calculate' name='symbol_advanced_table_min_level_colour'/>
-         <set value='calculate' name='symbol_advanced_table_colour_direction'/>
-  </parameter>
-
-  <parameter name='symbol_advanced_table_max_level_colour' from='string' to='Colour'
-             member='maxColour' default='blue'>
-         <documentation> Highest shading band colour </documentation>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='symbol_advanced_table_min_level_colour' from='string' to='Colour'
-             member='minColour'  default='red'>
-         <documentation> Lowest shading band colour </documentation>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='symbol_advanced_table_colour_direction' from='string' to='string'
-             member='direction' default='anti_clockwise' values='clockwise/anti-clockwise'>
-         <documentation> Direction of colour sequencing for plotting (CLOCKWISE/ ANTI_CLOCKWISE) </documentation>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='symbol_advanced_table_colour_list' from='stringarray' to='stringarray'
-             member='colours' default='stringarray()'>
-         <documentation> List of colours to be used in symbol plotting </documentation>
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_colour_list_policy' from='string' to='ListPolicy'
-             member='colour_policy' default='lastone'>
-         <documentation> What to do if, the list of markers is smaller that the list of intervals: lastone/cycle </documentation>     
-         <release>2.6</release>
-  </parameter>
-  
-  <parameter name='symbol_advanced_table_marker_list' from='intarray' to='intarray'
-             member='markers' default='intarray()'>
-         <documentation> List of markers to be used in symbol plotting </documentation>
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_marker_list_policy' from='string' to='ListPolicy'
-             member='marker_policy' default='lastone'>
-         <documentation>What to do if, the list of markers is smaller that the list of intervals: lastone/cycle </documentation>
-         <release>2.6</release>
-  </parameter>
-  
-  <parameter name='symbol_advanced_table_height_method' from='string' to='HeightTechnique'
-             member='height_method' default='list'>
-         <documentation> Method of generating the height   </documentation>
-         <option name='CalculateHeightTechnique' fortran='calculate' xml='calculate' docdive='no' include='HeightTechnique.h'/>
-         <option name='ListHeightTechnique'      fortran='list'      xml='list'      docdive='no' include='HeightTechnique.h'/>
-		 <set value='list' name='symbol_advanced_table_height_list'/>
-		 <set value='list' name='symbol_advanced_table_height_list_policy'/>
-		 <set value='calculate' name='symbol_advanced_table_height_max_value'/>
-		 <set value='calculate' name='symbol_advanced_table_height_min_value'/>
-         <release>2.6</release>
-  </parameter>
-  
-        
-   <parameter name='symbol_advanced_table_height_max_value' from='float' to='float'
-             member='height_max' default='0.2'>
-         <documentation> Min height to use </documentation>
-         
-         <release>2.6</release>
-  </parameter>    
-  <parameter name='symbol_advanced_table_height_min_value' from='float' to='float'
-             member='height_min' default='0.1'>
-         <documentation> Min height to use </documentation>
-         
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_height_list' from='floatarray' to='floatarray'
-             member='heights' default='floatarray()'>
-         <documentation> List of heights to be used </documentation>
-                 <available>list</available>
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_height_list_policy' from='string' to='ListPolicy'
-             member='height_policy' default='lastone'>
-         <documentation> What to do if, the list of markers is smaller that the list of intervals: lastone/cycle </documentation>     
-         <release>2.6</release>
-  </parameter>
- 	   <parameter name='symbol_advanced_table_text_list' from='stringarray' to='stringarray'
-             member='text_list' default='stringarray()'>
-         <documentation> Text to display </documentation>
-         
-         <release>2.6</release>
-  </parameter>    
-  <parameter name='symbol_advanced_table_text_list_policy' from='string' to='ListPolicy'
-             member='text_policy' default='cycle'>
-         <documentation> What to do if, the list of markers is smaller that the list of intervals
-			lastone: reuse the last one, 
-			cycle: return to the fisrt one 
-		 </documentation>     
-         <release>2.6</release>
-  </parameter>
-  <parameter name='symbol_advanced_table_text_font_name' from='string' to='string'
-            member='text_font_name' default='sansserif'>
-            <documentation> Font to use for text plotting. </documentation>
-        </parameter>
-          <parameter name='symbol_advanced_table_text_font_size' from='float' to='float'
-            member='text_font_size' default='0.25'>
-            <documentation> Font size  </documentation>
-        </parameter>
-         <parameter name='symbol_advanced_table_text_font_style' from='string' to='string'
-            member='text_font_style' default='normal'>
-            <documentation>  Font Style   </documentation>
-        </parameter>
-         <parameter name='symbol_advanced_table_text_font_colour' from='string' to='Colour'
-            member='text_font_colour' default='automatic'>
-            <documentation> Symbol Colour  </documentation>
-        </parameter> 
-   <parameter name='symbol_advanced_table_text_display_type' from='string' to='string'
-             member='text_display_type' default='none' values='centre/none/right/left/top/bottom'>
-         <documentation>  How to display text 
-         	none:do not display it 
-         	centre : display it instead of the symbol, 
-         	right : attached it to the right of the symbol, 
-         	top : attached it to the top of the symbol, 
-         	bottom:   attached it to the bottom of the symbol, 
-         </documentation>
-         <release>2.6</release>
-  </parameter>    
-      <parameter name='symbol_advanced_table_outlayer_method' from='string' to='NoOutLayerTechnique'
-             member='outlayer' default='none' include='OutLayerTechnique.h'  >
-         <documentation> outlayer method </documentation> 
-         <option name='NoOutLayerTechnique' fortran='none' xml='nooutlayer' docdive='no' include='OutLayerTechnique.h'/>
-         <option name='SimpleOutLayerTechnique' visible='no' fortran='simple' xml='simple' docdive='no' include='OutLayerTechnique.h'/>                 
-         <release>2.6</release>
-  	  </parameter>    
-  	    <parameter name='symbol_advanced_table_outlayer_min_value' from='float' to='float'
-             member='outlayer_min' default='-1.e21' visible='no' >
-         <documentation> outlayer min value </documentation>         
-         <release>2.6</release>
-  	  </parameter>   
-  	  <parameter name='symbol_advanced_table_outlayer_max_value' from='float' to='float'
-             member='outlayer_max' default='1.e21' visible='no' >
-         <documentation> outlayer max value </documentation>         
-         <release>2.6</release>
-  	  </parameter>    
-  	 
-  
-</class>
-
-
-
-
-
-
-
-<class  name='HeightTechnique' directory='visualisers' />
-<class  name='CalculateHeightTechnique' directory='visualisers' inherits='HeightTechnique' include='HeightTechnique.h'/>
-<class  name='ListHeightTechnique' directory='visualisers' inherits='HeightTechnique' include='HeightTechnique.h'/>
-
-<class  name='NoOutLayerTechnique' directory='visualisers' include='OutLayerTechnique.h'/>
-<class  name='SimpleOutLayerTechnique' inherits='NoOutLayerTechnique' include='OutLayerTechnique.h' directory='visualisers'/>
-
-</magics>
diff --git a/src/xml/TableDecoder.xml b/src/xml/TableDecoder.xml
deleted file mode 100644
index b23d69c..0000000
--- a/src/xml/TableDecoder.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='TableDecoder' directory='decoders'  xmltag='table' >
-  <documentation> table data for curve </documentation>
-
-  <parameter name='table_filename' from='string' to='string' member='path' default='' >
-         <documentation>Path to the table data </documentation>
-  </parameter>
-  
-  <parameter name='table_delimiter' from='string' to='string' member='delimiter' default=',' >
-         <documentation>Used delimiter </documentation>
-  </parameter>
-  
-  <parameter name='table_combine_delimiters' from='string' to='bool' member='combine_delimiters' default='off' >
-         <documentation>Consecutive delimiters will be considered as one </documentation>
-  </parameter>
-  
-  <parameter name='table_header_row' from='int' to='int' member='header_row' default='1' >
-         <documentation>Which row (first is 1) is the header line on? </documentation>
-  </parameter>
-  
-   <parameter name='table_data_row_offset' from='int' to='int' member='data_row_offset' default='1' >
-         <documentation>How many rows after the header row does the data start? 1 if no header row.</documentation>
-  </parameter>
-
-   <parameter name='table_meta_data_rows' from='intarray' to='intarray' member='meta_data_rows' default='intarray()' >
-         <documentation>List of row indexes containing meta-data of the form P1=V1 P2=V2.</documentation>
-  </parameter> 
-   <!--parameter name='table_columns' from='intarray' to='array'
-             member='columns' default='1' >
-         <documentation>List of column indexes to selectively read (first is 1).</documentation>
-  </parameter>
-    <parameter name='table_column_types' from='stringarray' to='stringarray'
-             member='column_types' default='' >
-         <documentation>List of column data types (can be number/string)</documentation>
-  </parameter-->
- 
- <parameter name='table_x_type' from='string' to='string' member='x_type' default='number' >
-         <documentation>Type used for X variable_index: number or date </documentation>
-  </parameter>
-  
-  <parameter name='table_y_type' from='string' to='string' member='y_type' default='number' >
-         <documentation>Type used for Y variable_index: number or date </documentation>
-  </parameter>
-  
-  <parameter name='table_variable_identifier_type' from='string' to='string' member='name_mode' default='index' >
-         <documentation> are we refering to the columns by names or index (index/name) </documentation>
-  </parameter>
-  
-  <parameter name='table_x_variable' from='string' to='string' member='x' default='1' >
-         <documentation> X variable_index  </documentation>
-  </parameter>
-  
-  <parameter name='table_y_variable' from='string' to='string' member='y' default='2' >
-         <documentation> Y variable_index  </documentation>
-  </parameter>
- 
-  <parameter name='table_value_variable' from='string' to='string' member='values' default='-1' >
-         <documentation>  variable_index  </documentation>
-  </parameter>
-  
-  <parameter name='table_latitude_variable' from='string' to='string' member='lat' default='2' >
-         <documentation>  Latitudes  </documentation>
-  </parameter>
-
-  <parameter name='table_longitude_variable' from='string' to='string' member='lon' default='1' >
-         <documentation>  longitudes  </documentation>
-  </parameter>
-  
-  <parameter name='table_x_component_variable' from='string' to='string' member='x_component' default='-1' >
-         <documentation>  u components for vectors  </documentation>
-  </parameter>
-
-  <parameter name='table_y_component_variable' from='string' to='string' member='y_component' default='-1' >
-         <documentation>  v components for vectors  </documentation>
-  </parameter>
-  
-  <parameter name='table_x_missing_value' from='float' to='float' member='x_missing' default='-21.e6' >
-         <documentation> mssing value for x   </documentation> 
-  </parameter>
-
-  <parameter name='table_y_missing_value' from='float' to='float' member='y_missing' default='-21.e6' >
-         <documentation> missing value for x   </documentation>
-  </parameter>
-
-  <parameter name='table_binning' from='string' to='BinningObject' include='BinningObject.h' member='table_binning' default='on' >
-         <documentation> Binning information </documentation>
-         <option name='NoBinningObject'   fortran='off'  xml='nobinning' include='BinningObject.h'/>
-         <option name='BinningObject'   fortran='on'  xml='binning' include='BinningObject.h'/>
-  </parameter>
-</class>
-
-</magics>
diff --git a/src/xml/Taylor.xml b/src/xml/Taylor.xml
deleted file mode 100644
index 56fecbf..0000000
--- a/src/xml/Taylor.xml
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='TaylorProjection' action='ptaylor' directory='common' xmltag='taylor' inherits='Transformation' prefix='taylor/taylor/taylor_standard_deviation'>
-	<documentation>
-		
-	</documentation>
-         <parameter name='taylor_standard_deviation_min' from='float' to='float'
-            member='min' default='0' xml='min'>
-            <documentation>
-              	Min of the Standard deviation axis.
-           </documentation>
-           <release>Magics++1.4</release> 
-       </parameter>
-       <parameter name='taylor_standard_deviation_max' from='float' to='float'
-            member='max' default='1' xml='max'>
-            <documentation>
-              	Max of the Standard deviation axis.
-           </documentation>
-           <release>Magics++1.4</release>
-       </parameter>
-</class> 
-
-<class name='TaylorGrid' action='ptaylor' directory='visualisers'  xmltag='taylorgrid' prefix='taylor/taylor'>
-	<documentation> description of the grid </documentation>
-    <parameter name='taylor_label' from='string' to='string'
-            member='label' default='Correlation'>
-            <documentation>
-              	Label of the grid
-           </documentation>
-           <release>Magics++2.7</release> 
-        </parameter> 
-        <parameter name='taylor_label_colour' from='string' to='Colour'
-            member='label_colour' default='navy'>
-            <documentation>
-              	Colour of the label
-           </documentation>
-           <release>Magics++1.4</release> 
-        </parameter>
-        <parameter name='taylor_label_height' from='float' to='float'
-            member='label_height' default='0.35'>
-            <documentation>
-              	Hieght of the label
-           </documentation>
-           <release>Magics++1.4</release> 
-        </parameter>
-        <parameter name='taylor_primary_grid_reference' from='float' to='float'
-            member='primary_reference' default='0.5'>
-            <documentation>
-              	Reference used  of the Standard deviation plotting.
-           </documentation>
-           <release>Magics++2.7</release> 
-        </parameter>
-        <parameter name='taylor_primary_grid_increment' from='float' to='float'
-            member='primary_increment' default='0.5'>
-            <documentation>
-              	Reference used  of the Standard deviation plotting.
-           </documentation>
-           <release>Magics++1.4</release> 
-        </parameter>
-        
-          <parameter name='taylor_reference_line_colour' from='string' to='Colour'
-            member='reference_colour' default='navy'>
-            <documentation>
-              	Colour used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_reference_line_thickness' from='int' to='int'
-            member='reference_thickness' default='2'>
-            <documentation>
-              	Thickness used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter> 
-          <parameter name='taylor_reference_line_style' from='string' to='LineStyle'
-            member='reference_style' default='solid'>
-            <documentation>
-              	Line Style used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       
-        
-       <parameter name='taylor_primary_grid_line_colour' from='string' to='Colour'
-            member='primary_colour' default='navy'>
-            <documentation>
-              	Colour used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_primary_grid_line_thickness' from='int' to='int'
-            member='primary_thickness' default='1'>
-            <documentation>
-              	Thickness used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter> 
-       <parameter name='taylor_primary_label' from='string' to='bool'
-            member='primary_label' default='on'>
-            <documentation>
-              	Turn the labels (on/off) of the primary grid
-            </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_primary_label_colour' from='string' to='Colour'
-            member='primary_label_colour' default='navy'>
-            <documentation>
-              	Colour of the  labels  of the primary grid
-            </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_primary_label_height' from='float' to='float'
-            member='primary_label_height' default='0.35'>
-            <documentation>
-              	Height of the  labels  of the primary grid
-            </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_primary_grid_line_style' from='string' to='LineStyle'
-            member='primary_style' default='solid'>
-            <documentation>
-              	Line Style used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_secondary_grid' from='string' to='bool'
-            member='secondary_grid' default='solid'>
-            <documentation>
-              	turn on/off the secondaries lines for the grid.
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_secondary_grid_reference' from='float' to='float'
-            member='secondary_reference' default='0.5'>
-            <documentation>
-              	Reference used  of the Standard deviation plotting.
-           </documentation>
-           <release>Magics++1.4</release> 
-        </parameter>
-        <parameter name='taylor_secondary_grid_increment' from='float' to='float'
-            member='secondary_increment' default='0.5'>
-            <documentation>
-              	Reference used  of the Standard deviation plotting.
-           </documentation>
-           <release>Magics++1.4</release> 
-        </parameter>
-        <parameter name='taylor_secondary_grid_line_colour' from='string' to='Colour'
-            member='secondary_colour' default='navy'>
-            <documentation>
-              	Colour used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-            
-       </parameter>
-       <parameter name='taylor_secondary_grid_line_thickness' from='int' to='int'
-            member='secondary_thickness' default='1'>
-            <documentation>
-              	Thickness used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_secondary_grid_line_style' from='string' to='LineStyle'
-            member='secondary_style' default='solid'>
-            <documentation>
-              	Line Style used to plot the primary grid
-           </documentation>
-           <release>Magics++2.8</release>
-       </parameter> <parameter name='taylor_secondary_label' from='string' to='bool'
-            member='secondary_label' default='on'>
-            <documentation>
-              	Turn the labels (on/off) of the secondary grid
-            </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_secondary_label_colour' from='string' to='Colour'
-            member='secondary_label_colour' default='navy'>
-            <documentation>
-              	Colour of the  labels  of the secondary grid
-            </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-       <parameter name='taylor_secondary_label_height' from='float' to='float'
-            member='secondary_label_height' default='0.35'>
-            <documentation>
-              	Height of the  labels  of the secondary grid
-            </documentation>
-           <release>Magics++2.8</release>
-       </parameter>
-</class>
-
-
-
-</magics>
diff --git a/src/xml/TextVisitor.xml b/src/xml/TextVisitor.xml
deleted file mode 100644
index 38d8577..0000000
--- a/src/xml/TextVisitor.xml
+++ /dev/null
@@ -1,405 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='TextVisitor' action='ptext'
-	xmltag='text' prefix='text' xml_data='text_lines' directory='basic' xml_doc_inherits='XmlBasicNode'>
-  <documentation></documentation>
-  
-
-  
-
-  <parameter name='text_justification' from='string' to='Justification' member='justification' default='centre'>
-	<release>Magisc++0.3</release>
-	<documentation> How text is to be positioned in each line (LEFT/CENTRE/RIGHT)</documentation>
-  </parameter>
-
-  <parameter name='text_font' from='string' to='string' member='font' xml='font' default='sansserif'>
-	<documentation>Font name - please make sure this font is installed!</documentation>
-	<release>1.0</release>
-	<release_info>Much improved in version 1.3.</release_info>
-  </parameter>
-  
-  <parameter name='text_font_style' from='string' to='string' member='font_style' default=''>
-	<documentation>Font style. Set this to an empty string in order to remove all styling.</documentation>
-  </parameter>
-  
-  <parameter name='text_font_size' from='string' to='string' member='font_dimension' default='0.5' metview_default='0.3'>
-	<documentation>Font size, specified in cm.</documentation>
-  </parameter>
-
-  <parameter name='text_reference_character_height' from='float' to='float' member='height'  implemented ='no' default='0.5' >
-	<documentation> Reference height for calculating the height of the characters in text lines (see main text) in cm.</documentation>
-	<release>1.0</release>
-	<release_info>Change default from 2.0 to 0.5 ---> To be discussed later!</release_info>
-  </parameter>
-
-  <parameter name='text_colour' from='string' to='Colour' member='font_colour' default='blue' metview_default='navy'>
-	<documentation>Colour of text in text block (Full choice of colours)</documentation>
-	<release>1.0</release>
-  </parameter>
-
-  <parameter name='text_quality' from='string' to='string' member='text_quality' default='medium' implemented='no' priority='0.2'>
-	<documentation>Quality of text in text block (LOW/MEDIUM/HIGH)</documentation>
-	<release>Expected for Magisc++0.6</release>
-  </parameter>
-
-   <parameter name='text_automatic' from='string' to='bool' member='automatic' default='on' visible='no'>
-	<release>Magisc++2.1</release>
-	<documentation>How text is to be positioned in each line (LEFT/CENTRE/RIGHT)</documentation>
-  </parameter>
-
-  <parameter name='text_lines' from='stringarray' to='stringarray' member='lines' default='stringarray()' >
-         <documentation> text block to be plotted </documentation>
-         <migration> New Magics: Parameter text sent to new Magics[TextAction].  </migration>
-  </parameter>
- 
-    <parameter name='text_box_x_position' from='float' to='float' member='x' default='-1'>
-         <release>0.1</release>
-         <documentation> X coordinate of lower left corner of text box (Relative to PAGE_X_POSITION) </documentation>
-  </parameter>
-
-  <parameter name='text_box_y_position' from='float' to='float' member='y' default='-1' >
-         <release>0.1</release>
-         <documentation> Y coordinate of lower left corner of text box (Relative to PAGE_Y_POSITION) </documentation>
-  </parameter>
-
-  <parameter name='text_box_x_length' from='float' to='float' member='width'  default='-1'>
-         <release>0.1</release>
-         <documentation> Length of text box in X direction </documentation>
-  </parameter>
-
-  <parameter name='text_box_y_length' from='float' to='float' member='height' xml='height' default='-1'>
-         <release>0.1</release>
-         <migration> New Magics: Parameter text_box_y_length sent to new Magics[TextBox].  </migration>
-  </parameter>
-
-  <parameter name='text_box_blanking' from='string' to='bool' member='blanking' default='off'>
-         <release>0.1</release>
-          <release_info>Paremeter defined but not implemeted : expected for 0.6</release_info>
-         <documentation> All plotting in the text box previous to PTEXT call will be blanked out. Plotting after PTEXT call will not be affected. (ON/OFF) </documentation>
-  </parameter>
-
-  <parameter name='text_border' from='string' to='bool' member='border' default='off'>
-         <release>0.5</release>    
-         <documentation> Plot border around text box (ON/OFF) </documentation>
-         <migration> New Magics: Parameter text_border sent to new Magics[TextBox].  </migration>
-  </parameter>
-  
-  <parameter name='text_border_line_style' from='string' to='LineStyle' member='border_line_style' default='solid'>
-          <release>0.5</release>    
-         <documentation> Line style of border around text box (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) </documentation>
-  </parameter>
-
-  <parameter name='text_border_colour' from='string' to='Colour' member='border_colour' default='blue' >
-          <release>0.5</release>    
-         <documentation> Colour of border around text box (Full choice of colours) </documentation>
-  </parameter>
-
-  <parameter name='text_border_thickness' from='int' to='int' member='border_thickness' default='1'>
-          <release>0.5</release>    
-         <documentation> Thickness of text box border </documentation>
-  </parameter>
-  
-  <parameter name='text_mode' from='string' to='string' member='mode' default='title'>
- 	<documentation>Whether text is to be a title or user positioned (TITLE/POSITIONAL)</documentation>
-	<release>1.0</release>
-  </parameter>
-  
- <parameter name='text_line_count' from='int' to='int' member='count' default='1'>
-         <release>0.1</release>
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> The number of lines of text to be plotted </documentation>
-  </parameter>
-  
- <parameter name='text_html' from='string' to='bool' member='html' default='on'>
-         <release>2.0</release>
-         <release_info> Change the default value from off to on in Magics2.12</release_info>
-         <documentation> enable use of HTML convention </documentation>
-  </parameter>
-  
-  <parameter name='text_line_1' from='string' to='string' member='line1' 	 default='<magics_title/>'>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
- <parameter name='text_line_2' from='string' to='string' member='line2' 	 default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_3' from='string' to='string' member='line3'  default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_4' from='string' to='string' member='line4' default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_5' from='string' to='string' member='line5'  default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_6' from='string' to='string' member='line6'  default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_line_7' from='string' to='string' member='line7' default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_8' from='string' to='string' member='line8'  default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_9' from='string' to='string'  member='line9' 	 default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_line_10' from='string' to='string' member='line10' default=''>
-         <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> Character string for holding lines of text (n=1,10) </documentation>
-  </parameter>
-  
-
-  <parameter name='text_first_line' from='int' to='int' member='first'  default='1'>
-          <release>0.1</release>    
-         <release_info>deprecated parameter : see text_lines </release_info>
-         <documentation> The first line in the text block to be plotted </documentation>
-  </parameter>
-  
-   <parameter name='text_character_1' from='string' to='string' member='character1'  default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  
-  <parameter name='text_character_2' from='string' to='string' member='character2' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_3' from='string' to='string'
-             member='character3' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_4' from='string' to='string'
-             member='character4' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_5' from='string' to='string'
-             member='character5' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_6' from='string' to='string'
-             member='character6' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_7' from='string' to='string'
-             member='character7' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_8' from='string' to='string'
-             member='character8' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_9' from='string' to='string'
-             member='character9' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  <parameter name='text_character_10' from='string' to='string'
-             member='character10' default=''>
-         <documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-
-  <parameter name='text_integer_1' from='int' to='int' member='integer1' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  
-  
-   <parameter name='text_integer_2' from='int' to='int' member='integer2' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_3' from='int' to='int'
-             member='integer3' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_4' from='int' to='int'
-             member='integer4' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_5' from='int' to='int'
-             member='integer5' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_6' from='int' to='int'
-             member='integer6' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_7' from='int' to='int'
-             member='integer7' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_8' from='int' to='int'
-             member='integer8' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_9' from='int' to='int'
-             member='integer9' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_integer_10' from='int' to='int'
-             member='integer10' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-
-  <parameter name='text_real_1' from='float' to='float'
-             member='real1' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  
-   <parameter name='text_real_2' from='float' to='float'
-             member='real2' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_3' from='float' to='float'
-             member='real3' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_4' from='float' to='float'
-             member='real4' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_5' from='float' to='float'
-             member='real5' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_6' from='float' to='float'
-             member='real6' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_7' from='float' to='float'
-             member='real7' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_8' from='float' to='float'
-             member='real8' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_9' from='float' to='float'
-             member='real9' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-   <parameter name='text_real_10' from='float' to='float'
-             member='real10' default='0'>
-          <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) </documentation>
-  </parameter>
-  
-  <parameter name='text_line_height_ratio_1' from='float' to='float'
-             member='height_ratio_1' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  
-  <parameter name='text_line_height_ratio_2' from='float' to='float'
-             member='height_ratio_2' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_3' from='float' to='float'
-             member='height_ratio_3' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_4' from='float' to='float'
-             member='height_ratio_4' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_5' from='float' to='float'
-             member='height_ratio_5' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_6' from='float' to='float'
-             member='height_ratio_6' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_7' from='float' to='float'
-             member='height_ratio_7' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_8' from='float' to='float'
-             member='height_ratio_8' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  <parameter name='text_line_height_ratio_9' from='float' to='float'
-             member='height_ratio_9' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-  
-  <parameter name='text_line_height_ratio_10' from='float' to='float' member='height_ratio_10' default='1'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-
- 
-  <parameter name='text_instruction_shift_character' from='string' to='string' member='text_instruction_shift_character' default='\' implemented='no'>
-         <documentation> Symbol or character for indicating that an Instruction String follows </documentation>
-  </parameter>
-
-  <parameter name='text_escape_character' from='string' to='string' member='text_escape_character' default='#' implemented='no'>
-         <documentation> Symbol or character followed by 3 octal numbers - see one of Figure XIV-1 to Figure XIV-3 </documentation>
-  </parameter>
-
-  <parameter name='text_parameter_escape_character' from='string' to='string' member='parameter_escape'  default='@'>
-         <documentation> Symbol or character for indicating that a MAGICS parameter follows. The MAGICS parameter is also terminated by the same symbol or character </documentation>
-  </parameter>
-  
-  <parameter name='text_line_height_ratios' from='floatarray' to='floatarray' member='height_ratios' xml='line_height_ratios' default='floatarray()'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text </documentation>
-  </parameter>
-
-  <parameter name='text_line_space_ratio' from='float' to='float' member='text_line_space_ratio'  default='1.5' implemented='no' priory='0'>
-         <release_info>Needs user input to see the possible evolution of this parameter</release_info>
-         <documentation> Ratio of space above and below each line to text reference character height. See main text </documentation>
-  </parameter>
-
-</class>
-
-</magics>
diff --git a/src/xml/Title.xml b/src/xml/Title.xml
deleted file mode 100644
index c30fe26..0000000
--- a/src/xml/Title.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='Title' xml_data='title_text' directory='visualisers' inherits='TitleBase'>
-  <documentation></documentation>
-  
-  <parameter name='title_colour' from='string' to='Colour'
-             member='colour' xml='colour' default='blue'>
-          <release>Magisc++0.8</release>
-         <documentation> Colour of the title </documentation>
-         <migration> New Magics: Parameter text_mode sent to new Magics[TextAction].  </migration>
-  </parameter>
-  <parameter name='title_text' from='stringarray' to='stringarray'
-             member='text' xml='text' default='stringarray()'>
-          <release>Magisc++0.8</release>
-         <documentation>title </documentation>
-         <migration> New Magics: Parameter text_mode sent to new Magics[TextAction].  </migration>
-  </parameter>
-   <parameter name='title_justification' from='string' to='Justification'
-             member='justification' xml='justification' default='centre'>
-          <release>Magisc++0.8</release>
-         <documentation> How text is to be positioned in each line (LEFT/CENTRE/RIGHT)	 </documentation>
-         <migration> New Magics: Parameter title_justification sent to new Magics[Ttitle].  </migration>
-  </parameter>
-  
-  <parameter name='text_font_size' from='float' to='float'
-             member='height' xml='font_size' default='0.5' >
-	     <release>Magics++0.8</release>
-	      <release_info>Change default from 2.0 to 0.5 ---> To be discussed later!</release_info>
-         <documentation> height for calculating the height of the characters in text lines (see main text) </documentation>
-         <migration> New Magics: Parameter text_reference_character_height sent to new Magics[TextAction].  </migration>
-  </parameter>
-
-  <parameter name='title_font' from='string' to='string'
-             member='font' xml='font' default='sansserif' >
-	     <release>Magics++1.38</release>
-         <documentation>Font to use </documentation>
-         <migration> New Magics: Parameter text_reference_character_height sent to new Magics[TextAction].  </migration>
-  </parameter>
-   <parameter name='text_font_style' from='string' to='string' 
-   		member='style' xml='font_style' default='normal'>
-	<available>normal</available>
-	<available>bold</available>
-	<available>italic</available>
-	<available>bolditalic</available>
-	<documentation>Font style.</documentation>
-	<release>1.3</release>
-	<release_info>Implemented in Magics++ 1.3.</release_info>
-  </parameter>
-</class>
-
-<class name='NoTitle' include='Title.h' inherits='TitleBase' directory='visualisers'/>
-<class name='TitleBase' include='TitleBase.h' directory='visualisers'/>
-
-</magics>
diff --git a/src/xml/TitleTemplate.xml b/src/xml/TitleTemplate.xml
deleted file mode 100644
index ae878cd..0000000
--- a/src/xml/TitleTemplate.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='TitleTemplate' directory='decoders'>
-	<documentation>
-		Here comes the description of the TitleTemplate 
-	</documentation>
-        <parameter name='title_template_filename' from='string' to='string'
-            member='file' default='title_template.xml'>
-            <documentation> Description in Xml of the titles  </documentation>
-            <migration> New Magics: Parameter title_template_filename sent to new Magics[TitleTemplate].  </migration>
-        </parameter>
-        
-</class>
-
-
-</magics>
diff --git a/src/xml/ValuePlot.xml b/src/xml/ValuePlot.xml
deleted file mode 100644
index 92b980c..0000000
--- a/src/xml/ValuePlot.xml
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='ValuePlot'  xmltag='gridvalues' prefix='contour/contour_grid_value/contour_grid_value'
-	action='pcont' directory='visualisers' inherits='ValuePlotBase' >
-
-  <parameter name='contour_grid_value_type' from='string' to='string' member='type' default='normal' values='normal/reduced/akima' >
-         <documentation> For Gaussian fields, plot normal (regular) values or reduced grid values.  (NORMAL/REDUCED/akima). If akima, the akima grid values will be plotted </documentation>
-         <release>0.2</release>
-  </parameter>
-
-  <parameter name='contour_grid_value_plot_type' from='string' to='ValuePlotMethod'  member='method' xml='plot_type' default='value'>
-         <documentation> (VALUE/MARKER/BOTH) </documentation>
-         <option name='ValuePlotMethod'          fortran='value'  xml='value'  include='ValuePlotMethod.h' />
-         <option name='MarkerValuePlotMethod'    fortran='marker' xml='marker' include='MarkerValuePlotMethod.h' />
-         <option name='BothValuePlotMethod'           fortran='both'   xml='both'    include='BothValuePlotMethod.h' />
-         <release>0.2</release>
- </parameter>
-
- </class>
-
-
-<class name='NoValuePlot' xmltag='nogridvalues' action='pcont' directory='visualisers' include='ValuePlot.h'  inherits='ValuePlotBase'>
-   <documentation>This object suppresses the plotting of grid values. </documentation>
-</class>
-
-
-
-
-<class name='ValuePlotMethod' prefix='contour/contour_grid_value/contour_grid_value' action='pcont' directory='visualisers'  >
-
-<parameter name='contour_grid_value_min' from='float' to='float' member='min' default='-1.0e+21'>
-         <documentation> The minimum value for which grid point values are to be plotted </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_max' from='float' to='float' member='max' default='1.0e+21' >
-         <documentation> The maximum value for which grid point values are to be plotted </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_lat_frequency' from='int' to='int' member='lat_frequency' default='1' >
-         <documentation> The grid point values in every Nth latitude row are plotted </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_lon_frequency' from='int' to='int' member='lon_frequency'  default='1' >
-         <documentation> The grid point values in every Nth longitude column are plotted </documentation>
-         <release>0.2</release>
-</parameter>
-  
-<parameter name='contour_grid_value_height' from='float' to='float' member='height' default='0.25'>
-         <documentation> Height of grid point values  </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_colour' from='string' to='Colour' member='colour'  default='blue' >
-         <documentation> Colour of grid point values (Full choice of colours) </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_format' from='string' to='string' member='format'  default='(automatic)'>
-         <documentation> Format of grid point values (MAGICS Format/(AUTOMATIC)) </documentation>
-         <release>0.2</release>
-         <release>Format is not yet implemented. Expected Magics++0.3</release>
-</parameter>
-
-<parameter name='contour_grid_value_quality' from='string' to='string' member='quality'  default='low'>
-         <documentation> (LOW/MEDIUM/HIGH) </documentation>
-         <release>0.2</release>
-         <release>Quality is not yet implemented. Expected Magics++0.3</release>
-  </parameter>
-</class>
-
-<class name='MarkerValuePlotMethod' action='pcont'  xmltag='marker' prefix='contour/contour_grid_value/contour_grid_value' directory='visualisers' inherits='ValuePlotMethod'>
-
-<parameter name='contour_grid_value_marker_height' from='float' to='float' member='markerHeight' default='0.25' >
-         <documentation> Height of grid point markers </documentation>
-         <release>0.2</release>
-</parameter>
-
-  <parameter name='contour_grid_value_marker_colour' from='string' to='Colour'
-             member='markerColour' default='red'>
-         <documentation> Colour of grid point markers (Full choice of colours) </documentation>
-         <release>0.2</release>
-  </parameter>
-
-  <parameter name='contour_grid_value_marker_qual' from='string' to='string' member='markerQuality' default='low' >
-         <documentation> (LOW/MEDIUM/HIGH) </documentation>
-         <release>0.2</release>
-	 <!-- Spelling mistale QUAL instead of QUALITY comes from MAGICS 6! -->
-</parameter>
-
-  <parameter name='contour_grid_value_marker_index' from='int' to='int' member='markerIndex' default='3' >
-         <documentation> Table number of marker index. See Appendix for Plotting Attributes </documentation>
-         <release>0.2</release>
-  </parameter>
-  
-</class>
-
-
-<class name='BothValuePlotMethod'  xmltag='both' prefix='contour/contour_grid_value/contour_grid_value' action='pcont' 
-	inherits='ValuePlotMethod' directory='visualisers'>
-  <documentation>This object is reponsible for plotting both values and markers on grid points.</documentation>
-
-<parameter name='contour_grid_value_marker_height' from='float' to='float' member='markerHeight' default='0.25' >
-         <documentation> Height of grid point markers </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_marker_colour' from='string' to='Colour' member='markerColour' default='red'>
-         <documentation> Colour of grid point markers (Full choice of colours) </documentation>
-         <release>0.2</release>
-</parameter>
-
-<parameter name='contour_grid_value_marker_qual' from='string' to='string' member='markerQuality' default='low' >
-         <documentation> (LOW/MEDIUM/HIGH) </documentation>
-         <release>0.2</release>
-         <release>Quality is not yet implemented. Expected Magics++0.3</release>
-</parameter>
-
-<parameter name='contour_grid_value_marker_index' from='int' to='int' member='markerIndex' default='3' >
-         <documentation> Table number of marker index. See Appendix for Plotting Attributes </documentation>
-         <release>0.2</release>
-  </parameter>
-</class>
-
-<class name='ValuePlotBase' include='ValuePlotBase.h' directory='visualisers'/>
-
-</magics>
diff --git a/src/xml/View.xml b/src/xml/View.xml
deleted file mode 100644
index f404442..0000000
--- a/src/xml/View.xml
+++ /dev/null
@@ -1,348 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='XmlBasicNode' action='MagML' directory='basic' xmltag='view' prefix='view'> 
-  <parameter name='view_standalone' from='string' to='bool' member='standalone'  default='off'>
-         <release>Magics++2.9</release>
-         <documentation> If true, the node will be created in an external file .. can be useful for legend and text ...</documentation>
-  </parameter>
-  
-  <parameter name='view_standalone_file_name' from='string' to='string' member='standalone_path'  default=''>
-         <release>Magics++2.9</release>
-         <documentation> Path of the file wich will contain this view </documentation>
-  </parameter>
-  
-  <parameter name='view_standalone_format' from='string' to='string' member='standalone_format'  default='png'>
-         <release>Magics++2.9</release>
-         <documentation> format of the file wich will contain this view </documentation>
-  </parameter>
- 
-  <parameter name='view_standalone_width' from='float' to='float' member='standalone_width'  default='128'>
-         <release>Magics++2.9</release>
-         <documentation> width of the image that will contain this view </documentation>
-  </parameter>
-  
-   <parameter name='view_standalone_height' from='float' to='float' member='standalone_height'  default='64'>
-         <release>Magics++2.9</release>
-         <documentation> height of the image that will contain this view </documentation>
-  </parameter>
-
-  <parameter name='view_display' from='string' to='DisplayType' member='display'  default='inline'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='view_bottom' from='string' to='string' member='bottom' default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>  
-  
-  <parameter name='view_left' from='string' to='string' member='left' default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='view_width' from='string' to='string' member='width'  default='100%'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='view_height' from='string' to='string' member='height'  default='100%' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-
-  <parameter name='view_margin_bottom' from='string' to='string' member='margin_bottom'  default='undef'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='view_margin_left' from='string' to='string' member='margin_left'  default='undef'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='view_margin_right' from='string' to='string' member='margin_right'  default='undef'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='view_margin_top' from='string' to='string' member='margin_top'  default='undef' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-
-  <parameter name='view_background_colour' from='string' to='Colour' member='background'  default='white'>
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='view_border_bottom' from='string' to='string' member='border_bottom'  default='1px'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='view_border_left' from='string' to='string' member='border_left' 	 default='1px'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='view_border_right' from='string' to='string' member='border_right'  default='1px'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='view_border_top' from='string' to='string' member='border_top'  default='1px' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-  
-  <parameter name='view_border' from='string' to='bool' member='border'  default='on'> 
-         <documentation> Frame </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-  
-  <parameter name='view_blanking' from='string' to='bool' member='blanking' default='on'> 
-         <documentation> Blanking </documentation>
-         <release>Magics++2.1</release>
-  </parameter>
-  
-  <parameter name='view_border_colour' from='string' to='Colour' member='border_colour'  default='tan'> 
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  
-  <parameter name='view_border_style' from='string' to='LineStyle' member='border_style'  default='solid'> 
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  
-  <parameter name='view_border_thickness' from='int' to='int'  member='border_thickness'  default='1'> 
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='view_padding_bottom' from='string' to='string' member='padding_bottom'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='view_padding_left' from='string' to='string' member='padding_left'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='view_padding_right' from='string' to='string' member='padding_right'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='view_padding_top' from='string' to='string' member='padding_top'  default='0%' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-  
-  <parameter name='view_padding_colour' from='string' to='Colour'  member='padding_colour' 	 default='none'>
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-</class>
-
-
-
-<class name='XmlViewNode' action='MagML' xmltag='map' directory='basic' prefix='view/subpage_map' inherits='XmlBasicNode'> 
-	<parameter name="view_fitted_mode" from="string" to="string" member="fitted" default="off">
-	<documentation> If set to cropped, the projection will force a resize of the output to respect the aspect ratio.. Useful in the context of the web..  If set to fitted, the projection willbe expendef to fill the space! a resize of the output to respect the aspect ratio.. Useful in the context of the web.. </documentation>
-	</parameter>
-	<parameter name='subpage_map_projection' from='string' to='Transformation'
-             member='transformation' 
-			 default='cylindrical'>
-         <documentation> Projection required(CYLINDRICAL/ POLAR_STEREOGRAPHIC/ MERCATOR/SATELLITE/LAMBERT/AITOFF/OCEAN_SECTION/NONE) </documentation>
-         <release>Magics++0.1</release>
-        <!--option name='CylindricalProjection' fortran='cylindrical' xml='cylindrical' include='CylindricalProjection.h'/-->
-         <!-- New cylindrical prokjection...-->
-         <option name='GeoRectangularProjection' fortran='cylindrical' xml='cylindrical' include='GeoRectangularProjection.h'/>
-
-         <!--option name='PolarStereoProjection' fortran='polar_stereographic' xml='polar_stereographic' include='PolarStereoProjection.h'/-->
-         <!-- New polar stereographic projection...-->
-<!--
-         <option name='Proj4Projection' fortran='proj4' xml='proj4' include='Proj4Projection.h'/>
--->
-         <option name='MercatorProjection' fortran='mercator' xml='mercator' include='GeoRectangularProjection.h'/>
-		 <option name='CartesianTransformation' fortran='none' xml='cartesian' include='CartesianTransformation.h'/>
-         <option name='TaylorProjection' fortran='taylor' xml='taylor' include='TaylorProjection.h'/>
-         <!--later 
-         	<option name='SatelliteProjection' fortran='satellite' xml='satellite' include='SatelliteProjection.h'/>
-         	<option name='TaylorProjection' fortran='taylor' xml='taylor' include='TaylorProjection.h'/-->
-         <!-- Code to update to add a new projection...
-         	<option name='NewProjection' fortran='fortran-new-projection' xml='xm-tag-for-new-projection' include='NewProjection.h'/>
-         -->
-	</parameter>
-</class>
-        
-  
-<class name='XmlSceneNode' action='MagML' xmltag='page' prefix='scene_node/view' directory='basic'> 
-  <parameter name='view_display' from='string' to='DisplayType' member='display'  default='inline'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-
-  <parameter name='scene_node_bottom' from='string' to='string' member='bottom'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>  
-  
-  <parameter name='scene_node_left' from='string' to='string' member='left' default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='scene_node_width' from='string' to='string' member='width' 	 default='100%'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_height' from='string' to='string' member='height'  default='100%' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-
-  <parameter name='scene_node_margin_bottom' from='string' to='string' member='margin_bottom'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_margin_left' from='string' to='string' member='margin_left' 	 default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='scene_node_margin_right' from='string' to='string' member='margin_right'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_margin_top' from='string' to='string' member='margin_top' default='0%' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-
-  <parameter name='scene_node_background_colour' from='string' to='Colour' member='background' default='white'>
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='scene_node_border_bottom' from='string' to='string' member='border_bottom'  default='1px'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_border_left' from='string' to='string' member='border_left'  default='1px'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='scene_node_border_right' from='string' to='string' member='border_right'  default='1px'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-   <parameter name='scene_node_border' from='string' to='bool' member='border'  default='off' >
-         <release>Magics++0.1</release>
-          <documentation> Frame on/off </documentation>
-  </parameter>
-
-  <parameter name='scene_node_border_top' from='string' to='string' member='border_top'  default='1px' >
-         <release>Magics++0.1</release>
-          <documentation> Height of View.</documentation>
-  </parameter>
-
-  <parameter name='scene_node_border_colour' from='string' to='Colour' member='border_colour'  default='blue'>
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-  
-  <parameter name='scene_node_border_style' from='string' to='LineStyle' member='border_style'  default='solid'> 
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='scene_node_border_thickness' from='int' to='int' member='border_thickness'  default='1'> 
-         <documentation> Colour of the subpage background </documentation>
-         <release>Magics++0.1</release>
-  </parameter>
-
-  <parameter name='scene_node_padding_bottom' from='string' to='string' member='padding_bottom' default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> Y-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_padding_left' from='string' to='string' member='padding_left'  default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> X-Coordinate of bottom of View.</documentation>
-  </parameter>
-  
-   <parameter name='scene_node_padding_right' from='string' to='string' member='padding_right' default='0%'>
-         <release>Magics++0.8</release>
-         <documentation> width of the View .</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_padding_top' from='string' to='string' member='padding_top'  default='0%' >
-          <documentation> Height of View.</documentation>
-  </parameter>
-  
-  <parameter name='scene_node_padding_colour' from='string' to='Colour' member='padding_colour' default='none'>
-         <documentation> Colour of the subpage background </documentation>
-  </parameter>
-  
- <parameter name='scene_node_id_line' from='string' to='NoPageID' include='PageID.h' member='page_id'  default='on'>
-         <release>Magics++2.1</release>
-         <option name='PageID' xml='pageid' include='PageID.h'/>
-         <option name='NoPageID' xml='nopageid' include='PageID.h'/>
-         <documentation> Plot identification line and ECMWF logo (ON/OFF) </documentation>
-  </parameter>
-</class>
-
-
-<class name ='LayerNode' directory='common' prefix='layer' xmltag='layer'>
-	<parameter name='layer_name' from='string' to='string' member='name' default='automatic'>
-	<release>Magics++2.1</release>
-	<documentation> Name of the layer : will be the button name! </documentation>
-	</parameter>
-	<parameter name='layer_active' from='string' to='bool' member='active' default='true'>
-	<release>Magics++2.1</release>
-	<documentation> if true, the layer will displayed and the button enabled. </documentation>
-	</parameter>
-</class>
-
-
-<class name ='BinaryObject' directory='common' prefix='mgb' xmltag='mgb'>
-
-<parameter name='mgb_filename' from='string' to='string' member='path' default=''>
-  <release>Magics++2.9</release>
-  <documentation for_docs='no'>Path to the binary file.</documentation>
-</parameter>
-
-<parameter name='mgb_transparency' from='float' to='float' member='transparency' default='1.0'>
-  <release>Magics++2.12.3</release>
-  <documentation for_docs='no'>Transpernecy scaling factor for binary layer.</documentation>
-</parameter>
-
-<parameter name='mgb_x' from='int' to='int' member='mgb_x' default='0' visible='no'>
-  <documentation for_docs='no'>X offset in percentage</documentation>
-</parameter>
-
-<parameter name='mgb_y' from='int' to='int' member='mgb_y' default='0' visible='no'>
-  <documentation for_docs='no'>Y offset in percentage</documentation>
-</parameter>
-
-<parameter name='mgb_width' from='int' to='int' member='mgb_width' default='100' visible='no'>
-  <documentation for_docs='no'>Width in percentage</documentation>
-</parameter>
-
-<parameter name='mgb_height' from='int' to='int' member='mgb_height' default='100' visible='no'>
-  <documentation for_docs='no'>Height in percentage</documentation>
-</parameter>
-
-</class>
-</magics>
diff --git a/src/xml/Wind.xml b/src/xml/Wind.xml
deleted file mode 100644
index f454630..0000000
--- a/src/xml/Wind.xml
+++ /dev/null
@@ -1,343 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='Wind' metview='MWIND' xmltag='wind' prefix='wind'  action='pwind' directory='visualisers'>
-  <documentation> Wind plotting facilities allow users to plot wind fields as either arrows or flags.</documentation>
-
-  <parameter name='wind_field_type' from='string' to='WindPlotting' member='type' default='arrows'>
-         <documentation> Method of wind field plotting  </documentation>
-         <release>Basic implementation in 0.6</release>
-         <option name='FlagPlotting' fortran='flags' xml='flags' include='FlagPlotting.h'  />
-         <option name='ArrowPlotting' fortran='arrows' xml='arrows' include='ArrowPlotting.h'/>
-  </parameter>
-
- <parameter name='wind_thinning_method' from='string' to='string' member='thinning_method'  values='data/user' default='data' visible='false'>
-         <documentation> Method to control the thinning: 
-         data :  wind_thinning_factor will determine the frequency as before 
-         user : wind_thining_factor will determine the minimal distance in user coordinates betvween 2 winds. 
-         the default is "data" for backward compatibility.
-          </documentation>
-         <release>2.9</release>
-  </parameter>
-
-  <parameter name='wind_thinning_factor' from='float' to='float' member='thinning_factor' default='2.0'>
-         <documentation> Controls the actual number of wind arrows or flags plotted. See main text for explanation. Needs to 1.0 or larger.</documentation>
-         <release>0.6</release>
-  </parameter>
-</class>
-
-
-<class name='WindPlotting' xmltag='flags' prefix='wind/wind_flag' action='pwind'  directory='visualisers'>
-	<documentation>Parameters common to the falgs and arrows.</documentation>
-
-<parameter name='legend' from='string' to='bool' member='legend'  default='off'>
-	<release>2.1</release>
-	<set value='on' name='wind_legend_text'/>
-	<set value='on' name='wind_arrow_legend_text'/>
-	<documentation> Add  a wind legend information in the legend </documentation>
-</parameter>
-
-<parameter name='wind_legend_only' from='string' to='bool' member='legend_only'  default='off' visible='off'>
-	<release>2.1</release>
-	<documentation for_docs='no'> Wrep only : to build only the legned... </documentation>
-</parameter>
-
-<parameter name='wind_legend_text' from='string' to='string' member='legend_text'  default='vector'>
-	<release>2.1</release>
-	<documentation> Use your own text in the legend</documentation>
-</parameter>
-
-<parameter name='wind_advanced_method' from='string' to='string' member='advanced_method' default='off' values='on/off'> 
-         <documentation>Enable advanced plotting of wind (default is off for backward compatibility). 
-         The coour is selected according to the intensity of the wind (vector) </documentation>
-          <set value='on' name='wind_advanced_colour_selection_type'/> 		 
-		  <set value='on' name='wind_advanced_colour_max_value'/> 
-		  <set value='on' name='wind_advanced_colour_min_value'/>          
-          <set value='on' name='wind_advanced_colour_table_colour_method'/>
-         
-          
-  <release>2.9</release>
-</parameter>
-
-<parameter name='wind_advanced_colour_parameter' from='string' to='string' member='colour_method' default='speed' values='speed/parameter'>
-         <documentation>if speed, the wind is coloured using the norm of the vector, If parameter, a third parameter is used. </documentation>
-         <release>2.9</release>
-</parameter>
-
-<parameter name='wind_advanced_colour_selection_type' from='string' to='LevelSelection'  member='levels' default='count'>
-         <documentation>Set selection method </documentation>
-         <release>2.6</release>
-         <option name='CountSelectionType'   fortran='count'  xml='count' docdive='no' include='CountSelectionType.h'/>
-         <option name='IntervalSelectionType'   fortran='interval'  xml='interval' docdive='no' include='IntervalSelectionType.h'/>
-         <option name='LevelListSelectionType'   fortran='list'  xml='list' docdive='no' include='LevelListSelectionType.h'/>
-         <set value='list' name='wind_advanced_colour_level_list'/>
-         <set value='interval' name='wind_advanced_colour_level_interval'/>	
-         <set value='interval' name='wind_advanced_colour_reference_level'/>
-         <set value='count' name='wind_advanced_colour_reference_level'/>
-         <set value='count' name='wind_advanced_colour_level_count'/>
-         <set value='count' name='wind_advanced_colour_level_tolerance'/>
-</parameter>
-
-<parameter name='wind_advanced_colour_max_value' from='float' to='float' member='max' default='1.e21'>
-         <documentation>Max value to plot </documentation>
-         <release>2.6</release>
-</parameter>
-
-<parameter name='wind_advanced_colour_min_value' from='float' to='float' member='min' default='-1.e21'>
-         <documentation>Min value to plot </documentation>
-         <release>2.6</release>
-</parameter>
-
-<parameter name='wind_advanced_colour_level_count' from='int' to='int' member='count' default='10'>
-         <documentation>Number of levels to be plotted. Magics will try to find "nice levels", 
-         this means that the number of levels could be slightly different</documentation>
-         <release>2.6</release>
-</parameter>
-
-<parameter name='wind_advanced_colour_level_tolerance' from='int' to='int' member='tolerance' default='2'>
-         <documentation> Tolerance: Do not use "nice levels" if the number of levels is really to different [count +/- tolerance] </documentation>
-         <release>2.6</release>
-</parameter>
- 
-<parameter name='wind_advanced_colour_reference_level' from='float' to='float' member='reference'  default='0.0'>
-         <documentation> Level from which the level interval is calculated </documentation>
-         <release>2.6</release>
-  </parameter>
-
-
-  <parameter name='wind_advanced_colour_level_interval' from='float' to='float'
-             member='interval'  default='8.0'>
-         <documentation> Interval in data units between different bands of colours </documentation>
-         <release>2.6</release>
-  </parameter>
- 
-	<parameter name='wind_advanced_colour_level_list' from='floatarray' to='floatarray'
-             member='list'	 default='floatarray()' >
-         <documentation> List of levels  to be used </documentation>
-         <release>2.6</release>
-  </parameter>
-  
-  <parameter name='wind_advanced_colour_table_colour_method' from='string' to='ColourTechnique'
-             member='colourMethod' 	 default='calculate' >
-         <documentation> Method of generating the colours </documentation>
-  		<set value='calculate' name='wind_advanced_colour_max_level_colour'/>
-  		<set value='calculate' name='wind_advanced_colour_min_level_colour'/>
-  		<set value='calculate' name='wind_advanced_colour_direction'/>
-  		<set value='list' name='wind_advanced_colour_list'/>
-  		<set value='list' name='wind_advanced_colour_list_policy'/>
-         <option name='CalculateColourTechnique' fortran='calculate' xml='calculate' docdive='no' include='CalculateColourTechnique.h'/>
-         <option name='ListColourTechnique'      fortran='list'      xml='list'      docdive='no' include='ListColourTechnique.h'/>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='wind_advanced_colour_max_level_colour' from='string' to='Colour' member='maxColour' default='blue'>
-         <documentation> Highest shading band colour </documentation>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='wind_advanced_colour_min_level_colour' from='string' to='Colour' member='minColour'  default='red'>
-         <documentation> Lowest shading band colour </documentation>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='wind_advanced_colour_direction' from='string' to='string' member='direction' default='anti_clockwise' values='clockwise/anti_clockwise'>
-         <documentation> Direction of colour sequencing for plotting  </documentation>
-         <release>2.6</release>
-  </parameter>
-
-  <parameter name='wind_advanced_colour_list' from='stringarray' to='stringarray' colourlist='on' member='colours' default='stringarray()'>
-         <documentation> List of colours to be used in wind plotting </documentation>
-         <release>2.6</release>
-  </parameter>
-  <parameter name='wind_advanced_colour_list_policy' from='string' to='ListPolicy' member='colour_policy' default='lastone' >
-         <documentation> What to do if, the list of colours is smaller that the list of intervals: lastone/cycle </documentation>     
-         <release>2.6</release>
-  </parameter>
-  
- <!-- 
-      <parameter name='wind_advanced_colour_outlayer_method' from='string' to='NoOutLayerTechnique'
-             member='outlayer' default='none' include='OutLayerTechnique.h' >
-         <documentation> outlayer method </documentation> 
-         <option name='NoOutLayerTechnique' fortran='none' xml='nooutlayer' docdive='no' include='OutLayerTechnique.h'/>
-         <option name='SimpleOutLayerTechnique' fortran='simple' xml='simple' docdive='no' include='OutLayerTechnique.h'/>                 
-         <release>2.6</release>
-  	  </parameter>    
-  	    <parameter name='wind_advanced_colour_outlayer_min_value' from='float' to='float'
-             member='outlayer_min' default='-1.e21' visible='no'>
-         <documentation> outlayer min value </documentation>         
-         <release>2.6</release>
-  	  </parameter>   
-  	  <parameter name='wind_advanced_colour_outlayer_max_value' from='float' to='float'
-             member='outlayer_max' default='1.e21' visible='no'>
-         <documentation> outlayer max value </documentation>         
-         <release>2.6</release>
-  	  </parameter>    
-  	--> 
-      
-</class>
-
- <class name='CalmIndicator' directory='visualisers' /> 
- <class name='NoCalmIndicator' inherits='CalmIndicator' include='CalmIndicator.h' directory='visualisers' />  
- <class name='OriginMarker' directory='visualisers' /> 
- <class name='DotOriginMarker' inherits='OriginMarker' include='OriginMarker.h' directory='visualisers' />
- <class name='CircleOriginMarker'  inherits='OriginMarker' include='OriginMarker.h' directory='visualisers' />
- <class name='NoOriginMarker' inherits='OriginMarker' include='OriginMarker.h' directory='visualisers' />
-
-<class name='FlagPlotting' xmltag='flags' prefix='wind/wind_flag' inherits='WindPlotting' action='pwind'  directory='visualisers'>
-  <documentation> WMO standard wind flags; represented by barbs and solid pennants </documentation> 
-  <parameter name='wind_flag_calm_indicator' from='string' to='CalmIndicator' member='calm'  default='on' values='on/off'>
-        <documentation> Plot calm indicator circle, if wind speed is less than 0.5 m/s (ON / OFF) </documentation>
-        <option name='CalmIndicator' fortran='on' xml='calm' include='CalmIndicator.h' />
-        <option name='NoCalmIndicator' fortran='off' xml='nocalm' include='CalmIndicator.h'  />
-	<set value='on' name='wind_flag_calm_indicator_size'/>
-	<set value='on' name='wind_flag_calm_below'/>
-  </parameter>
-
-  <parameter name='wind_flag_calm_indicator_size' from='float' to='float' member='calm_indicator_size'  default='0.3'>
-         <documentation> The radius of the circle which indicates calm in centimeter </documentation>
-        
-  </parameter>
-  
-   <parameter name='wind_flag_calm_below' from='float' to='float' member='calm_below'  default='0.5' >
-		
-         <documentation> Winds less than or equal to this value will be drawn as calm. </documentation>
-  </parameter>
-
-  <parameter name='wind_flag_colour' from='string' to='Colour' member='colour'  default='blue'>
-			 
-         <documentation> Colour of wind flag shaft, barbs and pennants  </documentation>
-        
-  </parameter>
-
-  <parameter name='wind_flag_cross_boundary' from='string' to='bool' member='cross_boundary' default='on' visible='false'>
-			
-         <documentation> If set to 'ON', wind flags are truncated if they cross the subpage border (ON / OFF) </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
-  <parameter name='wind_flag_length' from='float' to='float' member='length'  default='1.0'>
-         <documentation> Physical length of wind flag shaft </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
-  <parameter name='wind_flag_max_speed' from='float' to='float' member='max_speed'  default='1.0e+21'>
-         <documentation> Highest value of wind speed to be plotted </documentation>
-         <migration> New Magics: Parameter wind_flag_max_speed sent to new Magics[Wind].  </migration>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
-  <parameter name='wind_flag_min_speed' from='float' to='float' member='min_speed' default='-1.0e+21' >
-         <documentation> Lowest value of wind speed to be plotted </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
-  <parameter name='wind_flag_mode' from='string' to='string' member='wind_flag_mode'  default='normal' implemented='no'>
-      <release>Basic implementation in 0.6</release>
-      <documentation> Controls the line style of the wind flag shaft.(NORMAL / OFF_LEVEL / OFF_TIME) </documentation>
-  </parameter>
-
- <parameter name='wind_flag_style' from='string' to='LineStyle' member='style' default='solid'>
-         <documentation> Controls the line style of the wind flag shaft. </documentation>
-         <release>Basic implementation in 0.6</release>
-  </parameter>
-
-  
-   <parameter name='wind_flag_origin_marker' from='string' to='OriginMarker' member='origin'  default='circle' values='circle/dot/off'> 
-	<release>Basic implementation in 0.6</release>
-	<documentation> Symbol for marking the exact location of the current grid point.</documentation>
-	<option name='DotOriginMarker' fortran='dot' xml='dotmarker' 	include='OriginMarker.h' />
-	<option name='CircleOriginMarker' fortran='circle' xml='circlemarker' 	include='OriginMarker.h' />
-	<option name='NoOriginMarker' fortran='off' xml='nomarker' 	include='OriginMarker.h' />
-  </parameter>
-  
-  <parameter name='wind_flag_origin_marker_size' from='float' to='float' member='origin_marker_size'  default='0.3'> 
-  </parameter>
-
-  <parameter name='wind_flag_thickness' from='int' to='int' member='thickness'  default='1'>
-	     <release>Basic implementation in 0.6</release>
-         <documentation> Thickness of wind flag shaft </documentation>  </parameter>
-</class>
-
-<class name = 'ArrowPlotting' xmltag='arrow' prefix='wind/wind_arrow' inherits='WindPlotting' action='pwind' directory='visualisers'>
-  <documentation></documentation>
-
-  <parameter name='wind_arrow_calm_indicator' from='string' to='CalmIndicator' member='calm' default='off' values='on/off'>
-	<release>Basic implementation in 0.6</release>
-	  <option name='CalmIndicator' fortran='on' xml='calm' include='CalmIndicator.h' />
-      <option name='NoCalmIndicator' fortran='off' xml='nocalm' include='CalmIndicator.h'  />
-    
-	<documentation>Plot calm indicator circle if wind speed is less than or equal to the value in WIND_ARROW_CALM_BELOW (ON / OFF)</documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_calm_indicator_size' from='float' to='float' member='calm_indicator_size' default='0.3'>
-	<release>Basic implementation in 0.6</release>
-	<documentation> The radius of the circle which indicates calm </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_calm_below' from='float' to='float' member='calm_below' default='0.5'>
-	<release>Basic implementation in 0.6</release>
-	<documentation> Winds less than or equal to this value will be drawn as calm. </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_colour' from='string' to='Colour' member='colour' default='blue' >
-	<release>Basic implementation in 0.6</release>
-	<documentation> Colour of wind arrow  </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_cross_boundary' from='string' to='bool' member='cross_boundary' default='on' implemented='no'>
-	<release>Basic implementation in 0.6</release>
-        <documentation> If set to 'ON', wind arrows are truncated if they cross the subpage border (ON / OFF). </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_head_shape' from='int' to='int' member='head' default='0' >
-	<release>Basic implementation in  1.3.</release>
-	<documentation>Table number, XY, indicating shape of arrowhead X</documentation>
-  </parameter>
-  
-  <parameter name='wind_arrow_head_ratio' from='float' to='float' member='ratio'  default='0.3' >
-	<release>Basic implementation in 0.6</release>
-	<documentation> Table number, XY, indicating style and shape of arrowhead X </documentation>
-  </parameter>
-  
- 
-
-  
-
- 
-
-  <parameter name='wind_arrow_max_speed' from='float' to='float' member='max_speed' default='1.0e+21'>
-	 <release>Basic implementation in 0.6</release>
-         <documentation> Highest value of wind speed to be plotted </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_min_speed' from='float' to='float' member='min_speed' default='-1.0e+21'>
-	<release>Basic implementation in 0.6</release>
-        <documentation> Lowest value of wind speed to be plotted </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_origin_position' from='string' to='ArrowPosition' member='origin_position' default='tail' values='centre/tail'>
-	<release>Basic implementation in 0.6</release>
-        <documentation> The position of the wind arrow relative to the wind origin  </documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_thickness' from='int' to='int' member='thickness'  default='1'>
-	 <release>Basic implementation in 0.8</release>
-         <documentation> Thickness of wind arrow shaft </documentation>
-  </parameter>
-  
-  <parameter name='wind_arrow_style' from='string' to='LineStyle' member='style'  default='solid'>
-         <documentation>Controls the line style of the arrow flag shaft.</documentation>
-         <release>Basic implementation in 0.8.</release>
-  </parameter>
-   <parameter name='wind_arrow_unit_system' from='string' to='string' member='unit_system'  default='paper' value='paper/user' visible='false'>
-        <documentation>Coordinates sysem used to sacle the arrow : paper -->1cm, user-->1 user unit</documentation>
-  </parameter>
-
-  <parameter name='wind_arrow_unit_velocity' from='float' to='float' member='unit_velocity'  default='25.0'>
-        <documentation>Wind speed in m/s represented by a unit vector (1.0 cm or 1.0 user unit depending on the value of wind_arrow_unit_system ).</documentation>
-  </parameter>  
-  <parameter name='wind_arrow_legend_text' from='string' to='string' member='legend_unit'  default='m/s'>
-        <documentation> Text to be used as units in the legend text </documentation>
-  </parameter>
-</class>   
-	
-</magics>
diff --git a/src/xml/XYList.xml b/src/xml/XYList.xml
deleted file mode 100644
index a9cd14b..0000000
--- a/src/xml/XYList.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='XYList' directory='decoders'  xmltag='xyinput' >
-  <documentation> Here comes the documentation of the XYSystem object </documentation>
-
-  <parameter name='x_values' from='floatarray' to='floatarray'
-             member='x' xml='x_values'
-			 default='floatarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y_values' from='floatarray' to='floatarray'
-             member='y' xml='y_values'
-			 default='floatarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  
-  
-  
-  
-  <parameter name='x_date_values' from='stringarray' to='stringarray'
-             member='x_date' xml='x_date_values'
-			 default='stringarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  <parameter name='x_base_date' from='string' to='string'
-             member='x_base'  default='' >
-         <documentation>Base Date to use when X date coordinates defined as offset  </documentation>
-         
-  </parameter>
-  <parameter name='x_date_offset' from='string' to='string'
-             member='x_offset'  default='second' >
-         <documentation>unit for the offset second/minute/hour/day</documentation>
-        
-  </parameter>
-   <parameter name='y_base_date' from='string' to='string'
-             member='y_base'  default='' >
-         <documentation>Base Date to use when Y date coordinates defined as offset  </documentation>
-         
-  </parameter>
-  <parameter name='y_date_offset' from='string' to='string'
-             member='y_offset'  default='second' >
-         <documentation>unit for the offset second/minute/hour/day</documentation>
-        
-  </parameter>
-
-  <parameter name='y_date_values' from='stringarray' to='stringarray'
-             member='y_date' xml='y_date_values'
-			 default='stringarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  <parameter name='x_missing_value' from='float' to='float'
-             member='x_missing' default='-21.e6' >
-         <documentation> mssing value for x   </documentation> 
-  </parameter> 
-  <parameter name='y_missing_value' from='float' to='float'
-             member='y_missing' default='-21.e6' >
-         <documentation> missing value for x   </documentation>
-  </parameter>
-  
-   <parameter name='x2_values' from='floatarray' to='floatarray'
-             member='x2' xml='x2_values'
-			 default='floatarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y2_values' from='floatarray' to='floatarray'
-             member='y2' xml='y2_values'
-			 default='floatarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  
-  
-  <parameter name='x2_date_values' from='stringarray' to='stringarray'
-             member='x2_date' xml='x2_date_values'
-			 default='stringarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y2_date_values' from='stringarray' to='stringarray'
-             member='y2_date' xml='y2_date_values'
-			 default='stringarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='x_lower_values' from='floatarray' to='floatarray'
-             member='x_lower' xml='x_values'
-			 default='floatarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y_lower_values' from='floatarray' to='floatarray'
-             member='y_lower' xml='y_values'
-			 default='floatarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  
-  <parameter name='x_lower_date_values' from='stringarray' to='stringarray'
-             member='x_lower_date' xml='x_lower_date_values'
-			 default='stringarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y_lower_date_values' from='stringarray' to='stringarray'
-             member='y_lower_date' xml='y_lower_date_values'
-			 default='stringarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  
-    <parameter name='x_upper_values' from='floatarray' to='floatarray'
-             member='x_upper' xml='x_upper_values'
-			 default='floatarray()' >
-         <documentation> X Upper Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y_upper_values' from='floatarray' to='floatarray'
-             member='y_upper' xml='y_upper_values'
-			 default='floatarray()' >
-         <documentation> y Upper Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  
-  <parameter name='x_upper_date_values' from='stringarray' to='stringarray'
-             member='x_upper_date' xml='x_upper_date_values'
-			 default='stringarray()' >
-         <documentation> X Values  </documentation>
-         <migration> New Magics: Parameter x_values sent to new Magics[XYList].  </migration>
-  </parameter>
-
-  <parameter name='y_upper_date_values' from='stringarray' to='stringarray'
-             member='y_upper_date' xml='y_upper_date_values'
-			 default='stringarray()' >
-         <documentation> y Values  </documentation>
-         <migration> New Magics: Parameter y_values sent to new Magics[XYList].  </migration>
-  </parameter>
-  
-</class>
-
-<static name='xy_list' class='XYList' base='BaseSceneObject' include_class='yes'/>
-
-</magics>
diff --git a/src/xml/XYTransformation.xml b/src/xml/XYTransformation.xml
deleted file mode 100644
index 8b2daae..0000000
--- a/src/xml/XYTransformation.xml
+++ /dev/null
@@ -1,267 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='CartesianTransformation' xmltag='cartesian'  metview_prefix='subpage_' prefix='subpage' action='pnew' directory='common' inherits='Transformation'>
-  	This object contains the attributes to the cartesian Projection 
-
-<parameter name='subpage_x_axis_type' from='string' to='XCoordinate' member='x' default='regular' >
-    <option name='XRegularCoordinate'  fortran='regular'  xml='x_regular' include='Coordinate.h'/>
-    <option name='XDateCoordinate' fortran='date' xml='x_date' include='Coordinate.h'/>
-    <option name='XHyperCoordinate' fortran='geoline' xml='x_hyper' include='Coordinate.h'/>
-    <option name='XLogarithmicCoordinate' fortran='logarithmic' xml='x_logarithmic' include='Coordinate.h'/>
-    <release>Magics++1.3</release>         
-</parameter>    
- 
-<parameter name='subpage_y_axis_type' from='string' to='YCoordinate' member='y' default='regular' >
-          
-           <option name='YRegularCoordinate'  fortran='regular'  xml='y_regular' include='Coordinate.h'/>
-           <option name='YDateCoordinate' fortran='date' xml='y_date' include='Coordinate.h'/>
-            <option name='YHyperCoordinate' fortran='geoline' xml='y_hyper' include='Coordinate.h'/>
-           <option name='YLogarithmicCoordinate' fortran='logarithmic' xml='y_logarithmic' include='Coordinate.h'/>
-           <release>Magics++1.3</release>
-</parameter>
-
-</class>
-
-
-<class name='XRegularCoordinate' metview_prefix='subpage_' xmltag='x_regular' prefix='subpage/subpage_x'  action='pnew' directory='common' inherits='XCoordinate' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-
-<parameter name='subpage_x_automatic' from='string' to='AxisAutomaticSetting' member='automatic' 
-	xml='automatic' 
-	default='off' values='on/off/min_only/max_only' >
-     <release>Magics2.1</release>
-     <set value='off' name='subpage_x_max'/> 
-     <set value='off' name='subpage_x_min'/>
-     <set value='min_only' name='subpage_x_max'/> 
-     <set value='max_only' name='subpage_x_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-
-<parameter name='subpage_x_min' from='float' to='float' member='min' xml='x_min' default='0' >
-    <release>Magics++0.1</release>
-</parameter>
-
-<parameter name='subpage_x_max' from='float' to='float' member='max' xml='x_max' default='100' >
-    <release>Magics++0.1</release>
-</parameter>
-
-
-
-</class>
-
-<class name='XLogarithmicCoordinate' metview_prefix='subpage_' xmltag='x_regular' prefix='subpage/subpage_x'  action='pnew' directory='common' inherits='XCoordinate' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-
-<parameter name='subpage_x_automatic' from='string' to='AxisAutomaticSetting' member='automatic' 
-	xml='automatic' 
-	default='off' values='on/off/min_only/max_only' >
-     <release>Magics2.1</release>
-     <set value='off' name='subpage_x_max'/> 
-     <set value='off' name='subpage_x_min'/>
-     <set value='min_only' name='subpage_x_max'/> 
-     <set value='max_only' name='subpage_x_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-
-<parameter name='subpage_x_min' from='float' to='float' member='min' xml='x_min' default='0' >
-    <release>Magics++0.1</release>
-</parameter>
-
-<parameter name='subpage_x_max' from='float' to='float' member='max' xml='x_max' default='100' >
-    <release>Magics++0.1</release>
-</parameter>
-
-
-
-</class>
-  
-
-<class name='XCoordinate'  xmltag='x_regular' action='pnew' directory='common'  include='Coordinate.h'/>
-<class name='YCoordinate' action='pnew'  xmltag='y_regular' directory='common'  include='Coordinate.h'/>
-
-
-<class name='YRegularCoordinate' metview_prefix='subpage_' action='pnew' prefix='subpage/subpage_y' xmltag='y_regular' directory='common' 
-		include='Coordinate.h' inherits='YCoordinate'>
-  This object contains the common attributes to the cartesian Projections
-<parameter name='subpage_y_automatic' from='string' to='AxisAutomaticSetting' 
-		values='on/off/min_only/max_only' member='automatic' xml='automatic' default='off' >
-         <release>Magics 2.1</release>
-        
-         <set value='off' name='subpage_y_max'/> 
-     <set value='off' name='subpage_y_min'/>
-     <set value='min_only' name='subpage_y_max'/> 
-     <set value='max_only' name='subpage_y_min'/>
-     <set value='off' name='subpage_y_date_max'/> 
-     <set value='off' name='subpage_y_date_min'/>
-     <set value='min_only' name='subpage_y_date_max'/> 
-     <set value='max_only' name='subpage_y_date_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-<parameter name='subpage_y_min' from='float' to='float' member='min' xml='min' default='0' > 
-    <release>Magics++0.1</release>
-</parameter>
-
-<parameter name='subpage_y_max' from='float' to='float' member='max' xml='max' default='100' >
-    <release>Magics++0.1</release>
-</parameter>
-
-
-
-</class>
-
-<class name='YLogarithmicCoordinate' metview_prefix='subpage_' action='pnew' inherits='YCoordinate' prefix='subpage/subpage_y' xmltag='y_regular' directory='common' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-<parameter name='subpage_y_automatic' from='string' to='AxisAutomaticSetting' 
-		values='on/off/min_only/max_only' member='automatic' xml='automatic' default='off' >
-         <release>Magics 2.1</release>
-        
-         <set value='off' name='subpage_y_max'/> 
-     <set value='off' name='subpage_y_min'/>
-     <set value='min_only' name='subpage_y_max'/> 
-     <set value='max_only' name='subpage_y_min'/>
-     <set value='off' name='subpage_y_date_max'/> 
-     <set value='off' name='subpage_y_date_min'/>
-     <set value='min_only' name='subpage_y_date_max'/> 
-     <set value='max_only' name='subpage_y_date_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-<parameter name='subpage_y_min' from='float' to='float' member='min' xml='min' default='0' > 
-    <release>Magics++0.1</release>
-</parameter>
-
-<parameter name='subpage_y_max' from='float' to='float' member='max' xml='max' default='100' >
-    <release>Magics++0.1</release>
-</parameter>
-
-
-
-</class>
-  
-
-<class name='XDateCoordinate' xmltag='x_date' metview_prefix='subpage_' prefix='subpage/subpage_x/subpage_x_date'  action='pnew' directory='common' inherits='XCoordinate' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-<parameter name='subpage_x_automatic' from='string' to='AxisAutomaticSetting' member='automatic' 
-	xml='automatic' 
-	default='off' values='on/off/min_only/max_only' >
-     <release>Magics2.1</release>
-     <set value='off' name='subpage_x_max'/> 
-     <set value='off' name='subpage_x_min'/>
-     <set value='min_only' name='subpage_x_max'/> 
-     <set value='max_only' name='subpage_x_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-<parameter name='subpage_x_date_min' from='string' to='string' member='date_min' default='' >
-         <release>Magics++0.1</release>
-</parameter> 
-
-<parameter name='subpage_x_date_max' from='string' to='string'  member='date_max' xml='max' default='' >
-    <release>Magics++0.1</release>
-</parameter>
-
-
-
-</class>
-
-
-<class name='YDateCoordinate' xmltag='y_date' metview_prefix='subpage_' prefix='subpage/subpage_y/subpage_y_date' action='pnew' directory='common' inherits='YCoordinate' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-<parameter name='subpage_y_automatic' from='string' to='AxisAutomaticSetting' 
-		values='on/off/min_only/max_only' member='automatic' xml='automatic' default='off' >
-         <release>Magics 2.1</release>
-        
-         <set value='off' name='subpage_y_max'/> 
-     <set value='off' name='subpage_y_min'/>
-     <set value='min_only' name='subpage_y_max'/> 
-     <set value='max_only' name='subpage_y_min'/>
-     <set value='off' name='subpage_y_date_max'/> 
-     <set value='off' name='subpage_y_date_min'/>
-     <set value='min_only' name='subpage_y_date_max'/> 
-     <set value='max_only' name='subpage_y_date_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-<parameter name='subpage_y_date_min' from='string' to='string'  member='date_min' default='' >
-   <release>Magics++0.1</release>
-</parameter>
-
-<parameter name='subpage_y_date_max' from='string' to='string' member='date_max'  default='' >
-         <release>Magics++0.1</release>
-</parameter>
-
-
-
-</class>
-  
-
-<class name='XHyperCoordinate' xmltag='x_hyper' metview_prefix='subpage_' prefix='subpage/subpage_x/subpage_x_hyper'  action='pnew' directory='common' inherits='XCoordinate' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-<parameter name='subpage_x_automatic' from='string' to='AxisAutomaticSetting' member='automatic' 
-	xml='automatic' 
-	default='off' values='on/off/min_only/max_only' >
-     <release>Magics2.1</release>
-     <set value='off' name='subpage_x_max'/> 
-     <set value='off' name='subpage_x_min'/>
-     <set value='min_only' name='subpage_x_max'/> 
-     <set value='max_only' name='subpage_x_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-<parameter name='subpage_x_min_latitude' from='float' to='float'  member='min_lat' xml='min' default='-90' >
-   <release>Magics++2.10</release>
-</parameter>
-
-<parameter name='subpage_x_max_latitude' from='float' to='float'  member='max_lat' xml='max' default='90' >
-     <release>Magics++2.10</release>
-</parameter>
-
-<parameter name='subpage_x_min_longitude' from='float' to='float'  member='min_lon' xml='min' default='-180' >
-   <release>Magics++2.10</release>
-</parameter>
-
-<parameter name='subpage_x_max_longitude' from='float' to='float'  member='max_lon' xml='max' default='180' >
-   <release>Magics++2.10</release>
-</parameter>
-
-
-
-</class>
-
-
-
-<class name='YHyperCoordinate' xmltag='y_hyper' metview_prefix='subpage_' prefix='subpage/subpage_y/subpage_y_hyper'  action='pnew' directory='common' inherits='YCoordinate' include='Coordinate.h'>
-  This object contains the common attributes to the cartesian Projections
-<parameter name='subpage_y_automatic' from='string' to='AxisAutomaticSetting' 
-		values='on/off/min_only/max_only' member='automatic' xml='automatic' default='off' >
-         <release>Magics 2.1</release>
-        
-         <set value='off' name='subpage_y_max'/> 
-     <set value='off' name='subpage_y_min'/>
-     <set value='min_only' name='subpage_y_max'/> 
-     <set value='max_only' name='subpage_y_min'/>
-     <set value='off' name='subpage_y_date_max'/> 
-     <set value='off' name='subpage_y_date_min'/>
-     <set value='min_only' name='subpage_y_date_max'/> 
-     <set value='max_only' name='subpage_y_date_min'/>
-     <documentation> The Min and Max are calculated from the data</documentation>    
-</parameter>
-<parameter name='subpage_y_min_latitude' from='float' to='float'  member='min_lat' xml='min' default='-90' >
-         <release>Magics++2.10</release>         
- </parameter>
-
-<parameter name='subpage_y_max_latitude' from='float' to='float'  member='max_lat' xml='max' default='90' >
-         <release>Magics++2.10</release>         
-</parameter>
-
-<parameter name='subpage_y_min_longitude' from='float' to='float'  member='min_lon' xml='min' default='-180' >
- <documentation>Set Y min value</documentation>        
- <release>Magics++2.10</release>        
-</parameter>
-
-<parameter name='subpage_y_max_longitude' from='float' to='float'  member='max_lon' xml='max' default='180' >
- <documentation>Set max Lon value</documentation>        
-         <release>Magics++2.10</release>         
-</parameter>
-  
-
-</class>
-
-</magics>
diff --git a/src/xml/XmlBox.xml b/src/xml/XmlBox.xml
deleted file mode 100644
index f7a9c29..0000000
--- a/src/xml/XmlBox.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='XmlBox' directory='visualisers'>
-  <parameter name='box_left' from='string' to='string'
-             member='left' xml='left' default='5%'>
-         <release>Magics++0.8</release>
-         <documentation> Left Position of Box </documentation>
-         <migration>Only avalaible in MagML  </migration>
-  </parameter>
-
-  <parameter name='box_bottom' from='string' to='string'
-             member='bottom' xml='bottom' default='80%' >
-         <release>Magics++0.8</release>
-         <documentation> Botton Position of Box </documentation>
-         <migration> Only avalaible in MagML  </migration>
-  </parameter>
-
-  <parameter name='box_width' from='string' to='string'
-             member='width' xml='width' default='85%'>
-         <release>Magics++0.8</release>
-         <documentation> Length of text box in X direction </documentation>
-         <migration> Only avalaible in MagML  </migration>
-  </parameter>
-
-  <parameter name='box_height' from='string' to='string'
-             member='height' xml='height' default='10%'>
-         <release>Magics++0.1</release>
-         <documentation> Length of text box in Y direction </documentation>
-         <migration> Only avalaible in MagML  </migration>
-  </parameter>
-
-  <parameter name='blanking' from='string' to='bool'
-             member='blanking' default='off'>
-         <release>Magics++0.1</release>
-          <release_info>Paremeter defined but not implemeted : expected for Magics++0.6</release_info>
-         <documentation> All plotting in the text box previous to PTEXT call will be blanked out. Plotting after PTEXT call will not be affected. (ON/OFF) </documentation>
-         <migration> New Magics: Parameter text_box_blanking sent to new Magics[TextBox].  </migration>
-  </parameter>
-
-  <parameter name='frame' from='string' to='FrameBase'
-             member='frame' default='off'>
-         <release>Magics++0.5</release>    
-         <documentation> Plot border around text box (ON/OFF) </documentation>
-         <option name='Frame'   fortran='on'  xml='frame' include='Frame.h' />
-         	<option name='NoFrame' fortran='off' xml='noframe' include='Frame.h'/>
-         <migration> New Magics: Parameter text_border sent to new Magics[TextBox].  </migration>
-  </parameter>
-  
-  
-  
-  
-</class>
-
-<static name='box' class='TextBox' include_class='yes'/>
-
-
-</magics>
diff --git a/src/xml/XmlPage.xml b/src/xml/XmlPage.xml
deleted file mode 100644
index e71ffd2..0000000
--- a/src/xml/XmlPage.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-
-<class name='XmlPage' embedded_objects='Frame' directory='common'>
-
-  	<parameter name='format' from='string' to='string'
-                   member='format' xml='format' default='a4'>
-		<documentation> format of the page </documentation>
-  		<migration>  Only used in the MagML Interface  </migration>
-    		<release>Magics++0.7</release>
-	</parameter>
-
-	<parameter name='orientation' from='string' to='string'
-                   member='orientation' xml='orientation' default='landscape'>
-         	<documentation>  orientation of the page </documentation>
-           	<migration> Only used in the MagML Interface </migration>
-		<release>Magics++0.7</release>
-	</parameter>
-
-	<!--parameter name='frame' from='string' to='FrameBase' member='frame' default='off'>
-                <documentation> Plot frame around super page (ON/OFF) </documentation>
-         	<option name='Frame'   fortran='on'  xml='frame' include='Frame.h' />
-         	<option name='NoFrame' fortran='off' xml='noframe' include='Frame.h'/>
-         	<migration>  Only used in the MagML Interface  </migration>
-		<release>Magics++0.7</release>
-	</parameter-->
-	<parameter name='meta' from='string' to='MetaData'
-             member='meta' default='nometadata'>
-           <release>Magics++0.7</release>         
-         <documentation> Write metadata in xml format </documentation>
-         <option name='MetaData' xml='metadata' include='MetaData.h'/>
-         <option name='NoMetaData' xml='nometadata' include='MetaData.h'/>
-         <migration>  Only used in the MagML Interface  </migration>
-  </parameter>
-  
-</class>
-
-</magics>
diff --git a/src/xml/XmlSubPage.xml b/src/xml/XmlSubPage.xml
deleted file mode 100644
index 999de3d..0000000
--- a/src/xml/XmlSubPage.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-
-<class name='XmlSubPage' embedded_objects='FrameBase/PageIdBase/LegendBase/TitleBase' directory='common'>
-
-  <parameter name='bottom' from='string' to='string'
-             member='bottom' xml='bottom' default='0%'>
-	<documentation> Y-Coordinate of bottom of page.</documentation>
-	<migration> Only used in the MagML Interface </migration>
-	<release>Magics++0.8</release>
-  </parameter>
-  
-  <parameter name='left' from='string' to='string'
-             member='left' xml='left' default='0%'>
-	<documentation> X-Coordinate of bottom of page.</documentation>
-	<migration> Only used in the MagML Interface </migration>
-	<release>Magics++0.8</release>
-  </parameter>
-  
-   <parameter name='width' from='string' to='string'
-             member='width' xml='width' default='100%'>
-	<documentation> width of page.</documentation>
-	<migration> Only used in the MagML Interface </migration>
-	<release>Magics++0.8</release>
-  </parameter>
-  
-  <parameter name='height' from='string' to='string'
-             member='height' xml='height' default='100%' >
-	<documentation> Height of page.</documentation>
-	<migration> Only used in the MagML Interface </migration>
-	<release>Magics++0.1</release>
-  </parameter>
-
- 
-  
-  
-	
-  
-
-  
-  
-</class>
-
-
-
-</magics>
diff --git a/src/xml/graph_params.xml b/src/xml/graph_params.xml
deleted file mode 100644
index d13882c..0000000
--- a/src/xml/graph_params.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='GraphPlotting' xmltag='graph' directory='visualisers'>
-  <documentation>
-    This action routine (and C++object) controls the plotting of curves, bar charts and area charts.
-  </documentation>
- <parameter name='legend' from='string' to='bool' member='legend' xml='legend'  default='on' >
-         <documentation>  Turn on/off the legend for this graph (this parameter is new to Magics++) </documentation>
-         <release>1.3</release>
-         <set value='on' name='legend_user_text'/>
-    </parameter>
-
-  <parameter name='legend_user_text' from='string' to='string' member='legend_text' xml='legend_text'  default=''>
-         <documentation> User-defined text for the legend of this graph </documentation>
-  </parameter>
-
-  <parameter name='graph_type' from='string' to='Graph' member='type' xml='type' default='curve'>
-         <documentation> Defines the type of curve required  </documentation>
-         <migration> New Magics: Parameter graph_type sent to new Magics[Graph].  </migration>
-         <option name='Curve'   fortran='curve'  xml='curve' include='Curve.h' />      
-         <option name='Bar' fortran='bar' xml='bar'  include='Bar.h'/>
-         <option name='GraphFlag' fortran='flag' xml='flag'  include='Bar.h'/>
-         <option name='GraphArrow' fortran='arrow' xml='arrow'  include='Bar.h' />
-         <option name='CurveArea' fortran='area' xml='area'  include='Curve.h'/>
-  </parameter>
-</class>
-
-
-<class name='Graph' directory='visualisers'>
-</class>
-
-
-<class name='CurveArea' directory='visualisers' inherits='Curve' include='Curve.h'>
- 	<parameter name='graph_shade' from='string' to='GraphShade'  member='shade' default='on'>
-         <option name='GraphShade'   fortran='on'  xml='shading' include='GraphShade.h' />
-         <option name='NoGraphShade'   fortran='off'  xml='noshading' include='GraphShade.h' />
-         <documentation>Turn the shading on </documentation>
-   </parameter>
-</class>
-<class name='NoGraphShade' directory='visualisers' inherits='GraphShade' include='GraphShade.h'/>
-
-
-<class name='Curve' directory='visualisers' inherits='Graph' >
-  <documentation> Here comes the documentation of the Curve object </documentation>
-
-  <parameter name='graph_line' from='string' to='bool' member='line' xml='line' default='on'>
-         <documentation> Plot the curve line  </documentation>
-         <set value='on' name='graph_line_style'/>
-         <set value='on' name='graph_line_colour'/>
-         <set value='on' name='graph_line_thickness'/>
-  </parameter>
-
-  <parameter name='graph_line_style' from='string' to='LineStyle' member='style' xml='line_style' default='solid'>
-         <documentation> Line style of the curve </documentation>
-  </parameter>
-
-  <parameter name='graph_line_colour' from='string' to='Colour' member='colour' xml='line_colour' default='blue'>
-         <documentation> Colour of the curve</documentation>
-  </parameter>
-
-  <parameter name='graph_line_thickness' from='int' to='int' member='thickness' xml='line_thickness' default='1'>
-         <documentation> Thickness of the curve  </documentation>
-  </parameter>
-
-  <parameter name='graph_symbol' from='string' to='bool' member='symbol' default='off'>
-         <documentation> If symbols are to be drawn on the curves  </documentation>
-         <set value='on' name='graph_symbol_marker_index'/>
-         <set value='on' name='graph_symbol_height'/>
-         <set value='on' name='graph_symbol_colour'/>
-  </parameter>
-  
-  <parameter name='graph_symbol_marker_index' from='int' to='int' member='symbol_marker' xml='marker' default='3'>
-         <documentation> The marker symbol to be used. </documentation>
-  </parameter>
- 
-
-  <parameter name='graph_symbol_height' from='float' to='float' member='symbol_height' xml='height' default='0.2' >
-         <documentation> Height of  symbol </documentation>
-  </parameter>
-
-  <parameter name='graph_symbol_colour' from='string' to='Colour' member='symbol_colour' default='red'>
-         <documentation> Colour of graph symbol </documentation>
-  </parameter>
-  
- <parameter name='graph_x_suppress_below' from='float' to='float' member='x_below'  default='LLONG_MIN'>
-         <documentation> Value on the x  below which a point is considered missing </documentation>
-  </parameter>
-   <parameter name='graph_x_suppress_above' from='float' to='float' member='x_above' default='LLONG_MAX'>
-         <documentation> Value on the x  above which a point is considered missing </documentation>
-  </parameter>
-
-  <parameter name='graph_y_suppress_below' from='float' to='float'   member='y_below' default='LLONG_MIN'>
-         <documentation> Value on the y  below which a point is considered missing </documentation>
-  </parameter>
-
-  <parameter name='graph_y_suppress_above' from='float' to='float' member='y_above'  default='LLONG_MAX'>
-         <documentation> Value on the y  above which a point is considered missing </documentation>
-  </parameter>
-
-  
-  <parameter name='graph_missing_data_mode' from='string' to='string' member='missing_mode' default='ignore' values='ignore/join/drop'> 
-   <documentation> How to handle missing data  </documentation>
-   <set value='join' name='graph_missing_data_style'/>
-   <set value='join' name='graph_missing_data_colour'/>
-   <set value='join' name='graph_missing_data_thickness'/>
-    <set value='drop' name='graph_missing_data_style'/>
-   <set value='drop' name='graph_missing_data_colour'/>
-   <set value='drop' name='graph_missing_data_thickness'/>
- </parameter>
-  <parameter name='graph_missing_data_style' from='string' to='LineStyle' member='missing_style' xml='style' default='dash'>
-         <documentation> Line style of the missing data part of curve  </documentation>
-  </parameter>
-
-  <parameter name='graph_missing_data_colour' from='string' to='Colour' member='missing_colour' xml='colour' default='red' >
-         <documentation> Colour of the missing data part of curve </documentation>
-  </parameter>
-
-  <parameter name='graph_missing_data_thickness' from='int' to='int' member='missing_thickness' xml='thickness' default='1'>
-         <documentation> Thickness of the missing data part of curve  </documentation>
-  </parameter>
-</class>
-
-
-
-
-<class name='GraphFlag' directory='visualisers' inherits='Graph'  xmltag='flag' include='Bar.h' >
-  <parameter name='graph_flag_colour' from='string' to='Colour' member='colour' default='black'>
-         <documentation> The colour of the Flags!</documentation>
-  </parameter>
-  <parameter name='graph_flag_length' from='float' to='float' member='length'  default='0.75'>
-         <documentation> Physical length of wind flag shaft </documentation>
-  </parameter>
-</class>
-
-
-<class name='GraphArrow' directory='visualisers' inherits='Graph'  xmltag='arrow' include='Bar.h' >
-   <parameter name='graph_arrow_colour' from='string' to='Colour' member='colour'  default='black'>
-         <documentation> The colour of the arrows</documentation>
-  </parameter>
-  <parameter name='graph_arrow_unit_velocity' from='float' to='float' member='unit_velocity'  default='25.0'>
-        <documentation>Wind speed in m/s represented by a unit vector (1.0 cm).</documentation>
-  </parameter>
-</class>
-
-
-<class name='Bar' directory='visualisers' inherits='Graph'  xmltag='bar'  >
-  <parameter name='graph_bar_width' from='float' to='float' member='width' xml='width' default='INT_MAX' >
-         <documentation> The width of a bar in a bar chart </documentation>
-  </parameter>
-  <parameter name='graph_bar_justification' from='string' to='Justification' member='justification'  default='centre'>
-         <documentation> the bar will be centered on the value, or left, right justify : useful for plotting any accumulated fields</documentation>
-  </parameter>
-  <parameter name='graph_bar_style' from='string' to='string' member='bar_style'  value='bar/linebar' default='bar'>
-         <documentation> If candlestick, a line will be drawn at the position with 2 small perpendicular lines at top and bottom  </documentation>
-  </parameter>
-  
-
-  <parameter name='graph_bar_line_style' from='string' to='LineStyle' member='style' xml='line_style' default='solid'>
-         <documentation> Line Style of the Bar Border </documentation>
-  </parameter>
-
-  <parameter name='graph_bar_line_thickness' from='int' to='int' member='thickness' xml='line_thickness' default='1' >
-         <documentation> Thickness of the Bar Border </documentation>
-  </parameter>
-  
-  <parameter name='graph_bar_line_colour' from='string' to='Colour' member='line_colour' xml='line_colour' default='black'>
-         <documentation> The colour of the  the Bar Border</documentation>
-  </parameter>
-
-  <parameter name='graph_bar_colour' from='string' to='Colour' member='colour' xml='colour' default='blue'>
-         <documentation> The colour of the interiors of bars </documentation>
-  </parameter>
-
-  <parameter name='graph_bar_clipping' from='string' to='bool' member='clipping' xml='clipping'  default='on'>
-         <documentation> whether or not to clip the bar if they go outside the view area. </documentation>
-  </parameter>
-	<parameter name='graph_shade' from='string' to='GraphShade'  member='shade' default='on'>
-         <option name='GraphShade'   fortran='on'  xml='shading' include='GraphShade.h' />
-         <option name='NoGraphShade'   fortran='off'  xml='noshading' include='GraphShade.h' />
-         <documentation>Turn the shading on </documentation>
-   </parameter>
-  <parameter name='graph_bar_annotation' from='stringarray' to='stringarray' member='annotation' default='stringarray()'>
-         <documentation> add annotation on the top box : List of strings to use </documentation>
-  </parameter>
-
-  <parameter name='graph_bar_annotation_font_size' from='float' to='float' member='annotation_size' default='0.25'>
-         <documentation> Font size for annotation </documentation>
-  </parameter>
-
-  <parameter name='graph_bar_annotation_font_colour' from='string' to='Colour' member='annotation_colour' default='red'>
-         <documentation> Font size for annotation </documentation>
-  </parameter>
-  <parameter name='graph_bar_minimum_value' from='float' to='float' member='min_value' default='INT_MAX' >
-         <documentation> If set, defines the bottom of the bar </documentation>
-  </parameter>
-</class>
-
-
-<class name='GraphShade'  directory='visualisers'>
- <parameter name='graph_shade_style' from='string' to='GraphShadeStyle' member='style' default='area_fill'>
-         <!--option name='GraphShadeStyle' fortran='solid' xml='areafill' include='GraphShadeStyle.h'/-->
-         <option name='GraphShadeStyle' fortran='area_fill'  xml='solid' include='GraphShadeStyle.h'/>
-         <option name='HatchGraphShadeStyle' fortran='hatch' xml='hatch' include='GraphShadeStyle.h'/>
-         <option name='DotGraphShadeStyle' fortran='dot' xml='dot' include='GraphShadeStyle.h'/>
-         <documentation>  Style of shading </documentation>
-  </parameter>
-</class>
-
-
-<class name='GraphShadeStyle'  directory='visualisers'>
-  <parameter name='graph_shade_colour' from='string' to='Colour' member='colour' xml='colour' default='blue' >
-         <documentation> The colour of the shaded part of bars </documentation>
-  </parameter>
-</class>
- 
- 
-<class name='DotGraphShadeStyle'  directory='visualisers' inherits='GraphShadeStyle' include='GraphShadeStyle.h'>
-   <parameter name='graph_shade_dot_density' from='int' to='int' member='density' xml='dot_density' default='20'>
-         <documentation> Density per square cm. of shading dots </documentation>
-  </parameter>
-
-  <parameter name='graph_shade_dot_size' from='float' to='float' member='size' xml='dot_size' default='0.02' >
-         <documentation> Size of shading dots  </documentation>
-  </parameter>
-</class>
-
-
-<class name='HatchGraphShadeStyle'  directory='visualisers'  inherits='GraphShadeStyle' include='GraphShadeStyle.h'>
-  <parameter name='graph_shade_hatch_index' from='int' to='int' member='index' xml='hatch_index' default='0'>
-         <documentation>Hatch index number</documentation>
-  </parameter>
-</class>
-</magics>
diff --git a/src/xml/magml.xml b/src/xml/magml.xml
deleted file mode 100644
index c2b2319..0000000
--- a/src/xml/magml.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<!--
-
-    Meanings of 'occurence' attributes:
-      1:  exactly 2 allowed
-      1+: one or more allowed
-      0+: zero or more allowed
-      01: zero or one allowed
-
--->
-
-
-<magml1>
-  <element name='magics' occurrence='1'> 
-    <element name='page' occurrence='1+' object='XmlPage' chapter='layout_mapping_coastlines'>  
-      <element name='subpage' occurrence='1+' object='XmlSubPage' chapter='layout_mapping_coastlines'>
-        <element name='coastlines' occurrence='0+' object='Coastlines' chapter='layout_mapping_coastlines'/>
-        <element name='layer or xylayer' occurrence='0+' object='VisualTask'>
-          <choice name='decoder' occurrence='1'> 
-            <element name='grib'   object='GribDecoder'   chapter='data'/>
-            <element name='netcdf' object='NetcdfDecoder' chapter='data'/>
-            <!--<element name='odb'    object='OdbDecoder'    chapter='data'/>-->
-            <element name='bufr'   object='ObsDecoder'    chapter='data'/>
-            <element name='import' object='ImportAction'  chapter='data'/>
-          </choice>
-          <choice name='visualisation' occurrence='1+'>
-            <element name='geocontour' object='Contour'        chapter='contour'/>
-            <element name='symbol'     object='SymbolPlotting'/>
-            <element name='wind'       object='Wind'/>
-            <element name='obs'        object='ObsPlotting'/>
-            <element name='image'      object='ImagePlotting'/>
-            <element name='graph'      object='GraphPlotting'/>
-            <element name='plot'       object='ImportPlot'/>
-            <element name='text'       object='TextAction'/>
-            <element name='legend'     object='Legend'/>
-            <element name='horizontal_axis' object='XYTransformation'/>
-            <element name='vertical_axis'   object='XYTransformation'/>
-          </choice>
-        </element>
-      </element>
-    </element>
-  </element>
-</magml1>
-
-
-<magml2>
-  <element name='magics' occurrence='1'> 
-    <element name='drivers' occurrence='1' chapter='drivers'>  
-      <element name='ps'            occurrence='01'  object='PostScriptDriver' chapter='drivers'/>  
-      <element name='svg'           occurrence='01'  object='SVGDriver'        chapter='drivers'/>  
-      <element name='kml'           occurrence='01'  object='KMLDriver'        chapter='drivers'/> 
-      <element name='pdf'           occurrence='01'  object='CairoDriver'      chapter='drivers'  linkid='Cairo_Driver'/>  
-      <element name='png'           occurrence='01'  object='CairoDriver'      chapter='drivers'  linkid='Cairo_Driver'/>  
-      <element name='gif'           occurrence='01'  object='GDDriver'         chapter='drivers'  linkid='GD_Driver' />  
-      <element name='gif_animation' occurrence='01'  object='GDDriver'         chapter='drivers'  linkid='GD_Driver' />  
-      <!-- <element name='cairo' occurrence='0+'  object='KMLDriver'        chapter='drivers'/> -->
-    </element>
-
-    <element name='page' occurrence='1+' object='XmlSceneNode' chapter='layout_mapping_coastlines'>  
-      <element name='gribloop' occurrence='0+' object='GribLoop' chapter='data' linkid='GRIBloop_input_magml_all_tables'>
-        <element name='map' occurrence='1+' object='XmlViewNode' chapter='layout_mapping_coastlines'>
-          <choice name='background' occurrence='1+'> 
-            <element name='coastlines' occurrence='0+' object='Coastlines' chapter='layout_mapping_coastlines'/>
-            <element name='taylor_grid' occurrence='0+' object='TaylorGrid' chapter='layout_mapping_coastlines'/>
-            <element name='horizontal_axis' object='Axis' chapter='axis'/>
-            <element name='vertical_axis'   object='Axis' chapter='axis'/>
-          </choice>
-          <element name='plot' occurrence='0+' object=''>
-            <choice name='decoder' occurrence='1'> 
-              <element name='grib'           object='GribDecoder'         chapter='data'/>
-              <element name='netcdf'         object='NetcdfDecoder'       chapter='data'/>
-              <!--<element name='odb'    object='OdbDecoder'    chapter='data'/>-->
-              <!--<element name='bufr'   object='ObsDecoder'    chapter='data'/>-->
-              <element name='polyline_input' object='SimplePolylineInput' chapter='polyline'/>
-            </choice>
-            <choice name='visualisation' occurrence='1+'>
-              <element name='contour'  object='Contour'            chapter='contour'/>
-              <element name='text'     object='TextVisitor'        chapter='text'/>
-              <element name='legend'   object='LegendVisitor'      chapter='legend'/>
-              <element name='polyline' object='SimplePolyline'     chapter='polyline'/>   
-              <element name='wind'     object='Wind'/>            
-              <element name='symbol'   object='SymbolPlotting'     chapter='symbol'/>            
-              <!--<element name='boxplot'  object='BoxPlotVisualiser'  chapter='boxplot'/>-->    
-            </choice>
-          </element>
-        </element>
-      </element>
-    </element>
-  </element>
-</magml2>
-
-
-<justcontour>
-  <element name='magics' occurrence='1'> 
-
-    <element name='page' occurrence='1+' object='XmlSceneNode' chapter='layout_mapping_coastlines'>  
-      <element name='map' occurrence='1+' object='XmlViewNode' chapter='layout_mapping_coastlines'>
-        <element name='layer' occurrence='0+' object=''>
-          <choice name='visualisation' occurrence='1+'>
-            <element name='contour'  object='Contour'            chapter='contour'/>
-          </choice>
-        </element>
-      </element>
-    </element>
-  </element>
-</justcontour>
-
-
-
-<epsml>
-  <element name='eps' occurrence='1'> 
-    <element name='station'    occurrence='1+' object='XmlPage' chapter='layout_mapping_coastlines'>  
-    </element>
-  </element>
-</epsml>
diff --git a/src/xml/output.xml b/src/xml/output.xml
deleted file mode 100644
index 0835592..0000000
--- a/src/xml/output.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml-stylesheet type='text/css' href='parameter.css'?>
-<magics>
-<class name='OutputHandler' xmltag='output' action ='popen' directory='common'>    
-
-   <parameter name='output_format' from='string' to='string' member='format' xml='format' default='ps' >
-         <documentation>Defines the device to be used (ps/gif/svg).</documentation>
-	 <release>1.2</release>
-   </parameter>
-
-   <parameter name='output_formats' from='stringarray' to='stringarray' member='formats' xml='formats' default='stringarray()'>
-         <documentation>Defines the list of devices to be used (ps/gif/svg).</documentation>
-         <release>1.2</release>        
-   </parameter>  
-
-</class>
-</magics>
diff --git a/test/C/Makefile.am b/test/C/Makefile.am
deleted file mode 100755
index d425621..0000000
--- a/test/C/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-AUTOMAKE_OPTIONS     = foreign
-
-if MAGICS_CAIRO
-check_PROGRAMS       = contours land_sea_shade large_area drivers cairo
-else
-check_PROGRAMS       = contours land_sea_shade large_area
-endif
-
-TESTS_ENVIRONMENT    = MAGPLUS_HOME=$(top_srcdir)
-TESTS                = $(check_PROGRAMS)
-
-if MAGICS_BUFR
-FORTRAN_LIBS         = $(FLIBS)
-endif
-
-MAGPLUS              = -L$(top_srcdir)/src -L$(top_srcdir)/src/.libs -lMagPlus
-
-AM_CPPFLAGS          = -I$(top_srcdir)/src/common
-LDADD                = $(MAGPLUS) ${MAGICS_3RDPARTY_LIBS} ${FORTRAN_LIBS} ${CPPLIBS}
-
-drivers_SOURCES         = drivers.c
-contours_SOURCES        = contours.c
-land_sea_shade_SOURCES  = land_sea_shade.c
-large_area_SOURCES      = large_area.c
-cairo_SOURCES           = cairo.c
diff --git a/test/C/Makefile.in b/test/C/Makefile.in
deleted file mode 100644
index d04cbcf..0000000
--- a/test/C/Makefile.in
+++ /dev/null
@@ -1,724 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
- at MAGICS_CAIRO_FALSE@check_PROGRAMS = contours$(EXEEXT) \
- at MAGICS_CAIRO_FALSE@	land_sea_shade$(EXEEXT) \
- at MAGICS_CAIRO_FALSE@	large_area$(EXEEXT)
- at MAGICS_CAIRO_TRUE@check_PROGRAMS = contours$(EXEEXT) \
- at MAGICS_CAIRO_TRUE@	land_sea_shade$(EXEEXT) large_area$(EXEEXT) \
- at MAGICS_CAIRO_TRUE@	drivers$(EXEEXT) cairo$(EXEEXT)
-subdir = test/C
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am_cairo_OBJECTS = cairo.$(OBJEXT)
-cairo_OBJECTS = $(am_cairo_OBJECTS)
-cairo_LDADD = $(LDADD)
-am__DEPENDENCIES_1 =
- at MAGICS_BUFR_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-cairo_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am_contours_OBJECTS = contours.$(OBJEXT)
-contours_OBJECTS = $(am_contours_OBJECTS)
-contours_LDADD = $(LDADD)
-contours_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
-am_drivers_OBJECTS = drivers.$(OBJEXT)
-drivers_OBJECTS = $(am_drivers_OBJECTS)
-drivers_LDADD = $(LDADD)
-drivers_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
-am_land_sea_shade_OBJECTS = land_sea_shade.$(OBJEXT)
-land_sea_shade_OBJECTS = $(am_land_sea_shade_OBJECTS)
-land_sea_shade_LDADD = $(LDADD)
-land_sea_shade_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_1)
-am_large_area_OBJECTS = large_area.$(OBJEXT)
-large_area_OBJECTS = $(am_large_area_OBJECTS)
-large_area_LDADD = $(LDADD)
-large_area_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_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_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-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_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(cairo_SOURCES) $(contours_SOURCES) $(drivers_SOURCES) \
-	$(land_sea_shade_SOURCES) $(large_area_SOURCES)
-DIST_SOURCES = $(cairo_SOURCES) $(contours_SOURCES) $(drivers_SOURCES) \
-	$(land_sea_shade_SOURCES) $(large_area_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-TESTS_ENVIRONMENT = MAGPLUS_HOME=$(top_srcdir)
-TESTS = $(check_PROGRAMS)
- at MAGICS_BUFR_TRUE@FORTRAN_LIBS = $(FLIBS)
-MAGPLUS = -L$(top_srcdir)/src -L$(top_srcdir)/src/.libs -lMagPlus
-AM_CPPFLAGS = -I$(top_srcdir)/src/common
-LDADD = $(MAGPLUS) ${MAGICS_3RDPARTY_LIBS} ${FORTRAN_LIBS} ${CPPLIBS}
-drivers_SOURCES = drivers.c
-contours_SOURCES = contours.c
-land_sea_shade_SOURCES = land_sea_shade.c
-large_area_SOURCES = large_area.c
-cairo_SOURCES = cairo.c
-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) --foreign test/C/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign test/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-checkPROGRAMS:
-	@list='$(check_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
-cairo$(EXEEXT): $(cairo_OBJECTS) $(cairo_DEPENDENCIES) 
-	@rm -f cairo$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(cairo_OBJECTS) $(cairo_LDADD) $(LIBS)
-contours$(EXEEXT): $(contours_OBJECTS) $(contours_DEPENDENCIES) 
-	@rm -f contours$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(contours_OBJECTS) $(contours_LDADD) $(LIBS)
-drivers$(EXEEXT): $(drivers_OBJECTS) $(drivers_DEPENDENCIES) 
-	@rm -f drivers$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(drivers_OBJECTS) $(drivers_LDADD) $(LIBS)
-land_sea_shade$(EXEEXT): $(land_sea_shade_OBJECTS) $(land_sea_shade_DEPENDENCIES) 
-	@rm -f land_sea_shade$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(land_sea_shade_OBJECTS) $(land_sea_shade_LDADD) $(LIBS)
-large_area$(EXEEXT): $(large_area_OBJECTS) $(large_area_DEPENDENCIES) 
-	@rm -f large_area$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(large_area_OBJECTS) $(large_area_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/cairo.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/contours.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/drivers.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/land_sea_shade.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/large_area.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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(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 am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
-	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
-	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
-	    else \
-	      skipped="($$skip tests were not run)"; \
-	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
-
-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_PROGRAMS)
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-checkPROGRAMS 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-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 all all-am check check-TESTS check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	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 \
-	tags 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/test/C/cairo.c b/test/C/cairo.c
deleted file mode 100644
index b9493b6..0000000
--- a/test/C/cairo.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-#include "magics_api.h"
-#include <cairo.h>
-
-int main(int argc, char **argv)
-{
-        /* First setup your cairo context */
-        cairo_surface_t *surface;
-        cairo_t* cr;
-
-        surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 800, 500);
-        cr = cairo_create (surface);
-        cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
-
-        /* Then call Magics++ */
-        mag_open();
-        mag_setp("output_cairo_drawing_context", cr);
-        mag_setc ("output_format","cairo");
-        mag_coast();
-        mag_close();
-
-        /* Then continue with cairo ... */
-        cairo_destroy (cr);
-        cr = cairo_create (surface);
-        cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
-        cairo_select_font_face (cr, "serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
-        cairo_set_font_size (cr, 32.0);
-
-        cairo_move_to (cr, 80., 100.0);
-        cairo_show_text (cr, "Hello, this is CAIRO calling Magics++");
-
-        cairo_destroy (cr);
-        cairo_surface_write_to_png (surface, "cairo.png");
-        cairo_surface_destroy (surface);
-}
diff --git a/test/C/contours.c b/test/C/contours.c
deleted file mode 100644
index c43b90e..0000000
--- a/test/C/contours.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-#include <magics_api.h>
-
-int main()
-{
-	/* open magics and set the output device */
-	mag_open();
-	mag_setc("output_format", "ps");
-	mag_setc("output_name", "contour_test");
-
-	/* load the data */
-
-	mag_setc ("grib_input_file_name", "../data/z500.grb");
-	mag_grib ();
-
- 
-	/* set up the coastline attributes */
-
-	mag_setc ("map_coastline_colour",    "khaki");
-	mag_setc ("map_grid_colour",	     "grey");     
-
-
-	/* define the contouring parameters */
-
-	mag_setc ("contour_line_colour",      "sky");
-	mag_setc ("contour_highlight_colour", "green");
-	mag_cont ();
-
-
-	/* plot the title text and the coastlines */
-
-	mag_text  ();
-	mag_coast ();
-
-
-	/* Start a new page - we will plot a smaller area */
-
-	mag_new ("super_page");
-
-	mag_setr ("SUBPAGE_LOWER_LEFT_LATITUDE",    30.0);
-	mag_setr ("SUBPAGE_LOWER_LEFT_LONGITUDE",  -30.0);
-	mag_setr ("SUBPAGE_UPPER_RIGHT_LATITUDE",   68.0);
-	mag_setr ("SUBPAGE_UPPER_RIGHT_LONGITUDE",  70.0);
-
-	mag_text  ();
-	mag_coast ();
-	mag_cont  ();
-
-	mag_close ();
-	return 0;
-}
diff --git a/test/C/drivers.c b/test/C/drivers.c
deleted file mode 100644
index fff73bb..0000000
--- a/test/C/drivers.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-/* \file drivers.c
-
-   \brief test if the different output drivers work in C
-*/
-
-#include <magics_api.h>
-
-int main()
-{
-	const char *formats[] = {"svg","kml","ps","pdf","png"};
-	const int num = 5;
-
-	/* open magics and set the output device */
-	mag_open();
-	mag_set1c("output_formats", formats, num);
-	mag_setc("output_name", "driver_test");
-	mag_coast();
-
-	mag_close();
-
-	return 0;
-}
diff --git a/test/C/land_sea_shade.c b/test/C/land_sea_shade.c
deleted file mode 100644
index 1569abf..0000000
--- a/test/C/land_sea_shade.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-#include <magics_api.h>
-
-int main()
-{
-	/* open magics and set the output filename */
-	mag_open ();
-	mag_setc ("output_name", "land_sea_shade");
-
-
-	/* Set up the coastline attributes */
-	mag_setc ("map_coastline", 	  "on");
-	mag_setc ("map_coastline_colour", "grey");
-	mag_setc ("map_grid_colour",	  "grey");
-
-	/* First page: land and sea shading together: */
-	mag_setc  ("text_line_1", "LAND and SEA shading");
-	mag_setc  ("map_coastline_land_shade",        "on");
-	mag_setc  ("map_coastline_land_shade_colour", "cream");
-	mag_setc  ("map_coastline_sea_shade",         "on");
-	mag_setc  ("map_coastline_sea_shade_colour",  "blue");
-	mag_coast ();
-	mag_text  ();
-
-	/* Second page: land shading only: */
-	mag_new   ("super_page");
-	mag_setc  ("text_line_1", "LAND shading only");
-	mag_setc  ("map_coastline_land_shade", "on");
-	mag_setc  ("map_coastline_sea_shade",  "off");
-	mag_coast ();
-	mag_text  ();
-
-	/* Third page: sea shading only: */
-	mag_new   ("super_page");
-	mag_setc  ("text_line_1", "SEA shading only");
-	mag_setc  ("map_coastline_land_shade",  "off");
-	mag_setc  ("map_coastline_sea_shade",   "on");
-	mag_coast ();
-	mag_text  ();
-
-	/* Fourth page:  land and sea shading together, zoom in: */
-	mag_new   ("super_page");
-	mag_setc  ("text_line_1", "LAND and SEA shading");
-	mag_setr  ("subpage_lower_left_latitude",	   30.0);
-	mag_setr  ("subpage_lower_left_longitude",    -30.0);
-	mag_setr  ("subpage_upper_right_latitude",     68.0);
-	mag_setr  ("subpage_upper_right_longitude",    70.0);
-	mag_setc  ("map_coastline_land_shade",        "on");
-	mag_setc  ("map_coastline_sea_shade",         "on");
-	mag_coast ();
-	mag_text  ();
-
-	mag_close ();
-	return 0;
-}
diff --git a/test/C/large_area.c b/test/C/large_area.c
deleted file mode 100644
index 7eabd3b..0000000
--- a/test/C/large_area.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/******************************** LICENSE ********************************
-
- Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at 
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- ******************************** LICENSE ********************************/
-
-#include <magics_api.h>
-
-/* This example demonstrates plotting an area with larger than
-360 degrees of longitude. The data and coastline are wrapped
-around seamlessly */
-
-int main()
-{
-	/* Open magics and set the output filename */
-	mag_open ();
-	mag_setc ("OUTPUT_NAME", "large_area");
-
-	/* Set our geographical area - larger than 360 degrees wide */
-	mag_setr ("SUBPAGE_LOWER_LEFT_LATITUDE",    -60.0);
-	mag_setr ("SUBPAGE_LOWER_LEFT_LONGITUDE",  -220.0);
-	mag_setr ("SUBPAGE_UPPER_RIGHT_LATITUDE",    60.0);
-	mag_setr ("SUBPAGE_UPPER_RIGHT_LONGITUDE",  320.0);
-
-	/* Pass the data to MAGICS */
-	mag_setc ("GRIB_INPUT_FILE_NAME", "../data/z500.grb");
-	mag_grib ();
-
-	/* Set up the coastline attributes */
-	mag_setc ("MAP_COASTLINE_COLOUR", "GREY");
-	mag_setc ("MAP_GRID_COLOUR",      "GREY");
-
-	/* Define the contour */
-	mag_setc ("CONTOUR_SHADE",            "ON");
-	mag_setc ("CONTOUR_SHADE_TECHNIQUE",  "POLYGON_SHADING");
-	mag_setc ("CONTOUR_SHADE_METHOD",     "AREA_FILL");
-	mag_setc ("CONTOUR_HILO",             "OFF");
-	mag_cont ();
-
-	/* Set up and plot the title text */
-	mag_setc ("TEXT_LINE_1",  "Area wider than 360 degrees");
-	mag_text ();
-
-	/* Plot the coastlines and then close */
-	mag_coast ();
-
-	mag_close ();
-	return 0;
-}
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..a46d742
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,95 @@
+
+# Basic test 
+if ( ENABLE_PYTHON )
+   ecbuild_add_test( TARGET basic_python
+              TYPE PYTHON
+              ARGS coast.py
+              RESOURCES coast.py 
+              ENVIRONMENT PYTHONPATH=${MAG_PYTHON_PATH} )
+endif()
+
+if ( ENABLE_FORTRAN) 
+    ecbuild_add_test( TARGET basic_fortran_shared
+            SOURCES   coast.f90
+            LIBS      MagPlusSingle MagPlusShared
+            LINKER_LANGUAGE Fortran )
+    if ( ENABLE_STATIC_LIBRARY )
+        ecbuild_add_test( TARGET basic_fortran_static
+            SOURCES   coast.f90
+            LIBS      MagPlusSingle MagPlusStatic ${MAGICS_EXTRA_LIBRARIES} 
+            LINKER_LANGUAGE Fortran )       
+     endif()
+endif()
+    
+if ( ENABLE_BUFR )
+    if ( ENABLE_PYTHON )
+       ecbuild_add_test( TARGET bufr_python
+                  TYPE PYTHON
+                  ARGS bufr.py
+                  RESOURCES bufr.py data.bufr 
+                  ENVIRONMENT PYTHONPATH=${MAG_PYTHON_PATH} )
+    endif()
+    if ( ENABLE_FORTRAN) 
+        ecbuild_add_test( TARGET bufr_fortran
+                SOURCES   bufr.f90
+                LIBS      MagPlusSingle MagPlusShared
+                RESOURCES data.bufr
+                LINKER_LANGUAGE Fortran )
+        if ( ENABLE_STATIC_LIBRARY )
+             ecbuild_add_test( TARGET bufr_fortran_static
+                    SOURCES   bufr.f90
+                    RESOURCES data.bufr
+                    LIBS      MagPlusSingle MagPlusStatic
+                    LINKER_LANGUAGE Fortran )       
+         endif()
+    endif()
+endif()
+
+
+
+
+if ( ENABLE_GRIB )
+    if ( ENABLE_PYTHON )
+       ecbuild_add_test( TARGET grib_python
+                  TYPE PYTHON
+                  ARGS grib.py
+                  RESOURCES grib.py data.grib
+                  ENVIRONMENT PYTHONPATH=${MAG_PYTHON_PATH} )
+    endif()
+    if ( ENABLE_FORTRAN) 
+        ecbuild_add_test( TARGET grib_fortran
+                SOURCES   grib.f90
+                LIBS      MagPlusSingle MagPlusShared
+                RESOURCES data.grib
+                LINKER_LANGUAGE Fortran )
+    endif()
+endif()
+
+
+
+if ( ENABLE_CAIRO ) 
+    if ( ENABLE_PYTHON )
+        ecbuild_add_test( TARGET cairo_python
+                  TYPE PYTHON
+                  ARGS cairo.py
+                  RESOURCES cairo.py 
+                  ENVIRONMENT PYTHONPATH=${MAG_PYTHON_PATH} )
+    endif()
+      if ( ENABLE_FORTTAN )
+        ecbuild_add_test( TARGET cairo_fortran
+                SOURCES   cairo.f90
+                LIBS      MagPlusSingle MagPlusShared
+                LINKER_LANGUAGE Fortran )
+    endif()
+endif()
+
+if ( ENABLE_ODB )
+    if ( ENABLE_PYTHON )
+        ecbuild_add_test( TARGET odb_python
+                  TYPE PYTHON
+                  ARGS odb.py
+                  RESOURCES odb.py test.odb
+                  ENVIRONMENT PYTHONPATH=${MAG_PYTHON_PATH} )
+    endif()
+endif()
+
diff --git a/test/MagML/Makefile.am b/test/MagML/Makefile.am
deleted file mode 100644
index 76114ff..0000000
--- a/test/MagML/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-AUTOMAKE_OPTIONS  = foreign
-M_COLOR_TESTS     = always
-
-TESTS_ENVIRONMENT = MAGPLUS_HOME=$(top_srcdir) $(top_builddir)/apps/MagMLInterpretor/magmlx
-TESTS             = drivers.magml
-
-EXTRA_DIST        = drivers.magml
diff --git a/test/MagML/Makefile.in b/test/MagML/Makefile.in
deleted file mode 100644
index 5db5e0e..0000000
--- a/test/MagML/Makefile.in
+++ /dev/null
@@ -1,541 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = test/MagML
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-M_COLOR_TESTS = always
-TESTS_ENVIRONMENT = MAGPLUS_HOME=$(top_srcdir) $(top_builddir)/apps/MagMLInterpretor/magmlx
-TESTS = drivers.magml
-EXTRA_DIST = drivers.magml
-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) --foreign test/MagML/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign test/MagML/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
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
-	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
-	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
-	    else \
-	      skipped="($$skip tests were not run)"; \
-	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
-
-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
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-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: check-am install-am install-strip
-
-.PHONY: all all-am check check-TESTS check-am clean clean-generic \
-	clean-libtool 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 \
-	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/test/MagML/drivers.magml b/test/MagML/drivers.magml
deleted file mode 100644
index 5b02646..0000000
--- a/test/MagML/drivers.magml
+++ /dev/null
@@ -1,123 +0,0 @@
-<!--
- This file shows how various drivers can be used in MagML.
--->
-<magics version="3.0" width='29.7' height='21'>
-
-<drivers>
-	<ps name="myname" filelist='on'
-		scale="0.97"/>
-	<kml name="mykml"  filelist='on'
-		title="Contours over Europe"
-		description="A simple KML example with Magics++"
-		author="The nice folk at ECMWF"
-		height='0'
-		latitude='49.'
-		longitude='12.'
-		transparency='80'
-		tilt='5.'
-		range='6500'
-		coastlines='ON' />
-<!--
-	<png name="mypng"  filelist='on'
-		output_cairo_transparent_background='on' />
--->
-	<svg name="mysvg"  filelist='on'
-		title="Contours over Europe" 
-		desc="This plot shows a forecast from ECMWF"
-		meta="Grib contours" />
-<!--
-	<gif_animation name="myanimation"  filelist='on'
-		output_gif_delay="200" />
-	<gif name="mygif"  filelist='on'/>
--->
-</drivers>
-
-<page format='a4' orientation='landscape'>
-   <map>
-      <text font='sansserif' colour='rgb(0.1,0.6,0.2)' bottom="90%" display="inline" >Z500 Contour Plot</text>
-<!--
-      <cylindrical>
-          <corners min_latitude='25' max_latitude='75' min_longitude='-30' max_longitude='77'/>
-      </cylindrical>
--->
-      <cylindrical lower_left_longitude='-20' lower_left_latitude='25' upper_right_latitude='70' upper_right_longitude='50'/>
-
-      <plot>
-          <grib input_file_name='../data/z500.grb'/>
-          <contour>
-             <isoline style='solid' thickness='2' colour='blue'/>
-          </contour>
-      </plot>
-      <coastlines land_shade='off' sea_shade='off'/>
-   </map>
-</page>
-
-<page format='a4' orientation='landscape'>
-   <map>
-      <text font='sansserif' colour='rgb(0.1,0.6,0.2)' bottom="90%" display="inline" >Page2</text>
-
-      <cylindrical lower_left_longitude='-20' lower_left_latitude='25' upper_right_latitude='70' upper_right_longitude='50'/>
-
-           <plot>
-              <grib input_file_name='../data/z500.grb'/>
-              <contour>
-                 <isoline style='solid' thickness='1' colour='blue'>
-		   <shading>
-		     <polygon>
-                      <area_fill/>
-                     </polygon>
-		     <list colour_list='pink/red/red_orange/orange/yellow/yellow_green/green/evergreen/kelly_green/blue/navy/purple' />
-                   </shading>
-	        </isoline>
-	      </contour>
-	   </plot>
-       <coastlines land_shade='off' sea_shade='off'/>
-    </map>
-</page>
-
-<page format='a4' orientation='landscape'>
-   <map>
-      <text font='sansserif' colour='rgb(0.1,0.6,0.2)' bottom="90%" display="inline" >Page2</text>
-
-      <cylindrical lower_left_longitude='-20' lower_left_latitude='25' upper_right_latitude='70' upper_right_longitude='50'/>
-
-           <plot>
-              <grib input_file_name='../data/z500.grb'/>
-              <contour>
-                 <isoline style='solid' thickness='1' colour='blue'>
-		   <shading>
-		     <polygon>
-                      <hatch/>
-                     </polygon>
-		     <list colour_list='pink/red/red_orange/orange/yellow/yellow_green/green/evergreen/kelly_green/blue/navy/purple' />
-                   </shading>
-	        </isoline>
-	      </contour>
-	   </plot>
-       <coastlines land_shade='off' sea_shade='off'/>
-    </map>
-</page>
-
-<page format='a4' orientation='landscape'>
-   <map>
-      <text font='sansserif' colour='rgb(0.1,0.6,0.2)' bottom="90%" display="inline" >Page2</text>
-
-      <cylindrical lower_left_longitude='-20' lower_left_latitude='25' upper_right_latitude='70' upper_right_longitude='50'/>
-
-           <plot>
-              <grib input_file_name='../data/z500.grb'/>
-              <contour>
-                 <isoline style='solid' thickness='1' colour='blue'>
-		   <shading>
-		     <polygon>
-                      <dot/>
-                     </polygon>
-		     <list colour_list='pink/red/red_orange/orange/yellow/yellow_green/green/evergreen/kelly_green/blue/navy/purple' />
-                   </shading>
-	        </isoline>
-	      </contour>
-	   </plot>
-       <coastlines land_shade='off' sea_shade='off'/>
-    </map>
-</page>
-</magics>
diff --git a/test/Makefile.am b/test/Makefile.am
deleted file mode 100644
index 28ceea3..0000000
--- a/test/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-AUTOMAKE_OPTIONS	= foreign
-
-if MAGICS_PYTHON
-python_subdir = python
-endif
-
-SUBDIRS		= C MagML fortran $(python_subdir) .
-
-#TESTS_ENVIRONMENT = python 
-#TESTS             = create_index.py
-
-EXTRA_DIST	= data/z500.grb \
-		data/uv500.grb \
-		data/t850_fc_12.grib \
-		data/z500_fc_12.grib \
-		data/t2m_fc12.grib \
-		data/cloudcover.grib \
-		data/wind30m_fc12.grib
diff --git a/test/Makefile.in b/test/Makefile.in
deleted file mode 100644
index 3fe3004..0000000
--- a/test/Makefile.in
+++ /dev/null
@@ -1,656 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = test
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = C MagML fortran python .
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-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"
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
- at MAGICS_PYTHON_TRUE@python_subdir = python
-SUBDIRS = C MagML fortran $(python_subdir) .
-
-#TESTS_ENVIRONMENT = python 
-#TESTS             = create_index.py
-EXTRA_DIST = data/z500.grb \
-		data/uv500.grb \
-		data/t850_fc_12.grib \
-		data/z500_fc_12.grib \
-		data/t2m_fc12.grib \
-		data/cloudcover.grib \
-		data/wind30m_fc12.grib
-
-all: all-recursive
-
-.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) --foreign test/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign test/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
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-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
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    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
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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 Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-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 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:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean 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 installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	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/test/bufr.f90 b/test/bufr.f90
new file mode 100644
index 0000000..1e01c54
--- /dev/null
+++ b/test/bufr.f90
@@ -0,0 +1,31 @@
+	program magics
+
+	call popen
+
+	call pset1c("output_formats", (/"ps"/), 1)
+	call psetc("output_name", "bufr")
+	call psetc("output_name_first_page_number", "off")
+
+	call psetr("subpage_lower_left_longitude", -20.00)
+	call psetr("subpage_upper_right_longitude", 60.00)
+	call psetr("subpage_upper_right_latitude", 60.00)
+	call psetc("subpage_map_projection", "cylindrical")
+	call psetr("subpage_lower_left_latitude", 30.00)
+
+	call psetc("obs_input_file_name", "synop.bufr")
+	call pobs
+
+	call preset('obs_input_file_name')
+
+	call psetc("map_grid_colour", "tan")
+	call psetc("map_grid", "on")
+	call psetc("map_coastline_colour", "tan")
+	call pcoast
+
+	call preset('map_grid_colour')
+	call preset('map_grid')
+	call preset('map_coastline_colour')
+
+	call pclose
+
+	end
diff --git a/test/bufr.py b/test/bufr.py
new file mode 100644
index 0000000..0a9de3e
--- /dev/null
+++ b/test/bufr.py
@@ -0,0 +1,53 @@
+# importing Magics module
+
+from Magics.macro import *
+
+
+# Example reference
+
+ref = 'bufr'
+
+# Setting of the output file name
+
+output = output(output_formats=['ps'],
+                output_name_first_page_number='off',
+                output_name=ref)
+
+# Setting the coordinates of the geographical area
+
+europe = mmap(
+    subpage_upper_right_longitude=60.,
+    subpage_map_projection='cylindrical',
+    subpage_lower_left_longitude=-20.,
+    subpage_lower_left_latitude=30.,
+    subpage_upper_right_latitude=60.,
+    )
+
+# Coastlines setting
+
+coast = mcoast(map_grid='on', map_grid_colour='tan',
+               map_coastline_colour='tan',
+               )
+
+# Import andthe  data
+
+obs = mobs(obs_input_file_name='synop.bufr')
+
+
+
+
+title = \
+    mtext(text_lines=["<font size='1'>Observation Plotting [Synop] </font>"
+          , '',
+          ], text_justification='left', text_font_size=0.5,
+          text_colour='charcoal')
+
+
+
+# To the plot
+
+print "plot"
+plot( output,  europe, obs, coast, )
+tofortran(ref, output,  europe, obs, coast, )
+
+
diff --git a/test/cairo.f90 b/test/cairo.f90
new file mode 100644
index 0000000..943240d
--- /dev/null
+++ b/test/cairo.f90
@@ -0,0 +1,26 @@
+	program magics
+
+	call popen
+
+	call pset1c("output_formats", (/"png"/), 1)
+	call psetc("output_name", "cairo")
+	call psetc("output_name_first_page_number", "off")
+
+	call psetr("subpage_lower_left_longitude", -20.00)
+	call psetr("subpage_upper_right_longitude", 60.00)
+	call psetr("subpage_upper_right_latitude", 60.00)
+	call psetc("subpage_map_projection", "cylindrical")
+	call psetr("subpage_lower_left_latitude", 30.00)
+
+	call psetc("map_grid_colour", "tan")
+	call psetc("map_grid", "on")
+	call psetc("map_coastline_colour", "tan")
+	call pcoast
+
+	call preset('map_grid_colour')
+	call preset('map_grid')
+	call preset('map_coastline_colour')
+
+	call pclose
+
+	end
diff --git a/test/cairo.py b/test/cairo.py
new file mode 100644
index 0000000..617a835
--- /dev/null
+++ b/test/cairo.py
@@ -0,0 +1,61 @@
+# importing Magics module
+
+from Magics.macro import *
+
+
+# Example reference
+
+ref = 'cairo'
+
+# Setting of the output file name
+
+output = output(output_formats=['png'],
+                output_name_first_page_number='off',
+                output_name=ref)
+
+# Setting the coordinates of the geographical area
+
+europe = mmap(
+    subpage_upper_right_longitude=60.,
+    subpage_map_projection='cylindrical',
+    subpage_lower_left_longitude=-20.,
+    subpage_lower_left_latitude=30.,
+    subpage_upper_right_latitude=60.,
+    )
+
+# Coastlines setting
+
+coast = mcoast(map_grid='on', map_grid_colour='tan',
+               map_coastline_colour='tan',
+               )
+
+
+title = \
+    mtext(text_lines=["<font size='1'>PNG OUTPUT</font>"
+          , '',
+          ], text_justification='left', text_font_size=0.5,
+          text_colour='charcoal')
+
+# add a legend
+
+legend = mlegend(
+    legend='on',
+    legend_text_colour='black',
+    legend_box_mode='positional',
+    legend_box_x_position=19.0,
+    legend_box_y_position=1.,
+    legend_box_x_length=2.,
+    legend_box_y_length=14.,
+    legend_display_type='continuous',
+    legend_title='on',
+    legend_title_text='Temperature',
+    legend_text_font_size='0.4',
+    )
+
+# To the plot
+
+print "plot"
+plot( output,  europe, coast, )
+tofortran(ref, output,  europe, coast, )
+
+
diff --git a/test/coast.f90 b/test/coast.f90
new file mode 100644
index 0000000..5402196
--- /dev/null
+++ b/test/coast.f90
@@ -0,0 +1,22 @@
+	program magics
+
+	call popen
+
+	call pset1c("output_formats", (/"ps"/), 1)
+	call psetc("output_name", "coast")
+	call psetc("output_name_first_page_number", "off")
+
+	call psetc("subpage_map_projection", "cylindrical")
+
+	call psetc("map_grid_colour", "tan")
+	call psetc("map_grid", "on")
+	call psetc("map_coastline_colour", "tan")
+	call pcoast
+
+	call preset('map_grid_colour')
+	call preset('map_grid')
+	call preset('map_coastline_colour')
+
+	call pclose
+
+	end
diff --git a/test/coast.py b/test/coast.py
new file mode 100644
index 0000000..ea8da76
--- /dev/null
+++ b/test/coast.py
@@ -0,0 +1,40 @@
+# importing Magics module
+
+from Magics.macro import *
+
+
+# Example reference
+
+ref = 'coast'
+
+# Setting of the output file name
+
+output = output(output_formats=['ps'],
+                output_name_first_page_number='off',
+                output_name=ref)
+
+# Setting the coordinates of the geographical area
+
+globe = mmap(
+    subpage_map_projection='cylindrical',
+    )
+
+# Coastlines setting
+
+coast = mcoast(map_grid='on', map_grid_colour='tan',
+               map_coastline_colour='tan',
+               )
+
+
+title = \
+    mtext(text_lines=["<font size='1'>BASIC OUTPUT</font>"
+          , '',
+          ], text_justification='left', text_font_size=0.5,
+          text_colour='charcoal')
+
+# To the plot
+
+plot( output,  globe, coast, )
+tofortran(ref, output,  globe, coast, )
+
+
diff --git a/test/data.bufr b/test/data.bufr
new file mode 100755
index 0000000..7b4dc20
Binary files /dev/null and b/test/data.bufr differ
diff --git a/test/data/cloudcover.grib b/test/data/cloudcover.grib
deleted file mode 100644
index afb9b5f..0000000
Binary files a/test/data/cloudcover.grib and /dev/null differ
diff --git a/test/data/t2m_fc12.grib b/test/data/t2m_fc12.grib
deleted file mode 100644
index 034af41..0000000
Binary files a/test/data/t2m_fc12.grib and /dev/null differ
diff --git a/test/data/t850_fc_12.grib b/test/data/t850_fc_12.grib
deleted file mode 100644
index 278f91a..0000000
Binary files a/test/data/t850_fc_12.grib and /dev/null differ
diff --git a/test/data/uv500.grb b/test/data/uv500.grb
deleted file mode 100644
index 82db217..0000000
Binary files a/test/data/uv500.grb and /dev/null differ
diff --git a/test/data/wind30m_fc12.grib b/test/data/wind30m_fc12.grib
deleted file mode 100644
index 272aa0a..0000000
Binary files a/test/data/wind30m_fc12.grib and /dev/null differ
diff --git a/test/data/z500.grb b/test/data/z500.grb
deleted file mode 100644
index bbeaa88..0000000
Binary files a/test/data/z500.grb and /dev/null differ
diff --git a/test/data/z500_fc_12.grib b/test/data/z500_fc_12.grib
deleted file mode 100644
index 60db8ce..0000000
Binary files a/test/data/z500_fc_12.grib and /dev/null differ
diff --git a/test/fortran/Makefile.am b/test/fortran/Makefile.am
deleted file mode 100755
index 8bde245..0000000
--- a/test/fortran/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-AUTOMAKE_OPTIONS    = foreign
-check_PROGRAMS      = boxplot coast_only wind shaded_isolines layout_test
-
-TESTS_ENVIRONMENT   = MAGPLUS_HOME=$(top_srcdir)
-TESTS               = $(check_PROGRAMS)
-
-magplus             = -L$(top_srcdir)/src -L$(top_srcdir)/src/.libs -lMagPlusSingle -lMagPlus 
-
-LDADD               = $(magplus) ${MAGICS_3RDPARTY_LIBS} $(CPPLIBS)
-
-boxplot_SOURCES          = boxplot.f
-coast_only_SOURCES       = coast_only.f
-shaded_isolines_SOURCES  = shaded_isolines.f
-wind_SOURCES             = wind.f
-layout_test_SOURCES      = layout_test.f
diff --git a/test/fortran/Makefile.in b/test/fortran/Makefile.in
deleted file mode 100644
index cb50c95..0000000
--- a/test/fortran/Makefile.in
+++ /dev/null
@@ -1,692 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-check_PROGRAMS = boxplot$(EXEEXT) coast_only$(EXEEXT) wind$(EXEEXT) \
-	shaded_isolines$(EXEEXT) layout_test$(EXEEXT)
-subdir = test/fortran
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am_boxplot_OBJECTS = boxplot.$(OBJEXT)
-boxplot_OBJECTS = $(am_boxplot_OBJECTS)
-boxplot_LDADD = $(LDADD)
-am__DEPENDENCIES_1 =
-boxplot_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
-am__v_lt_0 = --silent
-am_coast_only_OBJECTS = coast_only.$(OBJEXT)
-coast_only_OBJECTS = $(am_coast_only_OBJECTS)
-coast_only_LDADD = $(LDADD)
-coast_only_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_layout_test_OBJECTS = layout_test.$(OBJEXT)
-layout_test_OBJECTS = $(am_layout_test_OBJECTS)
-layout_test_LDADD = $(LDADD)
-layout_test_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_shaded_isolines_OBJECTS = shaded_isolines.$(OBJEXT)
-shaded_isolines_OBJECTS = $(am_shaded_isolines_OBJECTS)
-shaded_isolines_LDADD = $(LDADD)
-shaded_isolines_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_wind_OBJECTS = wind.$(OBJEXT)
-wind_OBJECTS = $(am_wind_OBJECTS)
-wind_LDADD = $(LDADD)
-wind_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)/src
-F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS)
-LTF77COMPILE = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(F77) $(AM_FFLAGS) $(FFLAGS)
-AM_V_F77 = $(am__v_F77_$(V))
-am__v_F77_ = $(am__v_F77_$(AM_DEFAULT_VERBOSITY))
-am__v_F77_0 = @echo "  F77   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-F77LD = $(F77)
-F77LINK = $(LIBTOOL) $(AM_V_lt) --tag=F77 $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_F77LD = $(am__v_F77LD_$(V))
-am__v_F77LD_ = $(am__v_F77LD_$(AM_DEFAULT_VERBOSITY))
-am__v_F77LD_0 = @echo "  F77LD " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-SOURCES = $(boxplot_SOURCES) $(coast_only_SOURCES) \
-	$(layout_test_SOURCES) $(shaded_isolines_SOURCES) \
-	$(wind_SOURCES)
-DIST_SOURCES = $(boxplot_SOURCES) $(coast_only_SOURCES) \
-	$(layout_test_SOURCES) $(shaded_isolines_SOURCES) \
-	$(wind_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-TESTS_ENVIRONMENT = MAGPLUS_HOME=$(top_srcdir)
-TESTS = $(check_PROGRAMS)
-magplus = -L$(top_srcdir)/src -L$(top_srcdir)/src/.libs -lMagPlusSingle -lMagPlus 
-LDADD = $(magplus) ${MAGICS_3RDPARTY_LIBS} $(CPPLIBS)
-boxplot_SOURCES = boxplot.f
-coast_only_SOURCES = coast_only.f
-shaded_isolines_SOURCES = shaded_isolines.f
-wind_SOURCES = wind.f
-layout_test_SOURCES = layout_test.f
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .f .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) --foreign test/fortran/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign test/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;
-
-$(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-checkPROGRAMS:
-	@list='$(check_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
-boxplot$(EXEEXT): $(boxplot_OBJECTS) $(boxplot_DEPENDENCIES) 
-	@rm -f boxplot$(EXEEXT)
-	$(AM_V_F77LD)$(F77LINK) $(boxplot_OBJECTS) $(boxplot_LDADD) $(LIBS)
-coast_only$(EXEEXT): $(coast_only_OBJECTS) $(coast_only_DEPENDENCIES) 
-	@rm -f coast_only$(EXEEXT)
-	$(AM_V_F77LD)$(F77LINK) $(coast_only_OBJECTS) $(coast_only_LDADD) $(LIBS)
-layout_test$(EXEEXT): $(layout_test_OBJECTS) $(layout_test_DEPENDENCIES) 
-	@rm -f layout_test$(EXEEXT)
-	$(AM_V_F77LD)$(F77LINK) $(layout_test_OBJECTS) $(layout_test_LDADD) $(LIBS)
-shaded_isolines$(EXEEXT): $(shaded_isolines_OBJECTS) $(shaded_isolines_DEPENDENCIES) 
-	@rm -f shaded_isolines$(EXEEXT)
-	$(AM_V_F77LD)$(F77LINK) $(shaded_isolines_OBJECTS) $(shaded_isolines_LDADD) $(LIBS)
-wind$(EXEEXT): $(wind_OBJECTS) $(wind_DEPENDENCIES) 
-	@rm -f wind$(EXEEXT)
-	$(AM_V_F77LD)$(F77LINK) $(wind_OBJECTS) $(wind_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-.f.o:
-	$(AM_V_F77) @AM_BACKSLASH@
-	$(F77COMPILE) -c -o $@ $<
-
-.f.obj:
-	$(AM_V_F77) @AM_BACKSLASH@
-	$(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.f.lo:
-	$(AM_V_F77) @AM_BACKSLASH@
-	$(LTF77COMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
-	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
-	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
-	    else \
-	      skipped="($$skip tests were not run)"; \
-	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
-
-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_PROGRAMS)
-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-checkPROGRAMS clean-generic clean-libtool \
-	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 all all-am check check-TESTS check-am clean \
-	clean-checkPROGRAMS clean-generic clean-libtool ctags \
-	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 \
-	tags 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/test/fortran/boxplot.f b/test/fortran/boxplot.f
deleted file mode 100644
index 2ed0164..0000000
--- a/test/fortran/boxplot.f
+++ /dev/null
@@ -1,168 +0,0 @@
-C     ****************** LICENSE ****************
-C
-C     Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-C
-C     Licensed under the Apache License, Version 2.0 (the "License");
-C     you may not use this file except in compliance with the License.
-C     You may obtain a copy of the License at 
-C
-C        http://www.apache.org/licenses/LICENSE-2.0
-C
-C     Unless required by applicable law or agreed to in writing, software
-C     distributed under the License is distributed on an "AS IS" BASIS,
-C     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-C     See the License for the specific language governing permissions and
-C     limitations under the License.
-C
-C     ****************** LICENSE ****************
-C
-C     This program demonstrates a new feature of Magics++: boxplots.
-C
-      PROGRAM BOXPLOT
-
-      DIMENSION RPOS(4),RMIN(4),RMAX(4),RMED(4),RUPP(4),RLOW(4)
-      DATA RPOS/2.0, 4.0, 6.5, 8.0/
-      DATA RMIN/1.0, 3.0, 5.2, 4.0/
-      DATA RMAX/5.0, 7.2, 9.4, 8.0/
-      DATA RMED/3.0, 5.0, 7.7, 6.0/
-      DATA RUPP/4.0, 6.0, 8.5, 7.0/
-      DATA RLOW/2.3, 4.0, 6.1, 5.0/
-C
-C     Open MAGICS and set the output file types/names
-C
-      CALL POPEN()
-C
-      CALL PSETC ('OUTPUT_FORMAT',  'PS')
-      CALL PSETC ('OUTPUT_NAME',    'boxplot')
-C
-C     Boxplots work in paper coordinates, not map projection
-C
-      CALL PSETC ('SUBPAGE_MAP_PROJECTION', 'NONE')
-C
-C     Set up our axes. We will always use a 10x10 axis for
-C     these examples. We must set up the axes before plotting
-C     our boxplots.
-C
-      CALL DRAW_AXES ()
-C
-C     Set up our data for the boxplots
-C
-      CALL PSET1R('BOXPLOT_POSITIONS',        RPOS, 4)
-      CALL PSET1R('BOXPLOT_MINIMUM_VALUES',   RMIN, 4)
-      CALL PSET1R('BOXPLOT_MAXIMUM_VALUES',   RMAX, 4)
-      CALL PSET1R('BOXPLOT_MEDIAN_VALUES',    RMED, 4)
-      CALL PSET1R('BOXPLOT_BOX_UPPER_VALUES', RUPP, 4)
-      CALL PSET1R('BOXPLOT_BOX_LOWER_VALUES', RLOW, 4)
-C
-C     Draw the boxplots using the default plotting attributes
-C
-      CALL PBOXPLOT
-C
-      CALL PSETC ('TEXT_LINE_1',
-     x            'Boxplot - default plotting attributes')
-      CALL PTEXT
-C
-C     New page - use different boxplot plotting attributes
-C
-      CALL PNEW ('PAGE')
-C
-      CALL DRAW_AXES ()
-C
-      CALL PSETR ('BOXPLOT_BOX_WIDTH', 1.)
-      CALL PSETC ('BOXPLOT_BOX_COLOUR', 'TURQUOISE')
-      CALL PSETI ('BOXPLOT_BOX_BORDER_THICKNESS', 1)
-      CALL PSETC ('BOXPLOT_BOX_BORDER_LINE_STYLE', 'DASH')
-      CALL PSETC ('BOXPLOT_WHISKER', 'BOX')
-      CALL PSETR ('BOXPLOT_WHISKER_BOX_WIDTH', 0.3)
-      CALL PSETC ('BOXPLOT_WHISKER_BOX_COLOUR', 'BLUE_PURPLE')
-      CALL PSETC ('BOXPLOT_WHISKER_BOX_BORDER_COLOUR', 'RED')
-      CALL PBOXPLOT
-C
-      CALL PSETC ('TEXT_LINE_1',
-     x            'Thick dashed border, box colour, whiskers as boxes')
-      CALL PTEXT
-C
-C
-C     New page - use different boxplot plotting attributes
-C
-      CALL PNEW ('PAGE')
-C
-      CALL DRAW_AXES ()
-C
-      CALL PSETC  ('BOXPLOT_WHISKER',            'LINE')
-      CALL PSETC  ('BOXPLOT_WHISKER_LINE_STYLE', 'DOT')
-      CALL PRESET ('BOXPLOT_BOX_COLOUR')
-      CALL PRESET ('BOXPLOT_BOX_BORDER_THICKNESS')
-      CALL PRESET ('BOXPLOT_BOX_BORDER_LINE_STYLE')
-      CALL PBOXPLOT
-C
-      CALL PSETC ('TEXT_LINE_1',
-     x            'Whiskers as lines')
-      CALL PTEXT
-C
-C     New page - use different median plotting attributes
-C
-      CALL PNEW ('PAGE')
-C
-      CALL DRAW_AXES ()
-C
-      CALL PSETC  ('BOXPLOT_MEDIAN_COLOUR',     'NAVY')
-      CALL PSETI  ('BOXPLOT_MEDIAN_THICKNESS',   4)
-      CALL PSETC  ('BOXPLOT_MEDIAN_LINE_STYLE', 'DOT')
-      CALL PRESET ('BOXPLOT_WHISKER_LINE_STYLE')
-      CALL PBOXPLOT
-C
-      CALL PSETC ('TEXT_LINE_1',
-     x            'Median styles - thick, navy, dotted')
-      CALL PTEXT
-C
-C
-C     New page - plot plain black & white boxplots
-C
-      CALL PNEW ('PAGE')
-C
-      CALL DRAW_AXES ()
-C
-      CALL PSETC  ('BOXPLOT_BOX_COLOUR',          'WHITE')
-      CALL PSETC  ('BOXPLOT_MEDIAN_COLOUR',       'BLACK')
-      CALL PSETC  ('BOXPLOT_BOX_BORDER_COLOUR',   'BLACK')
-      CALL PSETC  ('BOXPLOT_WHISKER_LINE_COLOUR', 'BLACK')
-      CALL PRESET ('BOXPLOT_MEDIAN_THICKNESS')
-      CALL PRESET ('BOXPLOT_MEDIAN_LINE_STYLE')
-      CALL PBOXPLOT
-
-      CALL PSETC ('TEXT_LINE_1', 'Plain boxplot')
-      CALL PTEXT
-C
-C     closing
-C
-      CALL PCLOSE()
-C
-      END
-C
-C
-C     ------------------------------------------------------------
-C     SUBROUTINE DRAW_AXES
-C     Sets up and draws the axes. We will need to do this for each
-C     page, to it's better to have it as a subroutine.
-C     ------------------------------------------------------------
-C
-      SUBROUTINE DRAW_AXES ()
-C
-      CALL PSETC ('AXIS_LINE_COLOUR', 'BLUE')
-      CALL PSETC ('AXIS_GRID', 'ON')
-      CALL PSETC ('AXIS_GRID', 'ON')
-      CALL PSETC ('AXIS_GRID_COLOUR', 'GREY')
-      CALL PSETC ('AXIS_GRID_LINE_STYLE', 'DASH')
-      CALL PSETC ('AXIS_ORIENTATION', 'VERTICAL')
-      CALL PSETR ('AXIS_MIN_VALUE', 0.)
-      CALL PSETR ('AXIS_MAX_VALUE', 10.)
-      CALL PAXIS
-C
-      CALL PSETC ('AXIS_ORIENTATION', 'HORIZONTAL')
-      CALL PSETR ('AXIS_MIN_VALUE', 0.)
-      CALL PSETR ('AXIS_MAX_VALUE', 10.)
-      CALL PAXIS
-C
-      RETURN
-      END
diff --git a/test/fortran/coast_only.f b/test/fortran/coast_only.f
deleted file mode 100644
index d3e1c07..0000000
--- a/test/fortran/coast_only.f
+++ /dev/null
@@ -1,52 +0,0 @@
-C     ****************** LICENSE ****************
-C
-C     Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-C
-C     Licensed under the Apache License, Version 2.0 (the "License");
-C     you may not use this file except in compliance with the License.
-C     You may obtain a copy of the License at 
-C
-C        http://www.apache.org/licenses/LICENSE-2.0
-C
-C     Unless required by applicable law or agreed to in writing, software
-C     distributed under the License is distributed on an "AS IS" BASIS,
-C     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-C     See the License for the specific language governing permissions and
-C     limitations under the License.
-C
-C     ****************** LICENSE ****************
-C
-C     No data is plotted, just the global coastline
-C     We also demonstrate how to specify multiple output
-C     formats. This increases efficiency compared to either running
-C     the program multiple times or using an external conversion
-C     tool.
-C
-      PROGRAM COAST_ONLY
-C
-C     Define our array of output formats
-C
-      CHARACTER*16 FORMATS_PS_SVG
-      DIMENSION    FORMATS_PS_SVG(2)
-      DATA         FORMATS_PS_SVG /'PS','SVG'/
-C
-C     Open MAGICS and set the output file types/names
-C     Here we specify three output formats.
-C
-      CALL POPEN
-      CALL PSET1C ('OUTPUT_FORMATS', FORMATS_PS_SVG,2)
-      CALL PSETC  ('OUTPUT_NAME',    'coast_only')
-C
-C     Set up the coastline attributes
-C
-      CALL PSETC ('MAP_COASTLINE',        'ON')
-      CALL PSETC ('MAP_COASTLINE_COLOUR', 'GREY')
-      CALL PSETC ('MAP_GRID_COLOUR',      'GREY')     
-C
-C     Plot the coastlines and then close
-C
-      CALL PCOAST
-      CALL PCLOSE
-C
-      STOP
-      END
diff --git a/test/fortran/layout_test.f b/test/fortran/layout_test.f
deleted file mode 100644
index 5a41efb..0000000
--- a/test/fortran/layout_test.f
+++ /dev/null
@@ -1,572 +0,0 @@
-C     ****************** LICENSE ****************
-C
-C     Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-C
-C     Licensed under the Apache License, Version 2.0 (the "License");
-C     you may not use this file except in compliance with the License.
-C     You may obtain a copy of the License at 
-C
-C        http://www.apache.org/licenses/LICENSE-2.0
-C
-C     Unless required by applicable law or agreed to in writing, software
-C     distributed under the License is distributed on an "AS IS" BASIS,
-C     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-C     See the License for the specific language governing permissions and
-C     limitations under the License.
-C
-C     ****************** LICENSE ****************
-C
-C     This program demonstrates a new feature of Magics++: layout
-C
-      PROGRAM LAYOUT_TEST
-C
-      DIMENSION X(11),Y(11)
-      DATA X/0.0,1.,2.,3.,4.,5.,6.,7.,8.,9.,10./
-      DATA Y/0.0,4.,6.,8.,10.,15.,20.,30.,20.,10.,5./
-C
-C     Define our array of output formats
-C
-      CHARACTER*16 FORMATS_PS_SVG
-      DIMENSION    FORMATS_PS_SVG(2)
-      DATA         FORMATS_PS_SVG /'PS','SVG'/
-C
-C     OPEN MAGICS
-C 
-      CALL POPEN
-      CALL PSET1C ('OUTPUT_FORMATS', FORMATS_PS_SVG,2)
-      CALL PSETC  ('OUTPUT_NAME',    'layout_test')
-      CALL PARSE_COMMAND_LINE ('layout_test')
-C
-C   Set ID line text
-C
-      CALL PSETC ('PAGE_ID_LINE_USER_TEXT', 'Layout test')
-C      
-C     dimensions for A3      
-C
-      PX = 42.0
-      PY = 29.7
-      X1 =  0.5
-      X2 = 21.5
-      Y1 =  0.5
-      Y2 = 15.5
-C
-C     Page locations. We have a 2x3 grid of plots
-C
-      CALL PSETR('SUPER_PAGE_X_LENGTH',PX)
-      CALL PSETR('SUPER_PAGE_Y_LENGTH',PY)
-C
-      CALL PSETC ('SUBPAGE_MAP_PROJECTION', 'POLAR_STEREOGRAPHIC')
-      CALL PSETR ('SUBPAGE_LOWER_LEFT_LATITUDE',    23.0)
-      CALL PSETR ('SUBPAGE_LOWER_LEFT_LONGITUDE',  -33.0)
-      CALL PSETR ('SUBPAGE_UPPER_RIGHT_LATITUDE',   51.0)
-      CALL PSETR ('SUBPAGE_UPPER_RIGHT_LONGITUDE',  72.0)
-C
-C     Setup of subpages
-C      
-      CALL PSETC ('LAYOUT', 'POSITIONAL')
-      CALL PSETR ('PAGE_X_LENGTH', 20.0)
-      CALL PSETR ('PAGE_Y_LENGTH', 15.0)
-      CALL PSETR ('PAGE_X_POSITION', X1)
-      CALL PSETR ('PAGE_Y_POSITION', Y2)
-C
-      CALL MAP_SHADING
-C
-      CALL PCOAST
-C
-      CALL PNEW  ('PAGE')
-      CALL PSETR ('PAGE_X_POSITION', X2)
-      CALL PSETR ('PAGE_Y_POSITION', Y2)
-      CALL MAP_SHADING_2
-C
-      CALL PCOAST
-C
-      CALL PNEW  ('PAGE')
-      CALL PSETR ('PAGE_X_POSITION', X1)
-      CALL PSETR ('PAGE_Y_POSITION', Y1)
-      CALL MAP_THREE
-C
-      CALL PNEW  ('PAGE')
-      CALL PSETC ('PAGE_ID_LINE', 'OFF')
-      CALL PSETR ('PAGE_X_POSITION', X2)
-      CALL PSETR ('PAGE_Y_POSITION', Y1)
-      CALL GRAPH_ONE
-C
-C     Close
-C
-      CALL PCLOSE
-C
-      STOP
-      END
-C
-C
-      SUBROUTINE MAP_SHADING
-C
-      PARAMETER (NLEV=18)
-      CHARACTER*25 CTAB
-      DIMENSION  CTAB  (NLEV)
-      DATA       CTAB  /'BLUE_PURPLE',
-     +                  'BLUE',
-     +                  'GREENISH_BLUE',
-     +                  'BLUE_GREEN',
-     +                  'BLUISH_GREEN',
-     +                  'YELLOW_GREEN',
-     +                  'GREENISH_YELLOW',
-     +                  'YELLOW',
-     +                  'ORANGISH_YELLOW',
-     +                  'ORANGE_YELLOW',
-     +                  'YELLOWISH_ORANGE',
-     +                  'ORANGE',
-     +                  'REDDISH_ORANGE',
-     +                  'RED_ORANGE',
-     +                  'ORANGISH_RED',
-     +                  'RED',
-     +                  'REDDISH_PURPLE',
-     +                  'MAGENTA'/
-C
-C     Pass the data to MAGICS
-C
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/t2m_fc12.grib')
-      CALL PGRIB
-      CALL PSETC  ('CONTOUR',                      'OFF')
-      CALL PSETR  ('CONTOUR_SHADE_MIN_LEVEL',       -50.)
-      CALL PSETR  ('CONTOUR_SHADE_MAX_LEVEL',        40.)
-      CALL PSETC  ('CONTOUR_LEVEL_SELECTION_TYPE', 'INTERVAL')
-      CALL PSETR  ('CONTOUR_INTERVAL',              5.0)
-      CALL PSETC  ('CONTOUR_SHADE_COLOUR_METHOD',  'LIST')
-      CALL PSET1C ('CONTOUR_SHADE_COLOUR_LIST',     CTAB, NLEV)
-      CALL PSETC  ('CONTOUR_SHADE',                'ON')      
-      CALL PSETC  ('CONTOUR_SHADE_TECHNIQUE',      'POLYGON_SHADING')
-      CALL PSETC  ('CONTOUR_SHADE_METHOD',         'AREA_FILL')
-      CALL PSETC  ('CONTOUR_HILO',                 'OFF')
-      CALL PCONT
-C
-      CALL PSETC ('GRIB_INPUT_FILE_NAME',
-     x  '../data/wind30m_fc12.grib')
-      CALL PSETI ('GRIB_WIND_POSITION_1',1)                 
-      CALL PSETI ('GRIB_WIND_POSITION_2',2) 
-      CALL PGRIB
-      CALL PWIND
-C
-      CALL PRESET('CONTOUR_SHADE_MIN_LEVEL')
-      CALL PRESET('CONTOUR_SHADE_MAX_LEVEL')
-C
-      RETURN
-      END
-C
-C
-C
-      SUBROUTINE MAP_SHADING_2
-C
-      PARAMETER (NLEV=21)
-      CHARACTER*25 CTAB
-      DIMENSION  CTAB  (NLEV)
-      DATA       CTAB  /'BLUISH_PURPLE',
-     +                  'BLUE_PURPLE',
-     +                  'PURPLISH_BLUE',
-     +                  'BLUE',
-     +                  'GREENISH_BLUE',
-     +                  'BLUE_GREEN',
-     +                  'BLUISH_GREEN',
-     +                  'YELLOW_GREEN',
-     +                  'GREENISH_YELLOW',
-     +                  'YELLOW',
-     +                  'ORANGISH_YELLOW',
-     +                  'ORANGE_YELLOW',
-     +                  'YELLOWISH_ORANGE',
-     +                  'ORANGE',
-     +                  'REDDISH_ORANGE',
-     +                  'RED_ORANGE',
-     +                  'ORANGISH_RED',
-     +                  'RED',
-     +                  'REDDISH_PURPLE',
-     +                  'PURPLE_RED',
-     +                  'MAGENTA'/
-C
-C     Pass the data to MAGICS
-C 
-      CALL PSETC ('GRIB_INPUT_TYPE',      'FILE')
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/t850_fc_12.grib')
-      CALL PGRIB
-C
-      CALL PSETC  ('CONTOUR',                      'OFF')
-      CALL PSETR  ('CONTOUR_SHADE_MIN_LEVEL',       -40.)
-      CALL PSETR  ('CONTOUR_SHADE_MAX_LEVEL',        44.)
-      CALL PSETC  ('CONTOUR_LEVEL_SELECTION_TYPE', 'INTERVAL')
-      CALL PSETR  ('CONTOUR_INTERVAL',              4.0)
-      CALL PSETC  ('CONTOUR_SHADE_COLOUR_METHOD',  'LIST')
-      CALL PSET1C ('CONTOUR_SHADE_COLOUR_LIST',     CTAB, NLEV)
-      CALL PSETC  ('CONTOUR_SHADE',                'ON')      
-      CALL PSETC  ('CONTOUR_SHADE_TECHNIQUE',      'POLYGON_SHADING')
-      CALL PSETC  ('CONTOUR_SHADE_METHOD',         'AREA_FILL')
-      CALL PSETC  ('CONTOUR_HILO',                 'OFF')
-      CALL PCONT
-C
-C     Now load the Z500 data
-C
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/z500_fc_12.grib')
-      CALL PGRIB
-C     Redefine the contouring parameters for the Z500
-      CALL PSETC  ('CONTOUR',                      'ON')
-      CALL PSETR  ('CONTOUR_INTERVAL',              6.0)
-      CALL PSETC  ('CONTOUR_LEVEL_SELECTION_TYPE', 'INTERVAL')
-      CALL PSETC  ('CONTOUR_LINE_COLOUR',          'BLACK')
-      CALL PSETC  ('CONTOUR_HIGHLIGHT_COLOUR',     'BLACK')
-      CALL PSETI  ('CONTOUR_HIGHLIGHT_THICKNESS',   4)
-      CALL PSETC  ('CONTOUR_HILO',                 'ON')
-      CALL PSETR  ('CONTOUR_HILO_HEIGHT',           0.25)
-      CALL PSETR  ('CONTOUR_HILO_SUPPRESS_RADIUS',  40.0)
-      CALL PSETC  ('CONTOUR_SHADE',                'OFF')      
-      CALL PCONT
-C
-      CALL PRESET('CONTOUR_SHADE_MIN_LEVEL')
-      CALL PRESET('CONTOUR_SHADE_MAX_LEVEL')
-C
-      RETURN
-      END
-C
-C
-C
-      SUBROUTINE MAP_THREE
-C
-      PARAMETER (NCOLS=64)
-       CHARACTER*25 CTAB
-       DIMENSION  CTAB (NCOLS)
-       DATA       CTAB /'HSL(0,0,1)',
-     +                  'HSL(29,0.14,0.92)',
-     +                  'HSL(29,0.29,0.83)',
-     +                  'HSL(29,0.43,0.75)',
-     +                  'HSL(300,0.08,0.92)',
-     +                  'HSL(360,0.16,0.84)',
-     +                  'HSL(13,0.3,0.75)',
-     +                  'HSL(18,0.44,0.67)',
-     +                  'HSL(300,0.16,0.83)',
-     +                  'HSL(340,0.22,0.75)',
-     +                  'HSL(360,0.34,0.67)',
-     +                  'HSL(8,0.47,0.58)',
-     +                  'HSL(300,0.24,0.75)',
-     +                  'HSL(330,0.28,0.67)',
-     +                  'HSL(349,0.38,0.58)',
-     +                  'HSL(360,0.5,0.5)',
-     +                  'HSL(180,0.17,0.92)',
-     +                  'HSL(120,0.08,0.84)',
-     +                  'HSL(57,0.17,0.75)',
-     +                  'HSL(44,0.3,0.67)',
-     +                  'HSL(209,0.14,0.84)',
-     +                  'HSL(187,0,0.75)',
-     +                  'HSL(29,0.15,0.67)',
-     +                  'HSL(29,0.29,0.59)',
-     +                  'HSL(239,0.16,0.75)',
-     +                  'HSL(299,0.08,0.67)',
-     +                  'HSL(360,0.17,0.58)',
-     +                  'HSL(13,0.3,0.5)',
-     +                  'HSL(258,0.21,0.67)',
-     +                  'HSL(299,0.16,0.59)',
-     +                  'HSL(341,0.22,0.5)',
-     +                  'HSL(360,0.33,0.42)',
-     +                  'HSL(180,0.34,0.83)',
-     +                  'HSL(161,0.22,0.75)',
-     +                  'HSL(120,0.16,0.67)',
-     +                  'HSL(78,0.21,0.58)',
-     +                  'HSL(193,0.3,0.75)',
-     +                  'HSL(180,0.17,0.67)',
-     +                  'HSL(120,0.08,0.58)',
-     +                  'HSL(59,0.16,0.5)',
-     +                  'HSL(209,0.29,0.67)',
-     +                  'HSL(209,0.15,0.58)',
-     +                  'HSL(217,0,0.5)',
-     +                  'HSL(29,0.14,0.42)',
-     +                  'HSL(224,0.3,0.58)',
-     +                  'HSL(237,0.17,0.5)',
-     +                  'HSL(299,0.08,0.42)',
-     +                  'HSL(360,0.16,0.33)',
-     +                  'HSL(180,0.5,0.75)',
-     +                  'HSL(169,0.38,0.67)',
-     +                  'HSL(150,0.28,0.58)',
-     +                  'HSL(120,0.24,0.5)',
-     +                  'HSL(188,0.47,0.67)',
-     +                  'HSL(180,0.34,0.59)',
-     +                  'HSL(160,0.22,0.5)',
-     +                  'HSL(120,0.16,0.42)',
-     +                  'HSL(198,0.44,0.58)',
-     +                  'HSL(193,0.3,0.5)',
-     +                  'HSL(180,0.17,0.42)',
-     +                  'HSL(120,0.08,0.33)',
-     +                  'HSL(209,0.43,0.5)',
-     +                  'HSL(209,0.29,0.42)',
-     +                  'HSL(209,0.14,0.33)',
-     +                  'HSL(191,0,0.25)'/
-       PARAMETER (NLEV=65)
-       DIMENSION  RLEV (NLEV)
-       DATA       RLEV /-0.5,
-     +                  0.5,
-     +                  1.5,
-     +                  2.5,
-     +                  3.5,
-     +                  4.5,
-     +                  5.5,
-     +                  6.5,
-     +                  7.5,
-     +                  8.5,
-     +                  9.5,
-     +                  10.5,
-     +                  11.5,
-     +                  12.5,
-     +                  13.5,
-     +                  14.5,
-     +                  15.5,
-     +                  16.5,
-     +                  17.5,
-     +                  18.5,
-     +                  19.5,
-     +                  20.5,
-     +                  21.5,
-     +                  22.5,
-     +                  23.5,
-     +                  24.5,
-     +                  25.5,
-     +                  26.5,
-     +                  27.5,
-     +                  28.5,
-     +                  29.5,
-     +                  30.5,
-     +                  31.5,
-     +                  32.5,
-     +                  33.5,
-     +                  34.5,
-     +                  35.5,
-     +                  36.5,
-     +                  37.5,
-     +                  38.5,
-     +                  39.5,
-     +                  40.5,
-     +                  41.5,
-     +                  42.5,
-     +                  43.5,
-     +                  44.5,
-     +                  45.5,
-     +                  46.5,
-     +                  47.5,
-     +                  48.5,
-     +                  49.5,
-     +                  50.5,
-     +                  51.5,
-     +                  52.5,
-     +                  53.5,
-     +                  54.5,
-     +                  55.5,
-     +                  56.5,
-     +                  57.5,
-     +                  58.5,
-     +                  59.5,
-     +                  60.5,
-     +                  61.5,
-     +                  62.5,
-     +                  63.5/
-      CHARACTER TITLE*256
-
-C     First, load and plot the temperature data, shaded
-C     Pass the data to MAGICS
-
-      CALL PSETC ('GRIB_INPUT_TYPE',      'FILE')
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/cloudcover.grib')
-      CALL PGRIB
-
-C     Set up the coastline attributes
-
-      CALL PSETC ('MAP_COASTLINE_COLOUR', 'BLACK')
-      CALL PSETC ('MAP_GRID_COLOUR',      'BLACK')     
-
-C     Define the contour     
-
-      CALL PSETC  ('LEGEND',                       'OFF')
-      CALL PSETC  ('CONTOUR',                      'OFF')
-      CALL PSETC  ('CONTOUR_LEVEL_SELECTION_TYPE', 'LEVEL_LIST')
-      CALL PSET1R ('CONTOUR_LEVEL_LIST',            RLEV, NLEV)      
-      CALL PSETC  ('CONTOUR_SHADE',                'ON')      
-      CALL PSETC  ('CONTOUR_SHADE_TECHNIQUE',      'CELL_SHADING')
-      CALL PSETC  ('CONTOUR_SHADE_COLOUR_METHOD',  'LIST')
-      CALL PSET1C ('CONTOUR_SHADE_COLOUR_LIST',     CTAB, NCOLS)
-      CALL PSETC  ('CONTOUR_SHADE_METHOD',         'AREA_FILL')
-      CALL PSETC  ('CONTOUR_HILO',                 'OFF')
-      CALL PCONT
-      
-C     Plot the title text and the coastlines
-
-      TITLE = 'Z700 \\\CL' //  
-     +        CTAB(4)  // '\\\Low,\\\CL' //
-     +        CTAB(16) // '\\\ L+M,\\\CL' //
-     +        CTAB(13) // '\\\ Medium,\\\CL' //
-     +        CTAB(61) // '\\\ M+H,\\\CL' //
-     +        CTAB(49) // '\\\ High,\\\CL' //
-     +        CTAB(52) // '\\\ H+L,\\\CLBLACK\\\ H+M+L' //
-     +        '\\\CLR\\\ clouds'
-C
-      CALL PSETR  ('TEXT_FONT_SIZE', 0.4)
-      CALL PSETC  ('TEXT_LINE_1',TITLE)
-      CALL PTEXT
-      CALL PCOAST
-C
-      RETURN
-      END
-C
-C
-C
-	SUBROUTINE GRAPH_ONE
-C
-C	PLOT SIMPLE CURVE WITH SYMBOLS
-C
-	DIMENSION X(11),Y(11),Y2(11),Y3(11),X2(10),YL(10),YU(10),
-     + YL2(10),YU2(10)
-	DATA X/0.0,1.,2.,3.,4.,5.,6.,7.,8.,9.,10./
-	DATA  Y/0.0,15.,6.,18.,10.,15.,27.,37.,20.,10.,15./
-	DATA Y2/3.0,14.,2.,8.,13.,75.,57.,45.,26.,52.,58./
-	DATA Y3/2.0,10.,22.,12.,32.,12.,24.,38.,23.,34.,45./
-	DATA X2/1.,2.,3.,4.,5.,6.,7.,8.,9.,10./
-	DATA YL /10*0.0/
-	DATA YU/3.0,5.,9.,1.,2.,10.,19.,18.,10.,18./
-	DATA YU2 /13.0,15.,19.,11.,22.,20.,29.,28.,20.,21./
-C
-C	SET UP AXIS SYSTEM
-C
-	CALL PSETC ('SUBPAGE_MAP_PROJECTION','NONE')  
-	CALL PSETC ('AXIS_ORIENTATION','HORIZONTAL')
-	CALL PSETC ('AXIS_POSITION','BOTTOM')
-	CALL PSETR ('AXIS_MIN_VALUE',0.0)
-	CALL PSETR ('AXIS_MAX_VALUE',10.5)
-	CALL PSETR ('AXIS_TICK_INTERVAL',1.0)
-	CALL PAXIS
-	CALL PSETC ('AXIS_ORIENTATION','VERTICAL')
-	CALL PSETC ('AXIS_POSITION','LEFT')
-	CALL PSETR ('AXIS_MIN_VALUE',0.0)
-	CALL PSETR ('AXIS_MAX_VALUE',100.0)
-	CALL PSETR ('AXIS_TICK_INTERVAL',5.0)
-	CALL PAXIS
-C
-C	SET GRAPH PARAMETERS
-C 
-C     Set up our data for the boxplots
-c
-      CALL PSETC ('GRAPH_SHADE_COLOUR','SKY')
-      CALL PSETR ('boxplot_box_width',0.5)
-      CALL PSET1R('BOXPLOT_POSITIONS',
-     + (/2., 4., 6., 8. /), 4 )
-      CALL PSET1R('BOXPLOT_MINIMUM_VALUES', 
-     + (/10., 30., 52., 40./), 4)
-      CALL PSET1R('BOXPLOT_MAXIMUM_VALUES', 
-     + (/50., 72., 87., 81./), 4)
-      CALL PSET1R('BOXPLOT_MEDIAN_VALUES', 
-     + (/25., 42., 77., 46./), 4)
-      CALL PSET1R('BOXPLOT_BOX_UPPER_VALUES', 
-     + (/35., 56., 82.5, 67./), 4)
-      CALL PSET1R('BOXPLOT_BOX_LOWER_VALUES', 
-     + (/21.3, 34., 66.1, 45./), 4)
-C
-C     Draw the boxplots using the default plotting attributes
-C
-	CALL PBOXPLOT
-C      
-	CALL PSETC ('GRAPH_TYPE','BAR')
-	CALL PSETC ('GRAPH_SHADE','ON')
-	CALL PSETC ('GRAPH_SHADE_STYLE','HATCH')
-	CALL PSETI ('graph_shade_hatch_index',0)
-C
-	CALL PSETC ('GRAPH_SHADE_COLOUR','ORANGE')
-	CALL PSET1R ('GRAPH_BAR_X_VALUES',X2,10)
-	CALL PSET1R ('GRAPH_BAR_Y_LOWER_VALUES',YL,10)
-	CALL PSET1R ('GRAPH_BAR_Y_UPPER_VALUES',YU,10)
-	CALL PGRAPH
-C
-	CALL PSETC ('GRAPH_SHADE_STYLE','DOT')
-	CALL PSETC ('GRAPH_SHADE_COLOUR','BLUE')
-	CALL PSET1R ('GRAPH_BAR_X_VALUES',X2,10)
-	CALL PSET1R ('GRAPH_BAR_Y_LOWER_VALUES',YU,10)
-	CALL PSET1R ('GRAPH_BAR_Y_UPPER_VALUES',YU2,10)
-	CALL PGRAPH
-C
-	CALL PSETC ('GRAPH_TYPE','CURVE')
-	CALL PSETC ('GRAPH_SYMBOL','ON')
-	CALL PSETI ('GRAPH_SYMBOL_MARKER_INDEX',18)
-	CALL PSETC ('GRAPH_LINE_COLOUR','RED')
-	CALL PSET1R ('GRAPH_CURVE_X_VALUES',X,11)
-	CALL PSET1R ('GRAPH_CURVE_Y_VALUES',Y,11)
-	CALL PGRAPH
-
-	CALL PSETC ('GRAPH_LINE_COLOUR','BLUE')
-	CALL PSET1R ('GRAPH_CURVE_X_VALUES',X,11)
-	CALL PSET1R ('GRAPH_CURVE_Y_VALUES',Y2,11)
-	CALL PGRAPH
-
-	CALL PSETC ('GRAPH_LINE_COLOUR','GREEN')
-	CALL PSET1R ('GRAPH_CURVE_X_VALUES',X,11)
-	CALL PSET1R ('GRAPH_CURVE_Y_VALUES',Y3,11)
-	CALL PGRAPH
-
-	CALL PSETC ('TEXT_LINE_1','Graph Plotting in '//
-     x             'bar and line mode')
-	CALL PTEXT
-
-	RETURN
-	END
-
-C --------------------------------------------------------------------
-C     PARSE_COMMAND_LINE
-C     Checks the command-line for any arguments.
-C     Arguments can come in pairs. Currently supported arguments are:
-C     PROJECTION 
-C     DEVICE 
-C     e.g. Run the program with:
-C      PROJECTION POLAR_STEREOGRAPHIC
-C      PROJECTION CYLINDRICAL   DEVICE SVG
-C --------------------------------------------------------------------
-
-      SUBROUTINE PARSE_COMMAND_LINE (OUTROOTNAME)
-
-      CHARACTER*32 ARG
-      CHARACTER*64 ID_TEXT
-      CHARACTER*32 PROJECTION
-      CHARACTER*32 DEVICE
-      CHARACTER*48 EXENAME
-      CHARACTER*8  MINIMAL
-      CHARACTER*8  SEPARATOR
-      CHARACTER*64 OUTNAME
-      CHARACTER*(*) OUTROOTNAME
-
-      INTEGER NUM_ARGS
-      INTEGER DEVICE_SET
-
-      ID_TEXT = ''
-
-      NUM_ARGS = IARGC()
-
-      I = 1
-
-20    IF (I.LE.NUM_ARGS) THEN
-          CALL GETARG ( I, ARG ) 
- 
-C         Set the projection?
-          IF (ARG.EQ.'PROJECTION') THEN
-              I = I + 1 
-              CALL GETARG ( I, PROJECTION ) 
-              CALL PSETC ('SUBPAGE_MAP_PROJECTION', PROJECTION)
-	      
-C        Set the device?
-          ELSEIF (ARG.EQ.'DEVICE') THEN
-              I = I + 1 
-              CALL GETARG ( I, DEVICE ) 
-
-              CALL PSETC ('OUTPUT_FORMAT', DEVICE )
-              CALL PSETC ('OUTPUT_NAME', OUTROOTNAME)
-	      CALL PSETC ('OUTPUT_SVG_COMPRESS', 'ON')
-
-C        Run using linear contouring?
-
-          ELSEIF (ARG.EQ.'LINEAR') THEN
-                CALL PSETC ('CONTOUR_METHOD', 'LINEAR')
-                CALL PSETC ('PAGE_ID_LINE_USER_TEXT_PLOT', 'ON')
-                CALL PSETC ('PAGE_ID_LINE_USER_TEXT', 'LINEAR')
-          ENDIF
-
-          I = I + 1 
-          GOTO 20
-      ENDIF
-      END
diff --git a/test/fortran/shaded_isolines.f b/test/fortran/shaded_isolines.f
deleted file mode 100644
index 9e54215..0000000
--- a/test/fortran/shaded_isolines.f
+++ /dev/null
@@ -1,131 +0,0 @@
-C     ****************** LICENSE ****************
-C
-C     Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-C
-C     Licensed under the Apache License, Version 2.0 (the "License");
-C     you may not use this file except in compliance with the License.
-C     You may obtain a copy of the License at 
-C
-C        http://www.apache.org/licenses/LICENSE-2.0
-C
-C     Unless required by applicable law or agreed to in writing, software
-C     distributed under the License is distributed on an "AS IS" BASIS,
-C     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-C     See the License for the specific language governing permissions and
-C     limitations under the License.
-C
-C     ****************** LICENSE ****************
-C
-C     This program demonstrates a new feature of Magics++: boxplots.
-C
-C     This example plots a shaded temperature field, then overlays
-C     z500 isolines.
-C
-      PROGRAM T_SHADED_Z_ISOLINES
-C
-C     Define our colour palette for the shading
-C
-      PARAMETER (NLEV=21)
-      CHARACTER*25 CTAB
-      DIMENSION  CTAB  (NLEV)
-      DATA       CTAB  /'BLUE_PURPLE',
-     +                  'BLUE_PURPLE',
-     +                  'BLUE_PURPLE',
-     +                  'BLUE_PURPLE',
-     +                  'GREENISH_BLUE',
-     +                  'BLUE_GREEN',
-     +                  'BLUISH_GREEN',
-     +                  'YELLOW_GREEN',
-     +                  'GREENISH_YELLOW',
-     +                  'YELLOW',
-     +                  'ORANGISH_YELLOW',
-     +                  'ORANGE_YELLOW',
-     +                  'YELLOWISH_ORANGE',
-     +                  'ORANGE',
-     +                  'REDDISH_ORANGE',
-     +                  'RED_ORANGE',
-     +                  'ORANGISH_RED',
-     +                  'RED',
-     +                  'REDDISH_PURPLE',
-     +                  'PURPLE_RED',
-     +                  'MAGENTA'/
-C
-C     Define our array of output formats
-C
-      CHARACTER*16 FORMATS_PS_SVG
-      DIMENSION    FORMATS_PS_SVG(2)
-      DATA         FORMATS_PS_SVG /'PS','SVG'/
-C
-C     Open MAGICS and set the output file type/name
-C     Note that 'PS' is the default so we don't need to 
-C     specify it here.
-C
-      CALL POPEN
-      CALL PSET1C ('OUTPUT_FORMATS', FORMATS_PS_SVG,2)
-      CALL PSETC  ('OUTPUT_NAME',    'shaded_isolines')
-      CALL PSETC  ('PAGE_ID_LINE_USER_TEXT', 'shading test')
-C
-C     Area specification (SOUTH, WEST, NORTH, EAST )
-C
-      CALL PSETC ('SUBPAGE_MAP_PROJECTION', 'CYLINDRICAL')
-      CALL PSETR ('SUBPAGE_LOWER_LEFT_LATITUDE',    25.0)
-      CALL PSETR ('SUBPAGE_LOWER_LEFT_LONGITUDE',  -30.0)
-      CALL PSETR ('SUBPAGE_UPPER_RIGHT_LATITUDE',   75.0)
-      CALL PSETR ('SUBPAGE_UPPER_RIGHT_LONGITUDE',  70.0)
-C
-C     First, load and plot the temperature data, shaded
-C
-C     Pass the data to MAGICS
-C
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/t850_fc_12.grib')
-      CALL PGRIB
-C
-C     Set up the coastline attributes
-C
-      CALL PSETC ('MAP_COASTLINE_COLOUR', 'BLACK')
-      CALL PSETC ('MAP_GRID_COLOUR',      'BLACK')     
-C
-C     Define and plot the contour     
-C
-      CALL PSETC  ('CONTOUR',                      'OFF')
-      CALL PSETR  ('CONTOUR_SHADE_MIN_LEVEL',       -40.)
-      CALL PSETR  ('CONTOUR_SHADE_MAX_LEVEL',        44.)
-      CALL PSETC  ('CONTOUR_LEVEL_SELECTION_TYPE', 'INTERVAL')
-      CALL PSETR  ('CONTOUR_INTERVAL',              4.0)
-      CALL PSETC  ('CONTOUR_SHADE_COLOUR_METHOD',  'LIST')
-      CALL PSET1C ('CONTOUR_SHADE_COLOUR_LIST',     CTAB, NLEV)
-      CALL PSETC  ('CONTOUR_SHADE',                'ON')      
-      CALL PSETC  ('CONTOUR_SHADE_TECHNIQUE',      'POLYGON_SHADING')
-      CALL PSETC  ('CONTOUR_SHADE_METHOD',         'AREA_FILL')
-      CALL PSETC  ('CONTOUR_HILO',                 'OFF')
-      CALL PCONT
-C
-C     Plot the title text and the coastlines
-C
-      CALL PCOAST
-C
-C     Now load the Z500 data
-C
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/z500_fc_12.grib')
-      CALL PGRIB
-C
-C     Redefine the contouring parameters for the Z500
-C
-      CALL PSETC  ('CONTOUR',                      'ON')
-      CALL PSETC  ('CONTOUR_LEVEL_SELECTION_TYPE', 'INTERVAL')
-      CALL PSETR  ('CONTOUR_INTERVAL',              6.0)
-      CALL PSETC  ('CONTOUR_LINE_COLOUR',          'BLACK')
-      CALL PSETC  ('CONTOUR_HIGHLIGHT_COLOUR',     'BLACK')
-      CALL PSETI  ('CONTOUR_HIGHLIGHT_THICKNESS',   4)
-      CALL PSETC  ('CONTOUR_HILO',                 'ON')
-      CALL PSETR  ('CONTOUR_HILO_HEIGHT',           0.25)
-      CALL PSETR  ('CONTOUR_HILO_SUPPRESS_RADIUS',  40.0)
-      CALL PSETC  ('CONTOUR_SHADE',                'OFF')      
-      CALL PCONT
-C
-      CALL PSETC  ('TEXT_LINE_1','T850 (shaded) & Z500')
-      CALL PTEXT
-      CALL PCLOSE
-C
-      STOP
-      END
diff --git a/test/fortran/wind.f b/test/fortran/wind.f
deleted file mode 100644
index ef1d425..0000000
--- a/test/fortran/wind.f
+++ /dev/null
@@ -1,69 +0,0 @@
-C     ****************** LICENSE ****************
-C
-C     Copyright 2007 European Centre for Medium-Range Weather Forecasts (ECMWF)
-C
-C     Licensed under the Apache License, Version 2.0 (the "License");
-C     you may not use this file except in compliance with the License.
-C     You may obtain a copy of the License at 
-C
-C        http://www.apache.org/licenses/LICENSE-2.0
-C
-C     Unless required by applicable law or agreed to in writing, software
-C     distributed under the License is distributed on an "AS IS" BASIS,
-C     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-C     See the License for the specific language governing permissions and
-C     limitations under the License.
-C
-C     ****************** LICENSE ****************
-C
-C     This example demonstrates the plotting of wind arrows
-C     and flags.
-C
-      PROGRAM WIND
-C
-C     Open MAGICS and set the output file type/name
-C     Note that 'PS' is the default so we don't need to 
-C     specify it here.
-C
-      CALL POPEN
-      CALL PSETC ('OUTPUT_FORMAT',  'PS')
-      CALL PSETC ('OUTPUT_NAME',    'wind')
-C
-C     Set up all the parameters we'll use in all the examples
-C
-      CALL PSETC ('MAP_COASTLINE_COLOUR',            'GREY')
-      CALL PSETC ('MAP_GRID_COLOUR',                 'GREY')
-      CALL PSETC ('MAP_LABEL_COLOUR',                'GREY')
-C
-C     Area specification (SOUTH, WEST, NORTH, EAST)
-C
-      CALL PSETR ('SUBPAGE_LOWER_LEFT_LATITUDE',    25.0)
-      CALL PSETR ('SUBPAGE_LOWER_LEFT_LONGITUDE',  -30.0)
-      CALL PSETR ('SUBPAGE_UPPER_RIGHT_LATITUDE',   75.0)
-      CALL PSETR ('SUBPAGE_UPPER_RIGHT_LONGITUDE',  70.0)
-C
-C     Tell MAGICS where the U/V fields are in the file
-C     Note that these values are the defaults and so are not
-C     actually necessary in this example
-C
-      CALL PSETI ('GRIB_WIND_POSITION_1', 1)               
-      CALL PSETI ('GRIB_WIND_POSITION_2', 2)
-C
-C     Load the data file
-C
-      CALL PSETC ('GRIB_INPUT_FILE_NAME', '../data/uv500.grb')
-      CALL PGRIB
-C
-C     --- Plot wind arrows with default settings ---
-C
-      CALL PSETI ('TEXT_LINE_COUNT',  2)
-      CALL PSETC ('TEXT_LINE_1',     'Wind arrows, default settings')
-      CALL PSETC ('TEXT_LINE_2',     '')
-      CALL PCOAST 
-      CALL PWIND
-      CALL PTEXT
-C
-C     Close MAGICS
-C
-      CALL PCLOSE
-      END
diff --git a/test/grib.f90 b/test/grib.f90
new file mode 100644
index 0000000..39e0996
--- /dev/null
+++ b/test/grib.f90
@@ -0,0 +1,37 @@
+	program magics
+
+	call popen
+
+	call pset1c("output_formats", (/"ps"/), 1)
+	call psetc("output_name", "grib")
+	call psetc("output_name_first_page_number", "off")
+
+	call psetr("subpage_lower_left_longitude", -20.00)
+	call psetr("subpage_upper_right_longitude", 60.00)
+	call psetr("subpage_upper_right_latitude", 60.00)
+	call psetc("subpage_map_projection", "cylindrical")
+	call psetr("subpage_lower_left_latitude", 30.00)
+
+	call psetc("grib_id", "data")
+	call psetc("grib_input_file_name", "data.grib")
+	call pgrib
+
+	call preset('grib_id')
+	call preset('grib_input_file_name')
+
+	call pcont
+
+
+	call psetc("map_grid_colour", "tan")
+	call psetc("map_grid", "on")
+	call psetc("map_coastline_colour", "tan")
+	call pcoast
+	call ptext
+
+	call preset('map_grid_colour')
+	call preset('map_grid')
+	call preset('map_coastline_colour')
+
+	call pclose
+
+	end
diff --git a/test/grib.py b/test/grib.py
new file mode 100644
index 0000000..918fca2
--- /dev/null
+++ b/test/grib.py
@@ -0,0 +1,70 @@
+# importing Magics module
+
+from Magics.macro import *
+
+
+# Example reference
+
+ref = 'grib'
+
+# Setting of the output file name
+
+output = output(output_formats=['ps'],
+                output_name_first_page_number='off',
+                output_name=ref)
+
+# Setting the coordinates of the geographical area
+
+europe = mmap(
+    subpage_upper_right_longitude=60.,
+    subpage_map_projection='cylindrical',
+    subpage_lower_left_longitude=-20.,
+    subpage_lower_left_latitude=30.,
+    subpage_upper_right_latitude=60.,
+    )
+
+# Coastlines setting
+
+coast = mcoast(map_grid='on', map_grid_colour='tan',
+               map_coastline_colour='tan',
+               )
+
+# Import the z500 data
+
+data = mgrib(grib_input_file_name='data.grib',
+             grib_id='data')
+
+
+
+cont = mcont()
+
+title = \
+    mtext(text_lines=["<font size='1'>Grib Field</font>"
+          , '',
+          "<grib_info id='data' key='name' format='%s'/> <grib_info id='data' key='valid-date'/>"
+          ], text_justification='left', text_font_size=0.5,
+          text_colour='charcoal')
+
+# add a legend
+
+legend = mlegend(
+    legend='on',
+    legend_text_colour='black',
+    legend_box_mode='positional',
+    legend_box_x_position=19.0,
+    legend_box_y_position=1.,
+    legend_box_x_length=2.,
+    legend_box_y_length=14.,
+    legend_display_type='continuous',
+    legend_title='on',
+    legend_title_text='Temperature',
+    legend_text_font_size='0.4',
+    )
+
+# To the plot
+
+print "plot"
+plot( output,  europe, data, cont, coast, )
+tofortran(ref, output,  europe, data, cont, coast, )
+
+
diff --git a/test/odb.py b/test/odb.py
new file mode 100755
index 0000000..f6925d1
--- /dev/null
+++ b/test/odb.py
@@ -0,0 +1,32 @@
+from Magics.macro import *
+
+ps = output({'output_formats': ['png','ps'], 'output_name':'myview'});
+
+
+coastlines = pcoast({'map_coastline_land_shade' : 'off',
+	                 'map_coastline_land_shade_colour' : 'white',
+					 'map_coastline_sea_shade' : 'off',
+					 'map_coastline_sea_shade_colour' : 'white'})
+
+
+odb = odb_geopoints({'odb_filename' : 'test.odb',
+           'odb_latitude_variable' :'lat at hdr', 
+           'odb_longitude_variable' : 'lon at hdr',
+           'odb_value_variable': 'lat at hdr'
+        })
+
+symbol = psymb({'symbol_table_mode' : 'off', 
+                'symbol_colour'     : 'blue',
+                'symbol_height'     : 0.16,
+                'symbol_marker'     : 15,
+               'symbol_type':'marker'})
+			     
+
+legend = plegend({'legend' : 'on', 
+				  'legend_text_colour':'black', 
+				  'legend_display_type':'continuous'})
+
+text = ptext({'text_justification': 'left', 
+			  'text_colour':'navy'})
+
+plot(ps, odb, symbol, coastlines,  text)
diff --git a/test/python/Makefile.am b/test/python/Makefile.am
deleted file mode 100755
index b93da9c..0000000
--- a/test/python/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-AUTOMAKE_OPTIONS  = foreign
-AM_COLOR_TESTS    = always
-
-TESTS_ENVIRONMENT = MAGPLUS_HOME=$(top_srcdir) LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$LD_LIBRARY_PATH PYTHONPATH=$(top_builddir)/python python 
-TESTS             = simple.py magmacro_example.py
-
-EXTRA_DIST = simple.py magmacro_example.py
diff --git a/test/python/Makefile.in b/test/python/Makefile.in
deleted file mode 100644
index 56086f5..0000000
--- a/test/python/Makefile.in
+++ /dev/null
@@ -1,541 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = test/python
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-AM_COLOR_TESTS = always
-TESTS_ENVIRONMENT = MAGPLUS_HOME=$(top_srcdir) LD_LIBRARY_PATH=$(top_builddir)/src/.libs:$LD_LIBRARY_PATH PYTHONPATH=$(top_builddir)/python python 
-TESTS = simple.py magmacro_example.py
-EXTRA_DIST = simple.py magmacro_example.py
-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) --foreign test/python/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign test/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):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
-	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
-	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
-	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
-	    else \
-	      skipped="($$skip tests were not run)"; \
-	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
-
-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
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-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: check-am install-am install-strip
-
-.PHONY: all all-am check check-TESTS check-am clean clean-generic \
-	clean-libtool 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 \
-	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/test/python/magmacro_example.py b/test/python/magmacro_example.py
deleted file mode 100755
index 4151915..0000000
--- a/test/python/magmacro_example.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from Magics.macro import *
-
-#Definition of the output formats
-formats = output({'output_formats':['ps','svg'],
-                  'output_name':'magmacro_example'})
-
-#Setting the coordinates of the geographical area
-europe = pmap({
-                "subpage_upper_right_longitude": 65.,
-                "subpage_map_projection": "polar_stereographic",
-                "subpage_map_vertical_longitude": 0.,
-                "subpage_lower_left_longitude": -37.27,
-                "subpage_lower_left_latitude": 18.51,
-                "subpage_upper_right_latitude": 51.28})
-
-coastlines = mcoast({'map_coastline_land_shade' : 'on',
-                     'map_coastline_land_shade_colour' : 'grey',
-                     'map_coastline_sea_shade' : 'on',
-                     'map_coastline_sea_shade_colour' : 'white'})
-
-#Import the z500 data
-z500 =  pgrib({ "grib_input_file_name" : "../data/z500.grb"})
-
-#Define the simple contouring for z500
-z500_contour = mcont({
-                "contour_level_selection_type": "interval",
-                "contour_line_colour": "black",
-                "contour_hilo_height": 0.25,
-                "contour_line_thickness": 1,
-                "contour_highlight_colour": "red",
-                "contour_highlight_thickness": 2,
-                "contour_interval": 5.})
-
-#Do the plot
-plot(formats, europe, coastlines, z500, z500_contour)
diff --git a/test/python/simple.py b/test/python/simple.py
deleted file mode 100755
index 4503600..0000000
--- a/test/python/simple.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import Magics
-
-Magics.init ()
-Magics.setc("output_format","svg")
-Magics.setc("output_name",  "python_simple")
-Magics.setr("SUBPAGE_LOWER_LEFT_LATITUDE",    30.0)
-Magics.setr("SUBPAGE_LOWER_LEFT_LONGITUDE",  -30.0)
-Magics.setr("SUBPAGE_UPPER_RIGHT_LATITUDE",   65.0)
-Magics.setr("SUBPAGE_UPPER_RIGHT_LONGITUDE",  70.0)
-
-Magics.setc("grib_input_file_name", "../data/z500.grb")
-Magics.grib()
-
-Magics.setc("map_coastline_colour", "khaki")
-Magics.setc('map_coastline_land_shade', 'on')
-Magics.setc('map_coastline_land_shade_colour', 'tan')
-Magics.setc('map_coastline_sea_shade', 'on')
-Magics.setc('map_coastline_sea_shade_colour', 'sky')
-Magics.setc('map_boundaries', 'on')
-Magics.setc('map_boundaries_colour', 'white')
-Magics.setc('map_disputed_boundaries', 'on')
-Magics.setc('map_disputed_boundaries_colour', 'red')
-Magics.setc('map_cities', 'on')
-Magics.setc("map_grid_colour","grey")
-Magics.coast()
-
-Magics.setc("contour",  "on")
-Magics.setc("contour_line_colour","green")
-Magics.cont()
-
-Magics.text()
- 
-Magics.finalize()
diff --git a/test/synop.bufr b/test/synop.bufr
new file mode 100755
index 0000000..7b4dc20
Binary files /dev/null and b/test/synop.bufr differ
diff --git a/test/test.odb b/test/test.odb
new file mode 100644
index 0000000..d67b237
Binary files /dev/null and b/test/test.odb differ
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
new file mode 100644
index 0000000..8282372
--- /dev/null
+++ b/tools/CMakeLists.txt
@@ -0,0 +1,27 @@
+ecbuild_add_resources( TARGET tools_scripts
+                       SOURCES 
+                            magml2json.pl
+                            mergexml.pl
+                            newbase.pl
+                            newclass.pl
+                            newdriver.pl
+                            newfactory.pl
+                            newprojection.pl
+                            newtemplate.pl
+                            xml2cc.pl
+                            xml2cc_list.pl
+                            xml2cc_new.pl
+                            xml2doc.pl
+                            xml2dtd.pl
+                            xml2icon.pl
+                            xml2mv.pl
+                            magicsCompatibilityChecker
+                      DONT_PACK
+                            ParaTemplate.odt
+)
+
+install ( FILES magicsCompatibilityChecker   
+            DESTINATION ${INSTALL_BIN_DIR} 
+                        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ 
+                                                OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
+
diff --git a/tools/Makefile.am b/tools/Makefile.am
deleted file mode 100755
index becb679..0000000
--- a/tools/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-LIBRARY_REVISION	= @LIBRARY_REVISION@
-LIBRARY_AGE		= @LIBRARY_AGE@
-
-EXTRA_DIST	= \
-		make_attributes \
-		mergexml.pl xml2cc.pl xml2cc_new.pl xml2dtd.pl xml2mv.pl \
-		newdriver.pl magicsCompatibilityChecker mapgen_clip
-
-bin_SCRIPTS	= magicsCompatibilityChecker 
diff --git a/tools/Makefile.in b/tools/Makefile.in
deleted file mode 100644
index bbf2058..0000000
--- a/tools/Makefile.in
+++ /dev/null
@@ -1,510 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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@
-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@
-target_triplet = @target@
-subdir = tools
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_boost_base.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)/m4/autotroll.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/magics_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__installdirs = "$(DESTDIR)$(bindir)"
-SCRIPTS = $(bin_SCRIPTS)
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
-am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-AXX = @AXX@
-BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
-BOOST_LDFLAGS = @BOOST_LDFLAGS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CPPLIBS = @CPPLIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EMOS_LIB_NAME = @EMOS_LIB_NAME@
-EMOS_LIB_PATH = @EMOS_LIB_PATH@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLIB = @FLIB@
-FLIBS = @FLIBS@
-FORTRAN_LIB_PATH = @FORTRAN_LIB_PATH@
-GREP = @GREP@
-GRIBAPI_LIBS = @GRIBAPI_LIBS@
-GRIBAPI_ROOT = @GRIBAPI_ROOT@
-GSVersion = @GSVersion@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBNAME = @LIBNAME@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAGICS_3RDPARTY_INCLUDE = @MAGICS_3RDPARTY_INCLUDE@
-MAGICS_3RDPARTY_LIBS = @MAGICS_3RDPARTY_LIBS@
-MAGICS_LIBRARY_AGE = @MAGICS_LIBRARY_AGE@
-MAGICS_LIBRARY_CURRENT = @MAGICS_LIBRARY_CURRENT@
-MAGICS_LIBRARY_REVISION = @MAGICS_LIBRARY_REVISION@
-MAGICS_PACKAGE_COPYRIGHT_PERIOD = @MAGICS_PACKAGE_COPYRIGHT_PERIOD@
-MAGICS_PACKAGE_NAME = @MAGICS_PACKAGE_NAME@
-MAGICS_PACKAGE_RELEASE_DATE = @MAGICS_PACKAGE_RELEASE_DATE@
-MAGICS_PACKAGE_VERSION = @MAGICS_PACKAGE_VERSION@
-MAGICS_PACKAGE_VERSION_ADDENDUM = @MAGICS_PACKAGE_VERSION_ADDENDUM@
-MAGICS_VISIBILITY = @MAGICS_VISIBILITY@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NUMPY_INCLUDE = @NUMPY_INCLUDE@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ODB_PATH = @ODB_PATH@
-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@
-PKGCONFIG_REQUIRES = @PKGCONFIG_REQUIRES@
-PKG_CONFIG = @PKG_CONFIG@
-PLATFORM_DEFINES_MARS = @PLATFORM_DEFINES_MARS@
-PSDelegate = @PSDelegate@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QMAKE = @QMAKE@
-QT_CFLAGS = @QT_CFLAGS@
-QT_CPPFLAGS = @QT_CPPFLAGS@
-QT_CXXFLAGS = @QT_CXXFLAGS@
-QT_DEFINES = @QT_DEFINES@
-QT_INCPATH = @QT_INCPATH@
-QT_LDFLAGS = @QT_LDFLAGS@
-QT_LFLAGS = @QT_LFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_PATH = @QT_PATH@
-QT_VERSION = @QT_VERSION@
-QT_VERSION_MAJOR = @QT_VERSION_MAJOR@
-RANLIB = @RANLIB@
-RCC = @RCC@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHLIB_EXT = @SHLIB_EXT@
-SITE_NAME = @SITE_NAME@
-STRIP = @STRIP@
-SWIG = @SWIG@
-UIC = @UIC@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-bufr = @bufr@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-cairo = @cairo@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ghostscript_font_dir = @ghostscript_font_dir@
-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@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-metview = @metview@
-mkdir_p = @mkdir_p@
-odb = @odb@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-proj4 = @proj4@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-python = @python@
-pythondir = @pythondir@
-qt = @qt@
-raster = @raster@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-spot = @spot@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-LIBRARY_REVISION = @LIBRARY_REVISION@
-LIBRARY_AGE = @LIBRARY_AGE@
-EXTRA_DIST = \
-		make_attributes \
-		mergexml.pl xml2cc.pl xml2cc_new.pl xml2dtd.pl xml2mv.pl \
-		newdriver.pl magicsCompatibilityChecker mapgen_clip
-
-bin_SCRIPTS = magicsCompatibilityChecker 
-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 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):
-install-binSCRIPTS: $(bin_SCRIPTS)
-	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
-	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
-	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-binSCRIPTS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
-	files=`for p in $$list; do echo "$$p"; done | \
-	       sed -e 's,.*/,,;$(transform)'`; \
-	test -n "$$list" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-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 $(SCRIPTS)
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-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 -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-binSCRIPTS
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binSCRIPTS 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 \
-	uninstall uninstall-am uninstall-binSCRIPTS
-
-
-# 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/RPM_build_specs/EmosLib.spec b/tools/RPM_build_specs/EmosLib.spec
new file mode 100644
index 0000000..e8ddc8f
--- /dev/null
+++ b/tools/RPM_build_specs/EmosLib.spec
@@ -0,0 +1,118 @@
+Name: emos
+Version: 000370
+Release: 17.1
+Summary: Library and tools to handle Grib 1 and BUFR files
+URL: http://www.ecmwf.int/products/data/software/interpolation.html
+BuildRoot:    %{_tmppath}/emos-%{version}-build
+Source0: emos-%{version}.tar.bz
+License: LGPLv3
+Group: Productivity/Scientific/Other
+
+BuildRequires: gcc
+
+%if 0%{?suse_version}
+BuildRequires: gcc-fortran
+%else
+BuildRequires: gcc-gfortran
+%endif
+
+# Copyright 2009 ECMWF
+
+#!BuildIgnore: post-build-checks
+
+%description
+Runtime files of the ECMWF Emoslib, an application program interface accessible developed to do meteorological interpolation and for the encoding of WMO FM-92 GRIB edition 1 and BUFR files.
+
+Please be aware that this library is build in DOUBLE PRECISION for the use in Magics++ and Metview.
+
+
+
+%prep
+#cd /usr/src/packages/BUILD
+#tar -xzvf /usr/src/packages/SOURCES/emos_%{version}.tar.gz
+#echo $PWD
+%setup -q
+
+%build
+
+#cd emos_%{version}
+echo $PWD
+
+export R64=R64
+export CNAME=_gfortran
+export target=linux
+
+%ifarch x86_64
+ export A64=A64
+%endif
+
+echo $R64 > .r64
+echo %_libdir > .emos
+
+cat Makefile.in | sed s:reals:$R64: > Makefile
+
+for subdirs in gribex pbio bufrdc bufrtables crexdc interpolation fft
+do
+cat $subdirs/Makefile.in | sed s:reals:$R64: | sed s:arch:$target: | sed s:plat:$A64: | sed s:depl:emos: | sed s:comp:$CNAME: > $subdirs/Makefile
+done
+
+for subdirs in examples/gribex examples/bufr examples/crex examples/interpolation examples/fft
+do
+cat $subdirs/Makefile.in | sed s:reals:$R64: | sed s:arch:$target: | sed s:plat:$A64: | sed s:comp:$CNAME: > $subdirs/Makefile
+done
+
+cat config/config.$target$CNAME$R64$A64.in | sed s:emos:$INSTALL_DIR: > config/config.$target$CNAME$R64$A64
+
+make
+ls bufrtables/*000* > .list/bufrtables
+
+%install
+# install all files into the BuildRoot
+#./install
+echo $PWD
+echo $RPM_BUILD_ROOT
+export R64=R64
+export INSTALL_DIR=$RPM_BUILD_ROOT/%_libdir
+
+mkdir -p $RPM_BUILD_ROOT/%_libdir
+
+echo "Installing Tables, land-sea mask and EMOS library into $INSTALL_DIR ... "
+
+
+mkdir -p $INSTALL_DIR/gribtables
+mkdir -p $INSTALL_DIR/bufrtables
+mkdir -p $INSTALL_DIR/crextables
+mkdir -p $INSTALL_DIR/land_sea_mask
+mkdir -p $INSTALL_DIR/gribtemplates
+
+for i in `cat .list/gribtables` ; do
+    cp $i $INSTALL_DIR/gribtables
+done
+for i in `cat .list/bufrtables` ; do
+    cp $i $INSTALL_DIR/bufrtables
+done
+for i in `cat .list/crextables` ; do
+    cp $i $INSTALL_DIR/crextables
+done
+for i in `cat .list/land_sea_mask` ; do
+    cp $i $INSTALL_DIR/land_sea_mask
+done
+for i in `cat .list/gribtemplates` ; do
+    cp $i $INSTALL_DIR/gribtemplates
+done
+
+cp libemos$R64.a $INSTALL_DIR/
+
+%clean
+# clean up the hard disc after build
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+%_libdir/libemosR64.a
+%_libdir/bufrtables
+%_libdir/crextables
+%_libdir/gribtables
+%_libdir/gribtemplates
+%_libdir/land_sea_mask
+
diff --git a/tools/RPM_build_specs/emoslib/EmosLib.spec b/tools/RPM_build_specs/emoslib/EmosLib.spec
new file mode 100644
index 0000000..153e62e
--- /dev/null
+++ b/tools/RPM_build_specs/emoslib/EmosLib.spec
@@ -0,0 +1,155 @@
+Name: emos
+Version: 000382
+Release: 1.1
+Summary: Library and tools to handle Grib 1 and BUFR files
+URL: http://www.ecmwf.int/products/data/software/interpolation.html
+BuildRoot:    %{_tmppath}/emos-%{version}-build
+Source0: emos-%{version}.tar.bz
+License: LGPLv3
+Group: Productivity/Scientific/Other
+# Copyright 2011 ECMWF
+
+BuildRequires: gcc
+BuildRequires: grib_api  
+BuildRequires: grib_api-devel
+
+%if 0%{?suse_version}
+BuildRequires: gcc-fortran
+%else
+BuildRequires: gcc-gfortran
+%endif
+
+%if 0%{?suse_version} > 1100
+BuildRequires: libjasper-devel
+%endif
+
+
+#!BuildIgnore: post-build-checks
+
+Requires: grib_api
+
+%description
+Runtime files of the ECMWF Emoslib, an application program interface accessible developed to do meteorological interpolation and for the encoding of WMO FM-92 GRIB edition 1 and BUFR files.
+
+Please be aware that this library is build in DOUBLE PRECISION for the use in Magics++ and Metview.
+
+
+
+%prep
+
+%setup -q
+
+%build
+
+export R64=R64
+export CNAME=_gfortran
+export target=linux
+export GRIB_API=grib_api_merging
+export GRIB_API_DIR=/usr
+export JASPER_DIR="-ljasper"
+
+%ifarch x86_64
+ export A64=A64
+%endif
+
+echo $R64 > .r64
+echo %_libdir > .emos
+
+# correct link options for 64bit
+%ifarch x86_64
+olds="DEBUG ="
+news="DEBUG = -fPIC "
+chmod +w config/config.$target$CNAME$R64$A64.in
+sed "s/${olds}/${news}/g" config/config.$target$CNAME$R64$A64.in > temp.in
+\mv -f temp.in config/config.$target$CNAME$R64$A64.in
+%endif
+
+#cat Makefile.in | sed s:reals:$R64: > Makefile
+cat Makefile.in | sed s:reals:$R64: | sed s:glue:grib_api_merging: > Makefile
+
+for subdirs in gribex pbio bufrdc bufrtables crexdc interpolation fft
+do
+cat $subdirs/Makefile.in | sed s:reals:$R64: | sed s:arch:$target: | sed s:plat:$A64: | sed s:depl:emos: | sed s:comp:$CNAME: > $subdirs/Makefile
+done
+
+for subdirs in examples/gribex examples/bufr examples/crex examples/interpolation examples/fft
+do
+cat $subdirs/Makefile.in | sed s:reals:$R64: | sed s:arch:$target: | sed s:plat:$A64: | sed s:comp:$CNAME: > $subdirs/Makefile
+done
+
+#grib_api
+cat grib_api_merging/Makefile.in | sed s:reals:$R64: | sed s:arch:$target: | sed s:plat:$A64: | sed s:comp:$CNAME: | sed s:depl:emos: | sed s:glue:$GRIB_API_DIR: > grib_api_merging/Makefile
+
+cat examples/interpolation_grib_api/Makefile.in | sed s:reals:$R64: | sed s:arch:$target: | sed s:plat:$A64: | sed s:comp:$CNAME: | sed s:glue:$GRIB_API_DIR: | sed s:jasp:$JASPER_DIR: > examples/interpolation_grib_api/Makefile
+
+cat config/config.$target$CNAME$R64$A64.in | sed s:emos:$INSTALL_DIR: > config/config.$target$CNAME$R64$A64
+
+
+make
+ls bufrtables/*000* > .list/bufrtables
+
+
+
+%install
+# install all files into the BuildRoot
+#./install
+echo $PWD
+echo $RPM_BUILD_ROOT
+export R64=R64
+export INSTALL_DIR=$RPM_BUILD_ROOT/%_libdir
+
+mkdir -p $RPM_BUILD_ROOT/%_libdir
+
+echo "Installing Tables, land-sea mask and EMOS library into $INSTALL_DIR ... "
+
+
+mkdir -p $INSTALL_DIR/gribtables
+mkdir -p $INSTALL_DIR/bufrtables
+mkdir -p $INSTALL_DIR/crextables
+mkdir -p $INSTALL_DIR/land_sea_mask
+mkdir -p $INSTALL_DIR/gribtemplates
+
+for i in `cat .list/gribtables` ; do
+    cp $i $INSTALL_DIR/gribtables
+done
+for i in `cat .list/bufrtables` ; do
+    cp $i $INSTALL_DIR/bufrtables
+done
+for i in `cat .list/crextables` ; do
+    cp $i $INSTALL_DIR/crextables
+done
+for i in `cat .list/land_sea_mask` ; do
+    cp $i $INSTALL_DIR/land_sea_mask
+done
+for i in `cat .list/gribtemplates` ; do
+    cp $i $INSTALL_DIR/gribtemplates
+done
+
+cp libemos$R64.a $INSTALL_DIR/
+
+%clean
+# clean up the hard disc after build
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+%_libdir/libemosR64.a
+%_libdir/bufrtables
+%_libdir/crextables
+%_libdir/gribtables
+%_libdir/gribtemplates
+%_libdir/land_sea_mask
+
+%changelog
+
+* Tue Mar 22 2011 - magics at ecmwf.int
+- Full support for GRIB 2 files for interpolation
+- Links with GribAPI 1.9.9
+
+* Sun Feb 21 2011 - magics at ecmwf.int
+- update Emos version to 377 
+- Better GRIB 2 support
+
+* Sun Dec 19 2010 - magics at ecmwf.int
+- update Emos version to 376
+
diff --git a/tools/RPM_build_specs/emoslib/generateRPM.sh b/tools/RPM_build_specs/emoslib/generateRPM.sh
new file mode 100755
index 0000000..0b28fc6
--- /dev/null
+++ b/tools/RPM_build_specs/emoslib/generateRPM.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+logfile=$0_.log
+echo "Log is written in ${logfile}"
+exec > $logfile 2>&1
+set -x
+
+EMOS_VERSION=000380
+
+rpmspec=EmosLib.spec
+
+#
+#  generate SPEC file with emos version number
+#
+sed "s/000xxx/${EMOS_VERSION}/g" ${rpmspec}.in > ${rpmspec}
+
+#
+#   Prepare tarball in right format
+#
+tar -xzf emos_${EMOS_VERSION}.tar.gz
+\mv emos_${EMOS_VERSION} emos-${EMOS_VERSION}
+# correct link options for 64bit
+olds="DEBUG ="
+news="DEBUG = -fPIC "
+chmod +w emos-${EMOS_VERSION}/config/config.linux_gfortranR64A64.in
+sed "s/${olds}/${news}/g" emos-${EMOS_VERSION}/config/config.linux_gfortranR64A64.in > temp.in
+\mv -f temp.in emos-${EMOS_VERSION}/config/config.linux_gfortranR64A64.in
+tar -cjf emos-${EMOS_VERSION}.tar.bz emos-${EMOS_VERSION}
+\rm -rf emos-${EMOS_VERSION}
+
+#
+#  SRC RPM
+#
+rpmbuild --nodeps --buildroot=${PWD}/_rpm -bs \
+	--define="_rpmdir ${PWD}"  --define="_srcrpmdir ${PWD}" --define="_sourcedir ${PWD}" \
+	--define="_specdir ${PWD}" --define="_builddir ${PWD}" \
+	${rpmmacros} ${rpmspec}
+
+#
+#  BIN RPM
+#
+rpmbuild --nodeps --buildroot=${PWD}/_rpm -ba \
+	--define="_rpmdir ${PWD}"  --define="_sourcedir ${PWD}" \
+	--define="_specdir ${PWD}" --define="_builddir ${PWD}" \
+	${rpmmacros} ${rpmspec}
+
+\rm -rf emos-000380.tar.bz emos-000380 ${rpmspec}
diff --git a/tools/RPM_build_specs/grib_api/rpms/grib_api.spec b/tools/RPM_build_specs/grib_api/rpms/grib_api.spec
new file mode 100644
index 0000000..e408665
--- /dev/null
+++ b/tools/RPM_build_specs/grib_api/rpms/grib_api.spec
@@ -0,0 +1,96 @@
+Name: grib_api
+Version: 1.9.9
+Release: 2.1
+Summary: Library and tools to handle Grib 1 and 2 files
+URL:http://www.ecmwf.int/products/data/software/grib_api.html
+BuildRoot:    %{_tmppath}/%{name}-%{version}-build
+Source0: %{name}-%{version}.tar.gz
+License: LGPLv3
+Group: Productivity/Scientific/Other
+
+#
+# Build requirements
+#
+BuildRequires: gcc
+
+%if 0%{?suse_version} >= 1130
+BuildRequires: python-numpy-devel python-devel swig
+Requires: python python-numpy
+%endif
+
+%if 0%{?suse_version}  
+BuildRequires: gcc-fortran  
+%else  
+BuildRequires: gcc-gfortran  
+%endif
+
+#
+#  SLES 9 & 10 do NOT have jasper!!!
+#
+%if 0%{?sles_version} != 10 && 0%{?sles_version} != 9 && 0%{?centos_version} < 100 
+PreReq: libjasper-devel
+%endif
+
+
+# Copyright 2010 ECMWF
+
+#!BuildIgnore: post-build-checks
+
+%description
+Runtime files of the ECMWF GRIB API is an application program interface accessible from C and FORTRAN programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages. A useful set of command line tools is also provided to give quick access to grib messages.
+
+%package devel
+Summary: Developing package for grib_api
+Group: Development/Libraries
+%description devel
+Header files and library of the ECMWF GRIB API is an application program interface accessible from C and FORTRAN programs developed for encoding and decoding WMO FM-92 GRIB edition 1 and edition 2 messages. A useful set of command line tools is also provided to give quick access to grib messages.
+
+
+%prep
+%setup -q
+%build
+%if 0%{?sles_version} == 10 || 0%{?sles_version} == 9 || 0%{?centos_version} > 500 
+  ./configure --prefix=/usr --libdir=%_libdir CFLAGS="$CFLAGS -fPIC" --disable-jpeg
+%else
+%if 0%{?suse_version} >= 1130
+  ./configure --prefix=/usr --libdir=%_libdir CFLAGS="$CFLAGS -fPIC" --enable-python
+%else
+  ./configure --prefix=/usr --libdir=%_libdir CFLAGS="$CFLAGS -fPIC"
+%endif
+%endif
+
+make
+%install
+# install all files into the BuildRoot
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%clean
+# clean up the hard disc after build
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+/usr/bin/grib*
+/usr/bin/tigge*
+/usr/bin/big2gribex
+/usr/bin/parser
+/usr/bin/points
+/usr/bin/gg_sub_area_check
+/usr/share/definitions
+%if 0%{?suse_version} == 1130
+%_libdir/python2.6/site-packages/grib_api
+%endif
+%if 0%{?suse_version} > 1130
+%_libdir/python2.7/site-packages/grib_api
+%endif
+
+%files devel
+%defattr(-,root,root,-)
+/usr/include/grib_api.h
+/usr/include/grib_api.mod
+/usr/include/grib_api_f77.h
+%_libdir/libgrib_api.a
+%_libdir/libgrib_api_f77.a
+%_libdir/libgrib_api_f90.a
+/usr/ifs_samples
+/usr/share/samples
diff --git a/tools/axis2doc.py b/tools/axis2doc.py
new file mode 100644
index 0000000..06d590c
--- /dev/null
+++ b/tools/axis2doc.py
@@ -0,0 +1,285 @@
+#!/usr/bin/python
+from xml.sax.handler import ContentHandler
+from xml.sax import make_parser
+from types import *
+
+import sys
+import json
+
+
+class ObjectHandler(ContentHandler):
+	path ="../src/xml/"
+	tag = ""
+	doc = ""
+	magics = {}
+	objects = {}
+	object = {}
+	param = {}
+	paramdoc = ""
+	actiondoc = ""
+	parameters = {}
+
+	def boolset(p, attrs):
+		p["set"] = "psetc"
+		p["values"] = ["on", "off"]
+
+	def lineset(p, attrs):
+		p["set"] = "psetc"
+		p["values"] = ["solid", "dash", "dot", "chain_dash", "chain_dot"]
+		p["type"] = "toggle"
+
+	def justification(p, attrs):
+		p["set"] = "psetc"
+		p["values"] = ["left", "right", "centre"]
+		p["type"] = "toggle"
+
+	def listpolicy(p, attrs):
+		p["set"] = "psetc"
+		p["values"] = ["lastone", "cycle"]
+		p["type"] = "toggle"
+		
+	def anyset(p, attrs):
+		p["set"] = "psetc"
+		if  attrs.has_key("values") :
+			val = attrs["values"]
+			values = val.split("/")
+			p["values"] = values
+			p["type"] = "toggle"
+		return
+	
+	
+	def intnumber(p, attrs):
+		p["type"] = "number"
+		p["set"] = "pseti"
+		return
+	def floatnumber(p, attrs):
+		p["type"] = "number"
+		p["set"] = "psetr"
+
+	def intlist(p, attrs):
+		p["type"] = "numberlist"
+		p["set"] = "pset1i"
+		return
+
+	def floatlist(p, attrs):
+		p["type"] = "numberlist"
+		p["set"] = "pset1r"
+		return
+
+	def stringlist(p, attrs):
+		p["type"] = "stringlist"
+		p["set"] = "pset1c"
+		return
+
+	types = { 
+		"bool": boolset,
+		"float": floatnumber,
+		"int": intnumber,
+		"floatarray": intlist,
+		"intarray": floatlist,
+		"stringarray": stringlist,
+		"string": anyset,
+		"AxisAutomaticSetting": anyset,
+		"Colour": anyset,
+		"LineStyle": lineset,
+		"ListPolicy": listpolicy,
+		"Justification": justification
+	}
+
+
+	def get(self, attrs, name, default):
+		if  attrs.has_key(name):
+			return attrs.get(name)
+		else :
+			return default
+
+	def newparam(self, attrs):
+		p = {}
+		self.parameters[attrs.get("name")] = p
+		p["name"] = attrs.get("name")
+		p["type"] = attrs.get("to")
+		if attrs.has_key("metview") :
+			p["metview"]= attrs["metview"]
+		p["values"] = []
+		t = p["type"]
+		if  self.types.has_key(t) :
+			self.types[t](p, attrs)
+		else :
+			p["set"]="psetc"
+			p["type"]="toggle"
+
+
+		p["default"] = attrs.get("default")
+		return p
+
+	def newobject(self, attrs):
+		o = {}
+		o["name"] = attrs.get("name")
+		o["documentation"] = ""
+		o["parameters"] = []
+		if  attrs.has_key("inherits") :
+			o["inherits"]=attrs.get("inherits")
+			
+		return o
+
+	def startElement(self, name, attrs):
+		self.tag = name
+		if ( name == "class" ) : 
+			self.doc = name
+		# New object
+			self.object = self.newobject(attrs)
+			self.magics[attrs.get("name")] = self.object;
+		if ( name == "parameter" ) : 
+			if  self.get(attrs, "visible", "on") == "on" :
+				self.doc = name
+				self.param = self.newparam(attrs)
+				self.object["parameters"].append(self.param)
+			else :
+				self.doc = "nodoc"
+		if ( name == "option") : 
+			val = attrs.get("fortran")
+			self.param["values"].append(val)
+			if ( self.param.has_key(val) == False ):
+				self.param[val] = []
+			self.param[val].append(attrs.get("name"))
+		if ( name == "set" ) : 
+			val = attrs.get("value")
+			if ( self.param.has_key(val) == False ):
+				self.param[val] = []
+			self.param[val].append(attrs.get("name"))
+
+		
+
+	def characters(self, content):
+		if ( self.tag == "documentation" ) : 
+			if ( self.doc == "class" ) :
+				self.actiondoc += content.lstrip();
+			if ( self.doc == "parameter" ) :
+				self.paramdoc += content.lstrip();
+				
+
+	def endElement(self, name):
+		if ( name == "parameter"  and self.doc == "parameter") : 
+			self.param["documentation"] = self.paramdoc
+			self.paramdoc= ""
+		if ( name == "class" ) : 
+			self.object["documentation"] = self.actiondoc
+			self.actiondoc= ""
+			
+	def printDef(self):
+		print json.dumps(self.magics, indent=2)
+	
+
+	def parse(self, file):
+		saxparser = make_parser()
+		saxparser.setContentHandler(self)
+		datasource = open(self.path + file, "r")
+		saxparser.parse(datasource)
+		return self.magics
+	
+
+	def prepare(self, defparam):
+		param = defparam.copy()
+		print "prepare-->"
+		print param
+		print "<---prepare"
+		if param.has_key("values") == False:
+			return param
+		if len(param["values"]) == 0:
+			return param
+		for val in param["values"]:
+			print val + " For " + param["name"]
+			newp = []
+			if param.has_key(val):
+				for v in param[val]:
+					print "prepare-->" + v
+					# Can be a parameter or another object!
+					if self.parameters.has_key(v) :
+						self.append(newp, v)
+					else:
+						self.append(newp, self.getList(v))
+			param[val] = newp
+
+		return param
+
+	def append(self, p1, p2):
+		for p in p2:
+			p1.append(p)
+
+
+	def getList(self, object):
+		definition = self.magics[object] 
+		list = []
+		if definition.has_key("inherits"):
+			self.append(list, self.getList(definition["inherits"]))
+		for p in definition["parameters"]:
+			list.append(p["name"])
+		return list;
+			
+			
+
+	def buildParam(self, param):
+		parameters = []
+		if param.has_key("inherits"):
+			print param["name"] + " inherits from " + param["inherits"]	
+			parent = self.buildParam(self.magics[param["inherits"]])
+			self.append(parameters, parent) 
+		parameters.append(self.prepare(param))
+		return parameters
+				
+		
+
+	def build(self, params):
+		parameters = []
+		for p in params:
+			print "find class " + p
+			if ( self.magics.has_key(p) ) :
+				defp = self.magics[p]
+			# internal object
+				for p in defp["parameters"]:
+					self.append(parameters, self.buildParam(p))
+		return parameters
+
+	def getParams(self, action):
+		return self.build(action);
+
+	def getDoc(self, action):
+		action = self.magics[action]
+
+		return action["documentation"]
+			
+
+
+def createAction(abbr, name, files):
+
+	object = ObjectHandler()
+	for f in files:
+		object.parse(f)
+
+	parameters = object.getParams([name]);
+	doc = object.getDoc(name);
+
+
+	magics={}
+	magics["magics"] = []
+	action={}
+	action["action"]= abbr;
+	action["metview"]="m" + abbr
+	action["fortran"]="p" + abbr
+	action["documentation"]=doc
+	action["parameters"]=parameters
+	magics["magics"].append(action)
+
+
+
+	f = open(abbr+'.json', "w")
+	f.write(json.dumps(magics, indent=1))
+
+
+#createAction("coast", "Coastlines",  ["Coastlines.xml", "CoastPlotting.xml", "LabelPlotting.xml", "GridPlotting.xml"]) 
+#createAction("axis",  "Axis", ["Axis.xml"]) 
+#createAction("symb",  "SymbolPlotting", ["SymbolPlotting.xml"]) 
+#createAction("subpage",  "FortranViewNode", ["SubPage.xml", "GeoRectangularProjection.xml", 
+#											 "XYTransformation.xml", "Proj4Projection.xml", "PolarStereographicProjection.xml"]) 
+
+createAction("wind",  "Wind", ["wind.xml"]) 
diff --git a/tools/beau.py b/tools/beau.py
new file mode 100644
index 0000000..36db2e5
--- /dev/null
+++ b/tools/beau.py
@@ -0,0 +1,10 @@
+
+import xml.dom.minidom
+
+xml = xml.dom.minidom.parse("../src/xml/TextVisitor.xml") # or xml.dom.minidom.parseString(xml_string)
+pretty_xml_as_string = xml.toprettyxml()
+
+
+print pretty_xml_as_string
+
+
diff --git a/tools/beautify-xml.py b/tools/beautify-xml.py
new file mode 100644
index 0000000..bb4294c
--- /dev/null
+++ b/tools/beautify-xml.py
@@ -0,0 +1,14 @@
+
+import lxml.etree as etree
+import sys
+
+x = etree.parse(sys.argv[1])
+beau = etree.tostring(x, pretty_print = True)
+
+file=open(sys.argv[1], "w")
+
+file.write(beau)
+
+file.close()
+
+
diff --git a/tools/generateDebugLibs.sh b/tools/generateDebugLibs.sh
new file mode 100755
index 0000000..13aa09a
--- /dev/null
+++ b/tools/generateDebugLibs.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+#scriptdir=`dirname ${0}`
+#scriptdir=`(cd ${scriptdir}; pwd)`
+#scriptname=`basename ${0}`
+tostripdir=`dirname "$1"`
+tostripfile=`basename "$1"`
+
+set -e
+
+if [ -z ${tostripfile} ] ; then
+#  echo "USAGE ${scriptname} <tostrip>"
+  echo "to-be-striped file must be specified"
+  exit 1
+fi
+
+cd "${tostripdir}"
+
+debugfile="${tostripfile}.debug"
+
+echo "stripping ${tostripfile}, putting debug info into ${debugfile}"
+#objcopy --only-keep-debug "${tostripfile}" "${debugfile}"
+cp "${tostripfile}" "${debugfile}"
+#strip --strip-debug --strip-unneeded "${tostripfile}"
+objcopy --strip-debug "${tostripfile}"
+objcopy --add-gnu-debuglink="${debugfile}" "${tostripfile}"
+chmod -x "${debugfile}"
diff --git a/tools/magml2json.pl b/tools/magml2json.pl
new file mode 100755
index 0000000..7253310
--- /dev/null
+++ b/tools/magml2json.pl
@@ -0,0 +1,153 @@
+use XML::Parser;
+use Data::Dumper;
+
+
+$in = shift;
+
+$p1 = new XML::Parser(Style => "Tree");
+$x = $p1->parsefile($in);
+
+$y = process({}, $x->[0],$x->[1]);
+
+$y = $y->{magics};
+
+
+# Patche
+
+
+if(exists $y->{page}) {
+    if(exists $y->{page}->{nopageid}) {
+        delete $y->{page}->{nopageid};
+        $y->{page}->{_order} = [map { $_ eq "nopageid" ? "page_id" : $_ } @{$y->{page}->{_order}}];
+        $y->{page}->{page_id} = "off";
+    }
+}
+
+if(exists $y->{drivers}) {
+    my @d;
+    foreach my $d ( keys %{$y->{drivers}} )
+    {
+        unless($d =~ /^_/) {
+            $y->{drivers}->{$d}->{format} = $d;
+            unshift @{$y->{drivers}->{$d}->{_order}}, "format";
+            push @d, $y->{drivers}->{$d};
+    }
+    }
+    $y->{drivers} = \@d;
+}
+
+json($y);
+
+sub json {
+    my ($r, $depth) = @_;
+    print "  " x $depth;
+    print "{\n";
+
+    my %seen  = ( "_order" => 1 );
+    my @order = @{$r->{_order}};
+    my @o;
+    foreach my $k ( @order ) {
+        unless($seen{$k})
+        {
+            $seen{$k}++;
+            push @o, $k;
+        }
+    }
+
+    my $count = @o;
+    my $i   = 0;
+    foreach my $k ( @o ) {
+        print "  " x ($depth + 1);
+        print "\"$k\":";
+        my $x = $r->{$k};
+        if(ref($x) =~ /ARRAY/)
+        {
+            print "[\n";
+            my $cnt = @{$x};
+            my $j   = 0;
+            foreach my $o ( @{$x} )
+            {
+                json($o,$depth + 2);
+                if($j++ != $cnt-1)
+                {
+                    #print "  " x ($depth + 2);
+                    print ",\n";
+                }
+            }
+            print "\n";
+            print "  " x ($depth + 1);
+            print "]\n";
+        }
+        elsif(ref($x) =~ /HASH/) {
+            print "\n";
+            json($x,$depth+1);
+        }
+        else
+        {
+            print "\"$x\"";
+        }
+        if($i++ != $count-1)
+        {
+            print ",\n";
+        }
+        else
+        {
+            print "\n";
+        }
+    } 
+    print "  " x $depth;
+    print "}";
+
+}
+
+
+
+sub process {
+    my ($root, $tag,$kids, $depth) = @_;
+    my %att = %{$kids->[0]};
+    my $r;
+
+    $root->{_order} = [] unless(exists $root->{_order});
+    push @{$root->{_order}}, $tag;
+
+    if($root->{$tag}) {
+        $r = \%att;
+       if(ref($root->{$tag}) =~ /ARRAY/) {
+           push @{$root->{$tag}}, $r;
+       }
+       else
+       {
+           $root->{$tag} = [$root->{$tag}, $r];
+       }
+
+    }
+    else {
+        $r = $root->{$tag} = \%att;
+    }
+
+    $r->{_order} = [] unless(exists $r->{_order});
+    foreach my $k ( sort keys %att ) {
+        push @{$r->{_order}}, $k; 
+    }
+
+
+    for(my $i = 1; $i < @{$kids} ; $i += 2)
+    {
+            if(ref($kids->[$i+1]))
+            {
+                    process($r, $kids->[$i],$kids->[$i+1], $depth+1);
+            }
+            else {
+                my $text = $kids->[$i+1];
+                # $root->{_ctext} = $text;
+                #print "->$text\n";
+            }
+    }
+
+    return $root;
+
+
+}
+#print Dumper($x);
+
+
diff --git a/tools/make_wrappers b/tools/make_wrappers
new file mode 100755
index 0000000..49ce04c
--- /dev/null
+++ b/tools/make_wrappers
@@ -0,0 +1,79 @@
+
+METVIEW_SRC_HOME='/tmp/PERFORCE/metview'
+
+target="$METVIEW_SRC_HOME/src/libMagWrapper"
+files=' 
+	Coastlines.xml
+	CoastPlotting.xml	
+	GridPlotting.xml
+	LabelPlotting.xml
+    SuperPage.xml
+    Page.xml
+    SubPage.xml
+    Frame.xml
+    Legend.xml
+    Title.xml
+    TextAction.xml
+    TextBox.xml
+    CylindricalProjection.xml
+    SatelliteProjection.xml
+    ConicProjection.xml
+	CentreGeoArea.xml
+    CornersArea.xml
+    PageID.xml
+    Grib.xml
+    Contour.xml
+    IsoPlot.xml
+    IsoLabel.xml
+    IsoHighlight.xml
+    IsoShading.xml
+    ValuePlot.xml
+    LevelSelection.xml
+    LevelListSelectionType.xml
+    IntervalSelectionType.xml
+    CountSelectionType.xml
+    HiLo.xml
+    Wind.xml
+    HiLoText.xml
+    Akima474.xml
+	Akima760.xml
+	Akima761.xml
+    HiLoText.xml
+	HiLoTechnique.xml
+	HiLoSave.xml
+	HiLoNumber.xml
+	HiLoMarker.xml
+    
+'
+
+for i in $files
+do	
+   echo "$i"
+   perl56 xml2mv.pl ../src/xml/$i >> objects
+    
+done
+
+# copy the attributes files..
+
+for file in `ls wrap/*`
+do		
+      x=`basename $file`
+      
+      if ( ! [  -a $target/$x ] ) then
+        echo " create " $x
+        touch $target/$x
+     fi
+      
+       
+      
+      if  ! ( `diff $file $target 2>&1 > /dev/null`  ) then
+                
+        echo " update --->" $file
+        mv --backup $file $target         
+      fi 
+     
+done
+
+
+
+
diff --git a/tools/newbase.pl b/tools/newbase.pl
new file mode 100755
index 0000000..e2b0f3e
--- /dev/null
+++ b/tools/newbase.pl
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+use strict;
+use Date::Calc;
+
+my $class = @ARGV[0];
+shift @ARGV;
+
+
+my @parents = @ARGV;
+
+(my $year,my $month,my $day) = Date::Calc::Today();
+my $string = Date::Calc::Date_to_Text($year, $month, $day);
+
+open STDOUT, ">src/$class.h";
+print <<"EOF";
+/*! \\file $class.h
+    \\brief Definition of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+#ifndef $class\_H
+#define $class\_H
+
+#include "magics.h"
+#include "Translator.h"
+#include "Factory.h"
+
+
+EOF
+
+foreach my $parent (@parents) {
+	print "#include \"$parent\.h\"\n";
+}
+print "\n";
+print "namespace magics {\n\n";
+print "class XmlNode;\n";
+my $sep = ":";
+print "class $class";
+foreach my $parent (@parents) {
+	print "$sep public $parent";
+	$sep = ",";
+}
+print " {\n";
+
+
+
+print <<"EOF";
+
+public:
+	$class() {}
+	virtual ~$class() {}
+    
+    virtual void set(const XmlNode&) {
+        MagLog::dev() << "$class\::set(const XmlNode&)---> to be checked!...\\n";
+    }
+    virtual void set(const map<magstring, magstring>&) {
+        MagLog::dev() << "$class\::set(const map<magstring, magstring&)---> to be checked!...\\n";
+    }
+    virtual $class* clone() const {
+        MagLog::dev() << "$class\::set(const map<magstring, magstring&)---> to be checked!...\\n";
+        return new $class();
+    }
+    virtual void toxml(ostream&, int = 0) const {
+        MagLog::dev() << "$class\::toxml(ostream&, int = 0)---> to be checked!...\\n";
+    }
+    
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream& out) const { out << "$class\\n"; } 
+
+private:
+    //! Copy constructor - No copy allowed
+	$class(const $class&);
+    //! Overloaded << operator to copy - No copy allowed
+	$class& operator=(const $class&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const $class& p)
+		{ p.print(s); return s; }
+
+};
+
+template <>
+class Translator<string, $class> { 
+public:
+	$class* operator()(const string& val )
+	{
+		return SimpleObjectMaker<$class>::create(val);
+	}     
+
+	$class* magics(const string& param)
+	{
+		string val;
+		ParameterManager::get(param, val);
+		return (*this)(val);
+	}
+};
+
+} // namespace magics
+#endif
+EOF
+close STDOUT;
+
+
diff --git a/tools/newclass.pl b/tools/newclass.pl
new file mode 100755
index 0000000..6b32ecc
--- /dev/null
+++ b/tools/newclass.pl
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+use strict;
+use Date::Calc;
+
+my $class = @ARGV[0];
+shift @ARGV;
+
+
+my @parents = @ARGV;
+
+(my $year,my $month,my $day) = Date::Calc::Today();
+my $string = Date::Calc::Date_to_Text($year, $month, $day);
+
+open STDOUT, ">src/$class.h";
+print <<"EOF";
+/*! \\file $class.h
+    \\brief Definition of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+#ifndef $class\_H
+#define $class\_H
+
+#include "magics.h"
+
+EOF
+
+foreach my $parent (@parents) {
+	print "#include \"$parent\.h\"\n";
+}
+print "\n";
+print "namespace magics {\n\n";
+
+my $sep = ":";
+print "class $class";
+foreach my $parent (@parents) {
+	print "$sep public $parent";
+	$sep = ",";
+}
+print " {\n";
+
+
+
+print <<"EOF";
+
+public:
+	$class();
+	virtual ~$class();
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	$class(const $class&);
+    //! Overloaded << operator to copy - No copy allowed
+	$class& operator=(const $class&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const $class& p)
+		{ p.print(s); return s; }
+
+};
+
+} // namespace magics
+#endif
+EOF
+close STDOUT;
+
+open STDOUT, ">src/$class.cc";
+print <<"EOF";
+/*! \\file $class.cc
+    \\brief Implementation of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+
+
+#include "$class\.h"
+
+using namespace magics;
+
+$class\::$class() 
+{
+}
+
+
+$class\::~$class() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void $class\::print(ostream& out)  const
+{
+	out << "$class\[";
+	out << "]";
+}
+
+EOF
+
+close STDOUT;
diff --git a/tools/newdriver.pl b/tools/newdriver.pl
index 576bf3e..242c066 100755
--- a/tools/newdriver.pl
+++ b/tools/newdriver.pl
@@ -156,7 +156,7 @@ using namespace magics;
 */
 $class\::$class() 
 {
-	MagLog::debug() << "$class\::$class needs implementing." <<endl;
+	MagLog::debug() << "$class\::$class needs implementing." << std::endl;
 }
 
 /*!
@@ -171,7 +171,7 @@ $class\::~$class()
 */
 void $class\::open()
 {
-	MagLog::debug() << "$class\::open() needs implementing." <<endl;
+	MagLog::debug() << "$class\::open() needs implementing." << std::endl;
 }
 
 /*!
@@ -182,7 +182,7 @@ void $class\::close()
 	endPage();
 	currentPage_ = 0;
 
-	MagLog::debug() << "$class\::close() needs implementing." <<endl;
+	MagLog::debug() << "$class\::close() needs implementing." << std::endl;
 }
 
 /*!
@@ -195,7 +195,7 @@ MAGICS_NO_EXPORT void $class\::startPage() const
 {
 	if(currentPage_ > 0) endPage();
 
-	MagLog::debug() << "$class\::startPage needs implementing." <<endl;
+	MagLog::debug() << "$class\::startPage needs implementing." << std::endl;
 	
 	currentPage_++;
 	newPage_ = true;
@@ -209,7 +209,7 @@ MAGICS_NO_EXPORT void $class\::startPage() const
 */
 MAGICS_NO_EXPORT void $class\::endPage() const
 {
-	MagLog::debug() << "$class\::endPage needs implementing." <<endl;
+	MagLog::debug() << "$class\::endPage needs implementing." << std::endl;
 }
 
 /*!
@@ -221,7 +221,7 @@ MAGICS_NO_EXPORT void $class\::endPage() const
 */
 MAGICS_NO_EXPORT void $class\::project(const magics::Layout& layout) const
 {
-	MagLog::debug() << "$class\::project needs implementing." <<endl;
+	MagLog::debug() << "$class\::project needs implementing." << std::endl;
 }
 
 /*!
@@ -233,7 +233,7 @@ MAGICS_NO_EXPORT void $class\::project(const magics::Layout& layout) const
 */
 MAGICS_NO_EXPORT void $class\::unproject() const
 {
-	MagLog::debug() << "$class\::unproject needs implementing." <<endl;
+	MagLog::debug() << "$class\::unproject needs implementing." << std::endl;
 }
 
 
@@ -249,7 +249,7 @@ MAGICS_NO_EXPORT void $class\::setNewColour(const Colour &colour) const
 {
 	if(currentColour_ == colour) return;
 	currentColour_ = colour;
-	MagLog::debug() << "$class\::setNewColour needs checking." <<endl;
+	MagLog::debug() << "$class\::setNewColour needs checking." << std::endl;
 }
 
 /*!
@@ -263,7 +263,7 @@ MAGICS_NO_EXPORT void $class\::setNewColour(const Colour &colour) const
 MAGICS_NO_EXPORT void $class\::setNewLineWidth(const float width) const
 {
 	currentLineWidth_ = width;
-	MagLog::debug() << "$class\::setNewColour needs checking." <<endl;
+	MagLog::debug() << "$class\::setNewColour needs checking." << std::endl;
 }
 
 /*!
@@ -282,7 +282,7 @@ MAGICS_NO_EXPORT int $class\::setLineParameters(const LineStyle linestyle, const
 {
 	setNewLineWidth(w);
 
-	MagLog::debug() << "$class\::setLineParameters needs implementing." <<endl;
+	MagLog::debug() << "$class\::setLineParameters needs implementing." << std::endl;
 	return 0;
 }
 
@@ -301,7 +301,7 @@ MAGICS_NO_EXPORT int $class\::setLineParameters(const LineStyle linestyle, const
 */
 MAGICS_NO_EXPORT void $class\::renderPolyline(const int n, float *x, float *y) const
 {
-	MagLog::debug() << "$class\::renderPolyline needs implementing." <<endl;
+	MagLog::debug() << "$class\::renderPolyline needs implementing." << std::endl;
 }
 
 /*!
@@ -317,7 +317,7 @@ MAGICS_NO_EXPORT void $class\::renderPolyline(const int n, float *x, float *y) c
 */
 MAGICS_NO_EXPORT void $class\::renderPolyline2(const int n, float* x, float* y) const
 {
-	MagLog::debug() << "$class\::renderPolyline2 needs implementing." <<endl;
+	MagLog::debug() << "$class\::renderPolyline2 needs implementing." << std::endl;
 }
 
 /*!
@@ -333,7 +333,7 @@ MAGICS_NO_EXPORT void $class\::renderPolyline2(const int n, float* x, float* y)
 */
 MAGICS_NO_EXPORT void $class\::renderSimplePolygon(const int n, float* x, float* y) const
 {
-	MagLog::debug() << "$class\::renderSimplePolygon needs implementing." <<endl;
+	MagLog::debug() << "$class\::renderSimplePolygon needs implementing." << std::endl;
 }
 
 /*!
@@ -349,7 +349,7 @@ MAGICS_NO_EXPORT void $class\::renderSimplePolygon(const int n, float* x, float*
 MAGICS_NO_EXPORT void $class\::renderText(const Text& text) const
 {
 	if(text.empty()) return;
-	MagLog::debug() << "$class\::renderText needs implementing." <<endl;
+	MagLog::debug() << "$class\::renderText needs implementing." << std::endl;
 }
 
 /*!
@@ -368,7 +368,7 @@ MAGICS_NO_EXPORT void $class\::renderText(const Text& text) const
 */
 MAGICS_NO_EXPORT void $class\::circle(const float x, const float y, const float r, const int s) const
 {
-	MagLog::debug() << "$class\::circle needs implementing." <<endl;
+	MagLog::debug() << "$class\::circle needs implementing." << std::endl;
 }
 
 /*!
@@ -391,7 +391,7 @@ MAGICS_NO_EXPORT void $class\::circle(const float x, const float y, const float
 MAGICS_NO_EXPORT bool $class\::renderPixmap(float x0,float y0,float x1,float y1,
                                             int w,int h,unsigned char* pixmap,int landscape, bool) const
 {
-	MagLog::debug() << "$class\::renderPixmap needs implementing." <<endl;
+	MagLog::debug() << "$class\::renderPixmap needs implementing." << std::endl;
 	return true;
 }
 
@@ -407,7 +407,7 @@ MAGICS_NO_EXPORT bool $class\::renderPixmap(float x0,float y0,float x1,float y1,
 */
 MAGICS_NO_EXPORT bool $class\::renderCellArray(const Image& image) const
 {
-	MagLog::debug() << "$class\::renderCellArray needs implementing." <<endl;
+	MagLog::debug() << "$class\::renderCellArray needs implementing." << std::endl;
 	return true;
 }
 
diff --git a/tools/newfactory.pl b/tools/newfactory.pl
new file mode 100755
index 0000000..d5a096d
--- /dev/null
+++ b/tools/newfactory.pl
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+use strict;
+use Date::Calc;
+
+my $class = @ARGV[0];
+shift @ARGV;
+
+
+my @parents = @ARGV;
+
+(my $year,my $month,my $day) = Date::Calc::Today();
+my $string = Date::Calc::Date_to_Text($year, $month, $day);
+
+open STDOUT, ">src/$class.h";
+print <<"EOF";
+/*! \\file $class.h
+    \\brief Definition of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+#ifndef $class\_H
+#define $class\_H
+
+#include "magics.h"
+#include "Translator.h"
+#include "Factory.h"
+
+
+EOF
+
+foreach my $parent (@parents) {
+	print "#include \"$parent\.h\"\n";
+}
+print "\n";
+print "namespace magics {\n\n";
+
+my $sep = ":";
+print "class $class";
+foreach my $parent (@parents) {
+	print "$sep public $parent";
+	$sep = ",";
+}
+print " {\n";
+
+
+
+print <<"EOF";
+
+public:
+	$class();
+	virtual ~$class();
+    
+    virtual void set(const XmlNode&) {
+        MagLog::dev() << "$class::set(const XmlNode&)---> to be checked!...\\n";
+    }
+    virtual void set(const map<string, string>&) {
+        MagLog::dev() << "$class::set(const map<string, string&)---> to be checked!...\\n";
+    }
+    virtual $class* clone() const {
+        MagLog::dev() << "$class::set(const map<string, string&)---> to be checked!...\\n";
+        return new $class();
+    }
+    
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	$class(const $class&);
+    //! Overloaded << operator to copy - No copy allowed
+	$class& operator=(const $class&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const $class& p)
+		{ p.print(s); return s; }
+
+};
+
+template <>
+class Translator<string, $class> { 
+public:
+	$class* operator()(const string& val )
+	{
+		return SimpleObjectMaker<$class>::create(val);
+	}     
+
+	$class* magics(const string& param)
+	{
+		string val;
+		ParameterManager::get(param, val);
+		return (*this)(val);
+	}
+};
+
+} // namespace magics
+#endif
+EOF
+close STDOUT;
+
+open STDOUT, ">src/$class.cc";
+print <<"EOF";
+/*! \\file $class.h
+    \\brief Implementation of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+
+
+#include "$class\.h"
+
+using namespace magics;
+
+$class\::$class() 
+{
+}
+
+
+$class\::~$class() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/		
+void $class\::print(ostream& out)  const
+{
+	out << "$class\[";
+	out << "]";
+}
+
+EOF
+
+close STDOUT;
diff --git a/tools/newprojection.pl b/tools/newprojection.pl
new file mode 100755
index 0000000..0028916
--- /dev/null
+++ b/tools/newprojection.pl
@@ -0,0 +1,435 @@
+#!/usr/bin/perl
+use strict;
+use Time::localtime;
+
+my $projection = @ARGV[0];
+my $class  = "${projection}Projection";
+shift @ARGV;
+my @parents = @ARGV;
+
+my $license_file = '../LICENSE_for_source_files';	# Name the file
+open(INFO, $license_file);				# Open the file
+my @license = <INFO>;					# Read it into an array
+close(INFO);						# Close the file
+
+my $date_string=ctime();
+
+package Function;
+
+sub new { 
+    my ($class, $name, $comment, $out, $const, @args) = @_;
+    my $self = {};
+    print "$#args\n";
+  
+    $self->{nb_args}= $#args;
+    my $i = 0;
+	foreach my $arg (@args)
+	{		
+		$self->{args}[$i] = $arg;
+		$i++;
+	}
+	
+   
+    $self->{name}=$name;
+    $self->{comment}=$comment;
+    $self->{out}=$out;
+    $self->{const}=$const;
+   
+    bless $self;
+    return $self;
+}
+
+sub header  {
+    my $self = shift;  
+    
+    print "\t/*!\n\t\\\\brief $self->{comment}\n\t*/\n";
+    
+    print "\tvirtual $self->{out} $self->{name}(";
+    my $sep = "";
+    if (! $self->{no_arg} ) {
+    
+    my $i = 0;   
+    while ($i < $self->{nb_args} ) {
+    	my @args = @{$self->{args}};
+    	print "$sep at args[$i]";
+		$sep=", ";
+		$i+=2;
+	}
+    }
+	print ") $self->{const};\n";
+}
+sub implementation  {
+    my $self = shift;  
+    print "$self->{out} $class\::$self->{name}(";
+    my $sep = "";
+    
+    my $out = "";
+	$out =  "return " unless    $self->{out} eq "void";
+   
+    my $i = 0;
+    while ($i < $self->{nb_args}) {
+    	my @args = @{$self->{args}};
+		print "$sep at args[$i++] @args[$i++]";
+		$sep = ", ";
+	}
+	print ")  $self->{const}\n{\n";
+	print "\tMagLog::dev() << \"$class\::$self->{name}(...) needs implementing.\" << endl;\n";
+	print "\t$out\Transformation::$self->{name}(";
+	my $sep = "";
+    my $i = 0;
+    while ($i < $self->{nb_args}) {
+    	$i++;
+    	my @args = @{$self->{args}};
+		print "$sep at args[$i++]";
+		$sep = ", ";
+	}
+	print ");\n}\n\n";
+}
+
+my @functions = ( 
+    Function->new("init", 
+    	"Initialise the projection", 
+    	"void", ""),
+    Function->new("operator()", 
+    	"", 
+    	"PaperPoint", "const", 
+    	"const UserPoint&", "point"),
+	Function->new("operator()", 
+		"", 
+		"PaperPoint", "const", 
+		"const GeoPoint&", "point"),
+	Function->new("operator()", 
+		"", 
+		"PaperPoint", "const", 
+		"const PaperPoint&", "point"),
+	Function->new("revert", 
+		"", 
+		"void", "const", 
+		"const PaperPoint&", "xy", 
+		"GeoPoint&", "point"),
+	Function->new("revert", 
+		"", 
+		"void", "const", 
+		"const PaperPoint&", "xy", 
+		"UserPoint&", "point"),
+	Function->new("needShiftedCoastlines", 
+		"Does the projection needs the coastalines to be shifted!", 
+		"bool", "const" ),
+	Function->new("aspectRatio", 
+ 		"set the aspect ratio!", 
+ 		"void", 
+ 		"", 
+ 		"double&", "width",
+ 		"double&", "height"),
+ 	Function->new("boundingBox", 
+ 		"set the bounding box!", 
+ 		"void", 
+ 		"const", 
+ 		"double&", "xmin",
+ 		"double&", "ymin",
+ 		"double&", "xmax",
+ 		"double&", "ymax"),
+ 	Function->new("getMinX", 
+ 		"return the xmin in user coordinates!", 
+ 		"double", 
+ 		"const"),
+ 	Function->new("getMinY", 
+ 		"return the ymin in user coordinates!", 
+ 		"double", 
+ 		"const"),
+   Function->new("getMaxX", 
+ 		"return the xmax in user coordinates!", 
+ 		"double", 
+ 		"const"),
+ 		Function->new("getMaxY", 
+ 		"return the ymax in user coordinates!", 
+ 		"double", 
+ 		"const"),
+ 		Function->new("setMinX", 
+ 		"set the xmin in user coordinates!", 
+ 		"void", 
+ 		"",
+ 		"double", "x"),
+ 	Function->new("setMinY", 
+ 		"return the ymin in user coordinates!", 
+ 		"void", 
+ 		"",
+ 		"double", "y"),
+   Function->new("setMaxX", 
+ 		"return the xmax in user coordinates!", 
+ 		"void", 
+ 		"",
+ 		"double", "x"),
+ 		Function->new("setMaxY", 
+ 		"return the ymax in user coordinates!", 
+ 		"void", 
+ 		"",
+ 		"double", "y"),
+ 		Function->new("getMinPCX", 
+ 		"return the xmin in projection coordinates!", 
+ 		"double", 
+ 		"const"),
+ 	Function->new("getMinPCY", 
+ 		"return the ymin in projection coordinates!", 
+ 		"double", 
+ 		"const"),
+   Function->new("getMaxPCX", 
+ 		"return the xmax in projection coordinates!", 
+ 		"double", 
+ 		"const"),
+ 		Function->new("getMaxPCY", 
+ 		"return the ymax in projection coordinates!", 
+ 		"double", 
+ 		"const"),
+ 	 Function->new("gridLongitudes", 
+ 		"create the grid for the longitudes!!", 
+ 		"void", 
+ 		"const",
+ 		"const GridPlotting&", "grid",
+ 		"GraphicsList&", "out"),
+     Function->new("gridLatitudes", 
+ 		"create the grid for the latitudes!!", 
+ 		"void", 
+ 		"const",
+ 		"const GridPlotting&", "grid",
+ 		"GraphicsList&", "out"),
+ 	  Function->new("topLabels", 
+ 		"calculate the top labels", 
+ 		"void", 
+ 		"const",
+ 		"const BasicSceneObject&", "object",
+ 		"const LabelPlotting&", "label",
+ 		"GraphicsList&", "out"),
+ 	Function->new("bottomLabels", 
+ 		"calculate the top labels", 
+ 		"void", 
+ 		"const",
+ 		"const BasicSceneObject&", "object",
+ 		"const LabelPlotting&", "label",
+ 		"GraphicsList&", "out"),
+ 	Function->new("leftLabels", 
+ 		"calculate the left labels", 
+ 		"void", 
+ 		"const",
+ 		"const BasicSceneObject&", "object",
+ 		"const LabelPlotting&", "label",
+ 		"GraphicsList&", "out"),
+ 	Function->new("rightLabels", 
+ 		"calculate the right labels", 
+ 		"void", 
+ 		"const",
+ 		"const BasicSceneObject&", "object",
+ 		"const LabelPlotting&", "label",
+ 		"GraphicsList&", "out"),
+ 	Function->new("thin", 
+ 		"thin the position for wind plotting", 
+ 		"void", 
+ 		"const",
+ 		"MatrixHandler<GeoPoint>&", "data",  
+ 		"double", "x",
+ 		"double", "y",
+ 		"vector<GeoPoint>&", "out"),	
+ 	Function->new("javascript",       
+ 		"prepare the javascript for thes particular instance of projection", 
+ 		"string", "",
+        "double", "x",
+ 		"double", "y", 
+        "double", "width", 
+        "double", "height"),	
+ ); 
+ 
+ 
+ 
+ 
+ foreach my $function  (@functions) {
+ 	print ("hello");
+       $function->header();
+}
+	
+
+
+########################################
+# Header file
+########################################
+open STDOUT, ">$class.h";
+print <<"EOF";
+/******************************** LICENSE ********************************
+
+ at license
+
+ ******************************** LICENSE ********************************/
+
+/*!
+    \\file $class.h
+    \\brief Definition of $class.
+    \\author Graphics Section, ECMWF
+
+    Started: $date_string
+*/
+
+#ifndef \_$class\_H
+#define \_$class\_H
+
+#include <Transformation.h>
+#include <${class}Attributes.h>
+#include <XmlNode.h>
+
+namespace magics
+{
+
+/*! \\class $class
+    \\brief Implements a new projection
+    \\ingroup projection
+
+    This projection ...
+*/
+
+class ${class}: public Transformation, public ${class}Attributes
+{
+
+public:
+	$class();
+	~$class();
+
+	/*!
+	  \\brief sets  from an XML node
+	*/
+	void set(const XmlNode& node)
+	{
+        Transformation::set(node);
+        ${class}Attributes::set(node);
+	}
+   /*!
+	  \\brief sets  from a map
+	*/
+	void set(const map<string, string>& map)
+	{
+        Transformation::set(map);
+        ${class}Attributes::set(map);
+	}
+    
+    virtual Transformation* clone() const {
+		${class}* transformation = new ${class}();
+        transformation->copy(*this);
+		return transformation;
+	}
+	
+EOF
+
+foreach my $function  (@functions) {
+       $function->header();
+}
+	
+print <<"EOF";
+	
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	$class(const $class&);
+    //! Overloaded << operator to copy - No copy allowed
+	$class& operator=(const $class&);
+
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const $class& p)
+		{ p.print(s); return s; }
+
+};
+    
+
+} // namespace magics
+#endif
+EOF
+close STDOUT;
+
+
+
+open STDOUT, "> $class\.cc";
+
+print<<"EOF";
+/******************************** LICENSE ********************************
+
+ at license
+
+ ******************************** LICENSE ********************************/
+
+/*! \\file $class\.cc
+    \\brief Implementation of $class.
+    \\author Graphics Section, ECMWF
+
+    Started: $date_string
+
+*/
+
+#include <$class\.h>
+
+using namespace magics;
+
+/*!
+  \\brief Constructor
+*/
+$class\::$class() 
+{
+	MagLog::debug() << "$class\::$class needs implementing." << std::endl;
+}
+
+/*!
+  \\brief Destructor
+*/
+$class\::~$class() 
+{
+}
+
+void $class\::print(ostream& out) const
+{
+    out << "$class\[";
+    $class\Attributes::print(out);
+    out << "]"; 
+} 
+
+EOF
+
+foreach my $function  (@functions) {
+       $function->implementation();
+}
+	
+print <<"EOF";
+
+
+EOF
+
+close STDOUT;
+
+##############################################
+# XML attribute file
+##############################################
+open STDOUT, ">$class.xml";
+print <<"EOF";
+<?xml-stylesheet type='text/css' href='parameter.css'?>
+<!--
+ ******************************** LICENSE ********************************
+ 
+ at license
+
+ ******************************** LICENSE ********************************
+-->
+<magics>
+<class name='$class' action='projection' directory='common'>
+	<documentation>
+		These are the attributes of the $projection projection. 
+	</documentation>
+<!--
+	<parameter name='' from='string' to='string' member='' default='' xml=''>
+            <documentation></documentation>
+        </parameter>
+-->
+</class>
+</magics>
+
+EOF
+
+close STDOUT;
+
diff --git a/tools/newtemplate.pl b/tools/newtemplate.pl
new file mode 100755
index 0000000..6e45718
--- /dev/null
+++ b/tools/newtemplate.pl
@@ -0,0 +1,118 @@
+#!/usr/bin/perl
+use strict;
+use Date::Calc;
+
+my $class = @ARGV[0];
+shift @ARGV;
+my $template = @ARGV[0];
+shift @ARGV;
+my @parents = @ARGV;
+(my $year,my $month,my $day) = Date::Calc::Today();
+my $string = Date::Calc::Date_to_Text($year, $month, $day);
+
+open STDOUT, ">src/$class.h";
+print <<"EOF";
+/*! \\file $class.h
+    \\brief Definition of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+#ifndef $class\_H
+#define $class\_H
+
+#include "magics.h"
+
+EOF
+
+foreach my $parent (@parents) {
+	print "#include \"$parent\.h\"\n";
+}
+print "\n";
+print "namespace magics {\n\n";
+
+my $sep = ":";
+print "template <class $template>\n";
+print "class $class";
+foreach my $parent (@parents) {
+	print "$sep public $parent";
+	$sep = ",";
+}
+print " {\n";
+
+
+
+print <<"EOF";
+
+public:
+	$class();
+	virtual ~$class();
+
+protected:
+     //! Method to print string about this class on to a stream of type ostream (virtual).
+	 virtual void print(ostream&) const; 
+
+private:
+    //! Copy constructor - No copy allowed
+	$class(const $class&);
+    //! Overloaded << operator to copy - No copy allowed
+	$class& operator=(const $class&);
+    
+// -- Friends
+    //! Overloaded << operator to call print().
+	friend ostream& operator<<(ostream& s,const $class<$template>& p)
+		{ p.print(s); return s; }
+
+};
+
+} // namespace magics
+
+#include "$class.cc"
+#endif
+EOF
+close STDOUT;
+
+open STDOUT, ">src/$class.cc";
+print <<"EOF";
+/*! \\file $class.h
+    \\brief Implementation of the Template class $class.
+    
+    Magics Team - ECMWF $year
+    
+    Started: $string
+    
+    Changes:
+    
+*/
+
+#include "$class\.h"
+
+using namespace magics;
+
+template <class $template>
+$class<$template>\::$class() 
+{
+}
+
+template <class $template>
+$class<$template>\::~$class() 
+{
+}
+
+/*!
+ Class information are given to the output-stream.
+*/	
+template <class $template>	
+void $class<$template>\::print(ostream& out)  const
+{
+	out << "$class<$template>";
+}
+
+EOF
+
+close STDOUT;
diff --git a/tools/shp_process.ksh b/tools/shp_process.ksh
new file mode 100755
index 0000000..0af30e7
--- /dev/null
+++ b/tools/shp_process.ksh
@@ -0,0 +1,293 @@
+#!/bin/ksh
+
+#set -x
+# exit on error
+set -e
+
+####################################################################
+#                                                                  #
+# * NB This utility assumes an installation of GDAL is available * #
+# *  also that perforce is available and access to the internet  * #
+#                                                                  #
+####################################################################
+
+# CONFIGURATION
+
+# The command to do the shp processing
+#extract='ogr2ogr'
+script_location=${0%/*}
+geo_loc="$script_location/geoscript"
+geo_cmd="$geo_loc/run-geoscript-groovy"
+extract="$geo_cmd $geo_loc/extract.groovy"
+merge="$geo_cmd $geo_loc/merge.groovy"
+
+# Whether to checkout dst files from perforce
+p4_checkout=1
+
+# Whether to download latest files from naturalEarth
+download_files=0
+
+# whether to process cities files
+process_cities=1
+
+# whether to merge 10m landmasses
+merge_10m_land=0
+
+src_folder='.'            # NB not used if re-downloading
+tmp_folder='./tmp'              # temporary path
+dst_folder="$script_location/../share/magics"   # relative path to output folder
+
+# These are the resolutions and the features we process here
+set -A resolutions 10m 50m 110m
+set -A featuretypes land lakes rivers_lake_centerlines
+
+# re-establish tmp folder
+# fail if exists
+if [[ -d $tmp_folder ]]; then
+  print -n "Temp folder $tmp_folder/ already exists. Overwrite? (y/N): "; read var
+  if [[ $var != 'y' ]]; then
+    exit
+  fi
+fi
+
+# We are clear to proceed
+rm -rf $tmp_folder
+mkdir $tmp_folder
+#mkdir -p $dst_folder
+
+
+# Checkout files if 
+if [[ $p4_checkout -eq 1 ]]; then
+
+    # checking out files from perforce
+    for res in ${resolutions[@]}
+    do
+          p4 sync $dst_folder/$res/$res'_'* 
+          p4 edit $dst_folder/$res/$res'_'* 
+    done
+    p4 sync $dst_folder/10m_full/10m'_'* 
+    p4 edit $dst_folder/10m_full/10m'_'* 
+fi
+
+
+for i in ${resolutions[@]}
+do
+    echo ""
+    echo "  ======== ${i} resolution ======== "
+    echo ""
+
+    if [[ $download_files -eq 1 ]]; then 
+       wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/$i/physical/$i-physical.zip -P $tmp_folder
+    else
+       # get the files locally      
+       cp $src_folder/geoscript/$i-physical.zip $tmp_folder
+    fi
+ 
+    src_file=$tmp_folder/$i-physical.zip
+    output_folder=$tmp_folder/$i'-physical_files'
+
+    # echo Creating folder $output_folder ... 
+    rm -rf $output_folder
+    mkdir $output_folder
+
+    # echo Extracting $src_file to $output_folder
+    unzip -q $src_file -d $output_folder
+     
+    # there is now a single entry in the output folder
+    # and that is where the files are
+    subfolder=`ls $output_folder`
+
+    data_folder=$output_folder/$subfolder
+
+    for j in ${featuretypes[@]}
+    do
+       filestub_nopath=$i'_'$j
+       filestub=$data_folder/$filestub_nopath
+       echo "renaming file $data_folder/ne_$i_$j.* to $data_folder/$filestub_nopath.*"
+       rename $data_folder/'ne_'$i'_'$j $data_folder/$filestub_nopath $data_folder/*.*
+       echo ""
+       echo "        ***  ${i} ${j}  ***"
+       echo ""
+       echo "        Processing $filestub'.*'"
+
+       # test all required files exist
+       set -A exts dbf shp prj shx
+       for ext in ${exts[@]}
+       do
+           testfile=$filestub'.'$ext
+           if [[ -f $testfile ]]; then
+              echo "     Found $testfile" 
+           else
+              echo "     ERROR: $testfile missing!"
+           fi
+
+       done 
+
+       # Do landmass feature merging here
+       if [[ $i = "10m" && $j = "land" && $merge_10m_land -eq 1 ]]; then
+
+           echo "merging 10m_land file"
+
+           # pre-process the raw downloaded file to merge
+           # any adjacent land features with scalerank=0
+           # and let all other features pass into the output file
+           timestamp=`epoch`
+           output_name=tmp_$timestamp
+           $merge $data_folder $filestub_nopath.shp $output_name
+           # Once done, we copy back over the original
+           ls -l $data_folder
+           rename $output_name $filestub_nopath $data_folder/*.*
+           ls -l $data_folder
+       fi
+
+       # Resolution changes here
+
+       ogrout=$filestub'/output'
+       echo "    Creating temporary folder $filestub"
+       mkdir $filestub       
+       
+       # set the scale limit according to the feature type
+        
+       scale_limit=6
+       if [[ $j = "land" ]]; then
+          # a little more drastic on the land
+          scale_limit=5
+       fi
+
+       if [[ $i = "10m" ]]; then 
+    
+           echo "    Reducing resolution to $scale_limit for feature type $j at scale $i"          
+           $extract -where "ScaleRank<=$scale_limit" $ogrout $filestub'.shp' 
+
+           set -A excluded_regions
+           #NB an initial space \|/ appears compulsory when specifying -ve numbers :-/
+           excluded_regions[0]=" 12.0W 32.0N 48.0E 72.0N"  		# EUROPE
+
+           # Now append the previously excluded data for these regions only
+           # only preseve data up to an absolute ceiling so we don't get
+           # ridiculously small features anywhere
+           scale_ceiling=6
+
+           index=0
+           while [ $index -lt ${#excluded_regions[@]} ]
+           do
+               echo "    Preserving high-resolution data in region ${excluded_regions[$index]}"
+               $extract -append -spat ${excluded_regions[$index]} -where "ScaleRank > $scale_limit AND ScaleRank <= $scale_ceiling" $ogrout $filestub'.shp' 
+                
+               let index=$index+1
+           done
+           
+           # also copy the original files directly to a "10m_full" folder
+           echo "    Copying full-resolution files to $data_folder/$i'_full_'$j'_output'"
+           for ext in ${exts[@]}
+           do
+               mkdir -p $data_folder/$i'_full_'$j'_output'
+               cp $filestub'.'$ext $data_folder/$i'_full_'$j'_output'
+           done
+
+       else
+           #simple copy
+           mkdir -p $ogrout
+           echo "    Copying files at full resolution"
+           for ext in ${exts[@]}
+           do 
+                cp $filestub'.'$ext $ogrout
+           done
+       fi
+
+
+       # if statements to process according to file type
+       if [[ $j = "lakes" ]]; then              
+
+
+          # IF we are processing 10m files we need to take account of the fact
+          # that we need 10m_full resolution too.
+          # NB in later versions of naturalearth Name1 and Name2 might be e.g.
+          # Name and Name_alt or some other combination...
+          # 
+          if [[ $i = "10m" ]]; then
+             echo "    Removing Great Lakes duplicates and Caspian sea for $j feature type $i resolution"
+              $extract -overwrite -where "Name1 != 'Great Lakes' AND Name1 != 'Great  Lakes' AND Name1 != 'Caspian Sea' AND (Name2 != 'Great Lakes' OR ScaleRank=1 )" $dst_folder/$i'_full' $data_folder/$i'_full_'$j'_output'/$filestub_nopath'.shp' 
+              $extract -overwrite -where "Name1 != 'Great Lakes' AND Name1 != 'Great  Lakes' AND Name1 != 'Caspian Sea' AND (Name2 != 'Great Lakes' OR ScaleRank=1 )" $dst_folder/$i $ogrout/$filestub_nopath'.shp' 
+           else
+             # remove great lakes and caspian sea
+             # with output folder the target folder
+             echo ""
+             echo "    Removing Great Lakes duplicates and Caspian sea for $j feature type"
+             $extract -overwrite -where "Name1 != 'GREAT  LAKES' AND Name1 != 'Great Lakes' AND Name1 != 'Great  Lakes' AND Name1 != 'Caspian Sea' AND (Name2 != 'Great Lakes' OR ScaleRank=1 )" $dst_folder/$i $ogrout/$filestub_nopath'.shp'
+              echo "    Files written to target folder $dst_folder"
+
+          fi
+         
+
+       else
+         # a simple copy to the target folder
+         echo ""
+         echo "    Copying files to destination folder $dst_folder/$i"
+         mkdir -p $dst_folder/$i
+         for f in `ls $ogrout`
+         do
+           cp $ogrout/$f $dst_folder/$i/
+           echo "     Copied $ogrout/$f to target folder $dst_folder/$i"
+         done
+        
+
+        if [[ $i = "10m" ]]; then
+             # also take a copy of our full-resn files to 10m_full
+             mkdir -p $dst_folder/$i'_full/'
+             for f in `ls $data_folder/$i'_full_'$j'_output'/`
+             do
+               cp  $data_folder/$i'_full_'$j'_output'/$f $dst_folder/$i'_full/'
+               echo "     Copied $data_folder/$i'_full_'$j'_output'/$f to target folder $dst_folder/$i'_full'"
+              done
+        fi
+      fi
+
+      
+    done
+
+    rm -f $dst_folder/*/*.qix $dst_folder/*/*.fix
+done
+
+
+if [[ $process_cities -eq 1 ]]; then
+
+  ################################################################################################
+  #
+  #       C I T I E S
+  #
+  echo ""
+  echo "  Clean-up cities ..."
+  POP_NAME=10m-populated-places-simple
+  mkdir -p $tmp_folder/cultural/output
+  if [[ $download_files -eq 1 ]]; then 
+      wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/${POP_NAME}.zip -P $tmp_folder
+  else
+      # get the files locally
+      cp $src_folder/geoscript/${POP_NAME}.zip $tmp_folder
+  fi
+  unzip -q $tmp_folder/${POP_NAME}.zip -d $tmp_folder/cultural/
+
+  rename $tmp_folder/cultural/ne_10m_populated_places_simple $tmp_folder/cultural/10m_populated_places_simple $tmp_folder/cultural/*.* 
+
+  $extract -where "NAME != 'Vatican City' AND NAME != 'Vaduz' AND NAME != 'San Marino' AND NAME != 'Nicosia'" $tmp_folder/cultural/output $tmp_folder/cultural/10m_populated_places_simple.shp
+  cp -f $tmp_folder/cultural/output/* $dst_folder/10m/
+
+fi
+
+################################################################################################
+#
+# clean up - remove tmp files
+#
+if [[ $p4_checkout -eq 1 ]]; then
+  echo "  Revert unchanged files"
+  p4 revert -a ../share/magics/*0m*/*.*
+fi
+echo ""
+#echo "  Removing temporary folder $tmp_folder"
+#rm -rf $tmp_folder
+
+
+
+echo Done
+
diff --git a/tools/x b/tools/x
new file mode 100644
index 0000000..fca8244
--- /dev/null
+++ b/tools/x
@@ -0,0 +1,376 @@
+<magics>
+<class xmltag="text" name="TextVisitor" xml_data="text_lines" directory="basic" prefix="text" xml_doc_inherits="XmlBasicNode" action="ptext">
+  	<documentation>	</documentation>
+  
+
+ 	<parameter from="string" name="text_html" default="on" metview="no" member="html" to="bool">
+         		<release>2.0		</release>
+         		<release_info> Change the default value from off to on in Magics2.12		</release_info>
+         		<documentation> enable use of HTML convention 		</documentation>
+  	</parameter>
+
+
+ 	<parameter member="count" to="int" default="1" from="int" name="text_line_count">
+         		<release>0.1		</release>
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> The number of lines of text to be plotted 		</documentation>
+         		<set name="text_line_1" value="1/2/3/4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_2" value="2/3/4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_3" value="3/4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_4" value="4/5/6/7/8/9/10">		</set>
+         		<set name="text_line_5" value="5/6/7/8/9/10">		</set>
+         		<set name="text_line_6" value="6/7/8/9/10">		</set>
+         		<set name="text_line_7" value="7/8/9/10">		</set>
+         		<set name="text_line_8" value="8/9/10">		</set>
+         		<set name="text_line_9" value="9/10">		</set>
+         		<set name="text_line_10" value="10">		</set>
+ 	</parameter>
+
+  	<parameter member="line1" to="string" default="<magics_title/>" from="string" name="text_line_1">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+ 	<parameter member="line2" to="string" default="" from="string" name="text_line_2">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line3" to="string" default="" from="string" name="text_line_3">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line4" to="string" default="" from="string" name="text_line_4">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line5" to="string" default="" from="string" name="text_line_5">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line6" to="string" default="" from="string" name="text_line_6">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+
+   	<parameter member="line7" to="string" default="" from="string" name="text_line_7">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line8" to="string" default="" from="string" name="text_line_8">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line9" to="string" default="" from="string" name="text_line_9">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter member="line10" to="string" default="" from="string" name="text_line_10">
+         		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> Character string for holding lines of text (n=1,10) 		</documentation>
+  	</parameter>
+  
+
+  	<parameter from="int" name="text_first_line" default="1" metview="no" member="first" to="int">
+          		<release>0.1		</release>    
+         		<release_info>deprecated parameter : see text_lines 		</release_info>
+         		<documentation> The first line in the text block to be plotted 		</documentation>
+  	</parameter>
+  
+
+  	<parameter from="string" name="text_colour" default="blue" member="font_colour" to="Colour" metview_default="navy">
+			<documentation>Colour of text in text block (Full choice of colours)		</documentation>
+			<release>1.0		</release>
+  	</parameter>
+
+  	<parameter xml="font" from="string" name="text_font" default="sansserif" member="font" to="string">
+			<documentation>Font name - please make sure this font is installed!		</documentation>
+			<release>1.0		</release>
+			<release_info>Much improved in version 1.3.		</release_info>
+  	</parameter>
+  
+  	<parameter member="font_style" to="string" default="normal" from="string" name="text_font_style">
+			<documentation>Font style. Set this to an empty string in order to remove all styling.		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="text_font_size" default="0.5" member="font_dimension" to="string" metview_default="0.3">
+			<documentation>Font size, specified in cm.		</documentation>
+  	</parameter>
+
+  	<parameter member="justification" to="Justification" default="centre" from="string" name="text_justification">
+			<release>Magisc++0.3		</release>
+			<documentation> How text is to be positioned in each line (LEFT/CENTRE/RIGHT)		</documentation>
+  	</parameter>
+
+
+   	<parameter from="string" name="text_automatic" visible="no" default="on" member="automatic" to="bool">
+			<release>Magisc++2.1		</release>
+			<documentation>How text is to be positioned in each line (LEFT/CENTRE/RIGHT)		</documentation>
+  	</parameter>
+
+  	<parameter member="lines" to="stringarray" default="stringarray()" from="stringarray" name="text_lines">
+         		<documentation> text block to be plotted 		</documentation>
+         		<migration> New Magics: Parameter text sent to new Magics[TextAction].  		</migration>
+  	</parameter>
+ 	<parameter from="string" name="text_mode" default="title" member="mode" to="string" values="title/positional">
+ 			<documentation>Whether text is to be a title or user positioned (TITLE/POSITIONAL)		</documentation>
+    		<set name="text_box_x_position" value="positional">		</set>
+    		<set name="text_box_y_position" value="positional">		</set>
+    		<set name="text_box_x_length" value="positional">		</set>
+    		<set name="text_box_y_length" value="positional">		</set>
+			<release>1.0		</release>
+  	</parameter>
+    	<parameter member="x" to="float" default="-1" from="float" name="text_box_x_position">
+         		<release>0.1		</release>
+         		<documentation> X coordinate of lower left corner of text box (Relative to PAGE_X_POSITION) 		</documentation>
+  	</parameter>
+
+  	<parameter member="y" to="float" default="-1" from="float" name="text_box_y_position">
+         		<release>0.1		</release>
+         		<documentation> Y coordinate of lower left corner of text box (Relative to PAGE_Y_POSITION) 		</documentation>
+  	</parameter>
+
+  	<parameter member="width" to="float" default="-1" from="float" name="text_box_x_length">
+         		<release>0.1		</release>
+         		<documentation> Length of text box in X direction 		</documentation>
+  	</parameter>
+
+  	<parameter xml="height" from="float" name="text_box_y_length" default="-1" member="height" to="float">
+         		<release>0.1		</release>
+         		<migration> New Magics: Parameter text_box_y_length sent to new Magics[TextBox].  		</migration>
+  	</parameter>
+
+  	<parameter member="blanking" to="bool" default="off" from="string" name="text_box_blanking">
+         		<release>0.1		</release>
+          		<release_info>Paremeter defined but not implemeted : expected for 0.6		</release_info>
+         		<documentation> All plotting in the text box previous to PTEXT call will be blanked out. Plotting after PTEXT call will not be affected. (ON/OFF) 		</documentation>
+  	</parameter>
+
+  	<parameter member="border" to="bool" default="off" from="string" name="text_border">
+         		<release>0.5		</release>    
+         		<documentation> Plot border around text box (ON/OFF) 		</documentation>
+         		<migration> New Magics: Parameter text_border sent to new Magics[TextBox].  		</migration>
+         		<set name="text_border_line_style" value="on">		</set>
+         		<set name="text_border_colour" value="on">		</set>
+         		<set name="text_border_thickness" value="on">		</set>
+      
+  	</parameter>
+  
+  	<parameter member="border_line_style" to="LineStyle" default="solid" from="string" name="text_border_line_style">
+          		<release>0.5		</release>    
+         		<documentation> Line style of border around text box (SOLID/DASH/DOT/CHAIN_DASH/CHAIN_DOT) 		</documentation>
+  	</parameter>
+
+  	<parameter member="border_colour" to="Colour" default="blue" from="string" name="text_border_colour">
+          		<release>0.5		</release>    
+         		<documentation> Colour of border around text box (Full choice of colours) 		</documentation>
+  	</parameter>
+
+  	<parameter member="border_thickness" to="int" default="1" from="int" name="text_border_thickness">
+          		<release>0.5		</release>    
+         		<documentation> Thickness of text box border 		</documentation>
+  	</parameter>
+  
+    
+   	<parameter from="string" name="text_character_1" default="" metview="no" member="character1" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+  	<parameter from="string" name="text_character_2" default="" metview="no" member="character2" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_3" default="" metview="no" member="character3" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_4" default="" metview="no" member="character4" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_5" default="" metview="no" member="character5" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_6" default="" metview="no" member="character6" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_7" default="" metview="no" member="character7" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_8" default="" metview="no" member="character8" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_9" default="" metview="no" member="character9" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  	<parameter from="string" name="text_character_10" default="" metview="no" member="character10" to="string">
+         		<documentation> 10 MAGICS parameters enabling users to store CHARACTER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+
+  	<parameter from="int" name="text_integer_1" default="0" metview="no" member="integer1" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+  
+   	<parameter from="int" name="text_integer_2" default="0" metview="no" member="integer2" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_3" default="0" metview="no" member="integer3" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_4" default="0" metview="no" member="integer4" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_5" default="0" metview="no" member="integer5" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_6" default="0" metview="no" member="integer6" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_7" default="0" metview="no" member="integer7" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_8" default="0" metview="no" member="integer8" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_9" default="0" metview="no" member="integer9" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="int" name="text_integer_10" default="0" metview="no" member="integer10" to="int">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store INTEGER info for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+
+  	<parameter from="float" name="text_real_1" default="0" metview="no" member="real1" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+   	<parameter from="float" name="text_real_2" default="0" metview="no" member="real2" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_3" default="0" metview="no" member="real3" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_4" default="0" metview="no" member="real4" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_5" default="0" metview="no" member="real5" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_6" default="0" metview="no" member="real6" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_7" default="0" metview="no" member="real7" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_8" default="0" metview="no" member="real8" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_9" default="0" metview="no" member="real9" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+   	<parameter from="float" name="text_real_10" default="0" metview="no" member="real10" to="float">
+          		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> 10 MAGICS parameters enabling users to store REAL information for plotting in text lines (n=1,10) 		</documentation>
+  	</parameter>
+  
+  	<parameter from="float" name="text_line_height_ratio_1" default="1" metview="no" member="height_ratio_1" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  
+  	<parameter from="float" name="text_line_height_ratio_2" default="1" metview="no" member="height_ratio_2" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_3" default="1" metview="no" member="height_ratio_3" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_4" default="1" metview="no" member="height_ratio_4" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_5" default="1" metview="no" member="height_ratio_5" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_6" default="1" metview="no" member="height_ratio_6" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_7" default="1" metview="no" member="height_ratio_7" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_8" default="1" metview="no" member="height_ratio_8" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  	<parameter from="float" name="text_line_height_ratio_9" default="1" metview="no" member="height_ratio_9" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+  
+  	<parameter from="float" name="text_line_height_ratio_10" default="1" metview="no" member="height_ratio_10" to="float">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+
+ 
+  	<parameter from="string" name="text_instruction_shift_character" default="\" metview="no" member="text_instruction_shift_character" to="string" implemented="no">
+         		<documentation> Symbol or character for indicating that an Instruction String follows 		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="text_escape_character" default="#" member="text_escape_character" to="string" implemented="no">
+         		<documentation> Symbol or character followed by 3 octal numbers - see one of Figure XIV-1 to Figure XIV-3 		</documentation>
+  	</parameter>
+
+  	<parameter from="string" name="text_parameter_escape_character" default="@" metview="no" member="parameter_escape" to="string">
+         		<documentation> Symbol or character for indicating that a MAGICS parameter follows. The MAGICS parameter is also terminated by the same symbol or character 		</documentation>
+  	</parameter>
+  
+  	<parameter xml="line_height_ratios" from="floatarray" name="text_line_height_ratios" default="floatarray()" metview="no" member="height_ratios" to="floatarray">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of height of text lines to text reference character height (n=1,10). See main text 		</documentation>
+  	</parameter>
+
+  	<parameter priory="0" from="float" name="text_line_space_ratio" default="1.5" member="text_line_space_ratio" to="float" implemented="no">
+         		<release_info>Needs user input to see the possible evolution of this parameter		</release_info>
+         		<documentation> Ratio of space above and below each line to text reference character height. See main text 		</documentation>
+  	</parameter>
+
+</class>
+</magics>
+
diff --git a/tools/xml2cc.pl b/tools/xml2cc.pl
old mode 100644
new mode 100755
diff --git a/tools/xml2cc.pl.workshop b/tools/xml2cc.pl.workshop
new file mode 100644
index 0000000..e0471c1
--- /dev/null
+++ b/tools/xml2cc.pl.workshop
@@ -0,0 +1,742 @@
+#!/usr/bin/perl
+
+
+use XML::Parser;
+use Data::Dumper;
+use Date::Calc;
+
+my $file = shift;
+my $Author="MagicsTeam";
+my $ecmwf="http://wms.ecmwf.int";
+my $info = {};
+my $element = {};
+
+
+my %basetype = (
+	"int" => 1,
+	"magint" => 1,
+	"double" => 1,
+	"float" => 1,
+	"magfloat" => 1,
+	"long" => 1,
+	"bool" => 1,
+    "string" => 1,
+    "magstring" => 1,    
+    "FloatArray" =>1,
+    "magfloatarray" =>1,
+    "StringArray" => 1,
+    "magstringarray" => 1,
+    "IntArray" => 1,
+    "magintarray" => 1, 
+    "LineStyle" =>1,
+    "Hemisphere" =>1,
+    "ArrowPosition" => 1,
+    "Justification" => 1,
+    "OpenGLDriverObserverPtr" => 1,
+    "Widget" =>1, 
+    "Matrix" => 1,
+    "GribHandlePtr" =>1,
+
+);
+
+my %magtype = (
+	"int" => "magint",
+	"long" => "magint",
+	"float" => "magfloat",
+	"double" => "magfloat",
+    "string" => "magstring",
+    "FloatArray" => "magfloatarray",
+    "StringArray" => "magstringarray",
+    "IntArray" => "magintarray",
+);
+
+my %arraytype = (
+	"magfloatarray" => "atof(data)",
+	"magstringarray" => "data",
+	"magintarray" => "atoi(data)",
+);
+
+my %quote = (
+
+    "string" => 1,
+    "magstring" => 1,
+    
+);
+
+sub parse
+{
+    my $def = shift;
+    my $node = shift;   
+   
+    while ( defined ( $element = shift @{ $node } ) )
+    {
+       
+        my $child = shift @{ $node };
+        if ( ref $child )
+        {
+           my $attr = \%{ shift @{ $child } };
+           my $name = $attr->{name};
+           
+           if ($name ne "") 
+           {
+               
+               $def->{$element}->{$name} = {};
+               my $list = $element . "_list";
+               push( @{$def->{$list}}, $name);
+               foreach my $a (keys %{$attr}) 
+               {
+                   $def->{$element}->{$name}->{attributes}->{$a} = $attr->{$a}; 
+                  
+               }
+               parse($def->{$element}->{$name}, $child); 
+               
+           }
+           else
+           {
+                   $def->{$element} = {};
+                   foreach my $a (keys %{$attr}) 
+                   {
+                        $def->{$element}->{attributes}->{$a} = $attr->{$a};
+                       
+                   }
+                   parse($def->{$element}, $child); 
+           }
+        }
+        else 
+        {
+         
+          $def->{data} = $child;
+        }
+    }   
+}
+
+
+
+
+
+my $xml= new XML::Parser(Style=>"Tree");
+  
+parse ($info, $xml->parsefile($file));
+
+foreach my $static (keys %{$info->{magics}->{static}}) 
+{
+	my $name = $info->{magics}->{static}->{$static}->{attributes}->{value};
+	if ( $name eq '') {
+		$name = $info->{magics}->{static}->{$static}->{attributes}->{name};
+	}
+	my $class = $info->{magics}->{static}->{$static}->{attributes}->{class};
+	my $base = $info->{magics}->{static}->{$static}->{attributes}->{base};
+	my $tpl_class = $info->{magics}->{static}->{$static}->{attributes}->{template_class};
+	my $tpl_base = $info->{magics}->{static}->{$static}->{attributes}->{template_base};
+	print "#include \"$base.h\"\n" unless  $info->{magics}->{static}->{$static}->{attributes}->{include_base} eq "";
+	print "#include \"$class.h\"\n" unless  $info->{magics}->{static}->{$static}->{attributes}->{include_class} eq "";
+
+	
+	
+	
+	
+}
+foreach my $static (keys %{$info->{magics}->{static}}) 
+{
+	my $name = $info->{magics}->{static}->{$static}->{attributes}->{value};
+	if ( $name eq '') {
+		$name = $info->{magics}->{static}->{$static}->{attributes}->{name};
+	}
+	my $class = $info->{magics}->{static}->{$static}->{attributes}->{class};
+	my $base = $info->{magics}->{static}->{$static}->{attributes}->{base};
+	my $tpl_class = $info->{magics}->{static}->{$static}->{attributes}->{template_class};
+	my $tpl_base = $info->{magics}->{static}->{$static}->{attributes}->{template_base};
+	my $dclass = $class;
+	$dclass = "$class<$tpl_class>" unless $tpl_class eq "";
+	$class = "$class\_$tpl_class" unless $tpl_class eq "";
+	$base = "$base<$tpl_base> " unless $tpl_base eq "";
+	if ($base ne "") { 
+		print "static SimpleObjectMaker<$dclass, $base> $class\_$name(\"$name\");\n";
+	}
+	else {
+		$dclass = "$dclass " unless $tpl_class eq "";
+		print "static SimpleObjectMaker<$dclass> $class\_$name(\"$name\");\n";
+	}
+	
+	
+	
+}
+
+print "\n";
+
+foreach my $object (keys %{$info->{magics}->{class}}) 
+{
+   
+    $current = $info->{magics}->{class}->{$object};
+    $directory = $info->{magics}->{class}->{$object}->{attributes}->{directory};
+    
+
+######################################################
+#####                Include file
+
+    open STDOUT, ">tools/src/$directory/$object\Attributes.h";
+    
+    (my $year,my $month,my $day) = Date::Calc::Today();
+    my $string = Date::Calc::Date_to_Text($year, $month, $day);
+    print  <<EOF;
+
+/*! \\file $object\Attributes.h
+    \\brief Definition of $object Attributes class.
+    Automatically generated on $string
+    Do Not Edit!
+    
+    Magics Team - ECMWF 2004
+   
+    Created: $string
+    
+*/
+   
+
+#ifndef $object\Attributes_H
+#define $object\Attributes_H
+
+#include "magics.h"
+#include "ParameterManager.h"
+#include "Factory.h"
+
+
+EOF
+my $includes = {};
+    my $impl=$current->{attributes}->{implements};
+    print "#include \"$impl.h\"\n" if $impl ne ''; 
+    my $parent ='';
+    $parent=": public $impl" if $impl ne ''; 
+    foreach my $param (@{$current->{parameter_list}}) 
+    {   
+       my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+       next if $todo eq 'no';
+       my $to = $current->{parameter}->{$param}->{attributes}->{to};
+     
+       $includes->{$to} = "find" unless $basetype{$to};
+    }
+    foreach my $include (keys %{$includes} ) 
+    {
+          print "#include \"$include.h\"\n"; 
+    }
+    
+    print "\n";
+  
+    
+    my $template = $current->{attributes}->{template};
+    my $class = "$object\Attributes";
+    my $line = "";
+    if ( $template ne "" ) {
+        $line = "template <class $template>";
+        $class = "$object\Attributes<$template>";
+        
+    }
+    
+    print <<EOF;
+namespace magics {
+
+class XmlNode;
+
+
+$line
+class $object\Attributes $parent
+{
+public:
+//  --  constructor
+    $object\Attributes();
+    
+//  --  destructor
+    virtual ~$object\Attributes();
+    
+    virtual void set(const map<magstring, magstring>&);
+    virtual void set(const XmlNode&);
+    virtual void copy(const $object\Attributes&);
+    
+    void setTag(const magstring& tag) { tag_ = tag; }
+    
+   
+    
+EOF
+    my $xml_data = $current->{attributes}->{xml_data};
+    if ($xml_data eq '' ) {
+        print <<EOF;
+    void setXmlData(const magstring&)  {}
+EOF
+    }
+    else {
+    	my $to = $current->{parameter}->{$xml_data}->{attributes}->{to};
+    	my $member = $current->{parameter}->{$xml_data}->{attributes}->{member};
+    	if ( $arraytype{$to} ) {    		
+    		print("\tvoid setXmlData(const magstring& data)  { $member\_.push_back($arraytype{$to}); } \n");
+    	}
+    	else {
+    		print("\tvoid setXmlData(const magstring& data)  { $member\_ = data; }\n");
+    	}
+    }
+    
+   
+    
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {      
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        $to = "$to<$tpl> " unless $tpl eq "";
+       
+        my $value = lc $member;
+        my $method = ucfirst $member;
+        
+        print <<EOF;
+/*!
+ *   Magics Information:
+ *     - Parameter name: $name 
+ *     - Default: $default
+ */
+EOF
+    my $magto = $to;
+    $magto = $magtype{$magto} if $magtype{$magto};
+    
+
+    if ( $basetype{$to} ) 
+    { 
+        print <<EOF;   
+	void set$method($magto $value) 
+		{ $member\_ =  $value; } 
+	$magto get$method() const 
+		{ return $member\_; } 
+        
+EOF
+    }
+    else
+    {
+        print <<EOF;   
+	void set$method($to* $value) 
+		{ auto_ptr<$to> tmp($value); $member\_ = tmp; } 
+	const $to&  get$method() const 
+		{ return *$member\_; }
+     
+EOF
+    }
+    
+    }
+
+    print <<EOF;
+protected:
+//  --  method
+	virtual void print(ostream&) const;
+	virtual void toxml(ostream&, magint = 0) const;
+	
+//  --  members:
+EOF
+     print "\tmagstring $xml_data\_;\n" unless $xml_data eq ''; 
+     foreach  my $param (@{$current->{parameter_list}}) 
+    {      
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        $to = "$to<$tpl> " unless $tpl eq "";
+        
+        if ( $magtype{$to} )
+        { 
+            print "\t$magtype{$to} $member\_;\n";
+        }
+        elsif ( $basetype{$to} ) 
+        { 
+            print "\t$to $member\_;\n";
+        }
+        else 
+        {
+            print "\tauto_ptr<$to> $member\_;\n";  
+        }
+    }
+
+print <<EOF;   
+
+private:
+  	magstring tag_;
+	friend ostream& operator<<(ostream& s,const $class& p)
+	{ p.print(s); return s; }
+};
+
+} // namespace magics
+EOF
+
+    if ( $template ne "" ) {
+        print "#include \"$object\Attributes.cc\" \n";
+    }
+    
+    print "\n#endif\n";
+ 
+    close STDOUT;
+    
+#####                Include file
+######################################################
+
+######################################################
+#####                Source file
+
+    open STDOUT, ">tools/src/$directory/$object\Attributes.cc";
+    
+ 
+    print  <<EOF;
+/*! \\file $object\Attributes.h
+    \\brief Implemtation of $object Attributes class.
+    Automatically generated on $string
+    Do Not Edit!
+    
+    Magics Team - ECMWF 2004
+   
+    Created: $string
+    
+*/    
+
+    
+#include "$object\Attributes.h"
+#include "MagicsParameter.h"
+#include "Factory.h"
+#include "Translator.h"
+#include "XmlNode.h"
+
+using namespace magics;
+
+EOF
+   $header = "";
+    $p = "";
+   if ( $template ne "" ) {
+        $header = "template <class $template>";
+        $p = "<P>";
+    }
+    
+    my $count = 0;
+    
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {      
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        next if $todo eq 'no';
+        next if $tpl  ne "";
+        $count++;
+    }
+    
+    my $subclass = ":";
+    $subclass = "" if $count eq 0; 
+    
+    print "$header\n$object\Attributes$p\::$object\Attributes()$subclass"; 
+    my $sep = ""; 
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {      
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        my $constant= $current->{parameter}->{$param}->{attributes}->{constant};
+        next if $tpl ne "";
+        $to = "$to<$tpl> " unless $tpl eq "";
+        my $magto = $to;
+        $magto = $magtype{$to} if $magtype{$to};
+        $from = $magtype{$from} if $magtype{$from};
+        if ($constant eq "yes" ) 
+        {
+        	print "$sep\n\t$member\_(Translator<$from, $magto>()(\"$default\"))"; 
+        }
+        else {
+        	print "$sep\n\t$member\_(Translator<$from, $magto>().magics(\"$name\"))"; 
+        }
+		$sep = ",";
+        
+        
+    }
+	print "\n";
+    print <<EOF;
+{
+EOF
+   foreach  my $param (@{$current->{parameter_list}}) 
+    {   
+    	my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        next if $tpl eq "";
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $method = ucfirst $member;
+        
+        $to = "$to<$tpl> " unless $tpl eq "";
+        my $magto = $to;
+        $magto = $magtype{$to} if $magtype{$to};
+        $from = $magtype{$from} if $magtype{$from};
+        print "\n\tTranslator<magstring, $magto> $member;\n";
+        print "\tset$method($member.magics(\"$name\"));\n";
+       
+		
+   }
+   print <<EOF;
+} 
+
+
+$header
+$object\Attributes$p\::~$object\Attributes()
+{
+}
+
+$header    
+EOF
+	$val = 0;
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        my $xml = $current->{parameter}->{$param}->{attributes}->{xml};
+        
+        $to = "$to<$tpl> " unless $tpl eq "";
+        my $magto = $to;
+        my $method = ucfirst $member;
+        $magto = $magtype{$to} if $magtype{$to};
+        $from = $magtype{$from} if $magtype{$from};
+        
+        if ( $basetype{$to} ) 
+        { 
+        	if ($val == 0) {
+        		$val =1;
+        		
+				print "void $object\Attributes$p\::set(const map<magstring, magstring>& params)\n{\n";
+        		print"\tmap<magstring, magstring>::const_iterator val;\n\n";
+        	}
+        	
+        	print "\tval = params.find(\"$name\");\n";
+        	print "\tif ( val != params.end() ) { \n";
+        	print "\t\tMagLog::info() << \"Parameter $name set to \" << val->second << \"\\n\"; \n";        
+            print "\t\tset$method(Translator<magstring, $magto>()(val->second));\n"; 
+            print "\t}\n";
+        }
+       
+       
+      
+        if ( $xml ne "" && $xml ne $name) {
+        	if ( $basetype{$to} ) 
+            { 
+            	print "\tval = params.find(\"$xml\");\n";
+            	print "\tif ( val != params.end() ) { \n";
+            	print "\t\tMagLog::info() << \"Parameter $name set to \" << val->second << \"\\n\"; \n";
+          
+                 print "\t\tset$method(Translator<magstring, $magto>()(val->second));\n"; 
+                 print "\t}\n";
+            }
+            
+           
+            
+        }
+       
+       
+        
+    }
+     if ($val==0) {
+        		print "void $object\Attributes$p\::set(const map<magstring, magstring>&) \n{\n";
+
+        	}
+     print  <<EOF;
+} 
+
+$header
+void $object\Attributes$p\::copy(const $object\Attributes& other)
+{
+EOF
+
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        my $xml = $current->{parameter}->{$param}->{attributes}->{xml};
+         my $xml_data = $current->{attributes}->{xml_data};
+        $to = "$to<$tpl> " unless $tpl eq "";
+        my $magto = $to;
+        my $method = ucfirst $member;
+        $magto = $magtype{$to} if $magtype{$to};
+        $from = $magtype{$from} if $magtype{$from};
+        
+        if ( $basetype{$to} ) 
+        {         	
+             print "\t$member\_ = other.$member\_;\n"; 
+        }
+        else 
+        {
+           print "\tset$method(other.$member\_->clone());\n";          
+        }
+       
+        print "";
+       
+        
+    }
+     print  <<EOF;
+} 
+
+$header
+void $object\Attributes$p\::set(const XmlNode& node)
+{
+	set(node.attributes());
+EOF
+	if ($xml_data ne '') {
+		print "\n\tfor (XmlNode::DataIterator data = node.firstData(); data != node.lastData(); ++data)\n";
+		print "\t\tsetXmlData(*data);\n";	
+	}
+	print "\n";
+	print "\tfor (XmlNode::ElementIterator elt = node.firstElement(); elt != node.lastElement(); ++elt) {\n";
+    		foreach  my $param (@{$current->{parameter_list}}) {
+    			 my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+    			next if $todo eq 'no';
+    			my $to = $current->{parameter}->{$param}->{attributes}->{to};
+    			next if $basetype{$to};
+    			my $member = $current->{parameter}->{$param}->{attributes}->{member};
+    			my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+    			$to = "$to<$tpl> " unless $tpl eq "";
+    			my $magto = $to;
+        		my $method = ucfirst $member;
+        		$magto = $magtype{$to} if $magtype{$to};
+    			
+    			print "\t\ttry {\n";
+    			print "\t\t\t$magto* $member = Translator<magstring, $magto>()((*elt)->name());\n";
+    			print "\t\t\t$member->set(*(*elt));\n";
+                print "\t\t\tset$method($member);\n";
+    			print "\t\t}\n";
+    			print "\t\tcatch (NoFactoryException& e) {}\n";
+       
+    	}
+    
+	
+
+print <<EOF; 		
+	}
+}
+$header
+void $object\Attributes$p\::print(ostream& out)  const
+{
+	out << "$object\Attributes[";
+EOF
+    $sep = "";
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {      
+         my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+       next if $todo eq 'no';
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+       
+       
+        $to = "$to<$tpl> " unless $tpl eq "";
+        $print = "$member\_";
+        $print = "*$member\_" unless  $basetype{$to} ;
+        
+        print "\tout << \"$sep$member = \" << $print;\n"; 
+        
+        $sep = ", ";
+        
+    }
+        
+    print "\tout << \"]\" << \"\\n\";\n";
+    print "}\n\n";
+print <<EOF; 
+$header
+void $object\Attributes$p\::toxml(ostream& out, magint tabs)  const
+{
+	string tab;
+	for ( magint t = 0; t < tabs; tabs++) tab = tab + "\t";
+	
+	out << tab << "<" << tag_;
+EOF
+    $sep = " ";
+     my $calls = "";
+    
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+        my $tpl = $current->{parameter}->{$param}->{attributes}->{template};
+        my $xml = $current->{parameter}->{$param}->{attributes}->{xml};
+         my $xml_data = $current->{attributes}->{xml_data};
+        $to = "$to<$tpl> " unless $tpl eq "";
+        my $magto = $to;
+        my $method = ucfirst $member;
+        $magto = $magtype{$to} if $magtype{$to};
+        $from = $magtype{$from} if $magtype{$from};
+       
+        if ( $basetype{$to} ) 
+        {         	
+             print "\tout << tab << \"\\t$xml = \\\'\" << $member\_ << \"\\\'\\n\";\n"; 
+        }
+        else {
+        	 $calls = "$calls \t$member.toxml(out, tabs+1);\n";
+        	
+        }
+       
+        
+      
+        print "";
+
+    }
+    print "\tout << tab << \">\";\n\n";
+    print $calls;
+    
+    print "\n\tout << tab << \"</\" << tag << \">\\n\";\n";
+
+  
+        
+    
+    print "}\n\n";
+    
+ 
+
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {     
+         my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+       next if $todo eq 'no';
+        my $name = $current->{parameter}->{$param}->{attributes}->{name};
+        my $member = $current->{parameter}->{$param}->{attributes}->{member};
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        my $migration = $current->{parameter}->{$param}->{migration}->{data};
+        $from = $magtype{$from} if $magtype{$from};
+        
+        
+        $default = "\"$default\"" if  $quote{$from} ;
+     
+        print <<EOF
+static MagicsParameter<$from> $name("$name", $default, "$migration");
+EOF
+        
+    }
+        
+   
+}
+
+
diff --git a/tools/xml2cc_list.pl b/tools/xml2cc_list.pl
new file mode 100755
index 0000000..14cd02a
--- /dev/null
+++ b/tools/xml2cc_list.pl
@@ -0,0 +1,140 @@
+#!/usr/bin/perl
+
+use XML::Parser;
+use Time::localtime;
+
+my $file = shift;
+my $dir = shift;
+my $Author="MagicsTeam";
+my $ecmwf="http://wms.ecmwf.int";
+my $info = {};
+my $element = {};
+
+
+
+my %basetype = (
+    "int" => 1,
+    "float" => 1,
+    "string" => 1,
+    "bool"=>1,
+    "floatarray" =>1,
+    "stringarray" => 1,
+    "intarray" => 1, 
+    "LineStyle" =>1,
+    "ListPolicy" =>1,
+    "Hemisphere" =>1,
+    "ArrowPosition" => 1,
+    "AxisAutomaticSetting" => 1,
+    "Justification" => 1,
+    "DisplayType" => 1,
+    "OpenGLDriverObserverPtr" => 1,
+    "Widget" =>1, 
+    "cairo_t*" =>1,
+    "QWidget*" =>1,
+    "QGraphicsScene*" => 1,
+    "Matrix" => 1,
+    "GribHandlePtr" =>1,  
+);
+
+my %translator = (
+    "int" => "ParameterManager::getInt",
+    "float" => "ParameterManager::getDouble",
+    "string" => "ParameterManager::getString",
+    "stringarray" => "ParameterManager::getStringArray",
+    "bool" => "ParameterManager::getBool",
+    "doublearray" => "ParameterManager::getDoubleArray",
+    "floatarray" => "ParameterManager::getDoubleArray",
+    "intarray" => "ParameterManager::getIntArray"
+    
+);
+my %magtype = (
+	"float" =>'double',
+);
+my %consttype = (
+	"string" =>'const string&',
+);
+
+my %classtype = (
+	"Colour" =>1,
+	"DateTime" =>1,
+	"Path" => 1
+);
+
+my %arraytype = (
+	"floatarray" => "atof(data)",
+	"stringarray" => "data",
+	"intarray" => "atoi(data)",
+);
+
+my %quote = (
+    "string" => 1,
+);
+
+sub parse
+{
+    my $def = shift;
+    my $node = shift;   
+   
+    while ( defined ( $element = shift @{ $node } ) )
+    {
+       
+        my $child = shift @{ $node };
+        if ( ref $child )
+        {
+           my $attr = \%{ shift @{ $child } };
+           my $name = $attr->{name};
+           
+           if ($name ne "") 
+           {
+               
+               $def->{$element}->{$name} = {};
+               my $list = $element . "_list";
+               push( @{$def->{$list}}, $name);
+               foreach my $a (keys %{$attr}) 
+               {
+                   $def->{$element}->{$name}->{attributes}->{$a} = $attr->{$a}; 
+                  
+               }
+               parse($def->{$element}->{$name}, $child); 
+               
+           }
+           else
+           {
+                   $def->{$element} = {};
+                   foreach my $a (keys %{$attr}) 
+                   {
+                        $def->{$element}->{attributes}->{$a} = $attr->{$a};
+                       
+                   }
+                   parse($def->{$element}, $child); 
+           }
+        }
+        else 
+        {
+         
+          $def->{data} = $child;
+        }
+    }   
+}
+
+
+
+
+
+my $xml= new XML::Parser(Style=>"Tree");
+  
+parse ($info, $xml->parsefile($file));
+
+foreach my $object (keys %{$info->{magics}->{class}}) 
+{
+    $current = $info->{magics}->{class}->{$object};
+    $directory = $info->{magics}->{class}->{$object}->{attributes}->{directory};
+    $tag = $info->{magics}->{class}->{$object}->{attributes}->{xmltag};
+    print "$dir/$directory/$object\Attributes.h\n";
+    print "$dir/$directory/$object\Attributes.cc\n";
+
+
+    
+}
+
+
diff --git a/tools/xml2cc_new.pl b/tools/xml2cc_new.pl
old mode 100644
new mode 100755
index 7b2f485..56fba98
--- a/tools/xml2cc_new.pl
+++ b/tools/xml2cc_new.pl
@@ -27,6 +27,7 @@ my %basetype = (
     "ArrowPosition" => 1,
     "AxisAutomaticSetting" => 1,
     "Justification" => 1,
+    "Position" => 1,
     "DisplayType" => 1,
     "OpenGLDriverObserverPtr" => 1,
     "Widget" =>1, 
diff --git a/tools/xml2doc.pl b/tools/xml2doc.pl
new file mode 100755
index 0000000..5371812
--- /dev/null
+++ b/tools/xml2doc.pl
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+
+use XML::Parser;
+use Time::localtime;
+
+my $file = shift;
+my $dir = shift;
+my $Author="MagicsTeam";
+my $ecmwf="http://wms.ecmwf.int";
+my $info = {};
+my $element = {};
+
+
+my %basetype = (
+    "int" => 1,
+    "float" => 1,
+    "string" => 1,
+    "bool"=>1,
+    "floatarray" =>1,
+    "stringarray" => 1,
+    "intarray" => 1, 
+    "LineStyle" =>1,
+    "ListPolicy" =>1,
+    "Hemisphere" =>1,
+    "ArrowPosition" => 1,
+    "Justification" => 1,
+    "DisplayType" => 1,
+    "OpenGLDriverObserverPtr" => 1,
+    "Widget" =>1, 
+    "cairo_t" =>1, 
+    "Matrix" => 1,
+    "GribHandlePtr" =>1,  
+);
+
+my %magtype = (
+	"float" =>'double',
+);
+
+my %classtype = (
+	"Colour" =>1,
+);
+
+my %arraytype = (
+	"floatarray" => "atof(data)",
+	"stringarray" => "data",
+	"intarray" => "atoi(data)",
+);
+
+my %quote = (
+    "string" => 1,
+);
+
+sub parse
+{
+    my $def = shift;
+    my $node = shift;   
+   
+    while ( defined ( $element = shift @{ $node } ) )
+    {
+       
+        my $child = shift @{ $node };
+        if ( ref $child )
+        {
+           my $attr = \%{ shift @{ $child } };
+           my $name = $attr->{name};
+           
+           if ($name ne "") 
+           {
+               
+               $def->{$element}->{$name} = {};
+               my $list = $element . "_list";
+               push( @{$def->{$list}}, $name);
+               foreach my $a (keys %{$attr}) 
+               {
+                   $def->{$element}->{$name}->{attributes}->{$a} = $attr->{$a}; 
+                  
+               }
+               parse($def->{$element}->{$name}, $child); 
+               
+           }
+           else
+           {
+                   $def->{$element} = {};
+                   foreach my $a (keys %{$attr}) 
+                   {
+                        $def->{$element}->{attributes}->{$a} = $attr->{$a};
+                       
+                   }
+                   parse($def->{$element}, $child); 
+           }
+        }
+        else 
+        {
+         
+          $def->{data} = $child;
+        }
+    }   
+}
+
+
+
+
+
+my $xml= new XML::Parser(Style=>"Tree");
+  
+parse ($info, $xml->parsefile($file));
+
+foreach my $object (keys %{$info->{magics}->{class}}) 
+{
+   
+    $current = $info->{magics}->{class}->{$object};
+    $directory = $info->{magics}->{class}->{$object}->{attributes}->{directory};
+    
+
+######################################################
+#####                Include file
+
+    open STDOUT, ">$object.txt";
+
+  
+   
+
+    print "Basic Documentation for the Object  $object \n";
+
+
+    foreach my $param (@{$current->{parameter_list}}) 
+    {   
+       my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+       next if $todo eq 'no';
+       my $name = $current->{parameter}->{$param}->{attributes}->{name};
+       my $def = $current->{parameter}->{$param}->{attributes}->{default};
+       print "\t$name\[$def\]:";
+       my $doc="$current->{parameter}->{$param}->{documentation}->{data}";
+       $doc="not too much documentation yet!" if $doc eq "";
+       print "$doc\n";
+      
+        
+    }
+   
+ 
+        
+    
+       
+    
+}
+
+
diff --git a/tools/xml2doc.py b/tools/xml2doc.py
new file mode 100644
index 0000000..e124fa1
--- /dev/null
+++ b/tools/xml2doc.py
@@ -0,0 +1,203 @@
+
+from xml.sax.handler import ContentHandler
+from xml.sax import make_parser
+import sys
+
+
+
+
+
+class ObjectHandler(ContentHandler):
+	name = ""
+	defparam = ""
+	params = []
+	current = {}
+	doc = ""
+
+
+	def default(self, attrs):
+		val = attrs.get("default");
+		if (val == "-int_MAX"):
+			return "-1.0E21"
+		if (val == "int_MAX"):
+			return "1.0E21"
+		if (val == "floatarray()"):
+			return "''"
+		if (val == "intarray()"):
+			return "''"
+		if (val == "stringarray()"):
+			return "''"
+		if (len(val) == 0):
+			return "''"
+		if (val == "(automatic)"):
+			return "'(automatic)'"
+		return val
+
+	def characters(self, data):
+		pass
+	
+	def toggle(self, attrs):
+		s = "\t%s\n\t{\n" % attrs.get("name")
+		s = s + "\t\ton; on\n"
+		s = s + "\t\toff; off\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s
+
+
+	def any(self, attrs):
+		s = "DOCUMENATION " 
+		s = s + "\t} = %s" % self.default(attrs)
+		return s
+
+
+	def number(self, attrs):
+		s = "\t%s\n\t{\n" % attrs.get("name")
+		s = s + "\t\t*\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s
+
+	def listofnumbers(self, attrs):
+		s = "\t%s\n\t{\n" % attrs.get("name")
+		s = s + "\t\t*\n"
+		s = s + "\t\t/\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s
+
+	def listofstrings(self, attrs):
+		s = "\t%s\n\t{\n" % attrs.get("name")
+		s = s + "\t\t@\n"
+		s = s + "\t\t/\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s
+
+	def colour(self, attrs):
+		s = "\t%s\n\t{\n" % attrs.get("name")
+		s = s + "\t\tred; red\n"
+		s = s + "\t\t@\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s
+
+	def linestyle(self, attrs):
+		s = "here we found a line " 
+		s = s + "\t} DEFAULT %s\n" % self.default(attrs)
+		return s
+
+	def options(self, attrs):
+		s = "\t%s\n\t{\n" % attrs.get("name")
+		self.defparam = self.default(attrs)
+		return s
+
+	def normal(self, param):
+		s =  "<tr>\n"
+		s = s + "  <td><strong>%s</strong></td><td>%s</td>\n" % (param["name"], param["from"])
+		s = s + "  <td>%s</td><td>%s</td>\n" % (param["doc"], param["default"])
+		s = s + "</tr>\n"
+		return s
+
+	def header(self, param):
+		s =  "<tr style='background-color: rgb(204, 204, 255);'>\n"
+		s = s + "  <td colspan='4'><strong>%s (%s)</strong></td>\n" % (param["name"], param["value"])
+		s = s + "</tr>\n"
+		return s
+
+	
+	types = { "normal" : normal,
+			  "header" : header}
+
+	def newparam(self, param, value, default):
+		for p in self.params:
+			if p["name"] == param:
+				selfcurrent = p
+				return
+		self.current = {"name" : param,  "type": "normal", "from" : value, "default" : default, "doc":""} 
+		self.params.append(self.current)
+
+	def startElement(self, name, attrs):
+		if (name == "magics") :
+			return
+
+		if (name == "class"):
+			self.name = attrs.get("name")
+			self.inherits = attrs.get("inherits")
+			if self.inherits != '':
+				try:
+					file = open("xml/%s.xml" % attrs.get("inherits"), "r")
+					print " inherits ->%s" % self.inherits
+					object = ObjectHandler()
+					parser = make_parser()
+					object.params = []
+					parser.setContentHandler(object)
+					parser.parse(file)
+					self.params.append(s)
+					for s in object.params:
+						self.params.append(s)
+						
+				except:
+					pass
+
+		if (name == "documentation"):
+			self.doc = ""
+		if (name == "parameter"):
+			self.param = attrs.get("name")
+			print ("name %s"%self.param)
+			if (attrs.get("implemented") == 'no'):
+				return
+			type = attrs.get("to")
+			fromtype = attrs.get("from")
+			deftype = attrs.get("default")
+			self.newparam(self.param, fromtype, deftype)
+		if (name == "option"):
+				object = ObjectHandler()
+				object.params = []
+				object.doc = ""
+				if (attrs.get("docdive") == 'no'):
+					return
+				parser = make_parser()
+				parser.setContentHandler(object)
+				file = open("xml/%s.xml" % attrs.get("name"), "r")
+				value = attrs.get("fortran");
+				if (attrs.get("fortran") != attrs.get("xml")) :
+					value = "%s/%s"%(attrs.get("fortran"), attrs.get("xml"))
+					
+				p = {"name" : self.param,  "value" : value , "type" : "header"}
+				self.params.append(p)
+				parser.parse(file)
+				for s in object.params:
+					self.params.append(s)
+
+	def characters(self, doc):
+		self.doc = self.doc + doc
+
+	def endElement(self, name):
+		if (name == "magics") :
+			return
+
+			
+		if (name == "documentation") :
+			self.current["doc"] = self.doc
+			pass
+			
+		if (name == "class") :
+			filename = "xml/%s.html" % self.name
+			# <tr style="background-color: rgb(204, 204, 255);"> 
+			definition = open(filename, "w")
+			definition.write( "<h3>%s parameters</h3>\n" % self.name)
+			definition.write( '<table cellspacing="1" cellpadding="1" border="1" style="width: 100%;">\n')
+			definition.write( '<tbody><font face="arial,sans-serif">\n')
+			definition.write( "<tr>\n")
+			definition.write( "  <td><strong>Parameter</strong></td><td><strong>Type</strong></td>\n")
+			definition.write( "  <td><strong>Documentation</strong></td><td><strong>Default</strong></td>\n")
+			definition.write( "</tr>\n")
+			for param in self.params:	
+				s = self.types[param["type"]](self, param)
+				definition.write(s)
+			definition.write( "</font></tbody>\n")
+			definition.write( '</table>\n')
+
+
+object = ObjectHandler()
+saxparser = make_parser()
+saxparser.setContentHandler(object)
+
+datasource = open(sys.argv[1], "r")
+saxparser.parse(datasource)
diff --git a/tools/xml2dtd.pl b/tools/xml2dtd.pl
old mode 100644
new mode 100755
diff --git a/tools/xml2html.py b/tools/xml2html.py
new file mode 100644
index 0000000..f359620
--- /dev/null
+++ b/tools/xml2html.py
@@ -0,0 +1,197 @@
+#!/usr/bin/python
+from xml.sax.handler import ContentHandler
+from xml.sax import make_parser
+from types import *
+
+import sys
+import json
+
+
+class ObjectHandler(ContentHandler):
+	path ="../src/xml/"
+	tag = ""
+	doc = ""
+	magics = {}
+	objects = {}
+	object = {}
+	param = {}
+	paramdoc = ""
+	actiondoc = ""
+
+	def boolset(p, attrs):
+		p["values"] = ["on", "off"]
+
+	def lineset(p, attrs):
+		p["values"] = ["solid", "dash", "dot"]
+		p["type"] = "toggle"
+		
+	def anyset(p, attrs):
+		if  attrs.has_key("values") :
+			val = attrs["values"]
+			values = val.split("/")
+			p["values"] = values
+			p["type"] = "toggle"
+		return
+	
+	types = { 
+		"bool": boolset,
+		"string": anyset,
+		"Colour": anyset,
+		"LineStyle": lineset,
+	}
+
+
+	def get(self, attrs, name, default):
+		if  attrs.has_key(name):
+			return attrs.get(name)
+		else :
+			return default
+
+	def newparam(self, attrs):
+		p = {}
+		p["name"] = attrs.get("name")
+		p["type"] = attrs.get("to")
+		p["values"] = []
+		t = p["type"]
+		if  self.types.has_key(t) :
+			self.types[t](p, attrs)
+		else :
+			p["type"]="toggle"
+
+
+
+		p["default"] = attrs.get("default")
+		return p
+
+	def newobject(self, attrs):
+		o = {}
+		o["name"] = attrs.get("name")
+		o["documentation"] = ""
+		o["parameters"] = []
+		if  attrs.has_key("inherits") :
+			o["inherits"]=attrs.get("inherits")
+			print o["name"] + " inhrits from " + o["inherits"]
+		return o
+
+	def startElement(self, name, attrs):
+		self.tag = name
+		if ( name == "class" ) : 
+			self.doc = name
+		# New object
+			self.object = self.newobject(attrs)
+			self.magics[attrs.get("name")] = self.object;
+		if ( name == "parameter" ) : 
+			if  self.get(attrs, "visible", "on") == "on" :
+				self.doc = name
+				self.param = self.newparam(attrs)
+				self.object["parameters"].append(self.param)
+			else :
+				self.doc = "nodoc"
+		if ( name == "option") : 
+			val = attrs.get("fortran")
+			self.param["values"].append(val)
+			if ( self.param.has_key(val) == False ):
+				self.param[val] = []
+			self.param[val].append(attrs.get("name"))
+		if ( name == "set" ) : 
+			val = attrs.get("value")
+			if ( self.param.has_key(val) == False ):
+				self.param[val] = []
+			self.param[val].append(attrs.get("name"))
+
+		
+
+	def characters(self, content):
+		if ( self.tag == "documentation" ) : 
+			if ( self.doc == "class" ) :
+				self.actiondoc += content.lstrip();
+			if ( self.doc == "parameter" ) :
+				self.paramdoc += content.lstrip();
+				
+
+	def endElement(self, name):
+		if ( name == "parameter"  and self.doc == "parameter") : 
+			self.param["documentation"] = self.paramdoc
+			self.paramdoc= ""
+		if ( name == "class" ) : 
+			self.object["documentation"] = self.actiondoc
+			self.actiondoc= ""
+			
+	def printDef(self):
+		print json.dumps(self.magics, indent=2)
+	
+
+	def parse(self, file):
+		saxparser = make_parser()
+		saxparser.setContentHandler(self)
+		datasource = open(self.path + file, "r")
+		saxparser.parse(datasource)
+		return self.magics
+	
+	def build(self, actions, args):
+		defs = args["parameters"]
+		parameters = []
+			
+		for a in actions:
+			if ( type(a) != dict and self.magics.has_key(a) ) :
+			# external object
+				action = self.magics[a]
+				if action.has_key("inherits") :
+					parent = action["inherits"]
+					definition = self.magics[parent]
+					print  a + " xxxxinherits from " + parent
+			
+					print "??????????????????"
+					for p in definition["parameters"]:
+						print p["name"]	
+						parameters.append(p)
+					print "---------------"
+
+				for param in action["parameters"]:
+					#print "add" + param["name"]
+					parameters.append(param)
+					for val in param["values"]:
+						if param.has_key(val) :
+							param[val] = self.build(param[val], action)
+						else :
+							param[val] = [] 
+			else :
+				for param in defs:
+					if (param["name"] == a) :
+						parameters.append(param)
+						defs.remove(param)
+					
+
+		return parameters;
+
+	def getParams(self, action):
+		return self.build(action, self.magics[action[0]]);
+
+	def getDoc(self, action):
+		action = self.magics[action]
+
+		return action["documentation"]
+			
+
+
+object = ObjectHandler()
+object.parse("Coastlines.xml")
+object.parse("CoastPlotting.xml")
+object.parse("LabelPlotting.xml")
+object.parse("GridPlotting.xml")
+parameters = object.getParams(["Coastlines"]);
+doc = object.getDoc("Coastlines");
+
+magics={}
+magics["magics"] = []
+action={}
+action["action"]="coastlines"
+action["documentation"]=doc
+action["parameters"]=parameters
+magics["magics"].append(action)
+
+
+
+f = open('coast.json', "w")
+f.write(json.dumps(magics, indent=1))
+
diff --git a/tools/xml2icon.pl b/tools/xml2icon.pl
new file mode 100755
index 0000000..f2f88e7
--- /dev/null
+++ b/tools/xml2icon.pl
@@ -0,0 +1,149 @@
+#!/usr/bin/perl
+
+
+use XML::Parser;
+use Data::Dumper;
+
+use Time::localtime;
+
+my $file = shift;
+my $dir = shift;
+my $Author="MagicsTeam";
+my $ecmwf="http://wms.ecmwf.int";
+my $info = {};
+my $element = {};
+
+
+my %basetype = (
+	"int" => 1,
+	"float" => 1,
+	"bool" => 1,
+    "string" => 1,  
+    "floatarray" =>1,
+    "stringarray" => 1,
+     "magstringarray" => 1,
+    "intarray" => 1, 
+    "LineStyle" =>1,
+    "Hemisphere" =>1,
+    "ArrowPosition" => 1,
+    "Justification" => 1,
+    "OpenGLDriverObserverPtr" => 1,
+    "Widget" =>1, 
+    "Matrix" => 1,
+    "GribHandlePtr" =>1,
+    "Colour" =>1,
+    "Path" =>1
+
+);
+
+my %arraytype = (
+	"magfloatarray" => "atof(data)",
+	"magstringarray" => "data",
+	"magintarray" => "atoi(data)",
+);
+
+my %quote = (
+    "string" => 1,    
+);
+my %type = (
+    "float" => "double",    
+);
+
+sub parse
+{
+    my $def = shift;
+    my $node = shift;   
+   
+    while ( defined ( $element = shift @{ $node } ) )
+    {
+       
+        my $child = shift @{ $node };
+        if ( ref $child )
+        {
+           my $attr = \%{ shift @{ $child } };
+           my $name = $attr->{name};
+           
+           if ($name ne "") 
+           {
+               
+               $def->{$element}->{$name} = {};
+               my $list = $element . "_list";
+               push( @{$def->{$list}}, $name);
+               foreach my $a (keys %{$attr}) 
+               {
+                   $def->{$element}->{$name}->{attributes}->{$a} = $attr->{$a}; 
+                  
+               }
+               parse($def->{$element}->{$name}, $child); 
+               
+           }
+           else
+           {
+                   $def->{$element} = {};
+                   foreach my $a (keys %{$attr}) 
+                   {
+                        $def->{$element}->{attributes}->{$a} = $attr->{$a};
+                       
+                   }
+                   parse($def->{$element}, $child); 
+           }
+        }
+        else 
+        {
+         
+          $def->{data} = $child;
+        }
+    }   
+}
+
+
+my %metview = (
+	"string" => "@",
+	"float" => "*",
+    "int" => "*",
+    "bool"=> "on\n\t\toff"
+);
+
+
+my $xml= new XML::Parser(Style=>"Tree");
+  
+parse ($info, $xml->parsefile($file));
+
+
+
+
+
+foreach my $object (keys %{$info->{magics}->{class}}) 
+{
+   
+    $current = $info->{magics}->{class}->{$object};
+    
+    $class = $info->{magics}->{class}->{$object}->{attributes}->{name};
+    print "$class; MagicsPlusPlus Object; $file\n{\n";
+    
+    foreach  my $param (@{$current->{parameter_list}}) 
+    {     
+        my $todo = $current->{parameter}->{$param}->{attributes}->{implemented};
+        next if $todo eq 'no';
+        
+        my $param = $current->{parameter}->{$param}->{attributes}->{name};
+        my $name  = uc $param;
+        my $from = $current->{parameter}->{$param}->{attributes}->{from};
+        my $to = $current->{parameter}->{$param}->{attributes}->{to};
+     
+        my $default = $current->{parameter}->{$param}->{attributes}->{default};
+        $default = "\"\"" if $default eq "";
+        $default = "\".\"" if $default eq ".";
+        print "\t$name {\n";
+            if ( $metview{$to} ) {
+                print "\t\t$metview{$to}\n";
+            } 
+        print "\t} = $default\n";
+        
+    }
+    print "}\n";  
+      
+   
+}
+
+
diff --git a/tools/xml2mv.pl b/tools/xml2mv.pl
old mode 100644
new mode 100755
index d3516b4..1fb7d0e
--- a/tools/xml2mv.pl
+++ b/tools/xml2mv.pl
@@ -29,6 +29,7 @@ my %basetype = (
     "ArrowPosition" => 1,
     "ListPolicy" => 1,
     "Justification" => 1,
+    "Position" => 1,
     "AxisAutomaticSetting" => 1,
     "OpenGLDriverObserverPtr" => 1,
     "Widget" =>1,
@@ -397,6 +398,7 @@ EOF
     		"AxisAutomaticSetting" => 1,
             "ArrowPosition" =>1, 
 	        "Justification" => 1,
+	        "Position" => 1,
             "ListPolicy" => 1,
             "stringarray" =>1,
             "bool" =>1,
diff --git a/tools/xml2mv.py b/tools/xml2mv.py
new file mode 100644
index 0000000..6c9d2a5
--- /dev/null
+++ b/tools/xml2mv.py
@@ -0,0 +1,855 @@
+#!/usr/bin/python
+from xml.sax.handler import ContentHandler
+from xml.sax import make_parser
+from types import *
+
+import sys
+
+
+if(len(sys.argv) != 5) :
+    print "\n\tYou need to give 4 input parameters:"
+    print "\n\t  %s source.xml targetDef CLASS_NAME rulesDef\n" % sys.argv[0]
+    sys.exit()
+
+
+
+# ObjectHandler::optionalparams
+# - will store dictionary with optional param name as key, and list of tuples as value
+# - each tuple is a pair: (conditional_param_name, value-to-enable)
+# e.g.
+# {"symbol_text_font_name": (("symbol_type", "text"), ("symbol_type", "both"))}
+# - which means that if "symbol_type" is either "text" or "both", then "symbol_text_font_name"
+#   should be enabled; or in Metview rules terms, if "symbol_type is neither"
+#   "text" nor "both", then "symbol_text_font_name" should be disabled.
+#   NOTE: we make an assumption - if two conditional parameters are the same (e.g.
+#   "symbol_type" in the above example), then the relationship is %or, otherwise it
+#   is %and. This should be the case because of the way the .xml files are arranged.
+
+# ObjectHandler::optionalparams2
+# - a reorganised version of ObjectHandler::optionalparams
+# - this time, the keys are the tuples of conditions and the values are the
+#   set of parameters that are to be set. This is so that we can combine all
+#   the %unset parameters together under the same condition.
+
+
+# ObjectHandler::optionalparams3
+# - an ordered version of optionalparams2 using a tuple instead of a dictionary (so that we
+#   can ensure a 'working' order of the conditions, ie make it impossible to unset a parameter
+#   before it needs to be queried, because this causes an error in applying the rules).
+#   (  ((condition1,condition2), (unsetparam1,unsetparam2)),  ((condition3,condition4), (unsetparam3,unsetparam4)) )
+
+
+# ObjectHandler::classes
+# - stores all the parsed class names along with their associated parameters, e.g.
+# {"MarkerShadingTechnique": {"inherits": ["ShadingTechnique"],
+#                             "params": ["contour_shade_colour_table", "contour_shade_height_table"]}}
+
+class ObjectHandler(ContentHandler):
+	title = ""
+	classname = ""
+	defparam = ""
+	tab1 = 0
+	tab2 = 2
+	ignore = False
+	mydef = []   # the growing list of parameters
+	param = ""
+	tag = ""
+	doc = "Documentation"
+	myoptions = []
+	optionalparams  = {}
+	optionalparams2 = {}  # see reorganiseOptionalParameters()
+	optionalparams3 = ()
+	myrules = {}
+	objects = []
+	last = ""   # the currently-parsed parameter
+	classes = {}
+	#inheritedlast = ""
+	unset = {}
+	current = {}
+	filehistory = []  # a list of files we have opened (so that we don't open the same one twice)
+	debug = 0  # gives some output on stdout
+	toplevel = True
+
+	def setTopLevel(self, top):
+		self.toplevel = top
+
+
+	def default(self, attrs):
+		val = attrs.get("metview_default");
+		if ( isinstance(val, NoneType) ):
+			val = attrs.get("default");
+
+		if (val == "") :
+			val = attrs.get("default");
+		if (val == ".") :
+			val = "'.'";
+		if (val.upper() == "-INT_MAX"):
+			return "-1.0E21"
+		if (val.upper() == "INT_MAX"):
+			return "1.0E21"
+		if (val == "floatarray()"):
+			return "''"
+		if (val == "intarray()"):
+			return "''"
+		if (val == "stringarray()"):
+			return "''"
+		if (len(val) == 0):
+			return "''"
+		if (val == "(automatic)"):
+			return "'(AUTOMATIC)'"
+		return val
+
+	def tab(self, n):
+		sep = ''
+		i = 0
+		while i < n:
+			sep = sep + '\t'
+			i = i + 1
+		return sep
+
+	def nice(self, name, attrs):
+		sep1 = self.tab(self.tab1)
+		sep2 = self.tab(self.tab2)
+		self.file.write("%s<%s " % (sep1.upper(), name.upper()))
+		for key in attrs.getNames():
+			self.file.write(" %s='%s'" % (key.upper() , attrs.getValue(key).upper()))
+		self.file.write(">\n")
+
+	def characters(self, content):
+		
+		if ( self.tag == "documentation" ) : 				
+				self.doc += content.lstrip();
+			
+	
+
+	# addhidden - if the appropriate flag is set in the attributes, return the text that will
+	#             make the parameter hidden (but available) in Metview
+	def addhidden(self, attrs):
+		if attrs.get("metview") == 'hidden':
+			return "\t[ visible = false ]\n"
+		else:
+			return ""
+
+	def toggle(self, attrs):
+		s = "\t%s [ help_text = '%s' ]\n %s\t{\n" % (attrs.get("name").upper(), self.doc.strip(), self.addhidden(attrs))
+		s = s + "\t\tON;  ON\n"
+		s = s + "\t\tOFF; OFF\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s
+
+
+	def any(self, attrs):
+		v = attrs.get("values")
+		if  v != None:
+			return	self.list(attrs)
+		x = -1
+		for key in self.predefined_list:
+			x = self.param.find(key)
+			if x != -1 :
+				f = self.predefined[key]
+				# only use the predefined function if the seach string
+				# occurs at the end of the parameter name
+				if x + len(key) == len(self.param):
+					self.newparam(self.param, f(self, attrs), self.default(attrs))
+					return
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\t@\n"
+		default_value = self.default(attrs)
+		# special case: html tags seem to have their quotes removed, so we need to put them back
+		if len(default_value) > 0 and default_value[0] == "<":
+			default_value = "'" + default_value + "'"
+		else:
+			default_value = default_value.upper()
+		s = s + "\t} = %s\n" % default_value
+		return s
+
+
+	def number(self, attrs):
+		s = "\t%s[ help_text = '%s' ]\n%s\t{\n" % (attrs.get("name").upper(), self.doc.strip(), self.addhidden(attrs))
+		s = s + "\t\t*\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s
+
+	def listofnumbers(self, attrs):
+		if (attrs.get("name").upper() == "OUTPUT_FRAME_LIST"):
+			s = "\n"
+			return s
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\t*\n"
+		s = s + "\t\t/\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s
+
+	def listofstrings(self, attrs):
+		if (attrs.get("colourlist") == "on" ) :
+			 s = "\t%s [ help = help_colour,interface = colour, help_text='%s' ]\n%s\t{ \n" % (attrs.get("name").upper(), self.doc.strip(), self.addhidden(attrs))
+			 s = s + "\t\t&PARAMSHARE&COLOUR"
+			 s = s + "\t\t/\n"
+			 s = s + "\t} = %s\n" % self.default(attrs).upper()
+		elif (attrs.get("countrylist") == "on" ):
+			s = "\t%s [ help = help_multiple_selection, exclusive = False, help_text='%s']\n%s\t{\n" % (attrs.get("name").upper(), self.doc.strip(), self.addhidden(attrs) )
+			countries = attrs.get("values").split("/")
+			for c in countries:
+				parts = c.split(':')
+				shortname = parts[0]
+				longname = parts[1].replace(',', ' ') # cannot have special characters here
+				longname = longname.replace('(', ' ')
+				longname = longname.replace(')', ' ')
+				s = s + "\t\t%s;%s\n" %(longname.upper(), shortname.upper())
+			s = s + "\t\t*\n"
+			s = s + "\t\t/\n"
+			s = s + "\t} = %s\n" % self.default(attrs).upper()
+		else:
+			s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+			s = s + "\t\t@\n"
+			s = s + "\t\t/\n"
+			s = s + "\t} = %s\n" % self.default(attrs).upper()
+
+		return s
+
+
+	def colour(self, attrs):
+		s = "\t%s [ help = help_colour,interface = colour, help_text='%s' ]\n%s\t{ \n" % (attrs.get("name").upper(), self.doc.strip(), self.addhidden(attrs))
+		s = s + "\t\t&PARAMSHARE&COLOUR\n"
+		mi = attrs.get("metview_interface")
+		if mi == "ColourWithExtra":
+			s = s + "\t\t%s\n" % self.default(attrs).upper()
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s
+
+	def colourtechnique(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\tCALCULATE;CALCULATE\n"
+		s = s + "\t\tLIST;LIST\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s.upper()
+
+	def linestyle(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\t&PARAMSHARE&STYLE\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s
+
+	def policy(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name"), self.addhidden(attrs))
+		s = s + "\t\tlastone;lastone\n"
+		s = s + "\t\tcycle;cycle\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s.upper()
+
+	def fontstyle(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\tnormal;normal\n"
+		s = s + "\t\tbold;bold\n"
+		s = s + "\t\titalic;italic\n"
+		s = s + "\t\tbolditalic;bolditalic\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s.upper()
+
+	def justification(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\tleft;left\n"
+		s = s + "\t\tcentre;centre\n"
+		s = s + "\t\tright;right\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+
+		return s.upper()
+	def font(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		s = s + "\t\tserif;serif\n"
+		s = s + "\t\tsansserif;sansserif\n"
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s.upper()
+
+	def quality(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name"), self.addhidden(attrs))
+		s = s + "\t\thigh;high\n"
+		s = s + "\t\tmedium;medium\n"
+		s = s + "\t\tlow;low\n"
+		s = s + "\t} = %s\n" % self.default(attrs)
+		return s.upper()
+
+	def list(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		keys = attrs.get("values").split("/")
+		for key in keys:
+			s = s + "\t\t%s;%s\n" %(key.upper(), key.upper())
+		s = s + "\t} = %s\n" % self.default(attrs).upper()
+		return s
+
+	def options(self, attrs):
+		s = "\t%s\n%s\t{\n" % (attrs.get("name").upper(), self.addhidden(attrs))
+		self.defparam = self.default(attrs).upper()
+		return s
+
+	predefined = {"font_style" : fontstyle,
+			  "font": font,
+			  "quality": quality
+			  }
+
+	predefined_list = ["font_style", "font", "quality" ]
+
+	types = { "bool"            : toggle,
+			  "string"          : any,
+			  "Path"            : any,
+			  "Position"        : any,
+			  "int"             : number,
+			  "Colour"          : colour,
+			  "ColourWithExtra" : colour,
+			  "ColourTechnique" : colourtechnique,
+			  "LineStyle"       : linestyle,
+			  "Justification"   : justification,
+			  "ListPolicy"      : policy,
+			  "floatarray"      : listofnumbers,
+			  "intarray"        : listofnumbers,
+			  "stringarray"     : listofstrings,
+			  "float"           : number}
+
+	def newparam(self, param, value, default):
+		#print('  newparam: ', param, ' ', value, ' ', default)
+		for p in self.mydef:
+			if p[0] == param:
+				return
+		self.mydef.append((param, value, default))
+
+
+	def addOptionalParam(self, paramname, requirements):
+		if paramname in self.optionalparams.keys():
+			if not(requirements[0] in self.optionalparams[paramname]):
+				self.optionalparams[paramname] = self.optionalparams[paramname] + requirements
+		else:
+			self.optionalparams[paramname] = requirements
+
+
+	def addRelatedOptionalRequirements(self):
+		optparams = self.optionalparams.keys()
+		for optparam in optparams:
+			conditions = self.optionalparams[optparam]
+			for condition in conditions:
+				if condition[0] in optparams:
+					self.addOptionalParam(optparam, (condition,))
+
+
+	def addRelatedOptionalRequirements2(self):
+		optparams = self.optionalparams.keys()
+		for optparam in optparams:
+			conditions = self.optionalparams[optparam]
+			for condition in conditions:
+				if condition[0] in optparams:
+					addreqs = self.optionalparams[condition[0]]
+					self.addOptionalParam(optparam, addreqs)
+
+
+
+
+	# see top of file for description of optionalparams and optionalparams2
+	def reorganiseOptionalParameters(self):
+		for optparam in self.optionalparams.keys():
+			condition = self.optionalparams[optparam]
+			if condition in self.optionalparams2.keys():
+				self.optionalparams2[condition].add(optparam)
+			else:
+				self.optionalparams2[condition] = set([optparam])
+
+
+	# put the dictionary in optionalparams2 into tuple in optionalparams3 like this:
+	#   (  ((condition1,condition2), (unsetparam1,unsetparam2)),  ((condition3,condition4), (unsetparam3,unsetparam4)) )
+	# see comments at top of file
+	def ensureOptionalParameters2DependenciesAreInRightOrder(self):
+		self.optionalparams3 = () # empty tuple, will contain an ordered version of optionalparams2
+
+		for conditions2 in self.optionalparams2.keys():
+			# does this rule unset something that is needed in the optionalparams3 rules?
+			unsetparams2 = self.optionalparams2[conditions2]
+			newtuple3 = (conditions2, unsetparams2)
+			position = 0
+			foundconflict = False
+			for clause3 in self.optionalparams3:  # look through the new set of rules
+				unsetparams3 = clause3[1]
+				for enquireparam2 in conditions2:
+					if enquireparam2[0] in unsetparams3:  # this clause2 should go *after* the current clause3
+						foundconflict = True
+						break
+				if foundconflict:
+					break
+
+				position = position + 1
+
+			# we now know that the clause should go into position 'position' in the new tuple
+			if self.debug:
+				print "put into position " + str(position)
+			if position == 0:
+				firstpart = ()
+				secondpart = (newtuple3,)
+				lastpart = self.optionalparams3
+			else:
+				if position == len(self.optionalparams3):
+					firstpart = self.optionalparams3
+					secondpart = (newtuple3,)
+					lastpart = ()
+				else:
+					firstpart = self.optionalparams3[0:position]
+					secondpart = (newtuple3,)
+					lastpart = self.optionalparams3[position:len(self.optionalparams3)]
+
+			self.optionalparams3 = firstpart + secondpart + lastpart
+
+
+
+
+	def newClass(self, c):
+		if not (c in self.classes.keys()):
+			self.classes[c] = {"inherits_reqs_from": set(),   # 'inherits_params_from' is an empty set
+			                   "inherits_params_from": set()}
+			#print "newClass " + c
+			#print self.classes
+
+
+	def addParameterToClass(self, p, c):
+		self.newClass(c)
+		params = self.classes[c].get("params", [])
+		if not (p in params):
+			params.append(p)
+			self.classes[c]["params"] = params
+
+
+	def addParamsFromOneClassToAnother(self, cfrom, cto):
+		for p in self.classes[cfrom].get("params", []):
+			#print "Adding params from " + cfrom + " to " + cto
+			self.addParameterToClass(p, cto)
+
+
+
+	def addRequirementToClass(self, reqparam, reqval, c):
+		#print "\naddRequirementToClass " + reqparam + " " + reqval + " " + c
+		self.newClass(c)
+		reqs = self.classes[c].get("reqs", ())
+		newreq = ((reqparam, reqval),)
+		if newreq[0] not in reqs:
+			reqs = reqs + newreq
+			self.classes[c]["reqs"] = reqs
+
+
+	# the purpose of collecting the class details was to add some new
+	# optional parameter details - we do that here, adding the information
+	# from self.classes to self.optionalparams
+	# {"symbol_text_font_name": (("symbol_type", "text"), ("symbol_type", "both"))}
+	def addClassDetailsToOptionalParameters(self):
+		for c in self.classes:
+			reqs = self.classes[c].get("reqs", ())
+			params = self.classes[c].get("params", ())
+			for p in params:
+				x = reqs
+				if x <> ():
+					self.addOptionalParam(p, x)
+					#self.addOptionalParam(p, (x,))
+
+
+
+
+
+	# recusrive function to deal with class inheritance
+	def addRecursiveInheritedClassRequirements(self, classname, reclevel):
+		spaces = " " * reclevel
+		#print spaces + "rec: " + classname
+		i = self.classes[classname].get('inherits_reqs_from', None)
+		#print 'i (all inherited classes) for class ' + classname
+		#print i
+		#print spaces + "enter rec, class = " + classname
+		for parent in i:
+			#print parent
+			if parent <> None:
+				reqs = self.addRecursiveInheritedClassRequirements(parent, reclevel+1)
+				#print spaces + "reqs: "
+				#print reqs
+				if reqs <> None:
+					for req in reqs:
+						#print "ADDING REQ FROM RECURSIVE"
+						self.addRequirementToClass(req[0], req[1], classname)
+				#self.addParamsFromOneClassToAnother(parent, classname)
+
+		#print spaces + "escape clause"
+		reqs = self.classes[classname].get("reqs", None)
+		return reqs
+
+
+
+	# recusrive function to deal with class inheritance
+	def addRecursiveInheritedClassParams(self, classname, reclevel):
+		spaces = " " * reclevel
+		#print spaces + "rec: " + classname
+		i = self.classes[classname].get('inherits_params_from', ())
+		#print 'i (all inherited classes) for class ' + classname
+		#print i
+		#print spaces + "enter rec, class = " + classname
+		for parent in i:
+			#print parent
+			if parent <> None:
+				params = self.addRecursiveInheritedClassParams(parent, reclevel+1)
+				#print spaces + "reqs: "
+				#print reqs
+				if params <> None:
+					for params in params:
+						#print "ADDING REQ FROM RECURSIVE"
+						self.addParamsFromOneClassToAnother(parent, classname)
+
+		#print spaces + "escape clause"
+		params = self.classes[classname].get("params", None)
+		return params
+
+
+
+	def addInheritedClassRequirements(self):
+		#print '^^^^^^'
+		for c in self.classes:
+		#	print "addInheritedClassRequirements: " + c
+			self.addRecursiveInheritedClassRequirements(c, 1)
+
+	def addInheritedClassParams(self):
+		#print '&&&&&&&&&'
+		for c in self.classes:
+		#	print "addInheritedClassParams: " + c
+			self.addRecursiveInheritedClassParams(c, 1)
+
+
+	def startElement(self, name, attrs):
+		self.tag = name;
+		if (name == "magics") :
+			return
+
+		if (name == "class"):
+			self.classname = attrs.get("name")
+			if (self.debug) :
+				print("class: " + self.classname)
+			#if attrs.get("metview") :
+			#	self.classname = attrs.get("metview")
+
+			self.newClass(self.classname)
+
+			doc_inherits = attrs.get("doc_inherits", None)
+			self.inherits = attrs.get("inherits")
+			if doc_inherits != 'no' and self.inherits != '' and self.inherits != None:
+				self.classes[self.classname]["inherits_params_from"].add(self.inherits)
+				self.classes[self.classname]["inherits_reqs_from"].add(self.inherits)
+				fname = "xml/%s.xml" % self.inherits
+				if not (fname in self.filehistory):  # don't open the same file twice
+					try:
+						file = open(fname, "r")
+						if (self.debug):
+							print "Opened (start class)" + fname
+						self.filehistory.append(fname)
+						object = ObjectHandler()
+						object.myoptions = []
+						object.myrules = {}
+						object.mydef = []
+						object.filehistory = self.filehistory
+						object.classes = self.classes
+						object.setTopLevel(False)
+						parser = make_parser()
+						parser.setContentHandler(object)
+						parser.parse(file)
+						for s in object.mydef:
+							self.mydef.append(s)
+						for s in object.myrules:
+							self.myrules[s]  = object.myrules[s]
+						for s in object.myoptions:
+							self.myoptions.append(s)
+						self.classes = object.classes
+					except:
+						#print "Could not open file " + fname
+						pass
+
+		if (name == "parameter") or (name == "metview_parameter"):
+		
+			self.ignore = False
+			self.param = attrs.get("name")
+			self.current = attrs
+			if (self.debug) :
+				print("  param: " + self.param)
+		   
+			
+				
+		if (name == "documentation"):
+			self.doc = "";
+		
+
+		if (name == "set"):
+			setname = attrs.get("name")
+			if setname != "" :
+				valuestring = attrs.get("value")
+				values = valuestring.split('/')
+				for val in values:
+					self.addOptionalParam(setname, ((self.param ,val),))
+				#print('opt: ', self.optionalparams)
+				#print  "%s %s = %s %s " % ('%if', self.param.upper(), attrs.get("value").upper(), '%then')
+				#print "\t%s %s " % ('%unset', attrs.get("name").upper())
+				pass
+
+		if (name == "option"):
+				if (self.debug) :
+					print("    option: "+ attrs.get("name") + " - " + attrs.get("fortran"))
+				if attrs.get("visible") != 'no'  :
+					self.last = self.last + "\t\t%s; %s\n" % (attrs.get("fortran").upper(), attrs.get("fortran").upper())
+					self.addRequirementToClass(self.param, attrs.get("fortran"), attrs.get("name"))
+					#if attrs.get("doc_inherits") != 'no':
+					#	self.classes[attrs.get("name")]["inherits_reqs_from"].add(self.classname)
+					#	print "YClass " + attrs.get("name") + " inherits_reqs_from " + self.classname
+					if attrs.get("docdive") != 'no' and  attrs.get("doc_inherits") != 'no' :
+						if ( not(isinstance(attrs.get("xmlfile"), NoneType))):
+							fname = "xml/%s.xml" % attrs.get("xmlfile")
+						else:
+							fname = "xml/%s.xml" % attrs.get("name")
+						if not (fname in self.filehistory):  # don't open the same file twice
+							try:
+								file = open(fname, "r")
+								self.filehistory.append(fname)
+								if (self.debug):
+									print "Opened (start option) " + fname
+								object = ObjectHandler()
+								object.myoptions = []
+								object.myrules = {}
+								object.mydef = []
+								object.unset = {}
+								object.filehistory = self.filehistory
+								object.classes = self.classes
+								object.setTopLevel(False)
+								parser = make_parser()
+								parser.setContentHandler(object)
+								parser.parse(file)
+								s = object.mydef
+								id = "%s_%s" % (attrs.get("name"), attrs.get("fortran"))
+								id = "%s" % ( attrs.get("fortran"))
+								self.myrules[id] = s
+								self.myoptions.append(s)
+								self.classes = object.classes
+								#print "objlast: " + object.last
+								#print "selflast: " + self.last
+								#self.inheritedlast = self.inheritedlast + object.last
+								#self.last = self.last + object.last
+								#print "SL2: " + self.last
+							except:
+								#print "********EXCEPT 1!!!!!"
+								#print "Could not open file " + fname
+								#print "Therefore adding to myoptions: "
+								#print(self.mydef)
+								#self.myoptions.append(self.mydef)
+								#self.mydef = []
+								self.myoptions.append([])
+								pass
+					else:
+						self.myoptions.append([])
+						#self.myoptions.append(self.mydef)
+						#self.mydef = []
+
+
+
+	def endElement(self, name):
+
+		#if (name == "magics") :
+		#	return
+
+		if self.ignore:
+			return
+	
+	
+		if (name == "parameter" or name == "metview_parameter") :
+		#if (name == "parameter") :
+			print "param"
+			print(self.current)
+			attrs = self.current;
+			
+			if (attrs.get("implemented") == 'no'):
+				return
+			if (attrs.get("metview") == 'no'):
+				return
+			if (attrs.get("visible") == 'no') or (attrs.get("visible") == 'off') or (attrs.get("visible") == 'false'):
+				return
+			if (attrs.get("inherit_parent_reqs") != 'no'):
+				docclass = attrs.get("doc_class", None)
+				if docclass <> None:
+					paramclass = docclass
+				else:
+					paramclass = self.classname
+				self.addParameterToClass(self.param, paramclass)
+			type = attrs.get("to")
+			metview_type = attrs.get("metview_interface")
+			if metview_type <> None:
+				type = metview_type
+			if (self.types.has_key(type)):
+				f = self.types[type]
+				self.newparam(self.param, f(self, attrs), self.default(attrs))
+			else:
+				self.last = self.last + self.options(attrs)
+				
+			self.last = self.last + "\t} = %s\n" % self.defparam
+			self.newparam(self.param, self.last, self.defparam)
+			if (self.debug) :
+				print "  endparam: " + self.param
+				print "  endparam SL: \n" + self.last
+			self.last = ""
+			for option in self.myoptions:
+				for p in option:
+					#print "    adding newparam from option: " + p[0]
+					self.newparam(p[0], p[1], p[2]) 
+			self.myoptions = []
+			for rules in self.myrules:
+				current = rules
+				unsets = []
+				for unset in self.myrules:
+					if (unset != rules):
+						for p in self.myrules[unset]:
+							try:
+								unsets.remove(p[0])
+							except:
+								pass
+							unsets.append(p[0])
+					
+				for unset in self.myrules:
+					if (unset == rules):
+						for p in self.myrules[unset]:
+							try:
+								unsets.remove(p[0])
+							except:
+								continue
+
+				if  len(unsets) != 0 :
+						#print  "%s %s <> %s %s " % ('%if', self.param.upper(), current.upper(), '%then')
+						#for unset in unsets:
+						#	print "\t%s %s " % ('%unset', unset.upper())
+						pass
+
+			self.myrules = {}
+			
+			
+		if (name == "magics") :
+			if self.toplevel:
+				#print "SL (end class): " + self.last
+				#print('opt: ', self.optionalparams)
+				definition = open(sys.argv[2], "w")
+				definition.write("PARAMSHARE ; ParamShare; PARAMSHARE\n");
+				definition.write("{\n\tCOLOUR {\n\t\t%include MagicsColors.h\n\t}\n")
+				definition.write("\tSTYLE {\n")
+				definition.write("\t\tSOLID; SOLID\n")
+				definition.write("\t\tDASH; DASH\n")
+				definition.write("\t\tDOT; DOT\n")
+				definition.write("\t\tCHAIN_DOT; CHAIN_DOT\n")
+				definition.write("\t\tCHAIN_DASH; CHAIN_DASH\n")
+				definition.write("\t}\n")
+				definition.write("}\n\n")
+				definition.write("%s; Magics; Automatically generated\n{\n" % sys.argv[3])
+				for param in self.mydef:
+					#print('PARAM START')
+					#print(param[1])
+					definition.write("%s" % param[1])
+					definition.write("\n")
+					#print('PARAM END')
+				#definition.write(self.inheritedlast)
+				definition.write("}\n")
+				definition.close()
+
+				#print "------------------------------------------"
+				#for cl in self.classes.keys():
+				#	print cl + " : "
+				#	print self.classes[cl]
+				#print self.classes
+
+				#print "((((((((((((((((((((((((((((((((((((((("
+				#print self.optionalparams['contour_shade_technique']
+
+				#print "+++++++++++++++++++++++++++++++++++++++++++"
+				#print self.optionalparams
+				#print "********************************************"
+				self.addInheritedClassParams()
+				self.addInheritedClassRequirements()
+				self.addClassDetailsToOptionalParameters()
+				self.addRelatedOptionalRequirements()
+				#print "+++++++++++++++++++++++++++++++++++++"
+				#print self.optionalparams
+				self.addRelatedOptionalRequirements2()
+				#print "********************************************"
+				#for o in self.optionalparams:
+				#	print o
+				#	print self.optionalparams[o]
+				#print self.optionalparams
+
+				# two different ways to generate the rules
+				if False:
+					rules = open(sys.argv[4], "w")
+					for optparam in self.optionalparams.keys():
+						rules.write("\n%if")
+						first = True
+						prevparam = ""
+						#print "conditionzzzz"
+						#print self.optionalparams[optparam]
+						for condition in self.optionalparams[optparam]:
+							if not first:
+								if condition[0] == prevparam:
+									rules.write(" %and")
+								else:
+									rules.write(" %or")
+							first = False
+							prevparam = condition[0]
+							rules.write(" " + condition[0].upper() + " <> " + condition[1].upper())
+						rules.write(" %then")
+						rules.write("\n\t%unset " + optparam.upper())
+						rules.write("\n")
+					rules.close()
+
+				else:
+					self.reorganiseOptionalParameters()
+					#print "\n\n==============================\n"
+					#print self.optionalparams2
+					self.ensureOptionalParameters2DependenciesAreInRightOrder()
+					#print "\n\n..............................\n"
+					#print self.optionalparams3
+
+					rules = open(sys.argv[4], "w")
+					#for conditions in self.optionalparams2:
+					for clause in self.optionalparams3:
+						#print "CLAUSE"
+						#print clause
+						conditions = clause[0]
+						#for conditions in clause[0]:
+						#print "CONDS: "
+						#print conditions
+						lconditions = list(conditions)
+						lconditions.sort()
+						#print "LCONDS: "
+						#print lconditions
+						rules.write("\n%if")
+						first = True
+						prevparam = ""
+						#print('conditionsssss :')
+						#print conditions
+						#print type(conditions)
+						#print len(conditions)
+						for condition in lconditions:
+							#print "condition:"
+							#print condition
+							#print type(condition)
+							#print len(condition)
+							if not first:
+								if condition[0] == prevparam:
+									rules.write(" %and")
+								else:
+									rules.write(" %or")
+							first = False
+							prevparam = condition[0]
+							#print('condition rules:')
+							#print condition
+							rules.write(" " + condition[0].upper() + " <> " + condition[1].upper())
+						rules.write(" %then")
+#						for optparam in self.optionalparams2[conditions]:
+						for optparam in clause[1]:
+							rules.write("\n\t%unset " + optparam.upper())
+						rules.write("\n")
+					rules.close()
+
+
+object = ObjectHandler()
+saxparser = make_parser()
+saxparser.setContentHandler(object)
+
+datasource = open(sys.argv[1], "r")
+saxparser.parse(datasource)
+print "DONE"
diff --git a/tools/xml2odt.py b/tools/xml2odt.py
new file mode 100644
index 0000000..b18c509
--- /dev/null
+++ b/tools/xml2odt.py
@@ -0,0 +1,87 @@
+#!/usr/bin/python
+from xml.sax.handler import ContentHandler
+from xml.sax import make_parser
+from types import *
+
+import sys
+
+
+if(len(sys.argv) != 3) :
+    print "\n\tYou need to give 2 input parameters:"
+    print "\n\t  %s source.xml target.odt\n" % sys.argv[0]
+    sys.exit()
+
+
+class ObjectHandler(ContentHandler):
+    name = ""
+    classname = ""
+    param = ""
+    type = ""
+    default=""
+
+    def startElement(self, name, attrs):
+        if (name == "magics") :
+            definition.write('<?xml version="1.0" encoding="UTF-8"?>\n');
+            definition.write('<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="ht [...]
+            definition.write('<office:scripts/>\n');
+            definition.write('<office:font-face-decls>\n');
+            definition.write('</office:font-face-decls>\n');
+            definition.write('<office:automatic-styles>\n');
+            definition.write('</office:automatic-styles>\n');
+            definition.write('<office:body>\n');
+            definition.write('<office:text>\n');
+        elif (name == "class"):
+            self.classname = attrs.get("name")
+            definition.write('<text:p text:style-name="Standard">%s : Parameters</text:p>\n' % self.classname);
+            definition.write('<table:table table:name="%sParameterTable" table:style-name="ParameterTable">\n' % self.classname);
+            definition.write('<table:table-column table:style-name="%sParameterTable.A" table:number-columns-repeated="4"/>\n' % self.classname);
+            definition.write('<table:table-header-rows>\n');
+            definition.write('<table:table-row>\n');
+            definition.write('<table:table-cell office:value-type="string">\n <text:p text:style-name="Para_Table_Heading">Parameter</text:p>\n</table:table-cell>\n');
+            definition.write('<table:table-cell office:value-type="string">\n <text:p text:style-name="Para_Table_Heading">Type</text:p>\n</table:table-cell>\n');
+            definition.write('<table:table-cell office:value-type="string">\n <text:p text:style-name="Para_Table_Heading">Function</text:p>\n</table:table-cell>\n');
+            definition.write('<table:table-cell office:value-type="string">\n <text:p text:style-name="Para_Table_Heading">Default</text:p>\n</table:table-cell>\n');
+            definition.write('</table:table-row>\n</table:table-header-rows>\n');
+        elif (name == "parameter"):
+            if (attrs.get("implemented") == 'no'):
+                return
+            if (attrs.get("visible") == 'no'):
+                return
+            self.param   = attrs.get("name")
+            self.type    = attrs.get("from")
+            self.default = attrs.get("default")
+
+
+    def endElement(self, name):
+        if (name == "magics") :
+            definition.write('<text:p text:style-name="Standard"/>\n</office:text>\n</office:body>\n</office:document-content>\n')
+        if (name == "class"):
+            definition.write('</table:table>\n')
+        if (name == "documentation"):
+            definition.write('<table:table-row>\n'); 
+            definition.write(' <table:table-cell table:style-name="ParameterTable.A1" office:value-type="string">\n'); 
+            definition.write('  <text:p text:style-name="Para_Table_Contents">%s</text:p>\n' % self.param); 
+            definition.write(' </table:table-cell>\n'); 
+            definition.write(' <table:table-cell table:style-name="ParameterTable.A2" office:value-type="string">\n'); 
+            definition.write('  <text:p text:style-name="Para_Table_Contents">%s</text:p>\n'% self.type); 
+            definition.write(' </table:table-cell>\n'); 
+            definition.write(' <table:table-cell table:style-name="ParameterTable.A3" office:value-type="string">\n'); 
+            definition.write('  <text:p text:style-name="Para_Table_Contents">%s</text:p>\n'% self.text); 
+            definition.write(' </table:table-cell>\n'); 
+            definition.write(' <table:table-cell table:style-name="ParameterTable.A4" office:value-type="string">\n'); 
+            definition.write('  <text:p text:style-name="Para_Table_Contents">%s</text:p>\n' % self.default); 
+            definition.write(' </table:table-cell>\n'); 
+            definition.write('</table:table-row>\n'); 
+            
+    def characters(self, content):
+        self.text = content       
+
+
+object = ObjectHandler()
+saxparser = make_parser()
+saxparser.setContentHandler(object)
+
+datasource = open(sys.argv[1], "r")
+definition = open(sys.argv[2], "w")
+saxparser.parse(datasource)
+definition.close()
diff --git a/tools/xml2odt.sh b/tools/xml2odt.sh
new file mode 100755
index 0000000..b531b45
--- /dev/null
+++ b/tools/xml2odt.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -x
+#
+# to be run from src/xml/Makefile
+#
+input=${1}
+to=../${2}
+dir=`dirname $0`
+odt_template=${dir}/ParaTemplate.odt
+script=${dir}/xml2odt.py
+tmp_dir=odt_tmp
+from=./
+
+i=`basename ${input} .xml`
+new_name="${to}/${i}_Parameter.odt"
+
+echo "Generate from ${input} the table in ${new_name}"
+
+#
+#  UnZip the template
+#
+unzip ${odt_template} -d ${tmp_dir}
+
+#
+#
+#
+rm -f ${tmp_dir}/content.xml
+python ${script} ${input} ${tmp_dir}/content.xml
+
+#
+#  Zip up the new parameter file
+#
+cd ${tmp_dir}
+zip -0 -X ${new_name} mimetype && zip -r ${new_name} * -x mimetype
+  
+#
+#  Clean-up
+#
+cd ..
+rm -rf ${tmp_dir}
diff --git a/tools/xml2split.py b/tools/xml2split.py
new file mode 100644
index 0000000..da09d79
--- /dev/null
+++ b/tools/xml2split.py
@@ -0,0 +1,70 @@
+
+
+from xml.sax.handler import ContentHandler
+from xml.sax import make_parser
+import sys
+
+class ObjectHandler(ContentHandler):
+	title = ""
+	name = ""
+	tab1 = 0
+	tab2 = 2
+	open_file = 0
+
+	def tab(self, n):
+		sep=''
+		i = 0
+		while i < n:
+			sep = sep + '\t'
+			i = i +1
+		return sep
+
+	def nice(self, name, attrs):
+		sep1 = self.tab(self.tab1)
+		sep2 = self.tab(self.tab2)
+		self.file.write("%s<%s " % (sep1, name))
+		for key in attrs.getNames():
+			self.file.write(" %s='%s'" % (key , attrs.getValue(key)))
+		self.file.write(">")
+
+	def characters(self, data):
+		if self.open_file == 1:
+			self.file.write(data);
+
+	def startElement(self, name, attrs):
+		print "found %s " % name
+		if (name == "magics") :
+			return
+		if (name == "static") :
+			return
+
+		if (name == "class"):
+			self.name = attrs.get("name")
+			filename= "../params/%s.xml" % self.name
+			self.file=open(filename, "w")
+			self.open_file = 1;
+			self.file.write("<magics>\n")
+			print "open %s " % filename
+		self.nice(name, attrs)
+		self.tab1 = self.tab1+1
+		self.tab2 = self.tab2+1
+
+	def endElement(self,name):
+		print "close %s\n " % name
+		if ( self.open_file == 0):
+			return
+
+		self.tab1 = self.tab1-1
+		self.tab2 = self.tab2-1
+		self.file.write("%s</%s>" % (self.tab(self.tab1), name)) 
+		if (name == "class") :
+			self.file.write("\n</magics>\n")
+			self.file.close()
+			self.open_file = 0
+
+object = ObjectHandler()
+saxparser = make_parser()
+saxparser.setContentHandler(object)
+
+datasource = open(sys.argv[1],"r")
+saxparser.parse(datasource)
diff --git a/version.sh b/version.sh
index 5cfc1b3..2151452 100644
--- a/version.sh
+++ b/version.sh
@@ -2,7 +2,7 @@
 # Package name and versioning information for Magics
 #
 MAGICS_PACKAGE_NAME='Magics'
-MAGICS_PACKAGE_VERSION='2.18.15'
+MAGICS_PACKAGE_VERSION='2.20.2'
 MAGICS_PACKAGE_COPYRIGHT_YEAR='2013'
 MAGICS_PACKAGE_COPYRIGHT_PERIOD='2007-2013'
 MAGICS_PACKAGE_RELEASE_DATE=`date +%d-%B-%Y`

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



More information about the debian-science-commits mailing list