[netcdf-cxx] 02/11: Imported Upstream version 4.3.0

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Sat May 14 12:40:46 UTC 2016


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

sebastic pushed a commit to branch master
in repository netcdf-cxx.

commit ece9f85077824d080dc07e05456e80c3d9db690e
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sat May 14 12:55:05 2016 +0200

    Imported Upstream version 4.3.0
---
 .gitignore                           |    5 +
 .travis.yml                          |   23 +
 CMakeInstallation.cmake              |  123 ++
 CMakeLists.txt                       |  551 +++++++
 CTestConfig.cmake.in                 |   18 +
 CTestCustom.cmake                    |    8 +
 Makefile.am                          |    8 +-
 Makefile.in                          |   23 +-
 README.md                            |   78 +
 RELEASE_NOTES.md                     |   20 +
 aclocal.m4                           |    6 +-
 configure => autom4te.cache/output.0 | 2010 ++++++++++++++-----------
 configure => autom4te.cache/output.1 | 2010 ++++++++++++++-----------
 configure => autom4te.cache/output.2 | 2010 ++++++++++++++-----------
 autom4te.cache/requests              |  522 +++++++
 autom4te.cache/traces.0              | 2756 ++++++++++++++++++++++++++++++++++
 autom4te.cache/traces.1              |  872 +++++++++++
 autom4te.cache/traces.2              | 2756 ++++++++++++++++++++++++++++++++++
 cmake_uninstall.cmake.in             |   24 +
 config.sub                           |   13 +-
 configure                            |  324 +++-
 configure.ac                         |   68 +-
 cxx4/CMakeLists.txt                  |   47 +
 cxx4/Makefile.am                     |    9 +-
 cxx4/Makefile.in                     |   39 +-
 cxx4/NCDUMP                          |    9 -
 cxx4/NCGEN                           |    7 -
 cxx4/example1.cpp                    |   14 +-
 cxx4/ncAtt.cpp                       |   28 +-
 cxx4/ncAtt_keep.cpp                  |  158 --
 cxx4/ncCheck.cpp                     |  130 +-
 cxx4/ncCheck.h                       |   18 +-
 cxx4/ncCompoundType.cpp              |   26 +-
 cxx4/ncCompoundType.h                |   10 +-
 cxx4/ncDim.cpp                       |   17 +-
 cxx4/ncEnumType.cpp                  |    4 +-
 cxx4/ncException.cpp                 |  300 ++--
 cxx4/ncException.h                   |  117 +-
 cxx4/ncFile.cpp                      |   73 +-
 cxx4/ncFile.h                        |   64 +-
 cxx4/ncGroup.cpp                     |  312 ++--
 cxx4/ncGroup.h                       |  237 +--
 cxx4/ncOpaqueType.cpp                |    4 +-
 cxx4/ncType.cpp                      |   57 +-
 cxx4/ncType.h                        |   85 +-
 cxx4/ncVar.cpp                       |  605 ++++----
 cxx4/ncVar.cpp_keep                  | 1788 ----------------------
 cxx4/ncVar.h                         |  707 +++++----
 cxx4/ncVar.h_keep                    |  788 ----------
 cxx4/ncVlenType.cpp                  |    4 +-
 cxx4/test_att.cpp                    |  895 +++++------
 cxx4/test_classic.cpp                |   18 +-
 cxx4/test_dim.cpp                    |  277 ++--
 cxx4/test_group.cpp                  |  285 ++--
 cxx4/test_open_close.cpp             |   57 +
 cxx4/test_type.cpp                   |  373 ++---
 cxx4/test_type2.cpp                  |   11 +-
 cxx4/test_type3.cpp                  |   25 +-
 cxx4/test_type4.cpp                  |   19 +-
 cxx4/test_type5.cpp                  |   19 +-
 cxx4/test_utilities.h                |    4 +-
 cxx4/test_var.cpp                    |  921 ++++++------
 cxx4/test_var2.cpp                   |   59 +-
 docs/CMakeLists.txt                  |   31 +
 docs/Doxyfile.developer              | 2333 ++++++++++++++++++++++++++++
 docs/Doxyfile.in                     | 2373 +++++++++++++++++++++++++++++
 docs/DoxygenLayout.xml               |  184 +++
 docs/Makefile.am                     |   22 +
 docs/Makefile.in                     |  466 ++++++
 docs/footer.html                     |   10 +
 docs/mainpage.md                     |   31 +
 docs/netcdf-50x50.png                |  Bin 0 -> 2059 bytes
 examples/CMakeLists.txt              |   16 +
 examples/Makefile.am                 |    5 +-
 examples/Makefile.in                 |   12 +-
 examples/simple_xy_wr_formats.cpp    |   25 +-
 libnetcdf-cxx.settings.in            |   23 +
 ltmain.sh                            |   35 +-
 m4/libtool.m4                        |   79 +-
 missing                              |    4 +-
 ncxx4-config.in                      |    4 +-
 netcdf-cxx4.pc.in                    |    2 +-
 test-driver                          |   20 +-
 83 files changed, 20218 insertions(+), 8305 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e5d1de5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*~
+build*
+CTestConfig.cmake
+myhtml
+html
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..01156f9
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,23 @@
+sudo: required
+language: c
+services:
+    - docker
+
+env:
+    matrix:
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-gcc-x64-signed
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-clang-x64-signed
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-gcc-x86-signed
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-fsigned-char' CURHOST=docker-clang-x86-signed
+
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-gcc-x64-unsigned
+        - DOCKIMG=unidata/nctests:serial   USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-clang-x64-unsigned
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=gcc   COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-gcc-x86-unsigned
+        - DOCKIMG=unidata/nctests:serial32 USECMAKE=TRUE USEAC=TRUE USE_CC=clang COPTS='-DCMAKE_C_FLAGS=-funsigned-char' CURHOST=docker-clang-x86-unsigned
+
+before_install:
+    - docker pull $DOCKIMG > /dev/null
+
+script:
+
+    - docker run --rm -it -h "$CURHOST" -e USEDASH=FALSE -e RUNC=OFF -e RUNF=OFF -e RUNCXX=TRUE -e RUNP=OFF -e RUNNCO=OFF -e USECMAKE=$USECMAKE -e USEAC=$USEAC -e COPTS=$COPTS -v $(pwd):/netcdf-cxx4 $DOCKIMG
diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake
new file mode 100644
index 0000000..2fe2411
--- /dev/null
+++ b/CMakeInstallation.cmake
@@ -0,0 +1,123 @@
+#####
+# Contains variables and settings used
+# by the CMake build system in order to
+# build binary installers.
+#####
+
+SET(CPACK_PACKAGE_VENDOR "Unidata")
+
+##
+# Declare exclusions list used when building a source file.
+# NOTE!! This list uses regular expressions, NOT wildcards!!
+##
+SET(CPACK_SOURCE_IGNORE_FILES "${CPACK_SOURCE_IGNORE_FILES}"
+  "${CMAKE_CURRENT_BINARY_DIR}/*"
+  "/myhtml/*"
+  "/.svn/"
+  "my.*\\\\.sh"
+  "/.deps/"
+  "/.libs"
+  "/html/"
+  ".*\\\\.jar"
+  ".*\\\\.jdl"
+  ".*\\\\.sed"
+  ".*\\\\.proto"
+  ".*\\\\.texi"
+  ".*\\\\.example"
+  "Make0"
+  "/obsolete/"
+  "/unknown/"
+  ".*~"
+  )
+
+###
+# Set options specific to the
+# Nullsoft Installation System (NSIS)
+###
+
+SET(CPACK_PACKAGE_CONTACT "NetCDF Support <support-netcdf at unidata.ucar.edu>")
+
+IF(WIN32)
+  SET(CPACK_NSIS_MODIFY_PATH ON)
+  SET(CPACK_NSIS_DISPLAY_NAME "NetCDF ${netCDF_VERSION}")
+  SET(CPACK_NSIS_PACKAGE_NAME "NetCDF ${netCDF_VERSION}")
+  SET(CPACK_NSIS_HELP_LINK "http://www.unidata.ucar.edu/netcdf")
+  SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.unidata.ucar.edu/netcdf")
+  SET(CPACK_NSIS_CONTACT "support-netcdf at unidata.ucar.edu")
+  SET(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+  SET(CPACK_NSIS_MENU_LINKS
+	"http://www.unidata.ucar.edu/netcdf" "Unidata Website"
+	"http://www.unidata.ucar.edu/netcdf/docs" "NetCDF Stable Documentation"
+    "http://www.unidata.ucar.edu/netcdf/docs/cxx4" "NetCDF CXX4 Stable Documentation"
+	"http://www.unidata.ucar.edu/netcdf/docs_rc" "NetCDF Unstable Documentation")
+
+ENDIF()
+
+###
+# Set debian-specific options used when
+# creating .deb.
+#
+# http://www.cmake.org/Wiki/CMake:CPackPackageGenerators
+###
+
+# This should be set using the output of dpkg --print-architecture.
+FIND_PROGRAM(NC_DPKG NAMES dpkg)
+IF(NC_DPKG)
+  # Define a macro for getting the dpkg architecture.
+  MACRO(getdpkg_arch arch)
+    exec_program("${NC_DPKG}" ARGS "--print-architecture" OUTPUT_VARIABLE "${arch}")
+  ENDMACRO(getdpkg_arch)
+  getdpkg_arch(dpkg_arch)
+
+  SET(CPACK_DEBIAN_PACKAGE_NAME "netcdf4-cxx4-dev")
+  SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${dpkg_arch}")
+  SET(CPACK_DEBIAN_PACKAGE_DEPENDS "zlib1g (>= 1:1.2.3.4), libhdf5-7 (>= 1.8.11), libcurl4-openssl-dev (>= 7.22.0)")
+ENDIF()
+
+
+##
+# Set Copyright, License info for CPack.
+##
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/COPYRIGHT
+  ${CMAKE_CURRENT_BINARY_DIR}/COPYRIGHT.txt
+  @ONLY
+  )
+
+SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/COPYRIGHT.txt")
+IF(NOT CPACK_PACK_VERSION)
+  SET(CPACK_PACKAGE_VERSION ${VERSION})
+ENDIF()
+
+IF(UNIX)
+  SET(CPACK_GENERATOR "STGZ" "TBZ2" "DEB" "ZIP")
+ENDIF()
+
+IF(APPLE)
+  SET(CPACK_SOURCE_GENERATOR "TGZ")
+  SET(CPACK_GENERATOR "PackageMaker" "STGZ" "TBZ2" "TGZ" "ZIP")
+ENDIF()
+
+##
+# Create an 'uninstall' target.
+##
+CONFIGURE_FILE(
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+  IMMEDIATE @ONLY)
+
+
+ADD_CUSTOM_TARGET(uninstall
+  COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+
+##
+# Customize some of the package component descriptions
+##
+
+set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION
+  "The NetCDF-CXX4 Libraries")
+set(CPACK_COMPONENT_HEADERS_DESCRIPTION
+  "Header files for use with NetCDF-CXX4")
+set(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION
+  "The NetCDF-CXX4 user documentation.")
+
+INCLUDE(CPack)
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..6673282
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,551 @@
+# This is a CMake file, part of Unidata's netCDF-CXX4 package.
+
+##################################
+# Set Project Properties
+##################################
+
+#Minimum required CMake Version
+cmake_minimum_required(VERSION 2.8.12)
+
+#Project Name
+PROJECT(NCXX C CXX)
+set(PACKAGE "netcdf-cxx4" CACHE STRING "")
+
+#####
+# Version Info:
+#
+# Release Version
+# Library Version
+# SO Version
+#
+# SO Version is computed from library version. See:
+# http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning
+#####
+
+SET(NCXX_VERSION_MAJOR 4)
+SET(NCXX_VERSION_MINOR 3)
+SET(NCXX_VERSION_PATCH 0)
+SET(NCXX_VERSION_NOTE "")
+SET(NCXX_VERSION ${NCXX_VERSION_MAJOR}.${NCXX_VERSION_MINOR}.${NCXX_VERSION_PATCH}${NCXX_VERSION_NOTE})
+SET(VERSION ${NCXX_VERSION})
+SET(NCXX_LIB_VERSION 1.0.3)
+SET(NCXX_SO_VERSION 1)
+SET(PACKAGE_VERSION ${VERSION})
+
+# Get system configuration, Use it to determine osname, os release, cpu. These
+# will be used when committing to CDash.
+find_program(UNAME NAMES uname)
+IF(UNAME)
+  macro(getuname name flag)
+    exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}")
+  endmacro(getuname)
+  getuname(osname -s)
+  getuname(osrel  -r)
+  getuname(cpu    -m)
+  set(TMP_BUILDNAME "${osname}-${osrel}-${cpu}" CACHE STRING "Build name variable for CDash")
+ENDIF()
+
+###
+# Allow for some customization of the buildname.
+# This will make it easier to identify different builds,
+# based on values passed from command line/shell scripts.
+#
+# For ctest scripts, we can use CTEST_BUILD_NAME.
+###
+
+SET(BUILDNAME_PREFIX "" CACHE STRING "")
+SET(BUILDNAME_SUFFIX "" CACHE STRING "")
+
+IF(BUILDNAME_PREFIX)
+  SET(TMP_BUILDNAME "${BUILDNAME_PREFIX}-${TMP_BUILDNAME}")
+ENDIF()
+
+IF(BUILDNAME_SUFFIX)
+  SET(TMP_BUILDNAME "${TMP_BUILDNAME}-${BUILDNAME_SUFFIX}")
+ENDIF()
+
+IF(NOT BUILDNAME)
+  SET(BUILDNAME "${TMP_BUILDNAME}" CACHE STRING "Build name variable for CDash")
+ENDIF()
+###
+# End BUILDNAME customization.
+###
+
+
+# For CMAKE_INSTALL_{LIBDIR,INCLUDEDIR,...}
+INCLUDE(GNUInstallDirs)
+
+IF(MSVC)
+  SET(GLOBAL PROPERTY USE_FOLDERS ON)
+ENDIF()
+
+#Add custom CMake Module
+SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/"
+  CACHE INTERNAL "Location of our custom CMake modules.")
+
+# auto-configure style checks, other CMake modules.
+INCLUDE(${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSourceCompiles.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CheckCSourceCompiles.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake)
+INCLUDE(${CMAKE_ROOT}/Modules/GetPrerequisites.cmake)
+
+INCLUDE(CheckCCompilerFlag)
+FIND_PACKAGE(PkgConfig QUIET)
+
+# A macro to check if a C linker supports a particular flag.
+MACRO(CHECK_CXX_LINKER_FLAG M_FLAG M_RESULT)
+  SET(T_REQ_FLAG "${CMAKE_REQUIRED_FLAGS}")
+  SET(CMAKE_REQUIRED_FLAGS "${M_FLAG}")
+  CHECK_CXX_SOURCE_COMPILES("int main() {return 0;}" ${M_RESULT})
+  SET(CMAKE_REQUIRED_FLAGS "${T_REQ_FLAG}")
+ENDMACRO()
+
+# Set the build type.
+IF(NOT CMAKE_BUILD_TYPE)
+  SET(CMAKE_BUILD_TYPE DEBUG CACHE STRING "Choose the type of build, options are: None, Debug, Release."
+    FORCE)
+ENDIF()
+
+# Set build type uppercase
+STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
+
+# Determine the configure date.
+
+EXECUTE_PROCESS(
+  COMMAND date
+  OUTPUT_VARIABLE CONFIG_DATE
+  )
+IF(CONFIG_DATE)
+	string(STRIP ${CONFIG_DATE} CONFIG_DATE)
+ENDIF()
+##
+# Allow for extra dependencies.
+##
+
+SET(EXTRA_DEPS "")
+
+################################
+# End Project Properties
+################################
+
+################################
+# Utility Macros
+################################
+
+# A function used to create autotools-style 'yes/no' definitions.
+# If a variable is set, it 'yes' is returned. Otherwise, 'no' is
+# returned.
+#
+# Also creates a version of the ret_val prepended with 'NC',
+# when feature is true, which is used to generate netcdf_meta.h.
+FUNCTION(is_disabled feature ret_val)
+  IF(${feature})
+    SET(${ret_val} "no" PARENT_SCOPE)
+  ELSE()
+    SET(${ret_val} "yes" PARENT_SCOPE)
+    SET("NC_${ret_val}" 1 PARENT_SCOPE)
+  ENDIF(${feature})
+ENDFUNCTION()
+
+FUNCTION(is_enabled feature ret_val)
+  IF(${feature})
+    SET(${ret_val} "yes" PARENT_SCOPE)
+    SET("NC_${ret_val}" 1 PARENT_SCOPE)
+  ELSE()
+    SET(${ret_val} "no" PARENT_SCOPE)
+    SET("NC_${ret_val}" 0 PARENT_SCOPE)
+  ENDIF(${feature})
+ENDFUNCTION()
+
+###
+# A macro to add a binary test.
+###
+MACRO(add_bin_test prefix F)
+  SET(CUR_TEST "${prefix}_${F}")
+  ADD_EXECUTABLE(${CUR_TEST} ${F}.cpp)
+  TARGET_LINK_LIBRARIES(${CUR_TEST}
+    netcdf-cxx4
+    ${NETCDF_C_LIBRARY}
+    ${EXTRA_LIBS}
+    )
+  IF(MSVC)
+    SET_TARGET_PROPERTIES(${CUR_TEST}
+      PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
+      )
+  ENDIF()
+  ADD_TEST(${CUR_TEST} ${EXECUTABLE_OUTPUT_PATH}/${CUR_TEST})
+  ###
+  # If visual studio,
+  # do a little bit of housekeeping/reorganization.
+  ###
+  IF(MSVC)
+    SET_PROPERTY(TEST ${CUR_TEST} PROPERTY FOLDER "tests/")
+    SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
+      ${CMAKE_CURRENT_BINARY_DIR})
+    SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
+      ${CMAKE_CURRENT_BINARY_DIR})
+    SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
+      ${CMAKE_CURRENT_BINARY_DIR})
+  ENDIF()
+ENDMACRO()
+
+################################
+# End Utility Macros
+################################
+
+################################
+# Set CTest Properties
+################################
+
+ENABLE_TESTING()
+INCLUDE(CTest)
+
+##
+# Copy the CTest customization file into binary directory, as required.
+##
+FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+##
+# Set Memory test program for non-MSVC based builds.
+# Assume valgrind for now.
+##
+IF(NOT MSVC)
+  SET(CTEST_MEMORYCHECK_COMMAND valgrind CACHE STRING "")
+ENDIF()
+
+##
+# Set variable to define the build type.
+##
+INCLUDE(GenerateExportHeader)
+
+ENABLE_TESTING()
+INCLUDE(CTest)
+
+################################
+# End CTest Properties
+################################
+
+################################
+# User Options
+################################
+
+##
+# Default building shared libraries.
+# BUILD_SHARED_LIBS is provided by/used by
+# CMake directly.
+##
+OPTION(BUILD_SHARED_LIBS "Configure netcdf-cxx as a shared library." ON)
+IF(BUILD_SHARED_LIBS)
+  SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
+ENDIF()
+
+##
+# Enable doxygen-generated documentation.
+##
+OPTION(ENABLE_DOXYGEN "Enable generation of doxygen-based documentation." OFF)
+IF(ENABLE_DOXYGEN)
+  FIND_PACKAGE(Doxygen REQUIRED)
+  FIND_PROGRAM(NCXX_DOT NAMES dot)
+  IF(NCXX_DOT)
+    SET(HAVE_DOT YES CACHE STRING "")
+  ELSE(NCXX_DOT)
+    SET(HAVE_DOT NO CACHE STRING "")
+  ENDIF(NCXX_DOT)
+ENDIF()
+
+OPTION(NCXX_ENABLE_TESTS "Enable tests. Run with 'make test'." ON)
+IF(NCXX_ENABLE_TESTS)
+  # Options for CTest-based tests, dashboards.
+  SET(NCXX_CTEST_PROJECT_NAME "netcdf-cxx4" CACHE STRING "Project Name for CTest-based testing purposes.")
+  SET(NCXX_CTEST_DROP_SITE "my.cdash.org" CACHE STRING "Dashboard location for CTest-based testing purposes.")
+  SET(NCXX_CTEST_DROP_LOC_PREFIX "" CACHE STRING "Prefix for Dashboard location on remote server when using CTest-based testing.")
+
+  FIND_PROGRAM(HOSTNAME_CMD NAMES hostname)
+  IF(NOT MSVC)
+    SET(HOSTNAME_ARG "-s")
+  ENDIF()
+  IF(HOSTNAME_CMD)
+    EXEC_PROGRAM(${HOSTNAME_CMD} ARGS "${HOSTNAME_ARG}" OUTPUT_VARIABLE HOSTNAME)
+    SET(NCXX_CTEST_SITE "${HOSTNAME}" CACHE STRING "Hostname of test machine.")
+  ENDIF()
+
+  IF(NCXX_CTEST_SITE)
+    SET(SITE "${NCXX_CTEST_SITE}" CACHE STRING "")
+  ENDIF()
+
+  # Create a CTestConfig file from the template.
+  CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/CTestConfig.cmake.in"
+    "${CMAKE_CURRENT_SOURCE_DIR}/CTestConfig.cmake"
+    @ONLY
+    )
+
+ENDIF()
+
+##
+# Mark some options as advanced.
+##
+MARK_AS_ADVANCED(NCXX_CTEST_PROJECT_NAME
+  NCXX_CTEST_DROP_SITE
+  NCXX_CTEST_DROP_LOC_PREFIX
+)
+
+
+################################
+# End User Options
+################################
+
+################################
+# Seek out dependent libraries.
+################################
+
+IF(NOT netCDF_LIBRARIES AND NOT netCDF_INCLUDE_DIR)
+  FIND_PACKAGE(netCDF QUIET)
+ELSE()
+  SET(netCDF_FOUND TRUE)
+ENDIF()
+
+IF (netCDF_FOUND)
+  INCLUDE_DIRECTORIES(SYSTEM ${netCDF_INCLUDE_DIR})
+  LINK_DIRECTORIES(${netCDF_LIB_DIR})
+  SET(NETCDF_C_LIBRARY ${netCDF_LIBRARIES})
+  SET(NETCDF_C_INCLUDE_DIR ${netCDF_INCLUDE_DIR})
+ELSE()
+  # netCDF not properly packaged. Try to find it manually.
+  FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf libnetcdf)
+  IF(NOT NETCDF_C_LIBRARY)
+    MESSAGE(FATAL_ERROR "libnetcdf not found. Please reinstall and try again.")
+  ELSE()
+    MESSAGE(STATUS "Found netcdf: ${NETCDF_C_LIBRARY}")
+    FIND_PATH(NC_H_INCLUDE_DIR "netcdf.h")
+    IF(NOT NC_H_INCLUDE_DIR)
+      MESSAGE(FATAL_ERROR "Directory containing netcdf.h cannot be found. Please reinstall and try again.")
+    ELSE()
+      GET_FILENAME_COMPONENT(netCDF_LIB_DIR "${NETCDF_C_LIBRARY}" REALPATH)
+      LINK_DIRECTORIES(${netCDF_LIB_DIR})
+      INCLUDE_DIRECTORIES(SYSTEM ${NC_H_INCLUDE_DIR})
+    ENDIF()
+  ENDIF()
+ENDIF()
+
+###
+# Check to see if netcdf-c was built with parallel.
+###
+CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_use_parallel_enabled "" NC_IS_PARALLEL)
+IF(NC_IS_PARALLEL)
+  SET(BUILD_PARALLEL ${NC_IS_PARALLEL} CACHE STRING "")
+ENDIF()
+
+################################
+# End 'seek out dependent libraries'
+################################
+
+
+
+################################
+# Compiler Configuration
+################################
+
+##
+# Supress unused variable and parameter warnings, for the time being,
+# on GCC.
+#
+# Also, set some other default compiler flags.
+##
+
+IF(CMAKE_COMPILER_IS_GNUCC OR APPLE)
+  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Wno-unused-variable -Wno-unused-parameter")
+  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wno-unused-variable -Wno-unused-parameter")
+
+  OPTION(ENABLE_COVERAGE_TESTS "Enable compiler flags needed to perform coverage tests." OFF)
+  OPTION(ENABLE_CONVERSION_WARNINGS "Enable warnings for implicit conversion from 64 to 32-bit datatypes." ON)
+  OPTION(ENABLE_LARGE_FILE_TESTS "Enable large file tests." OFF)
+
+  # Debugging flags
+  SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall")
+
+  # Check to see if -Wl,--no-undefined is supported.
+  CHECK_CXX_LINKER_FLAG("-Wl,--no-undefined" LIBTOOL_HAS_NO_UNDEFINED)
+
+  IF(LIBTOOL_HAS_NO_UNDEFINED)
+    SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -Wl,--no-undefined")
+  ENDIF()
+  SET(CMAKE_REQUIRED_FLAGS "${TMP_CMAKE_REQUIRED_FLAGS}")
+
+  # Coverage tests need to have optimization turned off.
+  IF(ENABLE_COVERAGE_TESTS)
+    SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
+    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
+    MESSAGE(STATUS "Coverage Tests: On.")
+  ENDIF()
+
+    # Warnings for 64-to-32 bit conversions.
+  IF(ENABLE_CONVERSION_WARNINGS)
+    CHECK_CXX_COMPILER_FLAG(-Wconversion CXX_HAS_WCONVERSION)
+    CHECK_CXX_COMPILER_FLAG(-Wshorten-64-to-32 CXX_HAS_SHORTEN_64_32)
+
+    IF(CXX_HAS_SHORTEN_64_32)
+      SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wshorten-64-to-32")
+    ENDIF()
+    IF(CXX_HAS_WCONVERSION)
+      SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wconversion")
+    ENDIF()
+
+  ENDIF(ENABLE_CONVERSION_WARNINGS)
+
+ENDIF(CMAKE_COMPILER_IS_GNUCC OR APPLE)
+
+# End default linux gcc & apple compiler options.
+
+
+ADD_DEFINITIONS()
+
+# Supress CRT Warnings.
+# Only necessary for Windows
+IF(MSVC)
+  ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
+ENDIF()
+
+
+################################
+# End Compiler Configuration
+################################
+
+################################
+# Configuration for post-install RPath
+# Adapted from http://www.cmake.org/Wiki/CMake_RPATH_handling
+################################
+
+IF(NOT MSVC)
+  # use, i.e. don't skip the full RPATH for the build tree
+  SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
+
+  # when building, don't use the install RPATH already
+  # (but later on when installing)
+  SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+
+  if(APPLE)
+    set(CMAKE_MACOSX_RPATH ON)
+  endif(APPLE)
+
+  # add the automatically determined parts of the RPATH
+  # which point to directories outside the build tree to the install RPATH
+  SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+  # the RPATH to be used when installing,
+  # but only if it's not a system directory
+  LIST(FIND
+    CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
+    "${CMAKE_INSTALL_FULL_LIBDIR}"
+    isSystemDir
+    )
+  IF("${isSystemDir}" STREQUAL "-1")
+    SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
+  ENDIF()
+
+ENDIF()
+
+################################
+# End configuration for post-install RPath
+################################
+
+
+################################
+# Configure, print libnetcdf-cxx.settings
+# file.
+################################
+
+# Set variables to mirror those used by autoconf.
+# This way we don't need to maintain two separate template
+# files.
+SET(host_cpu "${cpu}")
+SET(host_vendor "${osname}")
+SET(host_os "${osrel}")
+SET(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}")
+
+SET(CC_VERSION "${CMAKE_C_COMPILER}")
+SET(CXX_VERSION "${CMAKE_CXX_COMPILER}")
+
+# Build *FLAGS for libnetcdf.settings.
+SET(CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}")
+SET(CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
+SET(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE}}")
+
+is_disabled(BUILD_SHARED_LIBS enable_static)
+is_enabled(BUILD_SHARED_LIBS enable_shared)
+
+# Remove libnetcdf from NC_LIBS.
+STRING(REPLACE "-lnetcdf-cxx4 " "" TMP_NCXX_LIBS "${NCXX_LIBS}")
+SET(LIBS "${TMP_NCXX_LIBS}")
+
+CONFIGURE_FILE(
+  "${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf-cxx.settings.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf-cxx.settings"
+  @ONLY
+  )
+
+# Read in settings file, print out.
+# Avoid using system-specific calls so that this
+# might also work on Windows.
+FILE(
+  READ "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf-cxx.settings"
+  LIBNETCDFCXX_SETTINGS
+  )
+MESSAGE(${LIBNETCDFCXX_SETTINGS})
+
+# Install libnetcdf-cxx.settings file into same location
+# as the libraries.
+INSTALL(
+  FILES "${NCXX_BINARY_DIR}/libnetcdf-cxx.settings"
+  DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+  COMPONENT libraries
+  )
+
+#####
+# End libnetcdf-cxx.settings section.
+#####
+
+#####
+# Options
+#####
+
+include(CMakePackageConfigHelpers)
+
+# Create export configuration
+write_basic_package_version_file(
+  "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFCxxConfigVersion.cmake"
+  VERSION ${NCXX_VERSION}
+  COMPATIBILITY SameMajorVersion
+  )
+
+install(
+  FILES
+  "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFCxxConfigVersion.cmake"
+  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/netCDFCxx
+  COMPONENT headers
+  )
+
+
+#####
+# Traverse into subdirectories.
+#####
+
+##
+# Set up include directories.
+##
+INCLUDE_DIRECTORIES(cxx4 examples)
+
+ADD_SUBDIRECTORY(cxx4)
+ADD_SUBDIRECTORY(examples)
+IF(ENABLE_DOXYGEN)
+  ADD_SUBDIRECTORY(docs)
+ENDIF()
+
+##
+# CPack, CMakeInstallation.cmake file.
+##
+INCLUDE(CMakeInstallation.cmake)
diff --git a/CTestConfig.cmake.in b/CTestConfig.cmake.in
new file mode 100644
index 0000000..295200e
--- /dev/null
+++ b/CTestConfig.cmake.in
@@ -0,0 +1,18 @@
+## This file should be placed in the root directory of your project.
+## Then modify the CMakeLists.txt file in the root directory of your
+## project to incorporate the testing dashboard.
+##
+## # The following are required to submit to the CDash dashboard:
+##   ENABLE_TESTING()
+##   INCLUDE(CTest)
+
+set(DART_TESTING_TIMEOUT "4800")
+
+set(CTEST_PROJECT_NAME "@NCXX_CTEST_PROJECT_NAME@")
+set(CTEST_NIGHTLY_START_TIME "00:00:00 MDT")
+SET(CTEST_SITE "@NCXX_CTEST_SITE@")
+
+set(CTEST_DROP_METHOD "http")
+set(CTEST_DROP_SITE "@NCXX_CTEST_DROP_SITE@")
+set(CTEST_DROP_LOCATION "@NCXX_CTEST_DROP_LOC_PREFIX@/submit.php?project=@NCXX_CTEST_PROJECT_NAME@")
+set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/CTestCustom.cmake b/CTestCustom.cmake
new file mode 100644
index 0000000..4909748
--- /dev/null
+++ b/CTestCustom.cmake
@@ -0,0 +1,8 @@
+## This file is used to customize CTest.
+## See:
+##
+##  http://public.kitware.com/Wiki/CTest:Using_CTEST_and_CDASH_without_CMAKE
+##
+## for more information.
+
+set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "500")
diff --git a/Makefile.am b/Makefile.am
index eea14d0..78b9afc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,7 @@ pkgconfig_DATA = netcdf-cxx4.pc
 bin_SCRIPTS = ncxx4-config
 
 # Build and test in these directories.
-SUBDIRS = cxx4 examples
+SUBDIRS = cxx4 examples docs
 
 # Remove these generated files, for a distclean.
 DISTCLEANFILES = VERSION
@@ -23,7 +23,7 @@ install-data-hook:
 	@echo ''
 	@echo '+-------------------------------------------------------------+'
 	@echo '| Congratulations! You have successfully installed the        |'
-	@echo '| new netCDF-4 C++ Libaray                                    |'
+	@echo '| new netCDF-4 C++ Library                                    |'
 	@echo '|                                                             |'
 	@echo '| CAUTION:                                                    |'
 	@echo '|                                                             |'
@@ -37,10 +37,8 @@ install-data-hook:
 	@echo '| http://www.unidata.ucar.edu/software/netcdf/                |'
 	@echo '|                                                             |'
 	@echo '| NetCDF is developed and maintained at the Unidata Program   |'
-	@echo '| Center. Unidata provides a broad array of data and software |' 
+	@echo '| Center. Unidata provides a broad array of data and software |'
 	@echo '| tools for use in geoscience education and research.         |'
 	@echo '| http://www.unidata.ucar.edu                                 |'
 	@echo '+-------------------------------------------------------------+'
 	@echo ''
-
-
diff --git a/Makefile.in b/Makefile.in
index ca0fdb3..fc2de36 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -223,9 +223,9 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.Z
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip
 GZIP_ENV = --best
-DIST_TARGETS = dist-gzip dist-tarZ
+DIST_TARGETS = dist-gzip dist-zip
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -251,6 +251,11 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@
+DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@
+DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -263,6 +268,7 @@ GREP = @GREP@
 HAS_DAP = @HAS_DAP@
 HAS_NC2 = @HAS_NC2@
 HAS_NC4 = @HAS_NC4@
+HAVE_DOT = @HAVE_DOT@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -373,7 +379,7 @@ pkgconfig_DATA = netcdf-cxx4.pc
 bin_SCRIPTS = ncxx4-config
 
 # Build and test in these directories.
-SUBDIRS = cxx4 examples
+SUBDIRS = cxx4 examples docs
 
 # Remove these generated files, for a distclean.
 DISTCLEANFILES = VERSION
@@ -685,6 +691,7 @@ dist-lzip: distdir
 dist-xz: distdir
 	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
 	$(am__post_remove_distdir)
+
 dist-tarZ: distdir
 	@echo WARNING: "Support for shar distribution archives is" \
 	               "deprecated." >&2
@@ -698,7 +705,6 @@ dist-shar: distdir
 	@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
 	$(am__post_remove_distdir)
-
 dist-zip: distdir
 	-rm -f $(distdir).zip
 	zip -rq $(distdir).zip $(distdir)
@@ -737,9 +743,10 @@ distcheck: dist
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	  && ../configure \
 	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	    --srcdir=.. --prefix="$$dc_install_base" \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
 	  && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -928,7 +935,7 @@ install-data-hook:
 	@echo ''
 	@echo '+-------------------------------------------------------------+'
 	@echo '| Congratulations! You have successfully installed the        |'
-	@echo '| new netCDF-4 C++ Libaray                                    |'
+	@echo '| new netCDF-4 C++ Library                                    |'
 	@echo '|                                                             |'
 	@echo '| CAUTION:                                                    |'
 	@echo '|                                                             |'
@@ -942,7 +949,7 @@ install-data-hook:
 	@echo '| http://www.unidata.ucar.edu/software/netcdf/                |'
 	@echo '|                                                             |'
 	@echo '| NetCDF is developed and maintained at the Unidata Program   |'
-	@echo '| Center. Unidata provides a broad array of data and software |' 
+	@echo '| Center. Unidata provides a broad array of data and software |'
 	@echo '| tools for use in geoscience education and research.         |'
 	@echo '| http://www.unidata.ucar.edu                                 |'
 	@echo '+-------------------------------------------------------------+'
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3ece216
--- /dev/null
+++ b/README.md
@@ -0,0 +1,78 @@
+[![Build Status](https://travis-ci.org/Unidata/netcdf-cxx4.svg)](https://travis-ci.org/Unidata/netcdf-cxx4)
+
+netcdf-cxx4
+===========
+
+Official GitHub repository for netCDF-4 C++ library.
+
+Note: The latest release of the historic C++ libraries, netCDF-4.2, may be downloaded from the following page:
+
+* http://www.unidata.ucar.edu/downloads/netcdf/index.jsp
+
+### Introduction
+
+Lynton Appel, of the Culham Centre for Fusion Energy (CCFE) in
+Oxfordshire, has developed and contributed a
+Oxfordshire, has developed and contributed a
+[netCDF-4 C++ library][netcdf-cxx4] that depends on an installed
+netCDF-4 C library.  The netCDF-4 C++ API was developed for use in
+managing fusion research data from CCFE's innovative MAST (Mega Amp
+Spherical Tokamak) experiment.
+
+  [netcdf-cxx4]: http://www.unidata.ucar.edu/downloads/netcdf/netcdf-cxx/
+
+Appel's C++ implementation is a complete read/write interface for
+netCDF-4, but can also be used as an alternative to the older netCDF-3
+C++ interface, to write classic-format netCDF-3 files as well as
+netCDF-4 classic model files. The new API is implemented as a layer
+over the netCDF-4 C interface, which means bug fixes and performance
+enhancements in the C interface will be immediately available to C++
+developers as well. It replaces a previous partial netCDF-4 C++
+interface developed by Shanna Forbes.
+
+The new API makes use of standard C++ features such as namespaces,
+exceptions, and templates, none of which were included in the first
+netCDF-3 C++ API developed in the mid-90's. The earlier netCDF-3 C++
+API is still supported and available in the source distribution, but
+developers who are thinking of eventually upgrading to use of the
+enhanced data model should consider using Lynton's new API.
+
+We're grateful for Appel's development and CCFE's contribution of the
+new open-source code for the netCDF-4 C++ API, and hope C++ developers
+in the netCDF community will find it useful! Feedback is appreciated,
+and should be directed to [Lynton Appel][la_email].
+
+  [la_email]: mailto:Lynton.Appel at ccfe.ac.uk
+
+### Installation
+
+Installing the C++ interface requires the additional flag
+--enable-netcdf-4 to be used during the configure stage of the
+installation, for example enter
+
+      ./configure --enable-cxx-4 [plus other options]
+
+Note that the "configure" script must be generated using
+
+      autoreconf -if
+
+To build the C++ interface guide, change to the cxx4 directory of the
+distribution and enter
+
+      doxygen
+
+By default, HTML documentation will be installed in cxx4/doc/html;
+other options may be specified according to the settings contained in
+the file "Doxyfile" (details of alternative settings are documented at
+[doxygen][dox_l]). Note that as a prerequisite for generating the
+documentation, the system will need to have doxygen and
+[Graphviz][g_l] installed.
+
+
+  [dox_l]: http://www.stack.nl/~dimitri/doxygen
+  [g_l]: http://www.graphviz.org/
+
+
+### Examples of usage
+
+Examples codes can be found by selecting the "Examples" tab.
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
new file mode 100644
index 0000000..02ce224
--- /dev/null
+++ b/RELEASE_NOTES.md
@@ -0,0 +1,20 @@
+# Release Notes {#RELEASE_NOTES}
+
+\brief Release notes file for the netcdf-cxx4 package.
+
+This file contains a high-level description of this package's evolution. Releases are in reverse chronological order (most recent first).
+
+Note that this file was created and maintained starting with the `netcdf-cxx4 4.3.0 release`.
+
+## netcdf-cxx4 v4.3.0 released May 13, 2016
+
+* Fixed an issue where the tests were failing silently, and the underlying `NcType` class could not properly determine the type name or type size reliably.  [GitHub issue #30](See https://github.com/Unidata/netcdf-cxx4/issues/30) for more information.
+* Changed `NCXX_ENABLE_DOXYGEN` option to an easier-to-remember `ENABLE_DOXYGEN`.
+* Added `--enable-doxygen`, `-DNCXX_ENABLE_DOXYGEN=ON` options to allow generation of netCDF-CXX4 documentation via doxygen using either `configure` or `cmake`, respectively.
+* Added `netcdf-cxx4` to the [Coverity Scan Dashboard](https://scan.coverity.com/projects/unidata-netcdf-cxx4?tab=overview).
+* Added `open` and `close` methods for NcFile.  See [Github Pull Request #18](https://github.com/Unidata/netcdf-cxx4/pull/18) for more information.
+* Added `netcdf-cxx4` to travis-ci.org.  See [https://travis-ci.org/Unidata/netcdf-cxx4](https://travis-ci.org/Unidata/netcdf-cxx4) for more details.
+* Added `NcCompoundType` methods `getMemberName` and `getMemberIndex`.  See [Pull Request #19](https://github.com/Unidata/netcdf-cxx4/pull/19) for more details.
+* Added `cmake` support to `netcdf-cxx4`, which will allow us to create a `CDash` continuous integration dashboard similar to those created for the `netcdf-c` and `netcdf-fortran` projects.
+* Added a `travis-ci` configuration file, `.travis.yml`.
+* Created `RELEASE_NOTES.md`.
diff --git a/aclocal.m4 b/aclocal.m4
index cf33496..37bee63 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.14 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.14'
 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.14], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_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.14])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/configure b/autom4te.cache/output.0
old mode 100755
new mode 100644
similarity index 96%
copy from configure
copy to autom4te.cache/output.0
index 93ac9a4..fcfad29
--- a/configure
+++ b/autom4te.cache/output.0
@@ -1,15 +1,15 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.2.1.
-#
-# Report bugs to <support-netcdf at unidata.ucar.edu>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.3.0.
+@%:@
+@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -24,9 +24,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -57,7 +57,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -90,7 +90,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -145,7 +145,7 @@ export LANGUAGE
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -168,9 +168,9 @@ if test "x$CONFIG_SHELL" = x; then
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
 else
-  case \`(set -o) 2>/dev/null\` in #(
+  case \`(set -o) 2>/dev/null\` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -188,7 +188,7 @@ 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
@@ -213,7 +213,7 @@ 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
@@ -222,7 +222,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   as_found=:
-  case $as_dir in #(
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
@@ -254,7 +254,7 @@ IFS=$as_save_IFS
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -293,36 +293,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
 ## --------------------- ##
 ## M4sh Shell Functions. ##
 ## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ 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 STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ 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 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_exit
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -366,21 +366,21 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -393,11 +393,11 @@ else
   }
 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.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -411,11 +411,11 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -425,7 +425,7 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -509,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
 }
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -581,7 +581,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-cxx4'
 PACKAGE_TARNAME='netcdf-cxx4'
-PACKAGE_VERSION='4.2.1'
-PACKAGE_STRING='netCDF-cxx4 4.2.1'
+PACKAGE_VERSION='4.3.0'
+PACKAGE_STRING='netCDF-cxx4 4.3.0'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -651,7 +651,7 @@ BUILD_V2_FALSE
 BUILD_V2_TRUE
 USE_NETCDF4_FALSE
 USE_NETCDF4_TRUE
-LIBOBJS
+LIB@&t at OBJS
 CXXCPP
 am__fastdepCXX_FALSE
 am__fastdepCXX_TRUE
@@ -698,6 +698,14 @@ LDFLAGS
 CFLAGS
 CC
 LIBTOOL
+HAVE_DOT
+DOT
+DOXYGEN
+DOXYGEN_SEARCHENGINE
+DOXYGEN_HEADER_FILE
+DOXYGEN_CSS_FILE
+BUILD_DOCS_FALSE
+BUILD_DOCS_TRUE
 BUILD_BENCHMARKS_FALSE
 BUILD_BENCHMARKS_TRUE
 LARGE_FILE_TESTS_FALSE
@@ -793,6 +801,7 @@ enable_extra_tests
 enable_large_file_tests
 enable_benchmarks
 with_temp_large
+enable_doxygen
 enable_shared
 enable_static
 with_pic
@@ -1356,7 +1365,7 @@ 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 netCDF-cxx4 4.2.1 to adapt to many kinds of systems.
+\`configure' configures netCDF-cxx4 4.3.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1378,9 +1387,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1404,7 +1413,7 @@ Fine tuning of the installation directories:
   --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/netcdf-cxx4]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/netcdf-cxx4@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1427,7 +1436,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-cxx4 4.2.1:";;
+     short | recursive ) echo "Configuration of netCDF-cxx4 4.3.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1437,24 +1446,25 @@ Optional Features:
   --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-maintainer-mode
+  --enable-maintainer-mode 
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
   --enable-extra-tests    run some extra tests that may not pass because of
                           known issues
-  --enable-large-file-tests
+  --enable-large-file-tests 
                           Run tests which create very large data files (~13 GB
                           disk space required, but it will be recovered when
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks tests (if any).
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --enable-dependency-tracking
+  --enable-doxygen        Enable generation of documentation.
+  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
+  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
+  --enable-fast-install@<:@=PKGS@:>@ 
+                          optimize for fast installation @<:@default=yes@:>@
+  --enable-dependency-tracking 
                           do not reject slow dependency extractors
-  --disable-dependency-tracking
+  --disable-dependency-tracking 
                           speeds up one-time build
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
@@ -1462,13 +1472,13 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-temp-large=<directory>
+  --with-temp-large=<directory> 
                           specify directory where large files (i.e. >2 GB)
                           will be written, if large files tests are run with
                           --enable-large-file-tests
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
+                          both@:>@
+  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
 
@@ -1551,7 +1561,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-cxx4 configure 4.2.1
+netCDF-cxx4 configure 4.3.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1565,9 +1575,9 @@ 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 LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@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
@@ -1601,11 +1611,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@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
@@ -1647,12 +1657,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile 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
@@ -1664,7 +1674,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   eval "$3=yes"
@@ -1678,11 +1688,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@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
@@ -1715,12 +1725,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@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
@@ -1757,11 +1767,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
 
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func 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
@@ -1824,11 +1834,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_func
+} @%:@ 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 LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@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
@@ -1862,11 +1872,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_compile
+} @%:@ 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 LINENO
+@%:@ ------------------------
+@%:@ Try to preprocess conftest. at S|@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
@@ -1899,11 +1909,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_cpp
+} @%:@ 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 LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@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
@@ -1945,13 +1955,13 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_link
+} @%:@ ac_fn_cxx_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel 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
@@ -1971,7 +1981,7 @@ $as_echo_n "checking $2 usability... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_header_compiler=yes
@@ -1987,7 +1997,7 @@ $as_echo "$ac_header_compiler" >&6; }
 $as_echo_n "checking $2 presence... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   ac_header_preproc=yes
@@ -2036,12 +2046,12 @@ $as_echo "$ac_res" >&6; }
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2077,7 +2087,7 @@ if (sizeof (($2)))
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   eval "$3=yes"
 fi
@@ -2090,12 +2100,12 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_type
+} @%:@ ac_fn_c_check_type
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-cxx4 $as_me 4.2.1, which was
+It was created by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2301,27 +2311,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
@@ -2331,7 +2341,7 @@ ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
   # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
+  case $CONFIG_SITE in @%:@((
     -*)  ac_site_file1=./$CONFIG_SITE;;
     */*) ac_site_file1=$CONFIG_SITE;;
     *)   ac_site_file1=./$CONFIG_SITE;;
@@ -2446,11 +2456,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.2.1>VERSION
+echo -n 4.3.0>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.2.1" >&5
-$as_echo "$as_me: netCDF-cxx4 4.2.1" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.3.0" >&5
+$as_echo "$as_me: netCDF-cxx4 4.3.0" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -2629,7 +2639,7 @@ 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 #((
+case $as_dir/ in @%:@((
   ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -3026,12 +3036,12 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# Check whether --enable-silent-rules was given.
+@%:@ Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
+  enableval=$enable_silent_rules; 
 fi
 
-case $enable_silent_rules in # (((
+case $enable_silent_rules in @%:@ (((
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
     *) AM_DEFAULT_VERBOSITY=1;;
@@ -3087,16 +3097,16 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-cxx4'
- VERSION='4.2.1'
+ VERSION='4.3.0'
 
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
 _ACEOF
 
-
+ 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
 _ACEOF
 
 # Some tools Automake needs.
@@ -3182,7 +3192,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
+    @%:@ Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
@@ -3200,6 +3210,7 @@ else
 fi
 
   MAINT=$MAINTAINER_MODE_TRUE
+  
 
 
 # Check for the existance of this file before proceeding.
@@ -3211,17 +3222,17 @@ $as_echo "$as_me: checking user options" >&6;}
 # Does the user want to do some extra tests?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
 $as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-# Check whether --enable-extra-tests was given.
+@%:@ Check whether --enable-extra-tests was given.
 if test "${enable_extra_tests+set}" = set; then :
-  enableval=$enable_extra_tests;
+  enableval=$enable_extra_tests; 
 fi
 
 test "x$enable_extra_tests" = xyes || enable_extra_tests=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
 
 fi
  if test x$enable_extra_tests = xyes; then
@@ -3236,9 +3247,9 @@ fi
 # Does the user want to run tests for large files (> 2GiB)?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
 $as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-# Check whether --enable-large-file-tests was given.
+@%:@ Check whether --enable-large-file-tests was given.
 if test "${enable_large_file_tests+set}" = set; then :
-  enableval=$enable_large_file_tests;
+  enableval=$enable_large_file_tests; 
 fi
 
 test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
@@ -3253,17 +3264,17 @@ else
 fi
 
 if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
 
 fi
 
 # Does the user want to run benchmarks?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmaks should be run (experimental)" >&5
 $as_echo_n "checking whether benchmaks should be run (experimental)... " >&6; }
-# Check whether --enable-benchmarks was given.
+@%:@ Check whether --enable-benchmarks was given.
 if test "${enable_benchmarks+set}" = set; then :
-  enableval=$enable_benchmarks;
+  enableval=$enable_benchmarks; 
 fi
 
 test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -3284,7 +3295,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
 $as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
 
-# Check whether --with-temp-large was given.
+@%:@ Check whether --with-temp-large was given.
 if test "${with_temp_large+set}" = set; then :
   withval=$with_temp_large; TEMP_LARGE=$with_temp_large
 fi
@@ -3295,10 +3306,161 @@ $as_echo "$TEMP_LARGE" >&6; }
 #AC_SUBST(TEMP_LARGE)
 
 cat >>confdefs.h <<_ACEOF
-#define TEMP_LARGE "$TEMP_LARGE"
+@%:@define TEMP_LARGE "$TEMP_LARGE"
 _ACEOF
 
 
+
+####
+# Doxygen and doxygen-related options.
+####
+@%:@ Check whether --enable-doxygen was given.
+if test "${enable_doxygen+set}" = set; then :
+  enableval=$enable_doxygen; 
+fi
+
+test "x$enable_doxygen" = xyes || enable_doxygen=no
+ if test "x$enable_doxygen" = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
+
+
+##
+# Eventually set these depending on an upcoming 'build release docs'
+# option.  See configure.ac in netcdf-c for guidance.
+##
+
+
+DOXYGEN_SEARCHENGINE="YES"
+
+
+##
+# Is doxygen installed? If so, have configure construct the Doxyfile.
+##
+for ac_prog in doxygen
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOXYGEN"; then
+  ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOXYGEN="$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
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+$as_echo "$DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOXYGEN" && break
+done
+
+if test -z "$DOXYGEN"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
+$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
+fi
+
+# Is graphviz/dot installed? If so, we'll use dot to create
+# graphs in the documentation.
+for ac_prog in dot
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOT"; then
+  ac_cv_prog_DOT="$DOT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOT="$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
+DOT=$ac_cv_prog_DOT
+if test -n "$DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOT" && break
+done
+
+if test -z "$DOT"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
+   HAVE_DOT=NO
+elif test "x$enable_dot" = xno; then
+   HAVE_DOT=NO
+else
+   HAVE_DOT=YES
+fi
+
+# If we have doxygen, and it's enabled, then process the file.
+if test "x$enable_doxygen" != xno; then
+   if test -n "$DOXYGEN"; then
+        
+        ac_config_files="$ac_config_files docs/Doxyfile"
+
+   fi
+# Note: the list of files to input to doxygen
+# has been moved to docs/Doxyfile.in so
+# that make distcheck works correctly.
+# Any new inputs should be inserted into
+# docs/Doxyfile.in and possibley docs/Makefile.am
+fi
+
+#####
+# End Doxygen and doxygen-related options.
+#####
+
 # Valgrind tests don't work with shared builds because of some libtool
 # weirdness.
 if test "x$enable_shared" = xyes; then
@@ -3325,14 +3487,14 @@ esac
 macro_version='2.4.2'
 macro_revision='1.3337'
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -3383,7 +3545,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO ""
+    $ECHO "" 
 }
 
 case "$ECHO" in
@@ -3398,14 +3560,14 @@ esac
 
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 DEPDIR="${am__leading_dot}deps"
@@ -3452,9 +3614,9 @@ fi
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
+  enableval=$enable_dependency_tracking; 
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
@@ -3644,7 +3806,7 @@ 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
+  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.
@@ -3941,7 +4103,7 @@ EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
+@%:@include <stdio.h>
 int
 main ()
 {
@@ -4122,7 +4284,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -4251,7 +4413,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -4436,7 +4598,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -4519,14 +4681,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
 test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -4590,7 +4752,7 @@ 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; }
@@ -4657,7 +4819,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
@@ -4724,29 +4886,29 @@ 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.
+@%:@ 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
@@ -4852,9 +5014,9 @@ 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
@@ -5024,7 +5186,7 @@ fi
       ;;
     esac
   fi
-
+  
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
   fi
@@ -5032,9 +5194,9 @@ 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; }
@@ -5167,7 +5329,8 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$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
@@ -5209,9 +5372,9 @@ $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
-
-
-
+    
+    
+    
 
 
 : ${CP="cp -f"}
@@ -5248,9 +5411,9 @@ else
   lt_unset=false
 fi
 
-
-
-
+    
+    
+    
 
 # test EBCDIC or ASCII
 case `echo X|tr X '\101'` in
@@ -5265,13 +5428,13 @@ case `echo X|tr X '\101'` in
   ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
@@ -5316,9 +5479,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
@@ -5343,9 +5506,9 @@ to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -5377,13 +5540,13 @@ case $host_os in
     ;;
 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.
@@ -5479,9 +5642,9 @@ fi
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
 
-
-
-
+    
+    
+    
 
 
 
@@ -5568,10 +5731,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -5610,11 +5769,11 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   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
@@ -5711,24 +5870,24 @@ deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -5825,9 +5984,9 @@ fi
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-
-
-
+    
+    
+    
 
 
 
@@ -5867,9 +6026,9 @@ sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
-
-
-
+    
+    
+    
 
 
 
@@ -5976,14 +6135,14 @@ fi
 : ${AR=ar}
 : ${AR_FLAGS=cru}
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
@@ -6024,10 +6183,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
         fi
       fi
       rm -f conftest.* libconftest.a
-
+     
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+  
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
@@ -6038,9 +6197,9 @@ else
   archiver_list_spec=$lt_cv_ar_at_file
 fi
 
-
-
-
+    
+    
+    
 
 
 
@@ -6138,9 +6297,9 @@ fi
 
 test -z "$STRIP" && STRIP=:
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -6237,9 +6396,9 @@ fi
 
 test -z "$RANLIB" && RANLIB=:
 
-
-
-
+    
+    
+    
 
 
 # Determine commands to create old-style static archives.
@@ -6266,43 +6425,43 @@ case $host_os in
     lock_old_archive_extraction=no ;;
 esac
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
@@ -6320,7 +6479,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
+  
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -6462,12 +6621,12 @@ _LT_EOF
 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
 /* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #else
-# define LT_DLSYM_CONST const
+# define LT@&t at _DLSYM_CONST const
 #endif
 
 #ifdef __cplusplus
@@ -6481,7 +6640,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -6564,37 +6723,37 @@ elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
-# Check whether --with-sysroot was given.
+@%:@ Check whether --with-sysroot was given.
 if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+  withval=$with_sysroot; 
 else
   with_sysroot=no
 fi
@@ -6622,13 +6781,13 @@ esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
 $as_echo "${lt_sysroot:-no}" >&6; }
 
+    
+    
+    
 
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
+  enableval=$enable_libtool_lock; 
 fi
 
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -6692,7 +6851,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -6708,9 +6867,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -6729,7 +6898,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -6945,9 +7117,9 @@ if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 
-
-
-
+    
+    
+    
 
 
   case $host_os in
@@ -7412,30 +7584,30 @@ else
   OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
+    
 
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -7502,7 +7674,7 @@ 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; }
@@ -7537,7 +7709,7 @@ _LT_EOF
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
@@ -7605,15 +7777,15 @@ do
   # 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
+@%:@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
@@ -7624,7 +7796,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -7645,7 +7817,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -7664,15 +7836,15 @@ do
   # 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
+@%:@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
@@ -7683,7 +7855,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -7699,7 +7871,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -7750,7 +7922,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7767,7 +7939,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7808,7 +7980,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7821,8 +7993,8 @@ 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
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -7835,9 +8007,9 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include
 "
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -7849,9 +8021,9 @@ do :
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -7865,12 +8037,12 @@ done
 
 
         enable_dlopen=no
-
+  
 
   enable_win32_dll=no
+  
 
-
-            # Check whether --enable-shared was given.
+            @%:@ Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
@@ -7894,14 +8066,14 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-  # Check whether --enable-static was given.
+  @%:@ Check whether --enable-static was given.
 if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
@@ -7925,15 +8097,15 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-
-# Check whether --with-pic was given.
+  
+@%:@ Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
@@ -7959,12 +8131,12 @@ fi
 test -z "$pic_mode" && pic_mode=default
 
 
+    
+    
+    
 
 
-
-
-
-  # Check whether --enable-fast-install was given.
+  @%:@ 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
@@ -7989,12 +8161,12 @@ fi
 
 
 
+    
+    
+    
 
 
-
-
-
-
+  
 
 
 # This can be used to rebuild libtool when needed
@@ -8005,46 +8177,46 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 test -z "$LN_S" && LN_S="ln -s"
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "${ZSH_VERSION+set}" ; then
@@ -8070,12 +8242,12 @@ fi
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
-
-
-
+    
+    
+    
 
 cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
 _ACEOF
 
 
@@ -8189,9 +8361,9 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-
-
+    
+    
+    
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
@@ -8326,7 +8498,7 @@ $RM -r conftest*
 ## 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
@@ -8383,9 +8555,9 @@ fi
 
 fi
 
-
-
-
+    
+    
+    
 
 
   lt_prog_compiler_wl=
@@ -8537,7 +8709,7 @@ lt_prog_compiler_static=
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -8695,7 +8867,7 @@ case $host_os in
     lt_prog_compiler_pic=
     ;;
   *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
     ;;
 esac
 
@@ -8722,7 +8894,7 @@ 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"
+   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -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
@@ -8764,15 +8936,15 @@ fi
 
 fi
 
+    
+    
+    
 
 
 
-
-
-
-
-
-
+    
+    
+    
 
 #
 # Check to make sure the static flag actually works.
@@ -8816,9 +8988,9 @@ else
 fi
 
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -8871,9 +9043,9 @@ 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
@@ -8951,9 +9123,9 @@ else
   need_locks=no
 fi
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -9015,6 +9187,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -9236,7 +9411,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -9413,6 +9588,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	link_all_deplibs=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -9456,7 +9632,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -9475,7 +9651,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -9509,7 +9685,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -9528,7 +9704,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -9638,15 +9814,15 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc=no
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec=''
   fi
@@ -9662,7 +9838,7 @@ fi
     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
@@ -9758,7 +9934,7 @@ fi
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-
+	
 	  # Older versions of the 11.00 compiler do not understand -b yet
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
@@ -9866,7 +10042,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       link_all_deplibs=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -10116,17 +10292,17 @@ test "$ld_shlibs" = no && can_build_shared=no
 with_gnu_ld=$with_gnu_ld
 
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 #
@@ -10159,194 +10335,194 @@ else
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -10703,17 +10879,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -10830,7 +10995,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -10869,7 +11034,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -10894,6 +11059,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -11099,94 +11276,94 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -11227,9 +11404,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-
-
-
+    
+    
+    
 
 
   if test "x$enable_dlopen" != xyes; then
@@ -11298,11 +11475,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-
+  
     lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+    
 fi
 
     ;;
@@ -11473,19 +11650,19 @@ if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
-
+	      
 fi
 
-
+	    
 fi
 
-
+	  
 fi
 
-
+	
 fi
 
-
+      
 fi
 
     ;;
@@ -11607,7 +11784,7 @@ _LT_EOF
 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; }
@@ -11713,7 +11890,7 @@ _LT_EOF
 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; }
@@ -11736,22 +11913,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
+  
 striplib=
 old_striplib=
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -11782,14 +11959,14 @@ $as_echo "no" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -11830,7 +12007,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-
+  
 
 
 fi
@@ -11849,8 +12026,8 @@ CC="$lt_save_CC"
 
 
 
-
-
+       
+       
 
 
 
@@ -12075,7 +12252,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-
+  
 else
   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 	 CXXFLAGS="-g"
@@ -12240,7 +12417,7 @@ fi
 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
   am__fastdepCXX_TRUE=
@@ -12289,15 +12466,15 @@ do
   # 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
+@%:@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
@@ -12308,7 +12485,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_cxx_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -12329,7 +12506,7 @@ fi
 
     done
     ac_cv_prog_CXXCPP=$CXXCPP
-
+  
 fi
   CXXCPP=$ac_cv_prog_CXXCPP
 else
@@ -12348,15 +12525,15 @@ do
   # 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
+@%:@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
@@ -12367,7 +12544,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_cxx_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -12383,7 +12560,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -12450,7 +12627,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -12526,9 +12703,9 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
     if test "$GXX" = yes; then
       # Set up default GNU C++ configuration
 
+      
 
-
-# Check whether --with-gnu-ld was given.
+@%:@ 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
@@ -12801,7 +12978,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -12820,7 +12997,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__CXX"; then
     lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__CXX
@@ -12855,7 +13032,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -12874,7 +13051,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__CXX"; then
     lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__CXX
@@ -12991,15 +13168,15 @@ fi
 	esac
 	;;
       darwin* | rhapsody*)
-
-
+        
+  
   archive_cmds_need_lc_CXX=no
   hardcode_direct_CXX=no
   hardcode_automatic_CXX=yes
   hardcode_shlibpath_var_CXX=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec_CXX=''
   fi
@@ -13060,9 +13237,6 @@ fi
         ld_shlibs_CXX=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         link_all_deplibs_CXX=yes
@@ -13224,7 +13398,7 @@ fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13886,34 +14060,34 @@ 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=
@@ -14084,7 +14258,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -14148,7 +14322,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -14242,7 +14416,7 @@ case $host_os in
     lt_prog_compiler_pic_CXX=
     ;;
   *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
     ;;
 esac
 
@@ -14269,7 +14443,7 @@ 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"
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -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
@@ -14519,6 +14693,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -14593,7 +14770,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
@@ -14953,17 +15130,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -15080,7 +15246,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -15119,7 +15285,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -15144,6 +15310,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -15426,7 +15604,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -15665,7 +15843,7 @@ 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
+  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.
@@ -15893,7 +16071,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -16022,7 +16200,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -16207,7 +16385,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -16247,15 +16425,15 @@ do
   # 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
+@%:@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
@@ -16266,7 +16444,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -16287,7 +16465,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -16306,15 +16484,15 @@ do
   # 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
+@%:@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
@@ -16325,7 +16503,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -16341,7 +16519,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -16406,9 +16584,9 @@ do :
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -16466,7 +16644,7 @@ else
               */
              _Bool q = true;
              _Bool *pq = &q;
-
+           
 int
 main ()
 {
@@ -16477,7 +16655,7 @@ main ()
              /* Refer to every declared value, to avoid compiler optimizations.  */
              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
                      + !m + !n + !o + !p + !q + !pq);
-
+           
   ;
   return 0;
 }
@@ -16493,9 +16671,9 @@ fi
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+@%:@define HAVE__BOOL 1
 _ACEOF
 
 
@@ -16503,27 +16681,27 @@ fi
 
 
 if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
 if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
+@%:@define HAVE_PTRDIFF_T 1
 _ACEOF
 
 
@@ -16536,9 +16714,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
 if test "x$ac_cv_header_stdlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_STDLIB_H 1
+@%:@define HAVE_STDLIB_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -16580,29 +16758,29 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
 if test $ac_cv_func_malloc_0_nonnull = yes; then :
-
-$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h
 
 else
-  $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
+  $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h
 
-   case " $LIBOBJS " in
+   case " $LIB@&t at OBJS " in
   *" malloc.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
+  *) LIB@&t at OBJS="$LIB@&t at OBJS malloc.$ac_objext"
  ;;
 esac
 
-
-$as_echo "#define malloc rpl_malloc" >>confdefs.h
+   
+$as_echo "@%:@define malloc rpl_malloc" >>confdefs.h
 
 fi
 
 
 
 # Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
+@%:@ Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
+  enableval=$enable_largefile; 
 fi
 
 if test "$enable_largefile" != no; then
@@ -16620,12 +16798,12 @@ else
 	 # so use the C compiler's -n32 option if that helps.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16666,12 +16844,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16689,13 +16867,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
+@%:@define _FILE_OFFSET_BITS 64
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16719,9 +16897,9 @@ fi
 $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
 ;;
 esac
@@ -16735,12 +16913,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16758,13 +16936,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
+@%:@define _LARGE_FILES 1
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16788,16 +16966,16 @@ fi
 $as_echo "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+@%:@define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
 ;;
 esac
 rm -rf conftest*
   fi
 
-
+  
 fi
 
 
@@ -16807,9 +16985,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
 if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_NETCDF_H 1
+@%:@define HAVE_NETCDF_H 1
 _ACEOF
-
+ 
 else
   as_fn_error $? "netcdf.h could not be found. Please set CPPFLAGS." "$LINENO" 5
 fi
@@ -16857,7 +17035,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_nc_create+:} false; then :
-
+  
 else
   ac_cv_search_nc_create=no
 fi
@@ -16869,7 +17047,7 @@ $as_echo "$ac_cv_search_nc_create" >&6; }
 ac_res=$ac_cv_search_nc_create
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 for ac_func in nc_def_opaque nccreate nc_set_log_level oc_open nc_use_parallel_enabled
@@ -16878,9 +17056,9 @@ do :
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
@@ -16891,8 +17069,8 @@ test "x$ac_cv_func_oc_open" = xyes && nc_has_dap=yes || nc_has_dap=no
 nc_build_v2=$ac_cv_func_nccreate
 nc_build_v4=$ac_cv_func_nc_def_opaque
 if test "x$nc_build_v4" = xyes; then
-
-$as_echo "#define USE_NETCDF4 1" >>confdefs.h
+   
+$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
 
 else
    as_fn_error $? "NetCDF must be built with netCDF-4 enabled." "$LINENO" 5
@@ -16947,6 +17125,14 @@ else
   BUILD_PARALLEL_FALSE=
 fi
 
+ if test x$enable_doxygen = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
  if test "x$enable_valgrind_tests" = xyes; then
   USE_VALGRIND_TESTS_TRUE=
   USE_VALGRIND_TESTS_FALSE='#'
@@ -16991,7 +17177,7 @@ HAS_NC4=$nc_build_v4
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: generating header files and makefiles" >&5
 $as_echo "$as_me: generating header files and makefiles" >&6;}
-ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile ncxx4-config netcdf-cxx4.pc"
+ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile docs/Makefile ncxx4-config netcdf-cxx4.pc"
 
 
 cat >confcache <<\_ACEOF
@@ -17089,7 +17275,7 @@ DEFS=-DHAVE_CONFIG_H
 ac_libobjs=
 ac_ltlibobjs=
 U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+for ac_i in : $LIB@&t at OBJS; 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"`
@@ -17098,7 +17284,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   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
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
@@ -17135,6 +17321,10 @@ if test -z "${BUILD_BENCHMARKS_TRUE}" && test -z "${BUILD_BENCHMARKS_FALSE}"; th
   as_fn_error $? "conditional \"BUILD_BENCHMARKS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+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
@@ -17171,6 +17361,10 @@ if test -z "${BUILD_PARALLEL_TRUE}" && test -z "${BUILD_PARALLEL_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_PARALLEL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_VALGRIND_TESTS_TRUE}" && test -z "${USE_VALGRIND_TESTS_FALSE}"; then
   as_fn_error $? "conditional \"USE_VALGRIND_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17212,9 +17406,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -17245,7 +17439,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -17278,7 +17472,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -17323,11 +17517,11 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -17337,41 +17531,41 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ 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 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_exit
 
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ 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.
+@%:@ 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 ()
   {
@@ -17384,11 +17578,11 @@ else
   }
 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.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -17448,7 +17642,7 @@ as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -17488,9 +17682,9 @@ 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
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -17534,7 +17728,7 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p='mkdir -p "$as_dir"'
 else
@@ -17543,13 +17737,13 @@ else
 fi
 
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
+} @%:@ as_fn_executable_p
 as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
@@ -17572,7 +17766,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-cxx4 $as_me 4.2.1, which was
+This file was extended by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17618,9 +17812,9 @@ Usage: $0 [OPTION]... [TAG]...
                    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]
+      --file=FILE[:TEMPLATE] 
                    instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
+      --header=FILE[:TEMPLATE] 
                    instantiate the configuration header FILE
 
 Configuration files:
@@ -17638,7 +17832,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-cxx4 config.status 4.2.1
+netCDF-cxx4 config.status 4.3.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -17746,8 +17940,8 @@ 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. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
   $as_echo "$ac_log"
 } >&5
@@ -18143,11 +18337,13 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "docs/Doxyfile") CONFIG_FILES="$CONFIG_FILES docs/Doxyfile" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "cxx4/Makefile") CONFIG_FILES="$CONFIG_FILES cxx4/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "ncxx4-config") CONFIG_FILES="$CONFIG_FILES ncxx4-config" ;;
     "netcdf-cxx4.pc") CONFIG_FILES="$CONFIG_FILES netcdf-cxx4.pc" ;;
 
@@ -18737,7 +18933,7 @@ $as_echo X"$_am_arg" |
 	  }
 	  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;}
  ;;
@@ -18838,8 +19034,8 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "libtool":C)
-
+    "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
@@ -19307,7 +19503,7 @@ _LT_EOF
     ;;
   esac
 
-
+  
 ltmain="$ac_aux_dir/ltmain.sh"
 
 
@@ -19638,6 +19834,7 @@ _LT_EOF
     "Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "cxx4/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "examples/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
+    "docs/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "ncxx4-config":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "netcdf-cxx4.pc":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
 
@@ -19678,4 +19875,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
-
diff --git a/configure b/autom4te.cache/output.1
old mode 100755
new mode 100644
similarity index 96%
copy from configure
copy to autom4te.cache/output.1
index 93ac9a4..fcfad29
--- a/configure
+++ b/autom4te.cache/output.1
@@ -1,15 +1,15 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.2.1.
-#
-# Report bugs to <support-netcdf at unidata.ucar.edu>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.3.0.
+@%:@
+@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -24,9 +24,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -57,7 +57,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -90,7 +90,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -145,7 +145,7 @@ export LANGUAGE
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -168,9 +168,9 @@ if test "x$CONFIG_SHELL" = x; then
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
 else
-  case \`(set -o) 2>/dev/null\` in #(
+  case \`(set -o) 2>/dev/null\` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -188,7 +188,7 @@ 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
@@ -213,7 +213,7 @@ 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
@@ -222,7 +222,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   as_found=:
-  case $as_dir in #(
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
@@ -254,7 +254,7 @@ IFS=$as_save_IFS
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -293,36 +293,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
 ## --------------------- ##
 ## M4sh Shell Functions. ##
 ## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ 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 STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ 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 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_exit
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -366,21 +366,21 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -393,11 +393,11 @@ else
   }
 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.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -411,11 +411,11 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -425,7 +425,7 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -509,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
 }
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -581,7 +581,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-cxx4'
 PACKAGE_TARNAME='netcdf-cxx4'
-PACKAGE_VERSION='4.2.1'
-PACKAGE_STRING='netCDF-cxx4 4.2.1'
+PACKAGE_VERSION='4.3.0'
+PACKAGE_STRING='netCDF-cxx4 4.3.0'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -651,7 +651,7 @@ BUILD_V2_FALSE
 BUILD_V2_TRUE
 USE_NETCDF4_FALSE
 USE_NETCDF4_TRUE
-LIBOBJS
+LIB@&t at OBJS
 CXXCPP
 am__fastdepCXX_FALSE
 am__fastdepCXX_TRUE
@@ -698,6 +698,14 @@ LDFLAGS
 CFLAGS
 CC
 LIBTOOL
+HAVE_DOT
+DOT
+DOXYGEN
+DOXYGEN_SEARCHENGINE
+DOXYGEN_HEADER_FILE
+DOXYGEN_CSS_FILE
+BUILD_DOCS_FALSE
+BUILD_DOCS_TRUE
 BUILD_BENCHMARKS_FALSE
 BUILD_BENCHMARKS_TRUE
 LARGE_FILE_TESTS_FALSE
@@ -793,6 +801,7 @@ enable_extra_tests
 enable_large_file_tests
 enable_benchmarks
 with_temp_large
+enable_doxygen
 enable_shared
 enable_static
 with_pic
@@ -1356,7 +1365,7 @@ 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 netCDF-cxx4 4.2.1 to adapt to many kinds of systems.
+\`configure' configures netCDF-cxx4 4.3.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1378,9 +1387,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1404,7 +1413,7 @@ Fine tuning of the installation directories:
   --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/netcdf-cxx4]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/netcdf-cxx4@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1427,7 +1436,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-cxx4 4.2.1:";;
+     short | recursive ) echo "Configuration of netCDF-cxx4 4.3.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1437,24 +1446,25 @@ Optional Features:
   --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-maintainer-mode
+  --enable-maintainer-mode 
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
   --enable-extra-tests    run some extra tests that may not pass because of
                           known issues
-  --enable-large-file-tests
+  --enable-large-file-tests 
                           Run tests which create very large data files (~13 GB
                           disk space required, but it will be recovered when
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks tests (if any).
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --enable-dependency-tracking
+  --enable-doxygen        Enable generation of documentation.
+  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
+  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
+  --enable-fast-install@<:@=PKGS@:>@ 
+                          optimize for fast installation @<:@default=yes@:>@
+  --enable-dependency-tracking 
                           do not reject slow dependency extractors
-  --disable-dependency-tracking
+  --disable-dependency-tracking 
                           speeds up one-time build
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
@@ -1462,13 +1472,13 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-temp-large=<directory>
+  --with-temp-large=<directory> 
                           specify directory where large files (i.e. >2 GB)
                           will be written, if large files tests are run with
                           --enable-large-file-tests
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
+                          both@:>@
+  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
 
@@ -1551,7 +1561,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-cxx4 configure 4.2.1
+netCDF-cxx4 configure 4.3.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1565,9 +1575,9 @@ 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 LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@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
@@ -1601,11 +1611,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@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
@@ -1647,12 +1657,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile 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
@@ -1664,7 +1674,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   eval "$3=yes"
@@ -1678,11 +1688,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@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
@@ -1715,12 +1725,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@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
@@ -1757,11 +1767,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
 
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func 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
@@ -1824,11 +1834,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_func
+} @%:@ 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 LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@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
@@ -1862,11 +1872,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_compile
+} @%:@ 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 LINENO
+@%:@ ------------------------
+@%:@ Try to preprocess conftest. at S|@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
@@ -1899,11 +1909,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_cpp
+} @%:@ 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 LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@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
@@ -1945,13 +1955,13 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_link
+} @%:@ ac_fn_cxx_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel 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
@@ -1971,7 +1981,7 @@ $as_echo_n "checking $2 usability... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_header_compiler=yes
@@ -1987,7 +1997,7 @@ $as_echo "$ac_header_compiler" >&6; }
 $as_echo_n "checking $2 presence... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   ac_header_preproc=yes
@@ -2036,12 +2046,12 @@ $as_echo "$ac_res" >&6; }
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2077,7 +2087,7 @@ if (sizeof (($2)))
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   eval "$3=yes"
 fi
@@ -2090,12 +2100,12 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_type
+} @%:@ ac_fn_c_check_type
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-cxx4 $as_me 4.2.1, which was
+It was created by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2301,27 +2311,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
@@ -2331,7 +2341,7 @@ ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
   # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
+  case $CONFIG_SITE in @%:@((
     -*)  ac_site_file1=./$CONFIG_SITE;;
     */*) ac_site_file1=$CONFIG_SITE;;
     *)   ac_site_file1=./$CONFIG_SITE;;
@@ -2446,11 +2456,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.2.1>VERSION
+echo -n 4.3.0>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.2.1" >&5
-$as_echo "$as_me: netCDF-cxx4 4.2.1" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.3.0" >&5
+$as_echo "$as_me: netCDF-cxx4 4.3.0" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -2629,7 +2639,7 @@ 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 #((
+case $as_dir/ in @%:@((
   ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -3026,12 +3036,12 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# Check whether --enable-silent-rules was given.
+@%:@ Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
+  enableval=$enable_silent_rules; 
 fi
 
-case $enable_silent_rules in # (((
+case $enable_silent_rules in @%:@ (((
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
     *) AM_DEFAULT_VERBOSITY=1;;
@@ -3087,16 +3097,16 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-cxx4'
- VERSION='4.2.1'
+ VERSION='4.3.0'
 
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
 _ACEOF
 
-
+ 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
 _ACEOF
 
 # Some tools Automake needs.
@@ -3182,7 +3192,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
+    @%:@ Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
@@ -3200,6 +3210,7 @@ else
 fi
 
   MAINT=$MAINTAINER_MODE_TRUE
+  
 
 
 # Check for the existance of this file before proceeding.
@@ -3211,17 +3222,17 @@ $as_echo "$as_me: checking user options" >&6;}
 # Does the user want to do some extra tests?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
 $as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-# Check whether --enable-extra-tests was given.
+@%:@ Check whether --enable-extra-tests was given.
 if test "${enable_extra_tests+set}" = set; then :
-  enableval=$enable_extra_tests;
+  enableval=$enable_extra_tests; 
 fi
 
 test "x$enable_extra_tests" = xyes || enable_extra_tests=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
 
 fi
  if test x$enable_extra_tests = xyes; then
@@ -3236,9 +3247,9 @@ fi
 # Does the user want to run tests for large files (> 2GiB)?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
 $as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-# Check whether --enable-large-file-tests was given.
+@%:@ Check whether --enable-large-file-tests was given.
 if test "${enable_large_file_tests+set}" = set; then :
-  enableval=$enable_large_file_tests;
+  enableval=$enable_large_file_tests; 
 fi
 
 test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
@@ -3253,17 +3264,17 @@ else
 fi
 
 if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
 
 fi
 
 # Does the user want to run benchmarks?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmaks should be run (experimental)" >&5
 $as_echo_n "checking whether benchmaks should be run (experimental)... " >&6; }
-# Check whether --enable-benchmarks was given.
+@%:@ Check whether --enable-benchmarks was given.
 if test "${enable_benchmarks+set}" = set; then :
-  enableval=$enable_benchmarks;
+  enableval=$enable_benchmarks; 
 fi
 
 test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -3284,7 +3295,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
 $as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
 
-# Check whether --with-temp-large was given.
+@%:@ Check whether --with-temp-large was given.
 if test "${with_temp_large+set}" = set; then :
   withval=$with_temp_large; TEMP_LARGE=$with_temp_large
 fi
@@ -3295,10 +3306,161 @@ $as_echo "$TEMP_LARGE" >&6; }
 #AC_SUBST(TEMP_LARGE)
 
 cat >>confdefs.h <<_ACEOF
-#define TEMP_LARGE "$TEMP_LARGE"
+@%:@define TEMP_LARGE "$TEMP_LARGE"
 _ACEOF
 
 
+
+####
+# Doxygen and doxygen-related options.
+####
+@%:@ Check whether --enable-doxygen was given.
+if test "${enable_doxygen+set}" = set; then :
+  enableval=$enable_doxygen; 
+fi
+
+test "x$enable_doxygen" = xyes || enable_doxygen=no
+ if test "x$enable_doxygen" = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
+
+
+##
+# Eventually set these depending on an upcoming 'build release docs'
+# option.  See configure.ac in netcdf-c for guidance.
+##
+
+
+DOXYGEN_SEARCHENGINE="YES"
+
+
+##
+# Is doxygen installed? If so, have configure construct the Doxyfile.
+##
+for ac_prog in doxygen
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOXYGEN"; then
+  ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOXYGEN="$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
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+$as_echo "$DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOXYGEN" && break
+done
+
+if test -z "$DOXYGEN"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
+$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
+fi
+
+# Is graphviz/dot installed? If so, we'll use dot to create
+# graphs in the documentation.
+for ac_prog in dot
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOT"; then
+  ac_cv_prog_DOT="$DOT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOT="$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
+DOT=$ac_cv_prog_DOT
+if test -n "$DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOT" && break
+done
+
+if test -z "$DOT"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
+   HAVE_DOT=NO
+elif test "x$enable_dot" = xno; then
+   HAVE_DOT=NO
+else
+   HAVE_DOT=YES
+fi
+
+# If we have doxygen, and it's enabled, then process the file.
+if test "x$enable_doxygen" != xno; then
+   if test -n "$DOXYGEN"; then
+        
+        ac_config_files="$ac_config_files docs/Doxyfile"
+
+   fi
+# Note: the list of files to input to doxygen
+# has been moved to docs/Doxyfile.in so
+# that make distcheck works correctly.
+# Any new inputs should be inserted into
+# docs/Doxyfile.in and possibley docs/Makefile.am
+fi
+
+#####
+# End Doxygen and doxygen-related options.
+#####
+
 # Valgrind tests don't work with shared builds because of some libtool
 # weirdness.
 if test "x$enable_shared" = xyes; then
@@ -3325,14 +3487,14 @@ esac
 macro_version='2.4.2'
 macro_revision='1.3337'
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -3383,7 +3545,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO ""
+    $ECHO "" 
 }
 
 case "$ECHO" in
@@ -3398,14 +3560,14 @@ esac
 
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 DEPDIR="${am__leading_dot}deps"
@@ -3452,9 +3614,9 @@ fi
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
+  enableval=$enable_dependency_tracking; 
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
@@ -3644,7 +3806,7 @@ 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
+  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.
@@ -3941,7 +4103,7 @@ EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
+@%:@include <stdio.h>
 int
 main ()
 {
@@ -4122,7 +4284,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -4251,7 +4413,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -4436,7 +4598,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -4519,14 +4681,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
 test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -4590,7 +4752,7 @@ 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; }
@@ -4657,7 +4819,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
@@ -4724,29 +4886,29 @@ 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.
+@%:@ 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
@@ -4852,9 +5014,9 @@ 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
@@ -5024,7 +5186,7 @@ fi
       ;;
     esac
   fi
-
+  
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
   fi
@@ -5032,9 +5194,9 @@ 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; }
@@ -5167,7 +5329,8 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$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
@@ -5209,9 +5372,9 @@ $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
-
-
-
+    
+    
+    
 
 
 : ${CP="cp -f"}
@@ -5248,9 +5411,9 @@ else
   lt_unset=false
 fi
 
-
-
-
+    
+    
+    
 
 # test EBCDIC or ASCII
 case `echo X|tr X '\101'` in
@@ -5265,13 +5428,13 @@ case `echo X|tr X '\101'` in
   ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
@@ -5316,9 +5479,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
@@ -5343,9 +5506,9 @@ to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -5377,13 +5540,13 @@ case $host_os in
     ;;
 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.
@@ -5479,9 +5642,9 @@ fi
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
 
-
-
-
+    
+    
+    
 
 
 
@@ -5568,10 +5731,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -5610,11 +5769,11 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   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
@@ -5711,24 +5870,24 @@ deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -5825,9 +5984,9 @@ fi
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-
-
-
+    
+    
+    
 
 
 
@@ -5867,9 +6026,9 @@ sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
-
-
-
+    
+    
+    
 
 
 
@@ -5976,14 +6135,14 @@ fi
 : ${AR=ar}
 : ${AR_FLAGS=cru}
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
@@ -6024,10 +6183,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
         fi
       fi
       rm -f conftest.* libconftest.a
-
+     
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+  
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
@@ -6038,9 +6197,9 @@ else
   archiver_list_spec=$lt_cv_ar_at_file
 fi
 
-
-
-
+    
+    
+    
 
 
 
@@ -6138,9 +6297,9 @@ fi
 
 test -z "$STRIP" && STRIP=:
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -6237,9 +6396,9 @@ fi
 
 test -z "$RANLIB" && RANLIB=:
 
-
-
-
+    
+    
+    
 
 
 # Determine commands to create old-style static archives.
@@ -6266,43 +6425,43 @@ case $host_os in
     lock_old_archive_extraction=no ;;
 esac
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
@@ -6320,7 +6479,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
+  
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -6462,12 +6621,12 @@ _LT_EOF
 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
 /* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #else
-# define LT_DLSYM_CONST const
+# define LT@&t at _DLSYM_CONST const
 #endif
 
 #ifdef __cplusplus
@@ -6481,7 +6640,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -6564,37 +6723,37 @@ elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
-# Check whether --with-sysroot was given.
+@%:@ Check whether --with-sysroot was given.
 if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+  withval=$with_sysroot; 
 else
   with_sysroot=no
 fi
@@ -6622,13 +6781,13 @@ esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
 $as_echo "${lt_sysroot:-no}" >&6; }
 
+    
+    
+    
 
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
+  enableval=$enable_libtool_lock; 
 fi
 
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -6692,7 +6851,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -6708,9 +6867,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -6729,7 +6898,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -6945,9 +7117,9 @@ if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 
-
-
-
+    
+    
+    
 
 
   case $host_os in
@@ -7412,30 +7584,30 @@ else
   OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
+    
 
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -7502,7 +7674,7 @@ 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; }
@@ -7537,7 +7709,7 @@ _LT_EOF
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
@@ -7605,15 +7777,15 @@ do
   # 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
+@%:@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
@@ -7624,7 +7796,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -7645,7 +7817,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -7664,15 +7836,15 @@ do
   # 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
+@%:@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
@@ -7683,7 +7855,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -7699,7 +7871,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -7750,7 +7922,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7767,7 +7939,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7808,7 +7980,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7821,8 +7993,8 @@ 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
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -7835,9 +8007,9 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include
 "
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -7849,9 +8021,9 @@ do :
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -7865,12 +8037,12 @@ done
 
 
         enable_dlopen=no
-
+  
 
   enable_win32_dll=no
+  
 
-
-            # Check whether --enable-shared was given.
+            @%:@ Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
@@ -7894,14 +8066,14 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-  # Check whether --enable-static was given.
+  @%:@ Check whether --enable-static was given.
 if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
@@ -7925,15 +8097,15 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-
-# Check whether --with-pic was given.
+  
+@%:@ Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
@@ -7959,12 +8131,12 @@ fi
 test -z "$pic_mode" && pic_mode=default
 
 
+    
+    
+    
 
 
-
-
-
-  # Check whether --enable-fast-install was given.
+  @%:@ 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
@@ -7989,12 +8161,12 @@ fi
 
 
 
+    
+    
+    
 
 
-
-
-
-
+  
 
 
 # This can be used to rebuild libtool when needed
@@ -8005,46 +8177,46 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 test -z "$LN_S" && LN_S="ln -s"
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "${ZSH_VERSION+set}" ; then
@@ -8070,12 +8242,12 @@ fi
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
-
-
-
+    
+    
+    
 
 cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
 _ACEOF
 
 
@@ -8189,9 +8361,9 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-
-
+    
+    
+    
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
@@ -8326,7 +8498,7 @@ $RM -r conftest*
 ## 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
@@ -8383,9 +8555,9 @@ fi
 
 fi
 
-
-
-
+    
+    
+    
 
 
   lt_prog_compiler_wl=
@@ -8537,7 +8709,7 @@ lt_prog_compiler_static=
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -8695,7 +8867,7 @@ case $host_os in
     lt_prog_compiler_pic=
     ;;
   *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
     ;;
 esac
 
@@ -8722,7 +8894,7 @@ 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"
+   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -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
@@ -8764,15 +8936,15 @@ fi
 
 fi
 
+    
+    
+    
 
 
 
-
-
-
-
-
-
+    
+    
+    
 
 #
 # Check to make sure the static flag actually works.
@@ -8816,9 +8988,9 @@ else
 fi
 
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -8871,9 +9043,9 @@ 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
@@ -8951,9 +9123,9 @@ else
   need_locks=no
 fi
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -9015,6 +9187,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -9236,7 +9411,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -9413,6 +9588,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	link_all_deplibs=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -9456,7 +9632,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -9475,7 +9651,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -9509,7 +9685,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -9528,7 +9704,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -9638,15 +9814,15 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc=no
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec=''
   fi
@@ -9662,7 +9838,7 @@ fi
     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
@@ -9758,7 +9934,7 @@ fi
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-
+	
 	  # Older versions of the 11.00 compiler do not understand -b yet
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
@@ -9866,7 +10042,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       link_all_deplibs=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -10116,17 +10292,17 @@ test "$ld_shlibs" = no && can_build_shared=no
 with_gnu_ld=$with_gnu_ld
 
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 #
@@ -10159,194 +10335,194 @@ else
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -10703,17 +10879,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -10830,7 +10995,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -10869,7 +11034,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -10894,6 +11059,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -11099,94 +11276,94 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -11227,9 +11404,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-
-
-
+    
+    
+    
 
 
   if test "x$enable_dlopen" != xyes; then
@@ -11298,11 +11475,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-
+  
     lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+    
 fi
 
     ;;
@@ -11473,19 +11650,19 @@ if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
-
+	      
 fi
 
-
+	    
 fi
 
-
+	  
 fi
 
-
+	
 fi
 
-
+      
 fi
 
     ;;
@@ -11607,7 +11784,7 @@ _LT_EOF
 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; }
@@ -11713,7 +11890,7 @@ _LT_EOF
 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; }
@@ -11736,22 +11913,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
+  
 striplib=
 old_striplib=
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -11782,14 +11959,14 @@ $as_echo "no" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -11830,7 +12007,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-
+  
 
 
 fi
@@ -11849,8 +12026,8 @@ CC="$lt_save_CC"
 
 
 
-
-
+       
+       
 
 
 
@@ -12075,7 +12252,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-
+  
 else
   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 	 CXXFLAGS="-g"
@@ -12240,7 +12417,7 @@ fi
 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
   am__fastdepCXX_TRUE=
@@ -12289,15 +12466,15 @@ do
   # 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
+@%:@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
@@ -12308,7 +12485,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_cxx_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -12329,7 +12506,7 @@ fi
 
     done
     ac_cv_prog_CXXCPP=$CXXCPP
-
+  
 fi
   CXXCPP=$ac_cv_prog_CXXCPP
 else
@@ -12348,15 +12525,15 @@ do
   # 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
+@%:@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
@@ -12367,7 +12544,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_cxx_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -12383,7 +12560,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -12450,7 +12627,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -12526,9 +12703,9 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
     if test "$GXX" = yes; then
       # Set up default GNU C++ configuration
 
+      
 
-
-# Check whether --with-gnu-ld was given.
+@%:@ 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
@@ -12801,7 +12978,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -12820,7 +12997,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__CXX"; then
     lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__CXX
@@ -12855,7 +13032,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -12874,7 +13051,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__CXX"; then
     lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__CXX
@@ -12991,15 +13168,15 @@ fi
 	esac
 	;;
       darwin* | rhapsody*)
-
-
+        
+  
   archive_cmds_need_lc_CXX=no
   hardcode_direct_CXX=no
   hardcode_automatic_CXX=yes
   hardcode_shlibpath_var_CXX=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec_CXX=''
   fi
@@ -13060,9 +13237,6 @@ fi
         ld_shlibs_CXX=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         link_all_deplibs_CXX=yes
@@ -13224,7 +13398,7 @@ fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13886,34 +14060,34 @@ 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=
@@ -14084,7 +14258,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -14148,7 +14322,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -14242,7 +14416,7 @@ case $host_os in
     lt_prog_compiler_pic_CXX=
     ;;
   *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
     ;;
 esac
 
@@ -14269,7 +14443,7 @@ 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"
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -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
@@ -14519,6 +14693,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -14593,7 +14770,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
@@ -14953,17 +15130,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -15080,7 +15246,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -15119,7 +15285,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -15144,6 +15310,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -15426,7 +15604,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -15665,7 +15843,7 @@ 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
+  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.
@@ -15893,7 +16071,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -16022,7 +16200,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -16207,7 +16385,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -16247,15 +16425,15 @@ do
   # 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
+@%:@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
@@ -16266,7 +16444,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -16287,7 +16465,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -16306,15 +16484,15 @@ do
   # 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
+@%:@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
@@ -16325,7 +16503,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -16341,7 +16519,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -16406,9 +16584,9 @@ do :
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -16466,7 +16644,7 @@ else
               */
              _Bool q = true;
              _Bool *pq = &q;
-
+           
 int
 main ()
 {
@@ -16477,7 +16655,7 @@ main ()
              /* Refer to every declared value, to avoid compiler optimizations.  */
              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
                      + !m + !n + !o + !p + !q + !pq);
-
+           
   ;
   return 0;
 }
@@ -16493,9 +16671,9 @@ fi
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+@%:@define HAVE__BOOL 1
 _ACEOF
 
 
@@ -16503,27 +16681,27 @@ fi
 
 
 if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
 if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
+@%:@define HAVE_PTRDIFF_T 1
 _ACEOF
 
 
@@ -16536,9 +16714,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
 if test "x$ac_cv_header_stdlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_STDLIB_H 1
+@%:@define HAVE_STDLIB_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -16580,29 +16758,29 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
 if test $ac_cv_func_malloc_0_nonnull = yes; then :
-
-$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h
 
 else
-  $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
+  $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h
 
-   case " $LIBOBJS " in
+   case " $LIB@&t at OBJS " in
   *" malloc.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
+  *) LIB@&t at OBJS="$LIB@&t at OBJS malloc.$ac_objext"
  ;;
 esac
 
-
-$as_echo "#define malloc rpl_malloc" >>confdefs.h
+   
+$as_echo "@%:@define malloc rpl_malloc" >>confdefs.h
 
 fi
 
 
 
 # Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
+@%:@ Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
+  enableval=$enable_largefile; 
 fi
 
 if test "$enable_largefile" != no; then
@@ -16620,12 +16798,12 @@ else
 	 # so use the C compiler's -n32 option if that helps.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16666,12 +16844,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16689,13 +16867,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
+@%:@define _FILE_OFFSET_BITS 64
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16719,9 +16897,9 @@ fi
 $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
 ;;
 esac
@@ -16735,12 +16913,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16758,13 +16936,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
+@%:@define _LARGE_FILES 1
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16788,16 +16966,16 @@ fi
 $as_echo "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+@%:@define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
 ;;
 esac
 rm -rf conftest*
   fi
 
-
+  
 fi
 
 
@@ -16807,9 +16985,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
 if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_NETCDF_H 1
+@%:@define HAVE_NETCDF_H 1
 _ACEOF
-
+ 
 else
   as_fn_error $? "netcdf.h could not be found. Please set CPPFLAGS." "$LINENO" 5
 fi
@@ -16857,7 +17035,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_nc_create+:} false; then :
-
+  
 else
   ac_cv_search_nc_create=no
 fi
@@ -16869,7 +17047,7 @@ $as_echo "$ac_cv_search_nc_create" >&6; }
 ac_res=$ac_cv_search_nc_create
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 for ac_func in nc_def_opaque nccreate nc_set_log_level oc_open nc_use_parallel_enabled
@@ -16878,9 +17056,9 @@ do :
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
@@ -16891,8 +17069,8 @@ test "x$ac_cv_func_oc_open" = xyes && nc_has_dap=yes || nc_has_dap=no
 nc_build_v2=$ac_cv_func_nccreate
 nc_build_v4=$ac_cv_func_nc_def_opaque
 if test "x$nc_build_v4" = xyes; then
-
-$as_echo "#define USE_NETCDF4 1" >>confdefs.h
+   
+$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
 
 else
    as_fn_error $? "NetCDF must be built with netCDF-4 enabled." "$LINENO" 5
@@ -16947,6 +17125,14 @@ else
   BUILD_PARALLEL_FALSE=
 fi
 
+ if test x$enable_doxygen = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
  if test "x$enable_valgrind_tests" = xyes; then
   USE_VALGRIND_TESTS_TRUE=
   USE_VALGRIND_TESTS_FALSE='#'
@@ -16991,7 +17177,7 @@ HAS_NC4=$nc_build_v4
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: generating header files and makefiles" >&5
 $as_echo "$as_me: generating header files and makefiles" >&6;}
-ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile ncxx4-config netcdf-cxx4.pc"
+ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile docs/Makefile ncxx4-config netcdf-cxx4.pc"
 
 
 cat >confcache <<\_ACEOF
@@ -17089,7 +17275,7 @@ DEFS=-DHAVE_CONFIG_H
 ac_libobjs=
 ac_ltlibobjs=
 U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+for ac_i in : $LIB@&t at OBJS; 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"`
@@ -17098,7 +17284,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   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
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
@@ -17135,6 +17321,10 @@ if test -z "${BUILD_BENCHMARKS_TRUE}" && test -z "${BUILD_BENCHMARKS_FALSE}"; th
   as_fn_error $? "conditional \"BUILD_BENCHMARKS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+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
@@ -17171,6 +17361,10 @@ if test -z "${BUILD_PARALLEL_TRUE}" && test -z "${BUILD_PARALLEL_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_PARALLEL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_VALGRIND_TESTS_TRUE}" && test -z "${USE_VALGRIND_TESTS_FALSE}"; then
   as_fn_error $? "conditional \"USE_VALGRIND_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17212,9 +17406,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -17245,7 +17439,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -17278,7 +17472,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -17323,11 +17517,11 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -17337,41 +17531,41 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ 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 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_exit
 
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ 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.
+@%:@ 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 ()
   {
@@ -17384,11 +17578,11 @@ else
   }
 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.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -17448,7 +17642,7 @@ as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -17488,9 +17682,9 @@ 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
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -17534,7 +17728,7 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p='mkdir -p "$as_dir"'
 else
@@ -17543,13 +17737,13 @@ else
 fi
 
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
+} @%:@ as_fn_executable_p
 as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
@@ -17572,7 +17766,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-cxx4 $as_me 4.2.1, which was
+This file was extended by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17618,9 +17812,9 @@ Usage: $0 [OPTION]... [TAG]...
                    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]
+      --file=FILE[:TEMPLATE] 
                    instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
+      --header=FILE[:TEMPLATE] 
                    instantiate the configuration header FILE
 
 Configuration files:
@@ -17638,7 +17832,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-cxx4 config.status 4.2.1
+netCDF-cxx4 config.status 4.3.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -17746,8 +17940,8 @@ 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. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
   $as_echo "$ac_log"
 } >&5
@@ -18143,11 +18337,13 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "docs/Doxyfile") CONFIG_FILES="$CONFIG_FILES docs/Doxyfile" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "cxx4/Makefile") CONFIG_FILES="$CONFIG_FILES cxx4/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "ncxx4-config") CONFIG_FILES="$CONFIG_FILES ncxx4-config" ;;
     "netcdf-cxx4.pc") CONFIG_FILES="$CONFIG_FILES netcdf-cxx4.pc" ;;
 
@@ -18737,7 +18933,7 @@ $as_echo X"$_am_arg" |
 	  }
 	  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;}
  ;;
@@ -18838,8 +19034,8 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "libtool":C)
-
+    "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
@@ -19307,7 +19503,7 @@ _LT_EOF
     ;;
   esac
 
-
+  
 ltmain="$ac_aux_dir/ltmain.sh"
 
 
@@ -19638,6 +19834,7 @@ _LT_EOF
     "Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "cxx4/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "examples/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
+    "docs/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "ncxx4-config":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "netcdf-cxx4.pc":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
 
@@ -19678,4 +19875,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
-
diff --git a/configure b/autom4te.cache/output.2
old mode 100755
new mode 100644
similarity index 96%
copy from configure
copy to autom4te.cache/output.2
index 93ac9a4..fcfad29
--- a/configure
+++ b/autom4te.cache/output.2
@@ -1,15 +1,15 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.2.1.
-#
-# Report bugs to <support-netcdf at unidata.ucar.edu>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.3.0.
+@%:@
+@%:@ Report bugs to <support-netcdf at unidata.ucar.edu>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -24,9 +24,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -57,7 +57,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -90,7 +90,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -145,7 +145,7 @@ export LANGUAGE
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -168,9 +168,9 @@ if test "x$CONFIG_SHELL" = x; then
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
 else
-  case \`(set -o) 2>/dev/null\` in #(
+  case \`(set -o) 2>/dev/null\` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -188,7 +188,7 @@ 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
@@ -213,7 +213,7 @@ 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
@@ -222,7 +222,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
   as_found=:
-  case $as_dir in #(
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
@@ -254,7 +254,7 @@ IFS=$as_save_IFS
 BASH_ENV=/dev/null
 ENV=/dev/null
 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
+case $- in @%:@ ((((
   *v*x* | *x*v* ) as_opts=-vx ;;
   *v* ) as_opts=-v ;;
   *x* ) as_opts=-x ;;
@@ -293,36 +293,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
 ## --------------------- ##
 ## M4sh Shell Functions. ##
 ## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ 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 STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ 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 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_exit
 
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -366,21 +366,21 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_executable_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
   eval 'as_fn_append ()
   {
@@ -393,11 +393,11 @@ else
   }
 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.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -411,11 +411,11 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -425,7 +425,7 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -509,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
 }
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -581,7 +581,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-cxx4'
 PACKAGE_TARNAME='netcdf-cxx4'
-PACKAGE_VERSION='4.2.1'
-PACKAGE_STRING='netCDF-cxx4 4.2.1'
+PACKAGE_VERSION='4.3.0'
+PACKAGE_STRING='netCDF-cxx4 4.3.0'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -651,7 +651,7 @@ BUILD_V2_FALSE
 BUILD_V2_TRUE
 USE_NETCDF4_FALSE
 USE_NETCDF4_TRUE
-LIBOBJS
+LIB@&t at OBJS
 CXXCPP
 am__fastdepCXX_FALSE
 am__fastdepCXX_TRUE
@@ -698,6 +698,14 @@ LDFLAGS
 CFLAGS
 CC
 LIBTOOL
+HAVE_DOT
+DOT
+DOXYGEN
+DOXYGEN_SEARCHENGINE
+DOXYGEN_HEADER_FILE
+DOXYGEN_CSS_FILE
+BUILD_DOCS_FALSE
+BUILD_DOCS_TRUE
 BUILD_BENCHMARKS_FALSE
 BUILD_BENCHMARKS_TRUE
 LARGE_FILE_TESTS_FALSE
@@ -793,6 +801,7 @@ enable_extra_tests
 enable_large_file_tests
 enable_benchmarks
 with_temp_large
+enable_doxygen
 enable_shared
 enable_static
 with_pic
@@ -1356,7 +1365,7 @@ 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 netCDF-cxx4 4.2.1 to adapt to many kinds of systems.
+\`configure' configures netCDF-cxx4 4.3.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1378,9 +1387,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1404,7 +1413,7 @@ Fine tuning of the installation directories:
   --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/netcdf-cxx4]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/netcdf-cxx4@:>@
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1427,7 +1436,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-cxx4 4.2.1:";;
+     short | recursive ) echo "Configuration of netCDF-cxx4 4.3.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1437,24 +1446,25 @@ Optional Features:
   --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-maintainer-mode
+  --enable-maintainer-mode 
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
   --enable-extra-tests    run some extra tests that may not pass because of
                           known issues
-  --enable-large-file-tests
+  --enable-large-file-tests 
                           Run tests which create very large data files (~13 GB
                           disk space required, but it will be recovered when
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks tests (if any).
-  --enable-shared[=PKGS]  build shared libraries [default=yes]
-  --enable-static[=PKGS]  build static libraries [default=yes]
-  --enable-fast-install[=PKGS]
-                          optimize for fast installation [default=yes]
-  --enable-dependency-tracking
+  --enable-doxygen        Enable generation of documentation.
+  --enable-shared@<:@=PKGS@:>@  build shared libraries @<:@default=yes@:>@
+  --enable-static@<:@=PKGS@:>@  build static libraries @<:@default=yes@:>@
+  --enable-fast-install@<:@=PKGS@:>@ 
+                          optimize for fast installation @<:@default=yes@:>@
+  --enable-dependency-tracking 
                           do not reject slow dependency extractors
-  --disable-dependency-tracking
+  --disable-dependency-tracking 
                           speeds up one-time build
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-largefile     omit support for large files
@@ -1462,13 +1472,13 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-temp-large=<directory>
+  --with-temp-large=<directory> 
                           specify directory where large files (i.e. >2 GB)
                           will be written, if large files tests are run with
                           --enable-large-file-tests
-  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
-                          both]
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic@<:@=PKGS@:>@       try to use only PIC/non-PIC objects @<:@default=use
+                          both@:>@
+  --with-gnu-ld           assume the C compiler uses GNU ld @<:@default=no@:>@
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
 
@@ -1551,7 +1561,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-cxx4 configure 4.2.1
+netCDF-cxx4 configure 4.3.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1565,9 +1575,9 @@ 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 LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@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
@@ -1601,11 +1611,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@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
@@ -1647,12 +1657,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile 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
@@ -1664,7 +1674,7 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   eval "$3=yes"
@@ -1678,11 +1688,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@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
@@ -1715,12 +1725,12 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@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
@@ -1757,11 +1767,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
 
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func 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
@@ -1824,11 +1834,11 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_func
+} @%:@ 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 LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@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
@@ -1862,11 +1872,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_compile
+} @%:@ 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 LINENO
+@%:@ ------------------------
+@%:@ Try to preprocess conftest. at S|@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
@@ -1899,11 +1909,11 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_cpp
+} @%:@ 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 LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@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
@@ -1945,13 +1955,13 @@ fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_link
+} @%:@ ac_fn_cxx_try_link
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel 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
@@ -1971,7 +1981,7 @@ $as_echo_n "checking $2 usability... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   ac_header_compiler=yes
@@ -1987,7 +1997,7 @@ $as_echo "$ac_header_compiler" >&6; }
 $as_echo_n "checking $2 presence... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$2>
+@%:@include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   ac_header_preproc=yes
@@ -2036,12 +2046,12 @@ $as_echo "$ac_res" >&6; }
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2077,7 +2087,7 @@ if (sizeof (($2)))
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   eval "$3=yes"
 fi
@@ -2090,12 +2100,12 @@ eval ac_res=\$$3
 $as_echo "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_type
+} @%:@ ac_fn_c_check_type
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by netCDF-cxx4 $as_me 4.2.1, which was
+It was created by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2301,27 +2311,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
@@ -2331,7 +2341,7 @@ ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
   # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
+  case $CONFIG_SITE in @%:@((
     -*)  ac_site_file1=./$CONFIG_SITE;;
     */*) ac_site_file1=$CONFIG_SITE;;
     *)   ac_site_file1=./$CONFIG_SITE;;
@@ -2446,11 +2456,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.2.1>VERSION
+echo -n 4.3.0>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.2.1" >&5
-$as_echo "$as_me: netCDF-cxx4 4.2.1" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.3.0" >&5
+$as_echo "$as_me: netCDF-cxx4 4.3.0" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -2629,7 +2639,7 @@ 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 #((
+case $as_dir/ in @%:@((
   ./ | .// | /[cC]/* | \
   /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
   ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -3026,12 +3036,12 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# Check whether --enable-silent-rules was given.
+@%:@ Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
-  enableval=$enable_silent_rules;
+  enableval=$enable_silent_rules; 
 fi
 
-case $enable_silent_rules in # (((
+case $enable_silent_rules in @%:@ (((
   yes) AM_DEFAULT_VERBOSITY=0;;
    no) AM_DEFAULT_VERBOSITY=1;;
     *) AM_DEFAULT_VERBOSITY=1;;
@@ -3087,16 +3097,16 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-cxx4'
- VERSION='4.2.1'
+ VERSION='4.3.0'
 
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
 _ACEOF
 
-
+ 
 cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
 _ACEOF
 
 # Some tools Automake needs.
@@ -3182,7 +3192,7 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
+    @%:@ Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
@@ -3200,6 +3210,7 @@ else
 fi
 
   MAINT=$MAINTAINER_MODE_TRUE
+  
 
 
 # Check for the existance of this file before proceeding.
@@ -3211,17 +3222,17 @@ $as_echo "$as_me: checking user options" >&6;}
 # Does the user want to do some extra tests?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether netCDF extra tests should be run (developers only)" >&5
 $as_echo_n "checking whether netCDF extra tests should be run (developers only)... " >&6; }
-# Check whether --enable-extra-tests was given.
+@%:@ Check whether --enable-extra-tests was given.
 if test "${enable_extra_tests+set}" = set; then :
-  enableval=$enable_extra_tests;
+  enableval=$enable_extra_tests; 
 fi
 
 test "x$enable_extra_tests" = xyes || enable_extra_tests=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extra_tests" >&5
 $as_echo "$enable_extra_tests" >&6; }
 if test "x$enable_extra_tests" = xyes; then
-
-$as_echo "#define EXTRA_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define EXTRA_TESTS 1" >>confdefs.h
 
 fi
  if test x$enable_extra_tests = xyes; then
@@ -3236,9 +3247,9 @@ fi
 # Does the user want to run tests for large files (> 2GiB)?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether large file (> 2GB) tests should be run" >&5
 $as_echo_n "checking whether large file (> 2GB) tests should be run... " >&6; }
-# Check whether --enable-large-file-tests was given.
+@%:@ Check whether --enable-large-file-tests was given.
 if test "${enable_large_file_tests+set}" = set; then :
-  enableval=$enable_large_file_tests;
+  enableval=$enable_large_file_tests; 
 fi
 
 test "x$enable_large_file_tests" = xyes || enable_large_file_tests=no
@@ -3253,17 +3264,17 @@ else
 fi
 
 if test "x$enable_large_file_tests" = xyes; then
-
-$as_echo "#define LARGE_FILE_TESTS 1" >>confdefs.h
+   
+$as_echo "@%:@define LARGE_FILE_TESTS 1" >>confdefs.h
 
 fi
 
 # Does the user want to run benchmarks?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether benchmaks should be run (experimental)" >&5
 $as_echo_n "checking whether benchmaks should be run (experimental)... " >&6; }
-# Check whether --enable-benchmarks was given.
+@%:@ Check whether --enable-benchmarks was given.
 if test "${enable_benchmarks+set}" = set; then :
-  enableval=$enable_benchmarks;
+  enableval=$enable_benchmarks; 
 fi
 
 test "x$enable_benchmarks" = xyes || enable_benchmarks=no
@@ -3284,7 +3295,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to put large temp files if large file tests are run" >&5
 $as_echo_n "checking where to put large temp files if large file tests are run... " >&6; }
 
-# Check whether --with-temp-large was given.
+@%:@ Check whether --with-temp-large was given.
 if test "${with_temp_large+set}" = set; then :
   withval=$with_temp_large; TEMP_LARGE=$with_temp_large
 fi
@@ -3295,10 +3306,161 @@ $as_echo "$TEMP_LARGE" >&6; }
 #AC_SUBST(TEMP_LARGE)
 
 cat >>confdefs.h <<_ACEOF
-#define TEMP_LARGE "$TEMP_LARGE"
+@%:@define TEMP_LARGE "$TEMP_LARGE"
 _ACEOF
 
 
+
+####
+# Doxygen and doxygen-related options.
+####
+@%:@ Check whether --enable-doxygen was given.
+if test "${enable_doxygen+set}" = set; then :
+  enableval=$enable_doxygen; 
+fi
+
+test "x$enable_doxygen" = xyes || enable_doxygen=no
+ if test "x$enable_doxygen" = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
+
+
+##
+# Eventually set these depending on an upcoming 'build release docs'
+# option.  See configure.ac in netcdf-c for guidance.
+##
+
+
+DOXYGEN_SEARCHENGINE="YES"
+
+
+##
+# Is doxygen installed? If so, have configure construct the Doxyfile.
+##
+for ac_prog in doxygen
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOXYGEN"; then
+  ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOXYGEN="$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
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+$as_echo "$DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOXYGEN" && break
+done
+
+if test -z "$DOXYGEN"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
+$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
+fi
+
+# Is graphviz/dot installed? If so, we'll use dot to create
+# graphs in the documentation.
+for ac_prog in dot
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOT"; then
+  ac_cv_prog_DOT="$DOT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOT="$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
+DOT=$ac_cv_prog_DOT
+if test -n "$DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOT" && break
+done
+
+if test -z "$DOT"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
+   HAVE_DOT=NO
+elif test "x$enable_dot" = xno; then
+   HAVE_DOT=NO
+else
+   HAVE_DOT=YES
+fi
+
+# If we have doxygen, and it's enabled, then process the file.
+if test "x$enable_doxygen" != xno; then
+   if test -n "$DOXYGEN"; then
+        
+        ac_config_files="$ac_config_files docs/Doxyfile"
+
+   fi
+# Note: the list of files to input to doxygen
+# has been moved to docs/Doxyfile.in so
+# that make distcheck works correctly.
+# Any new inputs should be inserted into
+# docs/Doxyfile.in and possibley docs/Makefile.am
+fi
+
+#####
+# End Doxygen and doxygen-related options.
+#####
+
 # Valgrind tests don't work with shared builds because of some libtool
 # weirdness.
 if test "x$enable_shared" = xyes; then
@@ -3325,14 +3487,14 @@ esac
 macro_version='2.4.2'
 macro_revision='1.3337'
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -3383,7 +3545,7 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO ""
+    $ECHO "" 
 }
 
 case "$ECHO" in
@@ -3398,14 +3560,14 @@ esac
 
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 DEPDIR="${am__leading_dot}deps"
@@ -3452,9 +3614,9 @@ fi
 $as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
+  enableval=$enable_dependency_tracking; 
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
@@ -3644,7 +3806,7 @@ 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
+  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.
@@ -3941,7 +4103,7 @@ EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdio.h>
+@%:@include <stdio.h>
 int
 main ()
 {
@@ -4122,7 +4284,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -4251,7 +4413,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -4436,7 +4598,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -4519,14 +4681,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
 test -z "$SED" && SED=sed
 Xsed="$SED -e 1s/^X//"
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -4590,7 +4752,7 @@ 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; }
@@ -4657,7 +4819,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
-
+ 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
@@ -4724,29 +4886,29 @@ 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.
+@%:@ 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
@@ -4852,9 +5014,9 @@ 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
@@ -5024,7 +5186,7 @@ fi
       ;;
     esac
   fi
-
+  
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
   fi
@@ -5032,9 +5194,9 @@ 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; }
@@ -5167,7 +5329,8 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$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
@@ -5209,9 +5372,9 @@ $as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
-
-
-
+    
+    
+    
 
 
 : ${CP="cp -f"}
@@ -5248,9 +5411,9 @@ else
   lt_unset=false
 fi
 
-
-
-
+    
+    
+    
 
 # test EBCDIC or ASCII
 case `echo X|tr X '\101'` in
@@ -5265,13 +5428,13 @@ case `echo X|tr X '\101'` in
   ;;
 esac
 
+    
+    
+    
 
-
-
-
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
@@ -5316,9 +5479,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
@@ -5343,9 +5506,9 @@ to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-
-
-
+    
+    
+    
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
 $as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -5377,13 +5540,13 @@ case $host_os in
     ;;
 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.
@@ -5479,9 +5642,9 @@ fi
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
 
-
-
-
+    
+    
+    
 
 
 
@@ -5568,10 +5731,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -5610,11 +5769,11 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   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
@@ -5711,24 +5870,24 @@ deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -5825,9 +5984,9 @@ fi
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-
-
-
+    
+    
+    
 
 
 
@@ -5867,9 +6026,9 @@ sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
-
-
-
+    
+    
+    
 
 
 
@@ -5976,14 +6135,14 @@ fi
 : ${AR=ar}
 : ${AR_FLAGS=cru}
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
@@ -6024,10 +6183,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
         fi
       fi
       rm -f conftest.* libconftest.a
-
+     
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+  
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
@@ -6038,9 +6197,9 @@ else
   archiver_list_spec=$lt_cv_ar_at_file
 fi
 
-
-
-
+    
+    
+    
 
 
 
@@ -6138,9 +6297,9 @@ fi
 
 test -z "$STRIP" && STRIP=:
 
-
-
-
+    
+    
+    
 
 
 if test -n "$ac_tool_prefix"; then
@@ -6237,9 +6396,9 @@ fi
 
 test -z "$RANLIB" && RANLIB=:
 
-
-
-
+    
+    
+    
 
 
 # Determine commands to create old-style static archives.
@@ -6266,43 +6425,43 @@ case $host_os in
     lock_old_archive_extraction=no ;;
 esac
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
@@ -6320,7 +6479,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
+  
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -6462,12 +6621,12 @@ _LT_EOF
 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
 /* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
+# define LT@&t at _DLSYM_CONST
 #else
-# define LT_DLSYM_CONST const
+# define LT@&t at _DLSYM_CONST const
 #endif
 
 #ifdef __cplusplus
@@ -6481,7 +6640,7 @@ _LT_EOF
 	  cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
+LT@&t at _DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -6564,37 +6723,37 @@ elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
-# Check whether --with-sysroot was given.
+@%:@ Check whether --with-sysroot was given.
 if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+  withval=$with_sysroot; 
 else
   with_sysroot=no
 fi
@@ -6622,13 +6781,13 @@ esac
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
 $as_echo "${lt_sysroot:-no}" >&6; }
 
+    
+    
+    
 
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
+  enableval=$enable_libtool_lock; 
 fi
 
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -6692,7 +6851,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -6708,9 +6867,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -6729,7 +6898,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -6945,9 +7117,9 @@ if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 
-
-
-
+    
+    
+    
 
 
   case $host_os in
@@ -7412,30 +7584,30 @@ else
   OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
+    
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
+    
 
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -7502,7 +7674,7 @@ 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; }
@@ -7537,7 +7709,7 @@ _LT_EOF
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+    
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
@@ -7605,15 +7777,15 @@ do
   # 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
+@%:@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
@@ -7624,7 +7796,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -7645,7 +7817,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -7664,15 +7836,15 @@ do
   # 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
+@%:@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
@@ -7683,7 +7855,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -7699,7 +7871,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -7750,7 +7922,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "memchr" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7767,7 +7939,7 @@ if test $ac_cv_header_stdc = yes; then
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "free" >/dev/null 2>&1; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7808,7 +7980,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
+  
 else
   ac_cv_header_stdc=no
 fi
@@ -7821,8 +7993,8 @@ 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
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
@@ -7835,9 +8007,9 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_include
 "
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -7849,9 +8021,9 @@ do :
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -7865,12 +8037,12 @@ done
 
 
         enable_dlopen=no
-
+  
 
   enable_win32_dll=no
+  
 
-
-            # Check whether --enable-shared was given.
+            @%:@ Check whether --enable-shared was given.
 if test "${enable_shared+set}" = set; then :
   enableval=$enable_shared; p=${PACKAGE-default}
     case $enableval in
@@ -7894,14 +8066,14 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-  # Check whether --enable-static was given.
+  @%:@ Check whether --enable-static was given.
 if test "${enable_static+set}" = set; then :
   enableval=$enable_static; p=${PACKAGE-default}
     case $enableval in
@@ -7925,15 +8097,15 @@ else
 fi
 
 
+    
+    
+    
+    
 
 
 
-
-
-
-
-
-# Check whether --with-pic was given.
+  
+@%:@ Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
   withval=$with_pic; lt_p=${PACKAGE-default}
     case $withval in
@@ -7959,12 +8131,12 @@ fi
 test -z "$pic_mode" && pic_mode=default
 
 
+    
+    
+    
 
 
-
-
-
-  # Check whether --enable-fast-install was given.
+  @%:@ 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
@@ -7989,12 +8161,12 @@ fi
 
 
 
+    
+    
+    
 
 
-
-
-
-
+  
 
 
 # This can be used to rebuild libtool when needed
@@ -8005,46 +8177,46 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 test -z "$LN_S" && LN_S="ln -s"
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 if test -n "${ZSH_VERSION+set}" ; then
@@ -8070,12 +8242,12 @@ fi
 $as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
-
-
-
+    
+    
+    
 
 cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
 _ACEOF
 
 
@@ -8189,9 +8361,9 @@ else
 $as_echo "no" >&6; }
 fi
 
-
-
-
+    
+    
+    
 
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
@@ -8326,7 +8498,7 @@ $RM -r conftest*
 ## 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
@@ -8383,9 +8555,9 @@ fi
 
 fi
 
-
-
-
+    
+    
+    
 
 
   lt_prog_compiler_wl=
@@ -8537,7 +8709,7 @@ lt_prog_compiler_static=
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -8695,7 +8867,7 @@ case $host_os in
     lt_prog_compiler_pic=
     ;;
   *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
     ;;
 esac
 
@@ -8722,7 +8894,7 @@ 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"
+   lt_compiler_flag="$lt_prog_compiler_pic@&t@ -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
@@ -8764,15 +8936,15 @@ fi
 
 fi
 
+    
+    
+    
 
 
 
-
-
-
-
-
-
+    
+    
+    
 
 #
 # Check to make sure the static flag actually works.
@@ -8816,9 +8988,9 @@ else
 fi
 
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -8871,9 +9043,9 @@ 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
@@ -8951,9 +9123,9 @@ else
   need_locks=no
 fi
 
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -9015,6 +9187,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -9236,7 +9411,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -9413,6 +9588,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	link_all_deplibs=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -9456,7 +9632,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -9475,7 +9651,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -9509,7 +9685,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -9528,7 +9704,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -9638,15 +9814,15 @@ fi
       ;;
 
     darwin* | rhapsody*)
-
-
+      
+  
   archive_cmds_need_lc=no
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec=''
   fi
@@ -9662,7 +9838,7 @@ fi
     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
@@ -9758,7 +9934,7 @@ fi
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-
+	
 	  # Older versions of the 11.00 compiler do not understand -b yet
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
@@ -9866,7 +10042,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       link_all_deplibs=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -10116,17 +10292,17 @@ test "$ld_shlibs" = no && can_build_shared=no
 with_gnu_ld=$with_gnu_ld
 
 
+    
+    
+    
 
+    
+    
+    
 
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
 #
@@ -10159,194 +10335,194 @@ else
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl
-	  pic_flag=$lt_prog_compiler_pic
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag
-	  allow_undefined_flag=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc=no
-	  else
-	    lt_cv_archive_cmds_need_lc=yes
-	  fi
-	  allow_undefined_flag=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -10703,17 +10879,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -10830,7 +10995,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -10869,7 +11034,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -10894,6 +11059,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -11099,94 +11276,94 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
 fi
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+    
+    
+    
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -11227,9 +11404,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-
-
-
+    
+    
+    
 
 
   if test "x$enable_dlopen" != xyes; then
@@ -11298,11 +11475,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-
+  
     lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+    
 fi
 
     ;;
@@ -11473,19 +11650,19 @@ if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
-
+	      
 fi
 
-
+	    
 fi
 
-
+	  
 fi
 
-
+	
 fi
 
-
+      
 fi
 
     ;;
@@ -11607,7 +11784,7 @@ _LT_EOF
 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; }
@@ -11713,7 +11890,7 @@ _LT_EOF
 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; }
@@ -11736,22 +11913,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
+    
+    
+    
 
 
+    
+    
+    
 
 
-
-
-
-
-
-
-
-
-
-
+  
 striplib=
 old_striplib=
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -11782,14 +11959,14 @@ $as_echo "no" >&6; }
   esac
 fi
 
+    
+    
+    
 
 
-
-
-
-
-
-
+    
+    
+    
 
 
 
@@ -11830,7 +12007,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
-
+  
 
 
 fi
@@ -11849,8 +12026,8 @@ CC="$lt_save_CC"
 
 
 
-
-
+       
+       
 
 
 
@@ -12075,7 +12252,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-
+  
 else
   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
 	 CXXFLAGS="-g"
@@ -12240,7 +12417,7 @@ fi
 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
   am__fastdepCXX_TRUE=
@@ -12289,15 +12466,15 @@ do
   # 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
+@%:@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
@@ -12308,7 +12485,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_cxx_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -12329,7 +12506,7 @@ fi
 
     done
     ac_cv_prog_CXXCPP=$CXXCPP
-
+  
 fi
   CXXCPP=$ac_cv_prog_CXXCPP
 else
@@ -12348,15 +12525,15 @@ do
   # 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
+@%:@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
@@ -12367,7 +12544,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_cxx_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -12383,7 +12560,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -12450,7 +12627,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+  
 
 
 
@@ -12526,9 +12703,9 @@ cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
     if test "$GXX" = yes; then
       # Set up default GNU C++ configuration
 
+      
 
-
-# Check whether --with-gnu-ld was given.
+@%:@ 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
@@ -12801,7 +12978,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -12820,7 +12997,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__CXX"; then
     lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__CXX
@@ -12855,7 +13032,7 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-
+  
   lt_aix_libpath_sed='
       /Import File Strings/,/^$/ {
 	  /^0/ {
@@ -12874,7 +13051,7 @@ rm -f core conftest.err conftest.$ac_objext \
   if test -z "$lt_cv_aix_libpath__CXX"; then
     lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
-
+  
 fi
 
   aix_libpath=$lt_cv_aix_libpath__CXX
@@ -12991,15 +13168,15 @@ fi
 	esac
 	;;
       darwin* | rhapsody*)
-
-
+        
+  
   archive_cmds_need_lc_CXX=no
   hardcode_direct_CXX=no
   hardcode_automatic_CXX=yes
   hardcode_shlibpath_var_CXX=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
+    
   else
     whole_archive_flag_spec_CXX=''
   fi
@@ -13060,9 +13237,6 @@ fi
         ld_shlibs_CXX=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         link_all_deplibs_CXX=yes
@@ -13224,7 +13398,7 @@ fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13886,34 +14060,34 @@ 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=
@@ -14084,7 +14258,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -14148,7 +14322,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -14242,7 +14416,7 @@ case $host_os in
     lt_prog_compiler_pic_CXX=
     ;;
   *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
     ;;
 esac
 
@@ -14269,7 +14443,7 @@ 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"
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -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
@@ -14519,6 +14693,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -14593,7 +14770,7 @@ else
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
@@ -14953,17 +15130,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -15080,7 +15246,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -15119,7 +15285,7 @@ rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+    
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -15144,6 +15310,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -15426,7 +15604,7 @@ fi
 
 
 
-
+    
 
 
   fi # test -n "$compiler"
@@ -15665,7 +15843,7 @@ 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
+  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.
@@ -15893,7 +16071,7 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-
+  
 else
   ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
@@ -16022,7 +16200,7 @@ $as_echo "unsupported" >&6; } ;;
 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
 if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+  
 fi
 
 ac_ext=c
@@ -16207,7 +16385,7 @@ fi
 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
+ if 
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -16247,15 +16425,15 @@ do
   # 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
+@%:@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
@@ -16266,7 +16444,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -16287,7 +16465,7 @@ fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -16306,15 +16484,15 @@ do
   # 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
+@%:@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
@@ -16325,7 +16503,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext
   # can be detected and how.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
@@ -16341,7 +16519,7 @@ done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
-
+  
 else
   { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -16406,9 +16584,9 @@ do :
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -16466,7 +16644,7 @@ else
               */
              _Bool q = true;
              _Bool *pq = &q;
-
+           
 int
 main ()
 {
@@ -16477,7 +16655,7 @@ main ()
              /* Refer to every declared value, to avoid compiler optimizations.  */
              return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
                      + !m + !n + !o + !p + !q + !pq);
-
+           
   ;
   return 0;
 }
@@ -16493,9 +16671,9 @@ fi
 $as_echo "$ac_cv_header_stdbool_h" >&6; }
    ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
 if test "x$ac_cv_type__Bool" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
+@%:@define HAVE__BOOL 1
 _ACEOF
 
 
@@ -16503,27 +16681,27 @@ fi
 
 
 if test $ac_cv_header_stdbool_h = yes; then
-
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes; then :
-
+  
 else
-
+  
 cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
+@%:@define size_t unsigned int
 _ACEOF
 
 fi
 
 ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
 if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
-
+  
 cat >>confdefs.h <<_ACEOF
-#define HAVE_PTRDIFF_T 1
+@%:@define HAVE_PTRDIFF_T 1
 _ACEOF
 
 
@@ -16536,9 +16714,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
 if test "x$ac_cv_header_stdlib_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_STDLIB_H 1
+@%:@define HAVE_STDLIB_H 1
 _ACEOF
-
+ 
 fi
 
 done
@@ -16580,29 +16758,29 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
 if test $ac_cv_func_malloc_0_nonnull = yes; then :
-
-$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+  
+$as_echo "@%:@define HAVE_MALLOC 1" >>confdefs.h
 
 else
-  $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
+  $as_echo "@%:@define HAVE_MALLOC 0" >>confdefs.h
 
-   case " $LIBOBJS " in
+   case " $LIB@&t at OBJS " in
   *" malloc.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
+  *) LIB@&t at OBJS="$LIB@&t at OBJS malloc.$ac_objext"
  ;;
 esac
 
-
-$as_echo "#define malloc rpl_malloc" >>confdefs.h
+   
+$as_echo "@%:@define malloc rpl_malloc" >>confdefs.h
 
 fi
 
 
 
 # Check to see if any macros must be set to enable large (>2GB) files.
-# Check whether --enable-largefile was given.
+@%:@ Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
-  enableval=$enable_largefile;
+  enableval=$enable_largefile; 
 fi
 
 if test "$enable_largefile" != no; then
@@ -16620,12 +16798,12 @@ else
 	 # so use the C compiler's -n32 option if that helps.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16666,12 +16844,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16689,13 +16867,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
+@%:@define _FILE_OFFSET_BITS 64
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16719,9 +16897,9 @@ fi
 $as_echo "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
 _ACEOF
 ;;
 esac
@@ -16735,12 +16913,12 @@ else
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16758,13 +16936,13 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
+@%:@define _LARGE_FILES 1
+@%:@include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+@%:@define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16788,16 +16966,16 @@ fi
 $as_echo "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
-  *)
+  *) 
 cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
+@%:@define _LARGE_FILES $ac_cv_sys_large_files
 _ACEOF
 ;;
 esac
 rm -rf conftest*
   fi
 
-
+  
 fi
 
 
@@ -16807,9 +16985,9 @@ do :
   ac_fn_c_check_header_mongrel "$LINENO" "netcdf.h" "ac_cv_header_netcdf_h" "$ac_includes_default"
 if test "x$ac_cv_header_netcdf_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_NETCDF_H 1
+@%:@define HAVE_NETCDF_H 1
 _ACEOF
-
+ 
 else
   as_fn_error $? "netcdf.h could not be found. Please set CPPFLAGS." "$LINENO" 5
 fi
@@ -16857,7 +17035,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 done
 if ${ac_cv_search_nc_create+:} false; then :
-
+  
 else
   ac_cv_search_nc_create=no
 fi
@@ -16869,7 +17047,7 @@ $as_echo "$ac_cv_search_nc_create" >&6; }
 ac_res=$ac_cv_search_nc_create
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
+  
 fi
 
 for ac_func in nc_def_opaque nccreate nc_set_log_level oc_open nc_use_parallel_enabled
@@ -16878,9 +17056,9 @@ do :
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
@@ -16891,8 +17069,8 @@ test "x$ac_cv_func_oc_open" = xyes && nc_has_dap=yes || nc_has_dap=no
 nc_build_v2=$ac_cv_func_nccreate
 nc_build_v4=$ac_cv_func_nc_def_opaque
 if test "x$nc_build_v4" = xyes; then
-
-$as_echo "#define USE_NETCDF4 1" >>confdefs.h
+   
+$as_echo "@%:@define USE_NETCDF4 1" >>confdefs.h
 
 else
    as_fn_error $? "NetCDF must be built with netCDF-4 enabled." "$LINENO" 5
@@ -16947,6 +17125,14 @@ else
   BUILD_PARALLEL_FALSE=
 fi
 
+ if test x$enable_doxygen = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
  if test "x$enable_valgrind_tests" = xyes; then
   USE_VALGRIND_TESTS_TRUE=
   USE_VALGRIND_TESTS_FALSE='#'
@@ -16991,7 +17177,7 @@ HAS_NC4=$nc_build_v4
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: generating header files and makefiles" >&5
 $as_echo "$as_me: generating header files and makefiles" >&6;}
-ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile ncxx4-config netcdf-cxx4.pc"
+ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile docs/Makefile ncxx4-config netcdf-cxx4.pc"
 
 
 cat >confcache <<\_ACEOF
@@ -17089,7 +17275,7 @@ DEFS=-DHAVE_CONFIG_H
 ac_libobjs=
 ac_ltlibobjs=
 U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+for ac_i in : $LIB@&t at OBJS; 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"`
@@ -17098,7 +17284,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   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
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
@@ -17135,6 +17321,10 @@ if test -z "${BUILD_BENCHMARKS_TRUE}" && test -z "${BUILD_BENCHMARKS_FALSE}"; th
   as_fn_error $? "conditional \"BUILD_BENCHMARKS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+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
@@ -17171,6 +17361,10 @@ if test -z "${BUILD_PARALLEL_TRUE}" && test -z "${BUILD_PARALLEL_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_PARALLEL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_VALGRIND_TESTS_TRUE}" && test -z "${USE_VALGRIND_TESTS_FALSE}"; then
   as_fn_error $? "conditional \"USE_VALGRIND_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17212,9 +17406,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in #(
+  case `(set -o) 2>/dev/null` in @%:@(
   *posix*) :
-    set -o posix ;; #(
+    set -o posix ;; @%:@(
   *) :
      ;;
 esac
@@ -17245,7 +17439,7 @@ else
     as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
     as_echo_n_body='eval
       arg=$1;
-      case $arg in #(
+      case $arg in @%:@(
       *"$as_nl"*)
 	expr "X$arg" : "X\\(.*\\)$as_nl";
 	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -17278,7 +17472,7 @@ IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
-case $0 in #((
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -17323,11 +17517,11 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
   as_status=$1; test $as_status -eq 0 && as_status=1
@@ -17337,41 +17531,41 @@ as_fn_error ()
   fi
   $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
 
 
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
 as_fn_set_status ()
 {
   return $1
-} # as_fn_set_status
+} @%:@ 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 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_exit
 
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ 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.
+@%:@ 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 ()
   {
@@ -17384,11 +17578,11 @@ else
   }
 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.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
   eval 'as_fn_arith ()
   {
@@ -17448,7 +17642,7 @@ as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
 -n*)
   case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
@@ -17488,9 +17682,9 @@ 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
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
 as_fn_mkdir_p ()
 {
 
@@ -17534,7 +17728,7 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
   as_mkdir_p='mkdir -p "$as_dir"'
 else
@@ -17543,13 +17737,13 @@ else
 fi
 
 
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
+@%:@ as_fn_executable_p FILE
+@%:@ -----------------------
+@%:@ Test if FILE is an executable regular file.
 as_fn_executable_p ()
 {
   test -f "$1" && test -x "$1"
-} # as_fn_executable_p
+} @%:@ as_fn_executable_p
 as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
@@ -17572,7 +17766,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-cxx4 $as_me 4.2.1, which was
+This file was extended by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17618,9 +17812,9 @@ Usage: $0 [OPTION]... [TAG]...
                    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]
+      --file=FILE[:TEMPLATE] 
                    instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
+      --header=FILE[:TEMPLATE] 
                    instantiate the configuration header FILE
 
 Configuration files:
@@ -17638,7 +17832,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-cxx4 config.status 4.2.1
+netCDF-cxx4 config.status 4.3.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -17746,8 +17940,8 @@ 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. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
   $as_echo "$ac_log"
 } >&5
@@ -18143,11 +18337,13 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "docs/Doxyfile") CONFIG_FILES="$CONFIG_FILES docs/Doxyfile" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "cxx4/Makefile") CONFIG_FILES="$CONFIG_FILES cxx4/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "ncxx4-config") CONFIG_FILES="$CONFIG_FILES ncxx4-config" ;;
     "netcdf-cxx4.pc") CONFIG_FILES="$CONFIG_FILES netcdf-cxx4.pc" ;;
 
@@ -18737,7 +18933,7 @@ $as_echo X"$_am_arg" |
 	  }
 	  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;}
  ;;
@@ -18838,8 +19034,8 @@ $as_echo X"$file" |
   done
 }
  ;;
-    "libtool":C)
-
+    "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
@@ -19307,7 +19503,7 @@ _LT_EOF
     ;;
   esac
 
-
+  
 ltmain="$ac_aux_dir/ltmain.sh"
 
 
@@ -19638,6 +19834,7 @@ _LT_EOF
     "Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "cxx4/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "examples/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
+    "docs/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "ncxx4-config":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "netcdf-cxx4.pc":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
 
@@ -19678,4 +19875,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
-
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
new file mode 100644
index 0000000..aff2e86
--- /dev/null
+++ b/autom4te.cache/requests
@@ -0,0 +1,522 @@
+# This file was generated by Autom4te Thu Apr 10 10:06:43 UTC 2014.
+# It contains the lists of macros which have been traced.
+# It can be safely removed.
+
+ at request = (
+             bless( [
+                      '0',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        '-',
+                        '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
+                        '/usr/share/aclocal/argz.m4',
+                        '/usr/share/aclocal/libtool.m4',
+                        '/usr/share/aclocal/ltdl.m4',
+                        '/usr/share/aclocal/ltoptions.m4',
+                        '/usr/share/aclocal/ltsugar.m4',
+                        '/usr/share/aclocal/ltversion.m4',
+                        '/usr/share/aclocal/lt~obsolete.m4',
+                        '/usr/share/aclocal-1.14/amversion.m4',
+                        '/usr/share/aclocal-1.14/auxdir.m4',
+                        '/usr/share/aclocal-1.14/cond.m4',
+                        '/usr/share/aclocal-1.14/depend.m4',
+                        '/usr/share/aclocal-1.14/depout.m4',
+                        '/usr/share/aclocal-1.14/init.m4',
+                        '/usr/share/aclocal-1.14/install-sh.m4',
+                        '/usr/share/aclocal-1.14/lead-dot.m4',
+                        '/usr/share/aclocal-1.14/maintainer.m4',
+                        '/usr/share/aclocal-1.14/make.m4',
+                        '/usr/share/aclocal-1.14/missing.m4',
+                        '/usr/share/aclocal-1.14/options.m4',
+                        '/usr/share/aclocal-1.14/prog-cc-c-o.m4',
+                        '/usr/share/aclocal-1.14/runlog.m4',
+                        '/usr/share/aclocal-1.14/sanity.m4',
+                        '/usr/share/aclocal-1.14/silent.m4',
+                        '/usr/share/aclocal-1.14/strip.m4',
+                        '/usr/share/aclocal-1.14/substnot.m4',
+                        '/usr/share/aclocal-1.14/tar.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'LT_PROG_RC' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        'LT_LANG' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        'm4_pattern_forbid' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        'LT_OUTPUT' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        'AC_PROG_NM' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AM_PROG_LD' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        'AC_DEFUN' => 1,
+                        'LT_PROG_GO' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        '_LTDL_SETUP' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'AM_PROG_NM' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        '_LT_PROG_FC' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'gl_PREREQ_ARGZ' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'AC_LIBTOOL_F77' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'gl_FUNC_ARGZ' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AM_RUN_LOG' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'include' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'LT_PATH_LD' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'm4_include' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        'AC_PROG_LD' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        '_m4_warn' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'LT_LIB_M' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        'LTDL_INIT' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        'm4_pattern_allow' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'LT_INIT' => 1
+                      }
+                    ], 'Autom4te::Request' ),
+             bless( [
+                      '1',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        'aclocal.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        '_AM_COND_ELSE' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'm4_sinclude' => 1,
+                        'AC_FC_PP_SRCEXT' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'm4_include' => 1,
+                        'sinclude' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_SUBST_TRACE' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        '_m4_warn' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        'AC_FC_PP_DEFINE' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_INIT' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'AM_NLS' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AC_SUBST' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        'include' => 1,
+                        'AM_PROG_MOC' => 1,
+                        'AM_PROG_AR' => 1,
+                        'AM_MAKEFILE_INCLUDE' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'LT_INIT' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AM_POT_TOOLS' => 1,
+                        'AM_PROG_F77_C_O' => 1
+                      }
+                    ], 'Autom4te::Request' ),
+             bless( [
+                      '2',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        '-',
+                        '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4',
+                        '/usr/share/aclocal/argz.m4',
+                        '/usr/share/aclocal/ltdl.m4',
+                        '/usr/share/aclocal-1.14/amversion.m4',
+                        '/usr/share/aclocal-1.14/auxdir.m4',
+                        '/usr/share/aclocal-1.14/cond.m4',
+                        '/usr/share/aclocal-1.14/depend.m4',
+                        '/usr/share/aclocal-1.14/depout.m4',
+                        '/usr/share/aclocal-1.14/init.m4',
+                        '/usr/share/aclocal-1.14/install-sh.m4',
+                        '/usr/share/aclocal-1.14/lead-dot.m4',
+                        '/usr/share/aclocal-1.14/maintainer.m4',
+                        '/usr/share/aclocal-1.14/make.m4',
+                        '/usr/share/aclocal-1.14/missing.m4',
+                        '/usr/share/aclocal-1.14/options.m4',
+                        '/usr/share/aclocal-1.14/prog-cc-c-o.m4',
+                        '/usr/share/aclocal-1.14/runlog.m4',
+                        '/usr/share/aclocal-1.14/sanity.m4',
+                        '/usr/share/aclocal-1.14/silent.m4',
+                        '/usr/share/aclocal-1.14/strip.m4',
+                        '/usr/share/aclocal-1.14/substnot.m4',
+                        '/usr/share/aclocal-1.14/tar.m4',
+                        'm4/libtool.m4',
+                        'm4/ltoptions.m4',
+                        'm4/ltsugar.m4',
+                        'm4/ltversion.m4',
+                        'm4/lt~obsolete.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        'LT_PROG_RC' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'LT_OUTPUT' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        'm4_pattern_forbid' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        'LT_LANG' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'AC_PROG_NM' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'AC_DEFUN' => 1,
+                        'LT_PROG_GO' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AM_PROG_LD' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'gl_FUNC_ARGZ' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'AC_LIBTOOL_F77' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        'gl_PREREQ_ARGZ' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        '_LTDL_SETUP' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        '_LT_PROG_FC' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        'AM_PROG_NM' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        'include' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        'AU_DEFUN' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'AC_PROG_LD' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        '_m4_warn' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        'LT_PATH_LD' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'm4_include' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        'm4_pattern_allow' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'LTDL_INIT' => 1,
+                        'LT_INIT' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        'AC_PROG_LD_GNU' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'LT_LIB_M' => 1,
+                        'AC_LIBTOOL_SETUP' => 1
+                      }
+                    ], 'Autom4te::Request' )
+           );
+
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
new file mode 100644
index 0000000..de04714
--- /dev/null
+++ b/autom4te.cache/traces.0
@@ -0,0 +1,2756 @@
+m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
+
+AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_TYPES([error_t],
+  [],
+  [AC_DEFINE([error_t], [int],
+   [Define to a type to use for `error_t' if it is not otherwise available.])
+   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
+    does not typedef error_t.])],
+  [#if defined(HAVE_ARGZ_H)
+#  include <argz.h>
+#endif])
+
+ARGZ_H=
+AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
+	argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
+
+dnl if have system argz functions, allow forced use of
+dnl libltdl-supplied implementation (and default to do so
+dnl on "known bad" systems). Could use a runtime check, but
+dnl (a) detecting malloc issues is notoriously unreliable
+dnl (b) only known system that declares argz functions,
+dnl     provides them, yet they are broken, is cygwin
+dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
+dnl So, it's more straightforward simply to special case
+dnl this for known bad systems.
+AS_IF([test -z "$ARGZ_H"],
+    [AC_CACHE_CHECK(
+        [if argz actually works],
+        [lt_cv_sys_argz_works],
+        [[case $host_os in #(
+	 *cygwin*)
+	   lt_cv_sys_argz_works=no
+	   if test "$cross_compiling" != no; then
+	     lt_cv_sys_argz_works="guessing no"
+	   else
+	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
+	     save_IFS=$IFS
+	     IFS=-.
+	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
+	     IFS=$save_IFS
+	     lt_os_major=${2-0}
+	     lt_os_minor=${3-0}
+	     lt_os_micro=${4-0}
+	     if test "$lt_os_major" -gt 1 \
+		|| { test "$lt_os_major" -eq 1 \
+		  && { test "$lt_os_minor" -gt 5 \
+		    || { test "$lt_os_minor" -eq 5 \
+		      && test "$lt_os_micro" -gt 24; }; }; }; then
+	       lt_cv_sys_argz_works=yes
+	     fi
+	   fi
+	   ;; #(
+	 *) lt_cv_sys_argz_works=yes ;;
+	 esac]])
+     AS_IF([test "$lt_cv_sys_argz_works" = yes],
+        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
+                   [This value is set to 1 to indicate that the system argz facility works])],
+        [ARGZ_H=argz.h
+        AC_LIBOBJ([argz])])])
+
+AC_SUBST([ARGZ_H])
+])
+m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
+m4trace:/usr/share/aclocal/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])
+m4trace:/usr/share/aclocal/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])
+m4trace:/usr/share/aclocal/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
+m4trace:/usr/share/aclocal/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+m4trace:/usr/share/aclocal/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(C++)])
+m4trace:/usr/share/aclocal/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+m4trace:/usr/share/aclocal/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran 77)])
+m4trace:/usr/share/aclocal/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+m4trace:/usr/share/aclocal/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran)])
+m4trace:/usr/share/aclocal/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+m4trace:/usr/share/aclocal/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Java)])
+m4trace:/usr/share/aclocal/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+m4trace:/usr/share/aclocal/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Windows Resource)])
+m4trace:/usr/share/aclocal/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+m4trace:/usr/share/aclocal/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])
+m4trace:/usr/share/aclocal/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1858: -1- 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])
+])
+m4trace:/usr/share/aclocal/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2945: -1- 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
+])
+m4trace:/usr/share/aclocal/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3119: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3119: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3120: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3120: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3410: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7637: -1- 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
+])
+m4trace:/usr/share/aclocal/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
+])
+m4trace:/usr/share/aclocal/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
+])
+m4trace:/usr/share/aclocal/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])
+m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
+  m4_pattern_allow([^_LT_LIBOBJS$])
+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])
+m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+    [AS_HELP_STRING([--with-included-ltdl],
+                    [use the GNU ltdl sources included here])])
+
+if test "x$with_included_ltdl" != xyes; then
+  # We are not being forced to use the included libltdl sources, so
+  # decide whether there is a useful installed version we can use.
+  AC_CHECK_HEADER([ltdl.h],
+      [AC_CHECK_DECL([lt_dlinterface_register],
+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+	       [with_included_ltdl=no],
+	       [with_included_ltdl=yes])],
+	   [with_included_ltdl=yes],
+	   [AC_INCLUDES_DEFAULT
+	    #include <ltdl.h>])],
+      [with_included_ltdl=yes],
+      [AC_INCLUDES_DEFAULT]
+  )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+    [AS_HELP_STRING([--with-ltdl-include=DIR],
+                    [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+  if test -f "$with_ltdl_include/ltdl.h"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
+  fi
+else
+  with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
+                    [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+  if test -f "$with_ltdl_lib/libltdl.la"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
+  fi
+else
+  with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+  ,yes,no,no,)
+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
+	    [convenience], [_LTDL_CONVENIENCE],
+	    [installable], [_LTDL_INSTALLABLE],
+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+	;;
+  ,no,no,no,)
+	# If the included ltdl is not to be used, then use the
+	# preinstalled libltdl we found.
+	AC_DEFINE([HAVE_LTDL], [1],
+	  [Define this if a modern libltdl is already installed])
+	LIBLTDL=-lltdl
+	LTDLDEPS=
+	LTDLINCL=
+	;;
+  ,no*,no,*)
+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
+	;;
+  *)	with_included_ltdl=no
+	LIBLTDL="-L$with_ltdl_lib -lltdl"
+	LTDLDEPS=
+	LTDLINCL="-I$with_ltdl_include"
+	;;
+esac
+INCLTDL="$LTDLINCL"
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+    _ltdl_libobjs=
+    _ltdl_ltlibobjs=
+    if test -n "$_LT_LIBOBJS"; then
+      # Remove the extension.
+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+      done
+    fi
+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([gl_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used.  This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+    [LT_CONFIG_H=AH_HEADER],
+    [m4_ifset([AC_LIST_HEADERS],
+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
+	[])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+	[], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+m4_pattern_allow([LT_LIBEXT])dnl
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
+name=ltdl
+eval "LTDLOPEN=\"$libname_spec\""
+AC_SUBST([LTDLOPEN])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+  [lt_cv_sys_dlopen_deplibs],
+  [# PORTME does your system automatically load deplibs for dlopen?
+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+  # For now, we just catch OSes we know something about -- in the
+  # future, we'll try test this programmatically.
+  lt_cv_sys_dlopen_deplibs=unknown
+  case $host_os in
+  aix3*|aix4.1.*|aix4.2.*)
+    # Unknown whether this is true for these versions of AIX, but
+    # we want this `case' here to explicitly catch those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  aix[[4-9]]*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  amigaos*)
+    case $host_cpu in
+    powerpc)
+      lt_cv_sys_dlopen_deplibs=no
+      ;;
+    esac
+    ;;
+  darwin*)
+    # Assuming the user has installed a libdl from somewhere, this is true
+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  freebsd* | dragonfly*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    # GNU and its variants, using gnu ld.so (Glibc)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  hpux10*|hpux11*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  interix*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  irix[[12345]]*|irix6.[[01]]*)
+    # Catch all versions of IRIX before 6.2, and indicate that we don't
+    # know how it worked for any of those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  irix*)
+    # The case above catches anything before 6.2, and it's known that
+    # at 6.2 and later dlopen does load deplibs.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  openbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  osf[[1234]]*)
+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+    # it did *not* use an RPATH in a shared library to find objects the
+    # library depends on, so we explicitly say `no'.
+    lt_cv_sys_dlopen_deplibs=no
+    ;;
+  osf5.0|osf5.0a|osf5.1)
+    # dlopen *does* load deplibs and with the right loader patch applied
+    # it even uses RPATH in a shared library to search for shared objects
+    # that the library depends on, but there's no easy way to know if that
+    # patch is installed.  Since this is the case, all we can really
+    # say is unknown -- it depends on the patch being installed.  If
+    # it is, this changes to `yes'.  Without it, it would be `no'.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  osf*)
+    # the two cases above should catch all versions of osf <= 5.1.  Read
+    # the comments above for what we know about them.
+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+    # is used to find them so we can finally say `yes'.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  qnx*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  solaris*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    libltdl_cv_sys_dlopen_deplibs=yes
+    ;;
+  esac
+  ])
+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+    [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
+  [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+module=no
+eval libltdl_cv_shrext=$shrext_cmds
+  ])
+if test -n "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_MODULE_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+    [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_SHARED_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
+    [Define to the shared library suffix, say, ".dylib".])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which variable specifies run-time module search path],
+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
+if test -n "$lt_cv_module_path_var"; then
+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+    [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+  [lt_cv_sys_dlsearch_path],
+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+  sys_dlsearch_path=
+  for dir in $lt_cv_sys_dlsearch_path; do
+    if test -z "$sys_dlsearch_path"; then
+      sys_dlsearch_path="$dir"
+    else
+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
+    fi
+  done
+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+    [Define to the system default library search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+	[AC_DEFINE([HAVE_LIBDL], [1],
+		   [Define if you have the libdl library or equivalent.])
+	if test "$ac_cv_search_dlopen" != "none required" ; then
+	  LIBADD_DLOPEN="-ldl"
+	fi
+	libltdl_cv_lib_dl_dlopen="yes"
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+    ]], [[dlopen(0, 0);]])],
+	    [AC_DEFINE([HAVE_LIBDL], [1],
+		       [Define if you have the libdl library or equivalent.])
+	    libltdl_cv_func_dlopen="yes"
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+	[AC_CHECK_LIB([svld], [dlopen],
+		[AC_DEFINE([HAVE_LIBDL], [1],
+			 [Define if you have the libdl library or equivalent.])
+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+  lt_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  AC_CHECK_FUNCS([dlerror])
+  LIBS="$lt_save_LIBS"
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
+		   [Define if you have the shl_load function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+    [AC_CHECK_LIB([dld], [shl_load],
+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
+		       [Define if you have the shl_load function.])
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD="-ldld"])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+  AC_CHECK_FUNC([_dyld_func_lookup],
+	[AC_DEFINE([HAVE_DYLD], [1],
+		   [Define if you have the _dyld_func_lookup function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | os2* | pw32*)
+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+	[AC_DEFINE([HAVE_DLD], [1],
+		   [Define if you have the GNU dld library.])
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
+            [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+AC_LANG_POP
+])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+  [lt_cv_sys_symbol_underscore],
+  [lt_cv_sys_symbol_underscore=no
+  cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    ac_nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+      # See whether the symbols have a leading underscore.
+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+        lt_cv_sys_symbol_underscore=yes
+      else
+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+	  :
+        else
+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+        fi
+      fi
+    else
+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.c >&AS_MESSAGE_LOG_FD
+  fi
+  rm -rf conftest*
+  ])
+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+  AC_SUBST([sys_symbol_underscore])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
+  if test x"$libltdl_cv_func_dlopen" = xyes ||
+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+	  [libltdl_cv_need_uscore],
+	  [libltdl_cv_need_uscore=unknown
+          save_LIBS="$LIBS"
+          LIBS="$LIBS $LIBADD_DLOPEN"
+	  _LT_TRY_DLOPEN_SELF(
+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
+	    [],				 [libltdl_cv_need_uscore=cross])
+	  LIBS="$save_LIBS"
+	])
+  fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+  AC_DEFINE([NEED_USCORE], [1],
+    [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+m4trace:/usr/share/aclocal/ltoptions.m4:111: -1- 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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:146: -1- 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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.])dnl
+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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:303: -1- 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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:310: -1- 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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:358: -1- 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.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:/usr/share/aclocal/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+m4trace:/usr/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14'
+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.14.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- 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`
+])
+m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- 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"])
+])
+m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- 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])
+m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- 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])])
+m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- 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])])
+m4trace:/usr/share/aclocal-1.14/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+
+])
+m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- 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
+])
+m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- 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); }])
+m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- 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])])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:16: -1- AC_CONFIG_MACRO_DIR([m4])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_cpu$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_vendor$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_os$])
+m4trace:configure.ac:26: -1- AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:26: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.ac:26: -1- AM_AUTOMAKE_VERSION([1.14.1])
+m4trace:configure.ac:26: -1- _AM_AUTOCONF_VERSION([2.69])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:26: -1- _AM_SET_OPTIONS([foreign dist-zip subdir-objects])
+m4trace:configure.ac:26: -1- _AM_SET_OPTION([foreign])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([foreign])
+m4trace:configure.ac:26: -1- _AM_SET_OPTION([dist-zip])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([dist-zip])
+m4trace:configure.ac:26: -1- _AM_SET_OPTION([subdir-objects])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([subdir-objects])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:26: -1- AM_SANITY_CHECK
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.ac:26: -1- AM_MISSING_HAS_RUN
+m4trace:configure.ac:26: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.ac:26: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:26: -1- AM_PROG_INSTALL_SH
+m4trace:configure.ac:26: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:26: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.ac:26: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:26: -1- AM_SET_LEADING_DOT
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.ac:26: -1- _AM_PROG_TAR([v7])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:26: -1- AM_SILENT_RULES
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:26: -1- AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:26: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:27: -1- AM_MAINTAINER_MODE([])
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:42: -1- m4_pattern_allow([^EXTRA_TESTS$])
+m4trace:configure.ac:44: -1- AM_CONDITIONAL([EXTRA_TESTS], [test x$enable_extra_tests = xyes])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^EXTRA_TESTS_TRUE$])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^EXTRA_TESTS_FALSE$])
+m4trace:configure.ac:44: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:44: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:55: -1- AM_CONDITIONAL([LARGE_FILE_TESTS], [test x$enable_large_file_tests = xyes])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^LARGE_FILE_TESTS_TRUE$])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^LARGE_FILE_TESTS_FALSE$])
+m4trace:configure.ac:55: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:55: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:57: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
+m4trace:configure.ac:67: -1- AM_CONDITIONAL([BUILD_BENCHMARKS], [test x$enable_benchmarks = xyes])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^BUILD_BENCHMARKS_TRUE$])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^BUILD_BENCHMARKS_FALSE$])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:82: -1- m4_pattern_allow([^TEMP_LARGE$])
+m4trace:configure.ac:92: -1- AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:99: -1- m4_pattern_allow([^DOXYGEN_CSS_FILE$])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^DOXYGEN_HEADER_FILE$])
+m4trace:configure.ac:101: -1- m4_pattern_allow([^DOXYGEN_SEARCHENGINE$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^DOXYGEN$])
+m4trace:configure.ac:113: -1- m4_pattern_allow([^DOT$])
+m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_DOT$])
+m4trace:configure.ac:153: -1- LT_INIT
+m4trace:configure.ac:153: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:153: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:153: -1- LTSUGAR_VERSION
+m4trace:configure.ac:153: -1- LTVERSION_VERSION
+m4trace:configure.ac:153: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:153: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:153: -1- _LT_PREPARE_SED_QUOTE_VARS
+m4trace:configure.ac:153: -1- _LT_PROG_ECHO_BACKSLASH
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:153: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:153: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:153: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:153: -1- AM_SET_DEPDIR
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:153: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:153: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:153: -1- AM_DEP_TRACK
+m4trace:configure.ac:153: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:153: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:153: -1- LT_PATH_LD
+m4trace:configure.ac:153: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:153: -1- AC_PROG_EGREP
+m4trace:configure.ac:153: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:153: -1- LT_PATH_NM
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:153: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:153: -1- _LT_WITH_SYSROOT
+m4trace:configure.ac:153: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:153: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:153: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:153: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:153: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:153: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:153: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:153: -1- _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, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:153: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
+m4trace:configure.ac:153: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:153: -1- _LT_REQUIRED_DARWIN_CHECKS
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:153: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
+m4trace:configure.ac:153: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:156: -1- _AM_DEPENDENCIES([CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:156: -1- AM_CONDITIONAL([am__fastdepCXX], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:156: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:156: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:156: -1- LT_LANG([CXX])
+m4trace:configure.ac:156: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:156: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:156: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:156: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:156: -1- LT_PATH_LD
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:156: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t at m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no])
+m4trace:configure.ac:156: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=])
+m4trace:configure.ac:157: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:158: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:158: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:158: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:158: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:161: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:169: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:170: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_MALLOC$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_MALLOC$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^malloc$])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^HAVE_NETCDF_H$])
+m4trace:configure.ac:189: -1- m4_pattern_allow([^USE_NETCDF4$])
+m4trace:configure.ac:191: -1- _m4_warn([obsolete], [The macro `AC_ERROR' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/oldnames.m4:34: AC_ERROR is expanded from...
+configure.ac:191: the top level])
+m4trace:configure.ac:199: -1- AM_CONDITIONAL([USE_NETCDF4], [test "x$ac_cv_func_nc_def_opaque" = xyes])
+m4trace:configure.ac:199: -1- m4_pattern_allow([^USE_NETCDF4_TRUE$])
+m4trace:configure.ac:199: -1- m4_pattern_allow([^USE_NETCDF4_FALSE$])
+m4trace:configure.ac:199: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:199: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:200: -1- AM_CONDITIONAL([BUILD_V2], [test "x$ac_cv_func_nccreate" = xyes])
+m4trace:configure.ac:200: -1- m4_pattern_allow([^BUILD_V2_TRUE$])
+m4trace:configure.ac:200: -1- m4_pattern_allow([^BUILD_V2_FALSE$])
+m4trace:configure.ac:200: -1- _AM_SUBST_NOTMAKE([BUILD_V2_TRUE])
+m4trace:configure.ac:200: -1- _AM_SUBST_NOTMAKE([BUILD_V2_FALSE])
+m4trace:configure.ac:201: -1- AM_CONDITIONAL([USE_LOGGING], [test "x$ac_cv_func_nc_set_log_level" = xyes])
+m4trace:configure.ac:201: -1- m4_pattern_allow([^USE_LOGGING_TRUE$])
+m4trace:configure.ac:201: -1- m4_pattern_allow([^USE_LOGGING_FALSE$])
+m4trace:configure.ac:201: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_TRUE])
+m4trace:configure.ac:201: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_FALSE])
+m4trace:configure.ac:202: -1- AM_CONDITIONAL([BUILD_DAP], [test "x$ac_cv_func_oc_open" = xyes])
+m4trace:configure.ac:202: -1- m4_pattern_allow([^BUILD_DAP_TRUE$])
+m4trace:configure.ac:202: -1- m4_pattern_allow([^BUILD_DAP_FALSE$])
+m4trace:configure.ac:202: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_TRUE])
+m4trace:configure.ac:202: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_FALSE])
+m4trace:configure.ac:203: -1- AM_CONDITIONAL([BUILD_PARALLEL], [test "x$ac_cv_func_nc_use_parallel_enabled" = xyes])
+m4trace:configure.ac:203: -1- m4_pattern_allow([^BUILD_PARALLEL_TRUE$])
+m4trace:configure.ac:203: -1- m4_pattern_allow([^BUILD_PARALLEL_FALSE$])
+m4trace:configure.ac:203: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:203: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:204: -1- AM_CONDITIONAL([BUILD_DOCS], [test x$enable_doxygen = xyes])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:204: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:204: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:205: -1- AM_CONDITIONAL([USE_VALGRIND_TESTS], [test "x$enable_valgrind_tests" = xyes])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_TRUE$])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_FALSE$])
+m4trace:configure.ac:205: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:205: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:231: -1- m4_pattern_allow([^NC_LIBS$])
+m4trace:configure.ac:232: -1- m4_pattern_allow([^HAS_DAP$])
+m4trace:configure.ac:233: -1- m4_pattern_allow([^HAS_NC2$])
+m4trace:configure.ac:234: -1- m4_pattern_allow([^HAS_NC4$])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:245: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:245: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:245: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:245: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:245: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:245: -1- _LT_PROG_LTMAIN
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
new file mode 100644
index 0000000..9af9875
--- /dev/null
+++ b/autom4te.cache/traces.1
@@ -0,0 +1,872 @@
+m4trace:aclocal.m4:1186: -1- m4_include([m4/libtool.m4])
+m4trace:aclocal.m4:1187: -1- m4_include([m4/ltoptions.m4])
+m4trace:aclocal.m4:1188: -1- m4_include([m4/ltsugar.m4])
+m4trace:aclocal.m4:1189: -1- m4_include([m4/ltversion.m4])
+m4trace:aclocal.m4:1190: -1- m4_include([m4/lt~obsolete.m4])
+m4trace:configure.ac:6: -1- AC_INIT([netCDF-cxx4], [4.3.0], [support-netcdf at unidata.ucar.edu])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:6: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:6: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:6: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:6: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:6: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:6: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:6: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:6: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:6: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:6: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:6: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:6: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:6: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:6: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+				     ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:6: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:6: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:6: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:6: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:6: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:6: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:6: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:6: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:6: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:6: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:6: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:6: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:6: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:6: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:6: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:6: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:11: -1- AC_SUBST([PACKAGE_VERSION])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:19: -1- AC_CANONICAL_HOST
+m4trace:configure.ac:19: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:19: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.ac:19: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.ac:19: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:19: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:19: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:19: -1- AC_SUBST([build_os])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:19: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:19: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:19: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:19: -1- AC_SUBST([host_os])
+m4trace:configure.ac:19: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:20: -1- AC_CANONICAL_TARGET
+m4trace:configure.ac:20: -1- AC_SUBST([target], [$ac_cv_target])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([target])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target$])
+m4trace:configure.ac:20: -1- AC_SUBST([target_cpu], [$[1]])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([target_cpu])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_cpu$])
+m4trace:configure.ac:20: -1- AC_SUBST([target_vendor], [$[2]])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([target_vendor])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_vendor$])
+m4trace:configure.ac:20: -1- AC_SUBST([target_os])
+m4trace:configure.ac:20: -1- AC_SUBST_TRACE([target_os])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_os$])
+m4trace:configure.ac:23: -1- AC_CONFIG_HEADERS([config.h])
+m4trace:configure.ac:26: -1- AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:26: -1- AM_AUTOMAKE_VERSION([1.14.1])
+m4trace:configure.ac:26: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:26: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:26: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:26: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:26: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([am__isrc])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:26: -1- AC_SUBST([CYGPATH_W])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([CYGPATH_W])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:26: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([PACKAGE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:26: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([VERSION])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:26: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:26: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
+@%:@undef PACKAGE])
+m4trace:configure.ac:26: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:26: -1- AH_OUTPUT([VERSION], [/* Version number of package */
+@%:@undef VERSION])
+m4trace:configure.ac:26: -1- AC_REQUIRE_AUX_FILE([missing])
+m4trace:configure.ac:26: -1- AC_SUBST([ACLOCAL])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([ACLOCAL])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:26: -1- AC_SUBST([AUTOCONF])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AUTOCONF])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:26: -1- AC_SUBST([AUTOMAKE])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AUTOMAKE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:26: -1- AC_SUBST([AUTOHEADER])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AUTOHEADER])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:26: -1- AC_SUBST([MAKEINFO])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([MAKEINFO])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:26: -1- AC_SUBST([install_sh])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([install_sh])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:26: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:26: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:26: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:26: -1- AC_SUBST([MKDIR_P])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:26: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([mkdir_p])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:26: -1- AC_SUBST([AWK])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AWK])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:26: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:26: -1- AC_SUBST([am__leading_dot])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([am__leading_dot])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:26: -1- AC_SUBST([AMTAR], ['$${TAR-tar}'])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AMTAR])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:26: -1- AC_SUBST([am__tar])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([am__tar])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:26: -1- AC_SUBST([am__untar])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([am__untar])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:26: -1- AM_SILENT_RULES
+m4trace:configure.ac:26: -1- AC_SUBST([AM_V])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AM_V])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:26: -1- AC_SUBST([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- AC_SUBST([AM_DEFAULT_VERBOSITY])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:26: -1- AC_SUBST([AM_BACKSLASH])
+m4trace:configure.ac:26: -1- AC_SUBST_TRACE([AM_BACKSLASH])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:27: -1- AM_MAINTAINER_MODE([])
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:27: -1- AC_SUBST([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:27: -1- AC_SUBST([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:27: -1- AC_SUBST([MAINT])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([MAINT])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([EXTRA_TESTS])
+m4trace:configure.ac:42: -1- m4_pattern_allow([^EXTRA_TESTS$])
+m4trace:configure.ac:42: -1- AH_OUTPUT([EXTRA_TESTS], [/* if true, run extra tests which may not work yet */
+@%:@undef EXTRA_TESTS])
+m4trace:configure.ac:44: -1- AM_CONDITIONAL([EXTRA_TESTS], [test x$enable_extra_tests = xyes])
+m4trace:configure.ac:44: -1- AC_SUBST([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:44: -1- AC_SUBST_TRACE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^EXTRA_TESTS_TRUE$])
+m4trace:configure.ac:44: -1- AC_SUBST([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:44: -1- AC_SUBST_TRACE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^EXTRA_TESTS_FALSE$])
+m4trace:configure.ac:44: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:44: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:55: -1- AM_CONDITIONAL([LARGE_FILE_TESTS], [test x$enable_large_file_tests = xyes])
+m4trace:configure.ac:55: -1- AC_SUBST([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:55: -1- AC_SUBST_TRACE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^LARGE_FILE_TESTS_TRUE$])
+m4trace:configure.ac:55: -1- AC_SUBST([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:55: -1- AC_SUBST_TRACE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^LARGE_FILE_TESTS_FALSE$])
+m4trace:configure.ac:55: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:55: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:57: -1- AC_DEFINE_TRACE_LITERAL([LARGE_FILE_TESTS])
+m4trace:configure.ac:57: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
+m4trace:configure.ac:57: -1- AH_OUTPUT([LARGE_FILE_TESTS], [/* do large file tests */
+@%:@undef LARGE_FILE_TESTS])
+m4trace:configure.ac:67: -1- AM_CONDITIONAL([BUILD_BENCHMARKS], [test x$enable_benchmarks = xyes])
+m4trace:configure.ac:67: -1- AC_SUBST([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:67: -1- AC_SUBST_TRACE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^BUILD_BENCHMARKS_TRUE$])
+m4trace:configure.ac:67: -1- AC_SUBST([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:67: -1- AC_SUBST_TRACE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^BUILD_BENCHMARKS_FALSE$])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:82: -1- AC_DEFINE_TRACE_LITERAL([TEMP_LARGE])
+m4trace:configure.ac:82: -1- m4_pattern_allow([^TEMP_LARGE$])
+m4trace:configure.ac:82: -1- AH_OUTPUT([TEMP_LARGE], [/* Place to put very large netCDF test files. */
+@%:@undef TEMP_LARGE])
+m4trace:configure.ac:92: -1- AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+m4trace:configure.ac:92: -1- AC_SUBST([BUILD_DOCS_TRUE])
+m4trace:configure.ac:92: -1- AC_SUBST_TRACE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:92: -1- AC_SUBST([BUILD_DOCS_FALSE])
+m4trace:configure.ac:92: -1- AC_SUBST_TRACE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:99: -1- AC_SUBST([DOXYGEN_CSS_FILE], [])
+m4trace:configure.ac:99: -1- AC_SUBST_TRACE([DOXYGEN_CSS_FILE])
+m4trace:configure.ac:99: -1- m4_pattern_allow([^DOXYGEN_CSS_FILE$])
+m4trace:configure.ac:100: -1- AC_SUBST([DOXYGEN_HEADER_FILE], [])
+m4trace:configure.ac:100: -1- AC_SUBST_TRACE([DOXYGEN_HEADER_FILE])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^DOXYGEN_HEADER_FILE$])
+m4trace:configure.ac:101: -1- AC_SUBST([DOXYGEN_SEARCHENGINE], ["YES"])
+m4trace:configure.ac:101: -1- AC_SUBST_TRACE([DOXYGEN_SEARCHENGINE])
+m4trace:configure.ac:101: -1- m4_pattern_allow([^DOXYGEN_SEARCHENGINE$])
+m4trace:configure.ac:106: -1- AC_SUBST([DOXYGEN])
+m4trace:configure.ac:106: -1- AC_SUBST_TRACE([DOXYGEN])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^DOXYGEN$])
+m4trace:configure.ac:113: -1- AC_SUBST([DOT])
+m4trace:configure.ac:113: -1- AC_SUBST_TRACE([DOT])
+m4trace:configure.ac:113: -1- m4_pattern_allow([^DOT$])
+m4trace:configure.ac:126: -1- AC_SUBST([HAVE_DOT])
+m4trace:configure.ac:126: -1- AC_SUBST_TRACE([HAVE_DOT])
+m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_DOT$])
+m4trace:configure.ac:127: -1- AC_CONFIG_FILES([docs/Doxyfile])
+m4trace:configure.ac:153: -1- LT_INIT
+m4trace:configure.ac:153: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:153: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+m4trace:configure.ac:153: -1- AC_SUBST([LIBTOOL])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([LIBTOOL])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:153: -1- AC_SUBST([CC])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:153: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:153: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:153: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:153: -1- AC_SUBST([CC])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- AC_SUBST([CC])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- AC_SUBST([CC])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- AC_SUBST([CC])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:153: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:153: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:153: -1- AC_REQUIRE_AUX_FILE([compile])
+m4trace:configure.ac:153: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([DEPDIR])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:153: -1- AC_SUBST([am__include])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([am__include])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:153: -1- AC_SUBST([am__quote])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([am__quote])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:153: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:153: -1- AC_SUBST([AMDEP_TRUE])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([AMDEP_TRUE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:153: -1- AC_SUBST([AMDEP_FALSE])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([AMDEP_FALSE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:153: -1- AC_SUBST([AMDEPBACKSLASH])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:153: -1- AC_SUBST([am__nodep])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([am__nodep])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:153: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:153: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:153: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:153: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:153: -1- AC_SUBST([SED])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([SED])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:153: -1- AC_SUBST([GREP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:153: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:153: -1- AC_SUBST([FGREP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([FGREP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:153: -1- AC_SUBST([GREP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:153: -1- AC_SUBST([LD])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:153: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:153: -1- AC_SUBST([ac_ct_DUMPBIN])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:153: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:153: -1- AC_SUBST([NM])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:153: -1- AC_SUBST([LN_S], [$as_ln_s])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([LN_S])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:153: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:153: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:153: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:153: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:153: -1- AC_SUBST([AR])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:153: -1- AC_SUBST([ac_ct_AR])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([ac_ct_AR])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:153: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:153: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:153: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+@%:@undef LT_OBJDIR])
+m4trace:configure.ac:153: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:153: -1- AC_SUBST([MANIFEST_TOOL])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([MANIFEST_TOOL])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:153: -1- AC_SUBST([DSYMUTIL])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([DSYMUTIL])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:153: -1- AC_SUBST([NMEDIT])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([NMEDIT])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:153: -1- AC_SUBST([LIPO])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([LIPO])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:153: -1- AC_SUBST([OTOOL])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([OTOOL])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:153: -1- AC_SUBST([OTOOL64])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([OTOOL64])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+@%:@undef HAVE_DLFCN_H])
+m4trace:configure.ac:153: -1- AC_SUBST([CPP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:153: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:153: -1- AC_SUBST([CPP])
+m4trace:configure.ac:153: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:153: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:153: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:153: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:156: -1- AC_SUBST([CXX])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:156: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:156: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:156: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:156: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:156: -1- AC_SUBST([CXX])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:156: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:156: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CXXDEPMODE])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:156: -1- AM_CONDITIONAL([am__fastdepCXX], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:156: -1- AC_SUBST([am__fastdepCXX_TRUE])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:156: -1- AC_SUBST([am__fastdepCXX_FALSE])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:156: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:156: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:156: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:156: -1- AC_SUBST([CXXCPP])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CXXCPP])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:156: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:156: -1- AC_SUBST([CXXCPP])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([CXXCPP])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:156: -1- AC_SUBST([LD])
+m4trace:configure.ac:156: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:157: -1- AC_SUBST([AWK])
+m4trace:configure.ac:157: -1- AC_SUBST_TRACE([AWK])
+m4trace:configure.ac:157: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:158: -1- AC_SUBST([CC])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:158: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:158: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:158: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:158: -1- AC_SUBST([CC])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- AC_SUBST([CC])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- AC_SUBST([CC])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- AC_SUBST([CC])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:158: -1- AC_REQUIRE_AUX_FILE([compile])
+m4trace:configure.ac:158: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:158: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:158: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:158: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:159: -1- AC_SUBST([CPP])
+m4trace:configure.ac:159: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:159: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:159: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:159: -1- AC_SUBST([CPP])
+m4trace:configure.ac:159: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:161: -1- AC_SUBST([LN_S], [$as_ln_s])
+m4trace:configure.ac:161: -1- AC_SUBST_TRACE([LN_S])
+m4trace:configure.ac:161: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:162: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.ac:162: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:165: -1- AH_OUTPUT([HAVE_STDDEF_H], [/* Define to 1 if you have the <stddef.h> header file. */
+@%:@undef HAVE_STDDEF_H])
+m4trace:configure.ac:165: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:165: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:168: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
+m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:168: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
+@%:@undef HAVE__BOOL])
+m4trace:configure.ac:168: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
+m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:168: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
+@%:@undef HAVE_STDBOOL_H])
+m4trace:configure.ac:169: -1- AC_DEFINE_TRACE_LITERAL([size_t])
+m4trace:configure.ac:169: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:169: -1- AH_OUTPUT([size_t], [/* Define to `unsigned int\' if <sys/types.h> does not define. */
+@%:@undef size_t])
+m4trace:configure.ac:170: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PTRDIFF_T])
+m4trace:configure.ac:170: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
+m4trace:configure.ac:170: -1- AH_OUTPUT([HAVE_PTRDIFF_T], [/* Define to 1 if the system has the type `ptrdiff_t\'. */
+@%:@undef HAVE_PTRDIFF_T])
+m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDLIB_H])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
+m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_MALLOC$])
+m4trace:configure.ac:173: -1- AH_OUTPUT([HAVE_MALLOC], [/* Define to 1 if your system has a GNU libc compatible `malloc\' function, and
+   to 0 otherwise. */
+@%:@undef HAVE_MALLOC])
+m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MALLOC])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_MALLOC$])
+m4trace:configure.ac:173: -1- AC_SUBST([LIB@&t at OBJS], ["$LIB@&t at OBJS malloc.$ac_objext"])
+m4trace:configure.ac:173: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:173: -1- AC_LIBSOURCE([malloc.c])
+m4trace:configure.ac:173: -1- AC_DEFINE_TRACE_LITERAL([malloc])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^malloc$])
+m4trace:configure.ac:173: -1- AH_OUTPUT([malloc], [/* Define to rpl_malloc if the replacement function should be used. */
+@%:@undef malloc])
+m4trace:configure.ac:176: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:176: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */
+@%:@undef _FILE_OFFSET_BITS])
+m4trace:configure.ac:176: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:176: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */
+@%:@undef _LARGE_FILES])
+m4trace:configure.ac:176: -1- AH_OUTPUT([_DARWIN_USE_64_BIT_INODE], [/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif])
+m4trace:configure.ac:179: -1- AH_OUTPUT([HAVE_NETCDF_H], [/* Define to 1 if you have the <netcdf.h> header file. */
+@%:@undef HAVE_NETCDF_H])
+m4trace:configure.ac:179: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NETCDF_H])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^HAVE_NETCDF_H$])
+m4trace:configure.ac:181: -1- AH_OUTPUT([HAVE_NC_DEF_OPAQUE], [/* Define to 1 if you have the `nc_def_opaque\' function. */
+@%:@undef HAVE_NC_DEF_OPAQUE])
+m4trace:configure.ac:181: -1- AH_OUTPUT([HAVE_NCCREATE], [/* Define to 1 if you have the `nccreate\' function. */
+@%:@undef HAVE_NCCREATE])
+m4trace:configure.ac:181: -1- AH_OUTPUT([HAVE_NC_SET_LOG_LEVEL], [/* Define to 1 if you have the `nc_set_log_level\' function. */
+@%:@undef HAVE_NC_SET_LOG_LEVEL])
+m4trace:configure.ac:181: -1- AH_OUTPUT([HAVE_OC_OPEN], [/* Define to 1 if you have the `oc_open\' function. */
+@%:@undef HAVE_OC_OPEN])
+m4trace:configure.ac:181: -1- AH_OUTPUT([HAVE_NC_USE_PARALLEL_ENABLED], [/* Define to 1 if you have the `nc_use_parallel_enabled\' function. */
+@%:@undef HAVE_NC_USE_PARALLEL_ENABLED])
+m4trace:configure.ac:189: -1- AC_DEFINE_TRACE_LITERAL([USE_NETCDF4])
+m4trace:configure.ac:189: -1- m4_pattern_allow([^USE_NETCDF4$])
+m4trace:configure.ac:189: -1- AH_OUTPUT([USE_NETCDF4], [/* if true, build netCDF-4 */
+@%:@undef USE_NETCDF4])
+m4trace:configure.ac:191: -1- _m4_warn([obsolete], [The macro `AC_ERROR' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/oldnames.m4:34: AC_ERROR is expanded from...
+configure.ac:191: the top level])
+m4trace:configure.ac:199: -1- AM_CONDITIONAL([USE_NETCDF4], [test "x$ac_cv_func_nc_def_opaque" = xyes])
+m4trace:configure.ac:199: -1- AC_SUBST([USE_NETCDF4_TRUE])
+m4trace:configure.ac:199: -1- AC_SUBST_TRACE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:199: -1- m4_pattern_allow([^USE_NETCDF4_TRUE$])
+m4trace:configure.ac:199: -1- AC_SUBST([USE_NETCDF4_FALSE])
+m4trace:configure.ac:199: -1- AC_SUBST_TRACE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:199: -1- m4_pattern_allow([^USE_NETCDF4_FALSE$])
+m4trace:configure.ac:199: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:199: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:200: -1- AM_CONDITIONAL([BUILD_V2], [test "x$ac_cv_func_nccreate" = xyes])
+m4trace:configure.ac:200: -1- AC_SUBST([BUILD_V2_TRUE])
+m4trace:configure.ac:200: -1- AC_SUBST_TRACE([BUILD_V2_TRUE])
+m4trace:configure.ac:200: -1- m4_pattern_allow([^BUILD_V2_TRUE$])
+m4trace:configure.ac:200: -1- AC_SUBST([BUILD_V2_FALSE])
+m4trace:configure.ac:200: -1- AC_SUBST_TRACE([BUILD_V2_FALSE])
+m4trace:configure.ac:200: -1- m4_pattern_allow([^BUILD_V2_FALSE$])
+m4trace:configure.ac:200: -1- _AM_SUBST_NOTMAKE([BUILD_V2_TRUE])
+m4trace:configure.ac:200: -1- _AM_SUBST_NOTMAKE([BUILD_V2_FALSE])
+m4trace:configure.ac:201: -1- AM_CONDITIONAL([USE_LOGGING], [test "x$ac_cv_func_nc_set_log_level" = xyes])
+m4trace:configure.ac:201: -1- AC_SUBST([USE_LOGGING_TRUE])
+m4trace:configure.ac:201: -1- AC_SUBST_TRACE([USE_LOGGING_TRUE])
+m4trace:configure.ac:201: -1- m4_pattern_allow([^USE_LOGGING_TRUE$])
+m4trace:configure.ac:201: -1- AC_SUBST([USE_LOGGING_FALSE])
+m4trace:configure.ac:201: -1- AC_SUBST_TRACE([USE_LOGGING_FALSE])
+m4trace:configure.ac:201: -1- m4_pattern_allow([^USE_LOGGING_FALSE$])
+m4trace:configure.ac:201: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_TRUE])
+m4trace:configure.ac:201: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_FALSE])
+m4trace:configure.ac:202: -1- AM_CONDITIONAL([BUILD_DAP], [test "x$ac_cv_func_oc_open" = xyes])
+m4trace:configure.ac:202: -1- AC_SUBST([BUILD_DAP_TRUE])
+m4trace:configure.ac:202: -1- AC_SUBST_TRACE([BUILD_DAP_TRUE])
+m4trace:configure.ac:202: -1- m4_pattern_allow([^BUILD_DAP_TRUE$])
+m4trace:configure.ac:202: -1- AC_SUBST([BUILD_DAP_FALSE])
+m4trace:configure.ac:202: -1- AC_SUBST_TRACE([BUILD_DAP_FALSE])
+m4trace:configure.ac:202: -1- m4_pattern_allow([^BUILD_DAP_FALSE$])
+m4trace:configure.ac:202: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_TRUE])
+m4trace:configure.ac:202: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_FALSE])
+m4trace:configure.ac:203: -1- AM_CONDITIONAL([BUILD_PARALLEL], [test "x$ac_cv_func_nc_use_parallel_enabled" = xyes])
+m4trace:configure.ac:203: -1- AC_SUBST([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:203: -1- AC_SUBST_TRACE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:203: -1- m4_pattern_allow([^BUILD_PARALLEL_TRUE$])
+m4trace:configure.ac:203: -1- AC_SUBST([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:203: -1- AC_SUBST_TRACE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:203: -1- m4_pattern_allow([^BUILD_PARALLEL_FALSE$])
+m4trace:configure.ac:203: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:203: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:204: -1- AM_CONDITIONAL([BUILD_DOCS], [test x$enable_doxygen = xyes])
+m4trace:configure.ac:204: -1- AC_SUBST([BUILD_DOCS_TRUE])
+m4trace:configure.ac:204: -1- AC_SUBST_TRACE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:204: -1- AC_SUBST([BUILD_DOCS_FALSE])
+m4trace:configure.ac:204: -1- AC_SUBST_TRACE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:204: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:204: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:205: -1- AM_CONDITIONAL([USE_VALGRIND_TESTS], [test "x$enable_valgrind_tests" = xyes])
+m4trace:configure.ac:205: -1- AC_SUBST([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:205: -1- AC_SUBST_TRACE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_TRUE$])
+m4trace:configure.ac:205: -1- AC_SUBST([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:205: -1- AC_SUBST_TRACE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_FALSE$])
+m4trace:configure.ac:205: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:205: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:231: -1- AC_SUBST([NC_LIBS], [$NC_LIBS])
+m4trace:configure.ac:231: -1- AC_SUBST_TRACE([NC_LIBS])
+m4trace:configure.ac:231: -1- m4_pattern_allow([^NC_LIBS$])
+m4trace:configure.ac:232: -1- AC_SUBST([HAS_DAP], [$nc_has_dap])
+m4trace:configure.ac:232: -1- AC_SUBST_TRACE([HAS_DAP])
+m4trace:configure.ac:232: -1- m4_pattern_allow([^HAS_DAP$])
+m4trace:configure.ac:233: -1- AC_SUBST([HAS_NC2], [$nc_build_v2])
+m4trace:configure.ac:233: -1- AC_SUBST_TRACE([HAS_NC2])
+m4trace:configure.ac:233: -1- m4_pattern_allow([^HAS_NC2$])
+m4trace:configure.ac:234: -1- AC_SUBST([HAS_NC4], [$nc_build_v4])
+m4trace:configure.ac:234: -1- AC_SUBST_TRACE([HAS_NC4])
+m4trace:configure.ac:234: -1- m4_pattern_allow([^HAS_NC4$])
+m4trace:configure.ac:237: -1- AC_CONFIG_FILES([Makefile
+                 cxx4/Makefile
+                 examples/Makefile
+                 docs/Makefile
+                 ncxx4-config
+                 netcdf-cxx4.pc], [test -f  ncxx4-config && chmod 755 ncxx4-config ])
+m4trace:configure.ac:245: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:245: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:245: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:245: -1- AC_SUBST([am__EXEEXT_TRUE])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:245: -1- AC_SUBST([am__EXEEXT_FALSE])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:245: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:245: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.ac:245: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:245: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/autom4te.cache/traces.2 b/autom4te.cache/traces.2
new file mode 100644
index 0000000..0be3e8c
--- /dev/null
+++ b/autom4te.cache/traces.2
@@ -0,0 +1,2756 @@
+m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
+
+AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_TYPES([error_t],
+  [],
+  [AC_DEFINE([error_t], [int],
+   [Define to a type to use for `error_t' if it is not otherwise available.])
+   AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
+    does not typedef error_t.])],
+  [#if defined(HAVE_ARGZ_H)
+#  include <argz.h>
+#endif])
+
+ARGZ_H=
+AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
+	argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
+
+dnl if have system argz functions, allow forced use of
+dnl libltdl-supplied implementation (and default to do so
+dnl on "known bad" systems). Could use a runtime check, but
+dnl (a) detecting malloc issues is notoriously unreliable
+dnl (b) only known system that declares argz functions,
+dnl     provides them, yet they are broken, is cygwin
+dnl     releases prior to 16-Mar-2007 (1.5.24 and earlier)
+dnl So, it's more straightforward simply to special case
+dnl this for known bad systems.
+AS_IF([test -z "$ARGZ_H"],
+    [AC_CACHE_CHECK(
+        [if argz actually works],
+        [lt_cv_sys_argz_works],
+        [[case $host_os in #(
+	 *cygwin*)
+	   lt_cv_sys_argz_works=no
+	   if test "$cross_compiling" != no; then
+	     lt_cv_sys_argz_works="guessing no"
+	   else
+	     lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
+	     save_IFS=$IFS
+	     IFS=-.
+	     set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
+	     IFS=$save_IFS
+	     lt_os_major=${2-0}
+	     lt_os_minor=${3-0}
+	     lt_os_micro=${4-0}
+	     if test "$lt_os_major" -gt 1 \
+		|| { test "$lt_os_major" -eq 1 \
+		  && { test "$lt_os_minor" -gt 5 \
+		    || { test "$lt_os_minor" -eq 5 \
+		      && test "$lt_os_micro" -gt 24; }; }; }; then
+	       lt_cv_sys_argz_works=yes
+	     fi
+	   fi
+	   ;; #(
+	 *) lt_cv_sys_argz_works=yes ;;
+	 esac]])
+     AS_IF([test "$lt_cv_sys_argz_works" = yes],
+        [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
+                   [This value is set to 1 to indicate that the system argz facility works])],
+        [ARGZ_H=argz.h
+        AC_LIBOBJ([argz])])])
+
+AC_SUBST([ARGZ_H])
+])
+m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
+m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])
+m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
+  m4_pattern_allow([^_LT_LIBOBJS$])
+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])
+m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+    [AS_HELP_STRING([--with-included-ltdl],
+                    [use the GNU ltdl sources included here])])
+
+if test "x$with_included_ltdl" != xyes; then
+  # We are not being forced to use the included libltdl sources, so
+  # decide whether there is a useful installed version we can use.
+  AC_CHECK_HEADER([ltdl.h],
+      [AC_CHECK_DECL([lt_dlinterface_register],
+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+	       [with_included_ltdl=no],
+	       [with_included_ltdl=yes])],
+	   [with_included_ltdl=yes],
+	   [AC_INCLUDES_DEFAULT
+	    #include <ltdl.h>])],
+      [with_included_ltdl=yes],
+      [AC_INCLUDES_DEFAULT]
+  )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+    [AS_HELP_STRING([--with-ltdl-include=DIR],
+                    [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+  if test -f "$with_ltdl_include/ltdl.h"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
+  fi
+else
+  with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
+                    [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+  if test -f "$with_ltdl_lib/libltdl.la"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
+  fi
+else
+  with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+  ,yes,no,no,)
+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
+	    [convenience], [_LTDL_CONVENIENCE],
+	    [installable], [_LTDL_INSTALLABLE],
+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+	;;
+  ,no,no,no,)
+	# If the included ltdl is not to be used, then use the
+	# preinstalled libltdl we found.
+	AC_DEFINE([HAVE_LTDL], [1],
+	  [Define this if a modern libltdl is already installed])
+	LIBLTDL=-lltdl
+	LTDLDEPS=
+	LTDLINCL=
+	;;
+  ,no*,no,*)
+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
+	;;
+  *)	with_included_ltdl=no
+	LIBLTDL="-L$with_ltdl_lib -lltdl"
+	LTDLDEPS=
+	LTDLINCL="-I$with_ltdl_include"
+	;;
+esac
+INCLTDL="$LTDLINCL"
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+    _ltdl_libobjs=
+    _ltdl_ltlibobjs=
+    if test -n "$_LT_LIBOBJS"; then
+      # Remove the extension.
+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+      done
+    fi
+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([gl_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used.  This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+    [LT_CONFIG_H=AH_HEADER],
+    [m4_ifset([AC_LIST_HEADERS],
+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
+	[])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+	[], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+m4_pattern_allow([LT_LIBEXT])dnl
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
+name=ltdl
+eval "LTDLOPEN=\"$libname_spec\""
+AC_SUBST([LTDLOPEN])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+  [lt_cv_sys_dlopen_deplibs],
+  [# PORTME does your system automatically load deplibs for dlopen?
+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+  # For now, we just catch OSes we know something about -- in the
+  # future, we'll try test this programmatically.
+  lt_cv_sys_dlopen_deplibs=unknown
+  case $host_os in
+  aix3*|aix4.1.*|aix4.2.*)
+    # Unknown whether this is true for these versions of AIX, but
+    # we want this `case' here to explicitly catch those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  aix[[4-9]]*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  amigaos*)
+    case $host_cpu in
+    powerpc)
+      lt_cv_sys_dlopen_deplibs=no
+      ;;
+    esac
+    ;;
+  darwin*)
+    # Assuming the user has installed a libdl from somewhere, this is true
+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  freebsd* | dragonfly*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    # GNU and its variants, using gnu ld.so (Glibc)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  hpux10*|hpux11*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  interix*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  irix[[12345]]*|irix6.[[01]]*)
+    # Catch all versions of IRIX before 6.2, and indicate that we don't
+    # know how it worked for any of those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  irix*)
+    # The case above catches anything before 6.2, and it's known that
+    # at 6.2 and later dlopen does load deplibs.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  netbsd* | netbsdelf*-gnu)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  openbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  osf[[1234]]*)
+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+    # it did *not* use an RPATH in a shared library to find objects the
+    # library depends on, so we explicitly say `no'.
+    lt_cv_sys_dlopen_deplibs=no
+    ;;
+  osf5.0|osf5.0a|osf5.1)
+    # dlopen *does* load deplibs and with the right loader patch applied
+    # it even uses RPATH in a shared library to search for shared objects
+    # that the library depends on, but there's no easy way to know if that
+    # patch is installed.  Since this is the case, all we can really
+    # say is unknown -- it depends on the patch being installed.  If
+    # it is, this changes to `yes'.  Without it, it would be `no'.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  osf*)
+    # the two cases above should catch all versions of osf <= 5.1.  Read
+    # the comments above for what we know about them.
+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+    # is used to find them so we can finally say `yes'.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  qnx*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  solaris*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    libltdl_cv_sys_dlopen_deplibs=yes
+    ;;
+  esac
+  ])
+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+    [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:542: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:549: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
+  [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+module=no
+eval libltdl_cv_shrext=$shrext_cmds
+  ])
+if test -n "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_MODULE_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+    [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_SHARED_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"],
+    [Define to the shared library suffix, say, ".dylib".])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:572: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:579: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which variable specifies run-time module search path],
+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
+if test -n "$lt_cv_module_path_var"; then
+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+    [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:591: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:598: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+  [lt_cv_sys_dlsearch_path],
+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+  sys_dlsearch_path=
+  for dir in $lt_cv_sys_dlsearch_path; do
+    if test -z "$sys_dlsearch_path"; then
+      sys_dlsearch_path="$dir"
+    else
+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
+    fi
+  done
+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+    [Define to the system default library search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:619: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:645: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+	[AC_DEFINE([HAVE_LIBDL], [1],
+		   [Define if you have the libdl library or equivalent.])
+	if test "$ac_cv_search_dlopen" != "none required" ; then
+	  LIBADD_DLOPEN="-ldl"
+	fi
+	libltdl_cv_lib_dl_dlopen="yes"
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+    ]], [[dlopen(0, 0);]])],
+	    [AC_DEFINE([HAVE_LIBDL], [1],
+		       [Define if you have the libdl library or equivalent.])
+	    libltdl_cv_func_dlopen="yes"
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+	[AC_CHECK_LIB([svld], [dlopen],
+		[AC_DEFINE([HAVE_LIBDL], [1],
+			 [Define if you have the libdl library or equivalent.])
+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+  lt_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  AC_CHECK_FUNCS([dlerror])
+  LIBS="$lt_save_LIBS"
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
+		   [Define if you have the shl_load function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+    [AC_CHECK_LIB([dld], [shl_load],
+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
+		       [Define if you have the shl_load function.])
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD="-ldld"])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+  AC_CHECK_FUNC([_dyld_func_lookup],
+	[AC_DEFINE([HAVE_DYLD], [1],
+		   [Define if you have the _dyld_func_lookup function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | os2* | pw32*)
+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+	[AC_DEFINE([HAVE_DLD], [1],
+		   [Define if you have the GNU dld library.])
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
+            [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+AC_LANG_POP
+])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:738: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:746: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+  [lt_cv_sys_symbol_underscore],
+  [lt_cv_sys_symbol_underscore=no
+  cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    ac_nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+      # See whether the symbols have a leading underscore.
+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+        lt_cv_sys_symbol_underscore=yes
+      else
+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+	  :
+        else
+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+        fi
+      fi
+    else
+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.c >&AS_MESSAGE_LOG_FD
+  fi
+  rm -rf conftest*
+  ])
+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+  AC_SUBST([sys_symbol_underscore])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:783: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:790: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
+  if test x"$libltdl_cv_func_dlopen" = xyes ||
+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+	  [libltdl_cv_need_uscore],
+	  [libltdl_cv_need_uscore=unknown
+          save_LIBS="$LIBS"
+          LIBS="$LIBS $LIBADD_DLOPEN"
+	  _LT_TRY_DLOPEN_SELF(
+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
+	    [],				 [libltdl_cv_need_uscore=cross])
+	  LIBS="$save_LIBS"
+	])
+  fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+  AC_DEFINE([NEED_USCORE], [1],
+    [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:815: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.14'
+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.14.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.14/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.14.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.14/auxdir.m4:47: -1- 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`
+])
+m4trace:/usr/share/aclocal-1.14/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.14/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:12: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+  # Older Autoconf quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named 'Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running 'make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "$am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])
+m4trace:/usr/share/aclocal-1.14/depout.m4:71: -1- 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"])
+])
+m4trace:/usr/share/aclocal-1.14/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake at gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi])
+m4trace:/usr/share/aclocal-1.14/init.m4:182: -1- 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])
+m4trace:/usr/share/aclocal-1.14/install-sh.m4:11: -1- 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])])
+m4trace:/usr/share/aclocal-1.14/lead-dot.m4:10: -1- 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])])
+m4trace:/usr/share/aclocal-1.14/maintainer.m4:16: -1- AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+
+])
+m4trace:/usr/share/aclocal-1.14/make.m4:12: -1- 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
+])
+m4trace:/usr/share/aclocal-1.14/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.14/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
+else
+  am_missing_run=
+  AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.14/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.14/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+m4trace:/usr/share/aclocal-1.14/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.14/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+m4trace:/usr/share/aclocal-1.14/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+m4trace:/usr/share/aclocal-1.14/runlog.m4:12: -1- 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); }])
+m4trace:/usr/share/aclocal-1.14/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+m4trace:/usr/share/aclocal-1.14/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.14/strip.m4:17: -1- 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])])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.14/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.14/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
+  rm -rf conftest.dir
+
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:m4/libtool.m4:69: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])
+m4trace:m4/libtool.m4:107: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:107: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:108: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:108: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:m4/libtool.m4:609: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])
+m4trace:m4/libtool.m4:790: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
+m4trace:m4/libtool.m4:801: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])
+m4trace:m4/libtool.m4:893: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+m4trace:m4/libtool.m4:893: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(C++)])
+m4trace:m4/libtool.m4:894: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+m4trace:m4/libtool.m4:894: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran 77)])
+m4trace:m4/libtool.m4:895: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+m4trace:m4/libtool.m4:895: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran)])
+m4trace:m4/libtool.m4:896: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+m4trace:m4/libtool.m4:896: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Java)])
+m4trace:m4/libtool.m4:897: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+m4trace:m4/libtool.m4:897: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Windows Resource)])
+m4trace:m4/libtool.m4:1225: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+m4trace:m4/libtool.m4:1515: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])
+m4trace:m4/libtool.m4:1557: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:m4/libtool.m4:1557: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:m4/libtool.m4:1566: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])
+m4trace:m4/libtool.m4:1601: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:m4/libtool.m4:1601: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:m4/libtool.m4:1608: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])
+m4trace:m4/libtool.m4:1747: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:m4/libtool.m4:1747: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:m4/libtool.m4:1858: -1- 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])
+])
+m4trace:m4/libtool.m4:1975: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:m4/libtool.m4:1975: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:m4/libtool.m4:2945: -1- 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
+])
+m4trace:m4/libtool.m4:3007: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:m4/libtool.m4:3007: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:m4/libtool.m4:3030: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])
+m4trace:m4/libtool.m4:3119: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3119: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3120: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3120: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:m4/libtool.m4:3410: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])
+m4trace:m4/libtool.m4:3500: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3500: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3501: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3501: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:m4/libtool.m4:3571: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])
+m4trace:m4/libtool.m4:3590: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:m4/libtool.m4:3590: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:m4/libtool.m4:7637: -1- 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
+])
+m4trace:m4/libtool.m4:7646: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:m4/libtool.m4:7646: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:m4/libtool.m4:7653: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,)
+])
+m4trace:m4/libtool.m4:7660: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
+])
+m4trace:m4/libtool.m4:7665: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:m4/libtool.m4:7665: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:m4/libtool.m4:7785: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:m4/libtool.m4:7785: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+m4trace:m4/ltoptions.m4:111: -1- 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.])
+])
+m4trace:m4/ltoptions.m4:111: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:m4/ltoptions.m4:146: -1- 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.])
+])
+m4trace:m4/ltoptions.m4:146: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.])dnl
+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.])
+])
+m4trace:m4/ltoptions.m4:195: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+m4trace:m4/ltoptions.m4:199: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+m4trace:m4/ltoptions.m4:203: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:203: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:204: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:204: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_SHARED($@)])
+m4trace:m4/ltoptions.m4:249: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+m4trace:m4/ltoptions.m4:253: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+m4trace:m4/ltoptions.m4:257: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:257: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:258: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:258: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_STATIC($@)])
+m4trace:m4/ltoptions.m4:303: -1- 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.])
+])
+m4trace:m4/ltoptions.m4:303: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:m4/ltoptions.m4:310: -1- 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.])
+])
+m4trace:m4/ltoptions.m4:310: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:m4/ltoptions.m4:358: -1- 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.])
+])
+m4trace:m4/ltoptions.m4:358: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
+You should run autoupdate.])dnl
+_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.])
+])
+m4trace:m4/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2'
+macro_revision='1.3337'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+m4trace:m4/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+m4trace:m4/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
+m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
+m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
+m4trace:m4/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
+m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
+m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
+m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
+m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
+m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
+m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
+m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
+m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
+m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
+m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
+m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
+m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
+m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
+m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
+m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
+m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
+m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
+m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
+m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
+m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
+m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
+m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
+m4trace:m4/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
+m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
+m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
+m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
+m4trace:m4/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
+m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
+m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
+m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
+m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
+m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
+m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
+m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
+m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
+m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
+m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
+m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
+m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
+m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
+m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
+m4trace:m4/lt~obsolete.m4:93: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP])
+m4trace:m4/lt~obsolete.m4:96: -1- AC_DEFUN([_LT_PROG_F77])
+m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_FC])
+m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_CXX])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:6: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:6: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:16: -1- AC_CONFIG_MACRO_DIR([m4])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:19: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_cpu$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_vendor$])
+m4trace:configure.ac:20: -1- m4_pattern_allow([^target_os$])
+m4trace:configure.ac:26: -1- AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:26: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.ac:26: -1- AM_AUTOMAKE_VERSION([1.14.1])
+m4trace:configure.ac:26: -1- _AM_AUTOCONF_VERSION([2.69])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:26: -1- _AM_SET_OPTIONS([foreign dist-zip subdir-objects])
+m4trace:configure.ac:26: -1- _AM_SET_OPTION([foreign])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([foreign])
+m4trace:configure.ac:26: -1- _AM_SET_OPTION([dist-zip])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([dist-zip])
+m4trace:configure.ac:26: -1- _AM_SET_OPTION([subdir-objects])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([subdir-objects])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:26: -1- AM_SANITY_CHECK
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.ac:26: -1- AM_MISSING_HAS_RUN
+m4trace:configure.ac:26: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.ac:26: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:26: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:26: -1- AM_PROG_INSTALL_SH
+m4trace:configure.ac:26: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:26: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.ac:26: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:26: -1- AM_SET_LEADING_DOT
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.ac:26: -1- _AM_PROG_TAR([v7])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:26: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+m4trace:configure.ac:26: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:26: -1- AM_SILENT_RULES
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_V$])
+m4trace:configure.ac:26: -1- AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_V])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_DEFAULT_V$])
+m4trace:configure.ac:26: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$])
+m4trace:configure.ac:26: -1- m4_pattern_allow([^AM_BACKSLASH$])
+m4trace:configure.ac:26: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
+m4trace:configure.ac:27: -1- AM_MAINTAINER_MODE([])
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINTAINER_MODE_TRUE$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINTAINER_MODE_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([MAINTAINER_MODE_FALSE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^MAINT$])
+m4trace:configure.ac:42: -1- m4_pattern_allow([^EXTRA_TESTS$])
+m4trace:configure.ac:44: -1- AM_CONDITIONAL([EXTRA_TESTS], [test x$enable_extra_tests = xyes])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^EXTRA_TESTS_TRUE$])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^EXTRA_TESTS_FALSE$])
+m4trace:configure.ac:44: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_TRUE])
+m4trace:configure.ac:44: -1- _AM_SUBST_NOTMAKE([EXTRA_TESTS_FALSE])
+m4trace:configure.ac:55: -1- AM_CONDITIONAL([LARGE_FILE_TESTS], [test x$enable_large_file_tests = xyes])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^LARGE_FILE_TESTS_TRUE$])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^LARGE_FILE_TESTS_FALSE$])
+m4trace:configure.ac:55: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_TRUE])
+m4trace:configure.ac:55: -1- _AM_SUBST_NOTMAKE([LARGE_FILE_TESTS_FALSE])
+m4trace:configure.ac:57: -1- m4_pattern_allow([^LARGE_FILE_TESTS$])
+m4trace:configure.ac:67: -1- AM_CONDITIONAL([BUILD_BENCHMARKS], [test x$enable_benchmarks = xyes])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^BUILD_BENCHMARKS_TRUE$])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^BUILD_BENCHMARKS_FALSE$])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_TRUE])
+m4trace:configure.ac:67: -1- _AM_SUBST_NOTMAKE([BUILD_BENCHMARKS_FALSE])
+m4trace:configure.ac:82: -1- m4_pattern_allow([^TEMP_LARGE$])
+m4trace:configure.ac:92: -1- AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:99: -1- m4_pattern_allow([^DOXYGEN_CSS_FILE$])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^DOXYGEN_HEADER_FILE$])
+m4trace:configure.ac:101: -1- m4_pattern_allow([^DOXYGEN_SEARCHENGINE$])
+m4trace:configure.ac:106: -1- m4_pattern_allow([^DOXYGEN$])
+m4trace:configure.ac:113: -1- m4_pattern_allow([^DOT$])
+m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_DOT$])
+m4trace:configure.ac:153: -1- LT_INIT
+m4trace:configure.ac:153: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:153: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:153: -1- LTSUGAR_VERSION
+m4trace:configure.ac:153: -1- LTVERSION_VERSION
+m4trace:configure.ac:153: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:153: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:153: -1- _LT_PREPARE_SED_QUOTE_VARS
+m4trace:configure.ac:153: -1- _LT_PROG_ECHO_BACKSLASH
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:153: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:153: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:153: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:153: -1- AM_SET_DEPDIR
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:153: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:153: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:153: -1- AM_DEP_TRACK
+m4trace:configure.ac:153: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__nodep$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__nodep])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:153: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:153: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:153: -1- LT_PATH_LD
+m4trace:configure.ac:153: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:153: -1- AC_PROG_EGREP
+m4trace:configure.ac:153: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:153: -1- LT_PATH_NM
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:153: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^ac_ct_AR$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:153: -1- _LT_WITH_SYSROOT
+m4trace:configure.ac:153: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:153: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:153: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:153: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:153: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:153: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:153: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:153: -1- _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, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:153: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
+m4trace:configure.ac:153: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^MANIFEST_TOOL$])
+m4trace:configure.ac:153: -1- _LT_REQUIRED_DARWIN_CHECKS
+m4trace:configure.ac:153: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:153: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])
+m4trace:configure.ac:153: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:153: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:156: -1- _AM_DEPENDENCIES([CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:156: -1- AM_CONDITIONAL([am__fastdepCXX], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:156: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:156: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:156: -1- LT_LANG([CXX])
+m4trace:configure.ac:156: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:156: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:156: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:156: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:156: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:156: -1- LT_PATH_LD
+m4trace:configure.ac:156: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:156: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t at m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;;
+     esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no])
+m4trace:configure.ac:156: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=])
+m4trace:configure.ac:157: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:158: -1- _AM_PROG_CC_C_O
+m4trace:configure.ac:158: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext])
+m4trace:configure.ac:158: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:158: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:158: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:159: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:161: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:162: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:168: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:169: -1- m4_pattern_allow([^size_t$])
+m4trace:configure.ac:170: -1- m4_pattern_allow([^HAVE_PTRDIFF_T$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_STDLIB_H$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_MALLOC$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^HAVE_MALLOC$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:173: -1- m4_pattern_allow([^malloc$])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^_FILE_OFFSET_BITS$])
+m4trace:configure.ac:176: -1- m4_pattern_allow([^_LARGE_FILES$])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^HAVE_NETCDF_H$])
+m4trace:configure.ac:189: -1- m4_pattern_allow([^USE_NETCDF4$])
+m4trace:configure.ac:191: -1- _m4_warn([obsolete], [The macro `AC_ERROR' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/oldnames.m4:34: AC_ERROR is expanded from...
+configure.ac:191: the top level])
+m4trace:configure.ac:199: -1- AM_CONDITIONAL([USE_NETCDF4], [test "x$ac_cv_func_nc_def_opaque" = xyes])
+m4trace:configure.ac:199: -1- m4_pattern_allow([^USE_NETCDF4_TRUE$])
+m4trace:configure.ac:199: -1- m4_pattern_allow([^USE_NETCDF4_FALSE$])
+m4trace:configure.ac:199: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_TRUE])
+m4trace:configure.ac:199: -1- _AM_SUBST_NOTMAKE([USE_NETCDF4_FALSE])
+m4trace:configure.ac:200: -1- AM_CONDITIONAL([BUILD_V2], [test "x$ac_cv_func_nccreate" = xyes])
+m4trace:configure.ac:200: -1- m4_pattern_allow([^BUILD_V2_TRUE$])
+m4trace:configure.ac:200: -1- m4_pattern_allow([^BUILD_V2_FALSE$])
+m4trace:configure.ac:200: -1- _AM_SUBST_NOTMAKE([BUILD_V2_TRUE])
+m4trace:configure.ac:200: -1- _AM_SUBST_NOTMAKE([BUILD_V2_FALSE])
+m4trace:configure.ac:201: -1- AM_CONDITIONAL([USE_LOGGING], [test "x$ac_cv_func_nc_set_log_level" = xyes])
+m4trace:configure.ac:201: -1- m4_pattern_allow([^USE_LOGGING_TRUE$])
+m4trace:configure.ac:201: -1- m4_pattern_allow([^USE_LOGGING_FALSE$])
+m4trace:configure.ac:201: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_TRUE])
+m4trace:configure.ac:201: -1- _AM_SUBST_NOTMAKE([USE_LOGGING_FALSE])
+m4trace:configure.ac:202: -1- AM_CONDITIONAL([BUILD_DAP], [test "x$ac_cv_func_oc_open" = xyes])
+m4trace:configure.ac:202: -1- m4_pattern_allow([^BUILD_DAP_TRUE$])
+m4trace:configure.ac:202: -1- m4_pattern_allow([^BUILD_DAP_FALSE$])
+m4trace:configure.ac:202: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_TRUE])
+m4trace:configure.ac:202: -1- _AM_SUBST_NOTMAKE([BUILD_DAP_FALSE])
+m4trace:configure.ac:203: -1- AM_CONDITIONAL([BUILD_PARALLEL], [test "x$ac_cv_func_nc_use_parallel_enabled" = xyes])
+m4trace:configure.ac:203: -1- m4_pattern_allow([^BUILD_PARALLEL_TRUE$])
+m4trace:configure.ac:203: -1- m4_pattern_allow([^BUILD_PARALLEL_FALSE$])
+m4trace:configure.ac:203: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_TRUE])
+m4trace:configure.ac:203: -1- _AM_SUBST_NOTMAKE([BUILD_PARALLEL_FALSE])
+m4trace:configure.ac:204: -1- AM_CONDITIONAL([BUILD_DOCS], [test x$enable_doxygen = xyes])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^BUILD_DOCS_TRUE$])
+m4trace:configure.ac:204: -1- m4_pattern_allow([^BUILD_DOCS_FALSE$])
+m4trace:configure.ac:204: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_TRUE])
+m4trace:configure.ac:204: -1- _AM_SUBST_NOTMAKE([BUILD_DOCS_FALSE])
+m4trace:configure.ac:205: -1- AM_CONDITIONAL([USE_VALGRIND_TESTS], [test "x$enable_valgrind_tests" = xyes])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_TRUE$])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^USE_VALGRIND_TESTS_FALSE$])
+m4trace:configure.ac:205: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_TRUE])
+m4trace:configure.ac:205: -1- _AM_SUBST_NOTMAKE([USE_VALGRIND_TESTS_FALSE])
+m4trace:configure.ac:231: -1- m4_pattern_allow([^NC_LIBS$])
+m4trace:configure.ac:232: -1- m4_pattern_allow([^HAS_DAP$])
+m4trace:configure.ac:233: -1- m4_pattern_allow([^HAS_NC2$])
+m4trace:configure.ac:234: -1- m4_pattern_allow([^HAS_NC4$])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:245: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:245: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:245: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:245: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:245: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:245: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:245: -1- _LT_PROG_LTMAIN
diff --git a/cmake_uninstall.cmake.in b/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..ace1e71
--- /dev/null
+++ b/cmake_uninstall.cmake.in
@@ -0,0 +1,24 @@
+CMAKE_POLICY(SET CMP0007 OLD)
+
+if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+    message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+list(REVERSE files)
+foreach (file ${files})
+    message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
+    if (EXISTS "$ENV{DESTDIR}${file}")
+        execute_process(
+            COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
+            OUTPUT_VARIABLE rm_out
+            RESULT_VARIABLE rm_retval
+        )
+        if(NOT ${rm_retval} EQUAL 0)
+            message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
+        endif (NOT ${rm_retval} EQUAL 0)
+    else (EXISTS "$ENV{DESTDIR}${file}")
+        message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
+    endif (EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)
diff --git a/config.sub b/config.sub
index 8b612ab..9633db7 100755
--- a/config.sub
+++ b/config.sub
@@ -2,7 +2,7 @@
 # Configuration validation subroutine script.
 #   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2013-04-24'
+timestamp='2013-08-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -257,7 +257,7 @@ case $basic_machine in
 	| avr | avr32 \
 	| be32 | be64 \
 	| bfin \
-	| c4x | clipper \
+	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
 	| epiphany \
 	| fido | fr30 | frv \
@@ -372,7 +372,7 @@ case $basic_machine in
 	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| clipper-* | craynv-* | cydra-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -794,7 +794,7 @@ case $basic_machine in
 		os=-mingw64
 		;;
 	mingw32)
-		basic_machine=i386-pc
+		basic_machine=i686-pc
 		os=-mingw32
 		;;
 	mingw32ce)
@@ -830,7 +830,7 @@ case $basic_machine in
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
 	msys)
-		basic_machine=i386-pc
+		basic_machine=i686-pc
 		os=-msys
 		;;
 	mvs)
@@ -1546,6 +1546,9 @@ case $basic_machine in
 	c4x-* | tic4x-*)
 		os=-coff
 		;;
+	c8051-*)
+		os=-elf
+		;;
 	hexagon-*)
 		os=-elf
 		;;
diff --git a/configure b/configure
index 93ac9a4..9e70fb9 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.2.1.
+# Generated by GNU Autoconf 2.69 for netCDF-cxx4 4.3.0.
 #
 # Report bugs to <support-netcdf at unidata.ucar.edu>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='netCDF-cxx4'
 PACKAGE_TARNAME='netcdf-cxx4'
-PACKAGE_VERSION='4.2.1'
-PACKAGE_STRING='netCDF-cxx4 4.2.1'
+PACKAGE_VERSION='4.3.0'
+PACKAGE_STRING='netCDF-cxx4 4.3.0'
 PACKAGE_BUGREPORT='support-netcdf at unidata.ucar.edu'
 PACKAGE_URL=''
 
@@ -698,6 +698,14 @@ LDFLAGS
 CFLAGS
 CC
 LIBTOOL
+HAVE_DOT
+DOT
+DOXYGEN
+DOXYGEN_SEARCHENGINE
+DOXYGEN_HEADER_FILE
+DOXYGEN_CSS_FILE
+BUILD_DOCS_FALSE
+BUILD_DOCS_TRUE
 BUILD_BENCHMARKS_FALSE
 BUILD_BENCHMARKS_TRUE
 LARGE_FILE_TESTS_FALSE
@@ -793,6 +801,7 @@ enable_extra_tests
 enable_large_file_tests
 enable_benchmarks
 with_temp_large
+enable_doxygen
 enable_shared
 enable_static
 with_pic
@@ -1356,7 +1365,7 @@ 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 netCDF-cxx4 4.2.1 to adapt to many kinds of systems.
+\`configure' configures netCDF-cxx4 4.3.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1427,7 +1436,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of netCDF-cxx4 4.2.1:";;
+     short | recursive ) echo "Configuration of netCDF-cxx4 4.3.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1448,6 +1457,7 @@ Optional Features:
                           tests are complete). See option --with-temp-large to
                           specify temporary directory
   --enable-benchmarks     Run benchmarks tests (if any).
+  --enable-doxygen        Enable generation of documentation.
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
@@ -1551,7 +1561,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-netCDF-cxx4 configure 4.2.1
+netCDF-cxx4 configure 4.3.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2095,7 +2105,7 @@ 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 netCDF-cxx4 $as_me 4.2.1, which was
+It was created by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2446,11 +2456,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
-echo -n 4.2.1>VERSION
+echo -n 4.3.0>VERSION
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.2.1" >&5
-$as_echo "$as_me: netCDF-cxx4 4.2.1" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: netCDF-cxx4 4.3.0" >&5
+$as_echo "$as_me: netCDF-cxx4 4.3.0" >&6;}
 
 # Keep libtool macros in an m4 directory.
 
@@ -3087,7 +3097,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='netcdf-cxx4'
- VERSION='4.2.1'
+ VERSION='4.3.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3202,6 +3212,7 @@ fi
   MAINT=$MAINTAINER_MODE_TRUE
 
 
+
 # Check for the existance of this file before proceeding.
 
 
@@ -3299,6 +3310,157 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+
+####
+# Doxygen and doxygen-related options.
+####
+# Check whether --enable-doxygen was given.
+if test "${enable_doxygen+set}" = set; then :
+  enableval=$enable_doxygen;
+fi
+
+test "x$enable_doxygen" = xyes || enable_doxygen=no
+ if test "x$enable_doxygen" = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
+
+
+##
+# Eventually set these depending on an upcoming 'build release docs'
+# option.  See configure.ac in netcdf-c for guidance.
+##
+
+
+DOXYGEN_SEARCHENGINE="YES"
+
+
+##
+# Is doxygen installed? If so, have configure construct the Doxyfile.
+##
+for ac_prog in doxygen
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOXYGEN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOXYGEN"; then
+  ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOXYGEN="$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
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+$as_echo "$DOXYGEN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOXYGEN" && break
+done
+
+if test -z "$DOXYGEN"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - documentation will not be built" >&5
+$as_echo "$as_me: WARNING: Doxygen not found - documentation will not be built" >&2;}
+fi
+
+# Is graphviz/dot installed? If so, we'll use dot to create
+# graphs in the documentation.
+for ac_prog in dot
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DOT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DOT"; then
+  ac_cv_prog_DOT="$DOT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DOT="$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
+DOT=$ac_cv_prog_DOT
+if test -n "$DOT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$DOT" && break
+done
+
+if test -z "$DOT"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dot not found - will use simple charts in documentation" >&5
+$as_echo "$as_me: WARNING: dot not found - will use simple charts in documentation" >&2;}
+   HAVE_DOT=NO
+elif test "x$enable_dot" = xno; then
+   HAVE_DOT=NO
+else
+   HAVE_DOT=YES
+fi
+
+# If we have doxygen, and it's enabled, then process the file.
+if test "x$enable_doxygen" != xno; then
+   if test -n "$DOXYGEN"; then
+
+        ac_config_files="$ac_config_files docs/Doxyfile"
+
+   fi
+# Note: the list of files to input to doxygen
+# has been moved to docs/Doxyfile.in so
+# that make distcheck works correctly.
+# Any new inputs should be inserted into
+# docs/Doxyfile.in and possibley docs/Makefile.am
+fi
+
+#####
+# End Doxygen and doxygen-related options.
+#####
+
 # Valgrind tests don't work with shared builds because of some libtool
 # weirdness.
 if test "x$enable_shared" = xyes; then
@@ -5167,7 +5329,8 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$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
@@ -5568,10 +5731,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -5610,11 +5769,11 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   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
@@ -6692,7 +6851,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -6708,9 +6867,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -6729,7 +6898,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -8537,7 +8709,7 @@ lt_prog_compiler_static=
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -9015,6 +9187,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -9236,7 +9411,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -9413,6 +9588,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	link_all_deplibs=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -9866,7 +10042,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       link_all_deplibs=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -10703,17 +10879,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -10830,7 +10995,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -10894,6 +11059,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -13060,9 +13237,6 @@ fi
         ld_shlibs_CXX=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         link_all_deplibs_CXX=yes
@@ -13224,7 +13398,7 @@ fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -14084,7 +14258,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -14148,7 +14322,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -14519,6 +14693,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -14953,17 +15130,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -15080,7 +15246,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -15144,6 +15310,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -16625,7 +16803,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16671,7 +16849,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16695,7 +16873,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16740,7 +16918,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16764,7 +16942,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -16947,6 +17125,14 @@ else
   BUILD_PARALLEL_FALSE=
 fi
 
+ if test x$enable_doxygen = xyes; then
+  BUILD_DOCS_TRUE=
+  BUILD_DOCS_FALSE='#'
+else
+  BUILD_DOCS_TRUE='#'
+  BUILD_DOCS_FALSE=
+fi
+
  if test "x$enable_valgrind_tests" = xyes; then
   USE_VALGRIND_TESTS_TRUE=
   USE_VALGRIND_TESTS_FALSE='#'
@@ -16991,7 +17177,7 @@ HAS_NC4=$nc_build_v4
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: generating header files and makefiles" >&5
 $as_echo "$as_me: generating header files and makefiles" >&6;}
-ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile ncxx4-config netcdf-cxx4.pc"
+ac_config_files="$ac_config_files Makefile cxx4/Makefile examples/Makefile docs/Makefile ncxx4-config netcdf-cxx4.pc"
 
 
 cat >confcache <<\_ACEOF
@@ -17135,6 +17321,10 @@ if test -z "${BUILD_BENCHMARKS_TRUE}" && test -z "${BUILD_BENCHMARKS_FALSE}"; th
   as_fn_error $? "conditional \"BUILD_BENCHMARKS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+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
@@ -17171,6 +17361,10 @@ if test -z "${BUILD_PARALLEL_TRUE}" && test -z "${BUILD_PARALLEL_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_PARALLEL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_VALGRIND_TESTS_TRUE}" && test -z "${USE_VALGRIND_TESTS_FALSE}"; then
   as_fn_error $? "conditional \"USE_VALGRIND_TESTS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17572,7 +17766,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by netCDF-cxx4 $as_me 4.2.1, which was
+This file was extended by netCDF-cxx4 $as_me 4.3.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17638,7 +17832,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-netCDF-cxx4 config.status 4.2.1
+netCDF-cxx4 config.status 4.3.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -18143,11 +18337,13 @@ for ac_config_target in $ac_config_targets
 do
   case $ac_config_target in
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "docs/Doxyfile") CONFIG_FILES="$CONFIG_FILES docs/Doxyfile" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "cxx4/Makefile") CONFIG_FILES="$CONFIG_FILES cxx4/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+    "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "ncxx4-config") CONFIG_FILES="$CONFIG_FILES ncxx4-config" ;;
     "netcdf-cxx4.pc") CONFIG_FILES="$CONFIG_FILES netcdf-cxx4.pc" ;;
 
@@ -19638,6 +19834,7 @@ _LT_EOF
     "Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "cxx4/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "examples/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
+    "docs/Makefile":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "ncxx4-config":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
     "netcdf-cxx4.pc":F) test -f  ncxx4-config && chmod 755 ncxx4-config  ;;
 
@@ -19678,4 +19875,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
-
diff --git a/configure.ac b/configure.ac
index ce76967..906d3e2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@
 # the COPYRIGHT file for more information.
 
 AC_PREREQ([2.66])
-AC_INIT([netCDF-cxx4], [4.2.1], [support-netcdf at unidata.ucar.edu])
+AC_INIT([netCDF-cxx4], [4.3.0], [support-netcdf at unidata.ucar.edu])
 
 # Create the VERSION file, which contains the package version from
 # AC_INIT.
@@ -23,8 +23,9 @@ AC_CANONICAL_TARGET
 AC_CONFIG_HEADERS([config.h])
 
 # This call is required by automake.
-AM_INIT_AUTOMAKE([foreign dist-tarZ subdir-objects])
+AM_INIT_AUTOMAKE([foreign dist-zip subdir-objects])
 AM_MAINTAINER_MODE()
+
 # Check for the existance of this file before proceeding.
 AC_CONFIG_SRCDIR([cxx4/ncByte.cpp])
 
@@ -80,6 +81,62 @@ AC_MSG_RESULT($TEMP_LARGE)
 #AC_SUBST(TEMP_LARGE)
 AC_DEFINE_UNQUOTED([TEMP_LARGE], ["$TEMP_LARGE"], [Place to put very large netCDF test files.])
 
+
+####
+# Doxygen and doxygen-related options.
+####
+AC_ARG_ENABLE([doxygen],
+  [AS_HELP_STRING([--enable-doxygen],
+    [Enable generation of documentation.])])
+test "x$enable_doxygen" = xyes || enable_doxygen=no
+AM_CONDITIONAL([BUILD_DOCS], [test "x$enable_doxygen" = xyes])
+
+
+##
+# Eventually set these depending on an upcoming 'build release docs'
+# option.  See configure.ac in netcdf-c for guidance.
+##
+AC_SUBST([DOXYGEN_CSS_FILE], [])
+AC_SUBST([DOXYGEN_HEADER_FILE], [])
+AC_SUBST([DOXYGEN_SEARCHENGINE], ["YES"])
+
+##
+# Is doxygen installed? If so, have configure construct the Doxyfile.
+##
+AC_CHECK_PROGS([DOXYGEN], [doxygen])
+if test -z "$DOXYGEN"; then
+   AC_MSG_WARN([Doxygen not found - documentation will not be built])
+fi
+
+# Is graphviz/dot installed? If so, we'll use dot to create
+# graphs in the documentation.
+AC_CHECK_PROGS([DOT], [dot])
+if test -z "$DOT"; then
+   AC_MSG_WARN([dot not found - will use simple charts in documentation])
+   HAVE_DOT=NO
+elif test "x$enable_dot" = xno; then
+   HAVE_DOT=NO
+else
+   HAVE_DOT=YES
+fi
+
+# If we have doxygen, and it's enabled, then process the file.
+if test "x$enable_doxygen" != xno; then
+   if test -n "$DOXYGEN"; then
+        AC_SUBST(HAVE_DOT)
+        AC_CONFIG_FILES([docs/Doxyfile])
+   fi
+# Note: the list of files to input to doxygen
+# has been moved to docs/Doxyfile.in so
+# that make distcheck works correctly.
+# Any new inputs should be inserted into
+# docs/Doxyfile.in and possibley docs/Makefile.am
+fi
+
+#####
+# End Doxygen and doxygen-related options.
+#####
+
 # Valgrind tests don't work with shared builds because of some libtool
 # weirdness.
 if test "x$enable_shared" = xyes; then
@@ -144,6 +201,7 @@ AM_CONDITIONAL([BUILD_V2], [test "x$ac_cv_func_nccreate" = xyes])
 AM_CONDITIONAL([USE_LOGGING], [test "x$ac_cv_func_nc_set_log_level" = xyes])
 AM_CONDITIONAL([BUILD_DAP], [test "x$ac_cv_func_oc_open" = xyes])
 AM_CONDITIONAL([BUILD_PARALLEL], [test "x$ac_cv_func_nc_use_parallel_enabled" = xyes])
+AM_CONDITIONAL([BUILD_DOCS], [test x$enable_doxygen = xyes])
 AM_CONDITIONAL(USE_VALGRIND_TESTS, [test "x$enable_valgrind_tests" = xyes])
 
 # Flags for ncxx4-config script; by design $prefix, $includir, $libdir,
@@ -152,10 +210,10 @@ AM_CONDITIONAL(USE_VALGRIND_TESTS, [test "x$enable_valgrind_tests" = xyes])
 NC_LIBS="-lnetcdf_c++4"
 if test "x$enable_shared" != xyes; then
    NC_LIBS="$LDFLAGS $NC_LIBS $LIBS"
-fi	 
+fi
 
 case "x$target_os" in
-xsolaris*) 
+xsolaris*)
   NEWNCLIBS=""
   for x in $NC_LIBS ; do
     case "$x" in
@@ -179,9 +237,9 @@ AC_MSG_NOTICE([generating header files and makefiles])
 AC_CONFIG_FILES([Makefile
                  cxx4/Makefile
                  examples/Makefile
+                 docs/Makefile
                  ncxx4-config
                  netcdf-cxx4.pc],
                  [test -f  ncxx4-config && chmod 755 ncxx4-config ])
 
 AC_OUTPUT()
-
diff --git a/cxx4/CMakeLists.txt b/cxx4/CMakeLists.txt
new file mode 100644
index 0000000..431eb45
--- /dev/null
+++ b/cxx4/CMakeLists.txt
@@ -0,0 +1,47 @@
+## This is a CMake file, part of Unidata's netcdf-cxx package.
+
+INCLUDE_DIRECTORIES(".")
+
+###
+# Set up headers and sources
+###
+
+file(GLOB CXX_HEADERS *.h)
+file(GLOB CXX_SOURCES nc*.cpp)
+
+###
+# Set up tests.
+###
+IF(NCXX_ENABLE_TESTS)
+
+  add_bin_test(cxx4 test_classic)
+  add_bin_test(cxx4 test_group)
+  add_bin_test(cxx4 test_dim)
+  add_bin_test(cxx4 test_att)
+  add_bin_test(cxx4 test_var)
+  add_bin_test(cxx4 test_var2)
+  add_bin_test(cxx4 test_type)
+  add_bin_test(cxx4 test_open_close)
+
+ENDIF()
+
+ADD_LIBRARY(netcdf-cxx4 ${CXX_SOURCES})
+TARGET_INCLUDE_DIRECTORIES(netcdf-cxx4 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+TARGET_LINK_LIBRARIES(netcdf-cxx4 ${NETCDF_C_LIBRARY} ${EXTRA_DEPS})
+SET_TARGET_PROPERTIES(netcdf-cxx4 PROPERTIES
+  VERSION ${NCXX_LIB_VERSION}
+  SOVERSION ${NCXX_SO_VERSION}
+  )
+
+INSTALL(
+  FILES ${CXX_HEADERS}
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+  )
+INSTALL(
+  FILES netcdf
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+  )
+INSTALL(
+  TARGETS netcdf-cxx4
+  DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
diff --git a/cxx4/Makefile.am b/cxx4/Makefile.am
index 003ec7a..2d78330 100644
--- a/cxx4/Makefile.am
+++ b/cxx4/Makefile.am
@@ -6,12 +6,12 @@
 # Point pre-preprocessor to netcdf-4 directory (libsrc4).
 LDADD = $(top_builddir)/cxx4/libnetcdf_c++4.la  -lnetcdf
 
-# This is our output library. 
+# This is our output library.
 lib_LTLIBRARIES = libnetcdf_c++4.la
 
 # For rules updating the version info, see
 # http://www.gnu.org/s/libtool/manual/html_node/Updating-version-info.html
-libnetcdf_c__4_la_LDFLAGS = -version-info 1:2:0 
+libnetcdf_c__4_la_LDFLAGS = -version-info 1:3:0
 
 # These headers will be installed in the users header directory.
 include_HEADERS = netcdf ncAtt.h ncCheck.h ncDim.h ncException.h	\
@@ -31,7 +31,7 @@ ncUint64.cpp ncString.cpp
 # These are the tests.
 TESTFILES = test_classic$(EXEEXT) test_group$(EXEEXT)	\
 test_dim$(EXEEXT) test_att$(EXEEXT) test_var$(EXEEXT)	\
-test_var2$(EXEEXT) test_type$(EXEEXT)
+test_var2$(EXEEXT) test_type$(EXEEXT) test_open_close$(EXEEXT)
 
 test_classic_SOURCES = test_classic.cpp
 test_group_SOURCES = test_group.cpp
@@ -40,6 +40,7 @@ test_att_SOURCES = test_att.cpp test_utilities.h
 test_var_SOURCES = test_var.cpp test_utilities.h
 test_var2_SOURCES = test_var2.cpp test_utilities.h
 test_type_SOURCES = test_type.cpp test_utilities.h
+test_open_close_SOURCES = test_open_close.cpp test_utilities.h
 
 # Build and run these tests.
 check_PROGRAMS = $(TESTFILES)
@@ -51,5 +52,3 @@ CLEANFILES = firstFile.cdf test*.nc
 doxygen_stamp: $(libnetcdf_c__4_la_SOURCES) $(include_HEADERS)
 	doxygen
 	touch doxygen_stamp
-
-
diff --git a/cxx4/Makefile.in b/cxx4/Makefile.in
index 801e34e..56b9661 100644
--- a/cxx4/Makefile.in
+++ b/cxx4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -160,6 +160,10 @@ am_test_group_OBJECTS = test_group.$(OBJEXT)
 test_group_OBJECTS = $(am_test_group_OBJECTS)
 test_group_LDADD = $(LDADD)
 test_group_DEPENDENCIES = $(top_builddir)/cxx4/libnetcdf_c++4.la
+am_test_open_close_OBJECTS = test_open_close.$(OBJEXT)
+test_open_close_OBJECTS = $(am_test_open_close_OBJECTS)
+test_open_close_LDADD = $(LDADD)
+test_open_close_DEPENDENCIES = $(top_builddir)/cxx4/libnetcdf_c++4.la
 am_test_type_OBJECTS = test_type.$(OBJEXT)
 test_type_OBJECTS = $(am_test_type_OBJECTS)
 test_type_LDADD = $(LDADD)
@@ -226,12 +230,12 @@ am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libnetcdf_c__4_la_SOURCES) $(test_att_SOURCES) \
 	$(test_classic_SOURCES) $(test_dim_SOURCES) \
-	$(test_group_SOURCES) $(test_type_SOURCES) $(test_var_SOURCES) \
-	$(test_var2_SOURCES)
+	$(test_group_SOURCES) $(test_open_close_SOURCES) \
+	$(test_type_SOURCES) $(test_var_SOURCES) $(test_var2_SOURCES)
 DIST_SOURCES = $(libnetcdf_c__4_la_SOURCES) $(test_att_SOURCES) \
 	$(test_classic_SOURCES) $(test_dim_SOURCES) \
-	$(test_group_SOURCES) $(test_type_SOURCES) $(test_var_SOURCES) \
-	$(test_var2_SOURCES)
+	$(test_group_SOURCES) $(test_open_close_SOURCES) \
+	$(test_type_SOURCES) $(test_var_SOURCES) $(test_var2_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -456,6 +460,11 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@
+DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@
+DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -468,6 +477,7 @@ GREP = @GREP@
 HAS_DAP = @HAS_DAP@
 HAS_NC2 = @HAS_NC2@
 HAS_NC4 = @HAS_NC4@
+HAVE_DOT = @HAVE_DOT@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -567,12 +577,12 @@ top_srcdir = @top_srcdir@
 # Point pre-preprocessor to netcdf-4 directory (libsrc4).
 LDADD = $(top_builddir)/cxx4/libnetcdf_c++4.la  -lnetcdf
 
-# This is our output library. 
+# This is our output library.
 lib_LTLIBRARIES = libnetcdf_c++4.la
 
 # For rules updating the version info, see
 # http://www.gnu.org/s/libtool/manual/html_node/Updating-version-info.html
-libnetcdf_c__4_la_LDFLAGS = -version-info 1:2:0 
+libnetcdf_c__4_la_LDFLAGS = -version-info 1:3:0
 
 # These headers will be installed in the users header directory.
 include_HEADERS = netcdf ncAtt.h ncCheck.h ncDim.h ncException.h	\
@@ -594,7 +604,7 @@ ncUint64.cpp ncString.cpp
 # These are the tests.
 TESTFILES = test_classic$(EXEEXT) test_group$(EXEEXT)	\
 test_dim$(EXEEXT) test_att$(EXEEXT) test_var$(EXEEXT)	\
-test_var2$(EXEEXT) test_type$(EXEEXT)
+test_var2$(EXEEXT) test_type$(EXEEXT) test_open_close$(EXEEXT)
 
 test_classic_SOURCES = test_classic.cpp
 test_group_SOURCES = test_group.cpp
@@ -603,6 +613,7 @@ test_att_SOURCES = test_att.cpp test_utilities.h
 test_var_SOURCES = test_var.cpp test_utilities.h
 test_var2_SOURCES = test_var2.cpp test_utilities.h
 test_type_SOURCES = test_type.cpp test_utilities.h
+test_open_close_SOURCES = test_open_close.cpp test_utilities.h
 
 # Build and run these tests.
 check_PROGRAMS = $(TESTFILES)
@@ -706,6 +717,10 @@ test_group$(EXEEXT): $(test_group_OBJECTS) $(test_group_DEPENDENCIES) $(EXTRA_te
 	@rm -f test_group$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(test_group_OBJECTS) $(test_group_LDADD) $(LIBS)
 
+test_open_close$(EXEEXT): $(test_open_close_OBJECTS) $(test_open_close_DEPENDENCIES) $(EXTRA_test_open_close_DEPENDENCIES) 
+	@rm -f test_open_close$(EXEEXT)
+	$(AM_V_CXXLD)$(CXXLINK) $(test_open_close_OBJECTS) $(test_open_close_LDADD) $(LIBS)
+
 test_type$(EXEEXT): $(test_type_OBJECTS) $(test_type_DEPENDENCIES) $(EXTRA_test_type_DEPENDENCIES) 
 	@rm -f test_type$(EXEEXT)
 	$(AM_V_CXXLD)$(CXXLINK) $(test_type_OBJECTS) $(test_type_LDADD) $(LIBS)
@@ -754,6 +769,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_classic.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_dim.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_group.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_open_close.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_type.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_var.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test_var2.Po at am__quote@
@@ -1051,6 +1067,13 @@ test_type.log: test_type$(EXEEXT)
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+test_open_close.log: test_open_close$(EXEEXT)
+	@p='test_open_close$(EXEEXT)'; \
+	b='test_open_close'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/cxx4/NCDUMP b/cxx4/NCDUMP
deleted file mode 100755
index bb21fc5..0000000
--- a/cxx4/NCDUMP
+++ /dev/null
@@ -1,9 +0,0 @@
-
-#!/bin/sh 
-export LOCAL=/projects/codes/equilibrium/efit++/efit++Data/netCDF/development/local
-export CPLUS_INCLUDE_PATH=$LOCAL/include
-export LIBRARY_PATH=$LOCAL/lib
-export LD_LIBRARY_PATH=$LIBRARY_PATH":"$LD_LIBRARY_PATH
-# headers only
-# ./ncdump -h firstFile.cdf
-./ncdump  -s  $1
diff --git a/cxx4/NCGEN b/cxx4/NCGEN
deleted file mode 100755
index 9a3c91f..0000000
--- a/cxx4/NCGEN
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh 
-export LOCAL=/projects/codes/equilibrium/efit++/efit++Data/netCDF/development/local
-export CPLUS_INCLUDE_PATH=$LOCAL/include
-export LIBRARY_PATH=$LOCAL/lib
-export LD_LIBRARY_PATH=$LIBRARY_PATH":"$LD_LIBRARY_PATH
-# generate c-code
-./ncgen4  $1
diff --git a/cxx4/example1.cpp b/cxx4/example1.cpp
index 62fcde1..06dabcf 100644
--- a/cxx4/example1.cpp
+++ b/cxx4/example1.cpp
@@ -12,23 +12,23 @@ try
   {
     cout<<"Opening file \"firstFile.cdf\" with NcFile::replace"<<endl;
     NcFile ncFile("firstFile.cdf",NcFile::replace);
-    
+
     cout<<left<<setw(50)<<"Testing addGroup(\"groupName\")";
     NcGroup groupA(ncFile.addGroup("groupA"));
     NcGroup groupA0(ncFile.addGroup("groupA0"));
     NcGroup groupB(groupA.addGroup("groupB"));
     NcGroup groupC(groupA.addGroup("groupC"));
-    
-    cout <<left<<setw(50)<<"Number of groups in the top-level group is"<ncFile.getGroupCount()<<endl;
+
+    cout <<left<<setw(50)<<"Number of groups in the top-level group is" << ncFile.getGroupCount() <<endl;
 
     // create two dimensions
     ncFile.addDim("dim1",11);
     ncFile.addDim("dim2");
-    
-    // create a variable 
-    NcVar var1  = ncFile.addVar("varA",ncByte,dim1);
 
-    // create another variable 
+    // create a variable
+    NcVar var1  = ncFile.addVar("varA",ncByte,"dim1");
+
+    // create another variable
     vector<string> stringArray(2);
     stringArray[0] = "dim1";
     stringArray[1] = "dim2";
diff --git a/cxx4/ncAtt.cpp b/cxx4/ncAtt.cpp
index 94e4dd7..c373e73 100644
--- a/cxx4/ncAtt.cpp
+++ b/cxx4/ncAtt.cpp
@@ -98,7 +98,7 @@ void NcAtt::getValues(string& dataValues) const {
   char* tmpValues;
   tmpValues = (char *) malloc(att_len + 1);  /* + 1 for trailing null */
 
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),tmpValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_text(groupId,varId,myName.c_str(),tmpValues),__FILE__,__LINE__);
@@ -109,7 +109,7 @@ void NcAtt::getValues(string& dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_text(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -119,7 +119,7 @@ void NcAtt::getValues(char* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(unsigned char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_uchar(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -128,7 +128,7 @@ void NcAtt::getValues(unsigned char* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(signed char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_schar(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -137,7 +137,7 @@ void NcAtt::getValues(signed char* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_short(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -146,7 +146,7 @@ void NcAtt::getValues(short* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_int(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -155,7 +155,7 @@ void NcAtt::getValues(int* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_long(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -164,7 +164,7 @@ void NcAtt::getValues(long* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(float* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_float(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -173,7 +173,7 @@ void NcAtt::getValues(float* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(double* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_double(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -182,7 +182,7 @@ void NcAtt::getValues(double* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(unsigned short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_ushort(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -191,7 +191,7 @@ void NcAtt::getValues(unsigned short* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(unsigned int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_uint(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -200,7 +200,7 @@ void NcAtt::getValues(unsigned int* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_longlong(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -209,7 +209,7 @@ void NcAtt::getValues(long long* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(unsigned long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_ulonglong(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
@@ -218,7 +218,7 @@ void NcAtt::getValues(unsigned long long* dataValues) const {
 // Gets a netCDF variable attribute.
 void NcAtt::getValues(char** dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND) 
     ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_att_string(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__);
diff --git a/cxx4/ncAtt_keep.cpp b/cxx4/ncAtt_keep.cpp
deleted file mode 100644
index 4fd73ca..0000000
--- a/cxx4/ncAtt_keep.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-#include "ncAtt.h"
-#include "ncGroup.h"
-#include "ncCheck.h"
-#include <vector>
-#include <iostream>
-
-using namespace std;
-using namespace netCDF;
-  
-
-// destructor  (defined even though it is virtual)
-NcAtt::~NcAtt() {}
-
-// assignment operator
-NcAtt& NcAtt::operator=(const NcAtt& rhs)
-{
-  if (&rhs != this) {
-    nullObject = rhs.nullObject;
-    myName = rhs.myName;
-    groupId = rhs.groupId;
-    varId =rhs.varId;
-  }
-  return *this;
-}
-
-// Constructor generates a null object.
-NcAtt::NcAtt() : 
-  nullObject(true) 
-{}
-
-// Constructor for non-null instances.
-NcAtt::NcAtt(bool nullObject): 
-  nullObject(nullObject)
-{}
-
-// The copy constructor.
-NcAtt::NcAtt(const NcAtt& rhs): 
-  nullObject(rhs.nullObject),
-  myName(rhs.myName),
-  groupId(rhs.groupId),
-  varId(rhs.varId)
-{}
-
-
-// equivalence operator
-bool NcAtt::operator==(const NcAtt & rhs) const
-{
-  if(nullObject) 
-    return nullObject == rhs.nullObject;
-  else
-    return myName == rhs.myName && groupId == rhs.groupId && varId == rhs.varId;
-}  
-
-//  !=  operator
-bool NcAtt::operator!=(const NcAtt & rhs) const
-{
-  return !(*this == rhs);
-}  
-
-// Gets parent group.
-netCDF::NcGroup  NcAtt::getParentGroup() const {
-  return netCDF::NcGroup(groupId);
-}
-      
-
-// Returns the attribute type.
-NcType  NcAtt::getNcType() const{
-  // get the attribute type identifier
-  // create an NcType called ncTmpwith this identifier
-  // get the NcType called ncTmp from a parent or current group.
-
-  // Gets the NcType object with a given name, searching up the tree until the object is found.
-  groupId;
-  cout <<"groupID ="<<groupId<<endl;
-  NcGroup tmpGroup(groupId);
-  NcType(tmpGroup,myName);
-  NcType(NcGroup(groupId),myName);
-  return netCDF::NcType(NcGroup(groupId),myName);
-}
-
-// Gets attribute length.
-size_t  NcAtt::getAttLength() const{
-  size_t lenp;
-  ncCheck(nc_inq_attlen(groupId, varId, myName.c_str(), &lenp),__FILE__,__LINE__,__FUNCTION__);
-  return lenp;
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(char* dataValues) const {
-  ncCheck(nc_get_att_text(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(unsigned char* dataValues) const {
-  ncCheck(nc_get_att_uchar(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(signed char* dataValues) const {
-  ncCheck(nc_get_att_schar(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(short* dataValues) const {
-  ncCheck(nc_get_att_short(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(int* dataValues) const {
-  ncCheck(nc_get_att_int(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(long* dataValues) const {
-  ncCheck(nc_get_att_long(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(float* dataValues) const {
-  ncCheck(nc_get_att_float(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(double* dataValues) const {
-  ncCheck(nc_get_att_double(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(unsigned short* dataValues) const {
-  ncCheck(nc_get_att_ushort(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(unsigned int* dataValues) const {
-  ncCheck(nc_get_att_uint(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(long long* dataValues) const {
-  ncCheck(nc_get_att_longlong(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(unsigned long long* dataValues) const {
-  ncCheck(nc_get_att_ulonglong(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(char** dataValues) const {
-  ncCheck(nc_get_att_string(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Gets a netCDF variable attribute.
-void NcAtt::getValues(void* dataValues) const {
-  ncCheck(nc_get_att(groupId,varId,myName.c_str(),dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
diff --git a/cxx4/ncCheck.cpp b/cxx4/ncCheck.cpp
index 9e5be20..ed7e021 100644
--- a/cxx4/ncCheck.cpp
+++ b/cxx4/ncCheck.cpp
@@ -1,3 +1,4 @@
+#include <cstring>
 #include "netcdf.h"
 #include <ncException.h>
 using namespace std;
@@ -7,68 +8,87 @@ using namespace netCDF::exceptions;
 namespace netCDF
 {
   // function checks error code and if necessary throws appropriate exception.
-  void ncCheck(int retCode,char* file,int line){
+  void ncCheck(int retCode, const char* file, int line){
+    if (retCode==NC_NOERR)
+      return;
+
+    const char* msg = 0;
+    if (NC_ISSYSERR(retCode)){
+      msg = std::strerror(retCode);
+      msg = msg ? msg : "Unknown system error";
+    }else{
+      msg = nc_strerror(retCode);
+    }
+
     switch(retCode) {
-      
-    case NC_NOERR           : return; /* No Error */
-      
-    case NC_EBADID          : throw NcBadId("Not a netcdf id",file,line);
-    case NC_ENFILE          : throw NcNFile("Too many netcdfs open",file,line);
-    case NC_EEXIST          : throw NcExist("netcdf file exists && NC_NOCLOBBER",file,line);
-    case NC_EINVAL          : throw NcInvalidArg("Invalid Argument",file,line);
-    case NC_EPERM           : throw NcInvalidWrite("Write to read only",file,line);
-    case NC_ENOTINDEFINE    : throw NcNotInDefineMode("Operation not allowed in data mode",file,line);
-    case NC_EINDEFINE       : throw NcInDefineMode("Operation not allowed in define mode",file,line);
-    case NC_EINVALCOORDS    : throw NcInvalidCoords("Index exceeds dimension bound",file,line);
-    case NC_EMAXDIMS        : throw NcMaxDims("NC_MAX_DIMS is exceeded",file,line);
-    case NC_ENAMEINUSE      : throw NcNameInUse("String match to name in use",file,line);
-    case NC_ENOTATT         : throw NcNotAtt("Attribute not found",file,line);
-    case NC_EMAXATTS        : throw NcMaxAtts("NC_MAX_ATTRS exceeded",file,line);
-    case NC_EBADTYPE        : throw NcBadType("Not a netcdf data type",file,line);
-    case NC_EBADDIM         : throw NcBadDim("Invalid dimension id or name",file,line);
-    case NC_EUNLIMPOS       : throw NcUnlimPos("NC_UNLIMITED is in the wrong index",file,line);
-    case NC_EMAXVARS        : throw NcMaxVars("NC_MAX_VARS is exceeded",file,line);
-    case NC_ENOTVAR         : throw NcNotVar("Variable is not found",file,line);
-    case NC_EGLOBAL         : throw NcGlobal("Action prohibited on NC_GLOBAL varid",file,line);
-    case NC_ENOTNC          : throw NcNotNCF("Not a netcdf file",file,line);
-    case NC_ESTS            : throw NcSts("In Fortran, string too short",file,line);
-    case NC_EMAXNAME        : throw NcMaxName("NC_MAX_NAME exceeded",file,line);
-    case NC_EUNLIMIT        : throw NcUnlimit("NC_UNLIMITED size already in use",file,line);
-    case NC_ENORECVARS      : throw NcNoRecVars("nc_rec op when there are no record vars",file,line);
-    case NC_ECHAR           : throw NcChar("Attempt to convert between text & numbers",file,line);
-    case NC_EEDGE           : throw NcEdge("Edge+start exceeds dimension bound",file,line);
-    case NC_ESTRIDE         : throw NcStride("Illegal stride",file,line);
-    case NC_EBADNAME        : throw NcBadName("Attribute or variable name contains illegal characters",file,line);
-    case NC_ERANGE          : throw NcRange("Math result not representable",file,line);
-    case NC_ENOMEM          : throw NcNoMem("Memory allocation (malloc) failure",file,line);
-    case NC_EVARSIZE        : throw NcVarSize("One or more variable sizes violate format constraints",file,line);
-    case NC_EDIMSIZE        : throw NcDimSize("Invalid dimension size",file,line);
-    case NC_ETRUNC          : throw NcTrunc("File likely truncated or possibly corrupted",file,line);
+    case NC_EBADID          : throw NcBadId(msg,file,line);
+    case NC_ENFILE          : throw NcNFile(msg,file,line);
+    case NC_EEXIST          : throw NcExist(msg,file,line);
+    case NC_EINVAL          : throw NcInvalidArg(msg,file,line);
+    case NC_EPERM           : throw NcInvalidWrite(msg,file,line);
+    case NC_ENOTINDEFINE    : throw NcNotInDefineMode(msg,file,line);
+    case NC_EINDEFINE       : throw NcInDefineMode(msg,file,line);
+    case NC_EINVALCOORDS    : throw NcInvalidCoords(msg,file,line);
+    case NC_EMAXDIMS        : throw NcMaxDims(msg,file,line);
+    case NC_ENAMEINUSE      : throw NcNameInUse(msg,file,line);
+    case NC_ENOTATT         : throw NcNotAtt(msg,file,line);
+    case NC_EMAXATTS        : throw NcMaxAtts(msg,file,line);
+    case NC_EBADTYPE        : throw NcBadType(msg,file,line);
+    case NC_EBADDIM         : throw NcBadDim(msg,file,line);
+    case NC_EUNLIMPOS       : throw NcUnlimPos(msg,file,line);
+    case NC_EMAXVARS        : throw NcMaxVars(msg,file,line);
+    case NC_ENOTVAR         : throw NcNotVar(msg,file,line);
+    case NC_EGLOBAL         : throw NcGlobal(msg,file,line);
+    case NC_ENOTNC          : throw NcNotNCF(msg,file,line);
+    case NC_ESTS            : throw NcSts(msg,file,line);
+    case NC_EMAXNAME        : throw NcMaxName(msg,file,line);
+    case NC_EUNLIMIT        : throw NcUnlimit(msg,file,line);
+    case NC_ENORECVARS      : throw NcNoRecVars(msg,file,line);
+    case NC_ECHAR           : throw NcChar(msg,file,line);
+    case NC_EEDGE           : throw NcEdge(msg,file,line);
+    case NC_ESTRIDE         : throw NcStride(msg,file,line);
+    case NC_EBADNAME        : throw NcBadName(msg,file,line);
+    case NC_ERANGE          : throw NcRange(msg,file,line);
+    case NC_ENOMEM          : throw NcNoMem(msg,file,line);
+    case NC_EVARSIZE        : throw NcVarSize(msg,file,line);
+    case NC_EDIMSIZE        : throw NcDimSize(msg,file,line);
+    case NC_ETRUNC          : throw NcTrunc(msg,file,line);
 
       // The following are specific netCDF4 errors.
-    case NC_EHDFERR         : throw NcHdfErr("An error was reported by the HDF5 layer.",file,line);
-    case NC_ECANTREAD       : throw NcCantRead("Cannot Read",file,line);
-    case NC_ECANTWRITE      : throw NcCantWrite("Cannott write",file,line);
-    case NC_ECANTCREATE     : throw NcCantCreate("Cannot create",file,line);
-    case NC_EFILEMETA       : throw NcFileMeta("File  meta",file,line);
-    case NC_EDIMMETA        : throw NcDimMeta("dim meta",file,line);
-    case NC_EATTMETA        : throw NcAttMeta("att meta",file,line);
-    case NC_EVARMETA        : throw NcVarMeta("var meta",file,line);
-    case NC_ENOCOMPOUND     : throw NcNoCompound("No compound",file,line);
-    case NC_EATTEXISTS      : throw NcAttExists("Attribute exists",file,line);
-    case NC_ENOTNC4         : throw NcNotNc4("Attempting netcdf-4 operation on netcdf-3 file.",file,line);
-    case NC_ESTRICTNC3      : throw NcStrictNc3("Attempting netcdf-4 operation on strict nc3 netcdf-4 file.",file,line);
-    case NC_EBADGRPID       : throw NcBadGroupId("Bad group id.",file,line);
-    case NC_EBADTYPID       : throw NcBadTypeId("Bad type id.",file,line);                       // netcdf.h file inconsistent with documentation!!
-    case NC_EBADFIELD       : throw NcBadFieldId("Bad field id.",file,line);                     // netcdf.h file inconsistent with documentation!!
+    case NC_EHDFERR         : throw NcHdfErr(msg,file,line);
+    case NC_ECANTREAD       : throw NcCantRead(msg,file,line);
+    case NC_ECANTWRITE      : throw NcCantWrite(msg,file,line);
+    case NC_ECANTCREATE     : throw NcCantCreate(msg,file,line);
+    case NC_EFILEMETA       : throw NcFileMeta(msg,file,line);
+    case NC_EDIMMETA        : throw NcDimMeta(msg,file,line);
+    case NC_EATTMETA        : throw NcAttMeta(msg,file,line);
+    case NC_EVARMETA        : throw NcVarMeta(msg,file,line);
+    case NC_ENOCOMPOUND     : throw NcNoCompound(msg,file,line);
+    case NC_EATTEXISTS      : throw NcAttExists(msg,file,line);
+    case NC_ENOTNC4         : throw NcNotNc4(msg,file,line);
+    case NC_ESTRICTNC3      : throw NcStrictNc3(msg,file,line);
+    case NC_EBADGRPID       : throw NcBadGroupId(msg,file,line);
+    case NC_EBADTYPID       : throw NcBadTypeId(msg,file,line);                       // netcdf.h file inconsistent with documentation!!
+    case NC_EBADFIELD       : throw NcBadFieldId(msg,file,line);                     // netcdf.h file inconsistent with documentation!!
       //  case NC_EUNKNAME        : throw NcUnkownName("Cannot find the field id.",file,line);   // netcdf.h file inconsistent with documentation!!
 
-    case NC_ENOGRP          : throw NcEnoGrp("No netCDF group found",file,line);
-    case NC_ELATEDEF        : throw NcElateDef("Operation to set the deflation, chunking, endianness, fill, compression, or checksum of a NcVar object has been made after a call to getVar or putVar."
-					       ,file,line);
+    case NC_ENOGRP          : throw NcEnoGrp(msg,file,line);
+    case NC_ELATEDEF        : throw NcElateDef(msg,file,line);
 
     default:
-      throw NcException("NcException","Unknown error",file,line);
+      throw NcException(retCode, msg, file, line);
     }
   }
+
+  void ncCheckDefineMode(int ncid)
+  {
+    int status = nc_redef(ncid);
+    if (status != NC_EINDEFINE) ncCheck(status, __FILE__, __LINE__);
+  }
+
+  void ncCheckDataMode(int ncid)
+  {
+    int status = nc_enddef(ncid);
+    if (status != NC_ENOTINDEFINE) ncCheck(status, __FILE__, __LINE__);
+  }
 }
diff --git a/cxx4/ncCheck.h b/cxx4/ncCheck.h
index 3371a39..160503e 100644
--- a/cxx4/ncCheck.h
+++ b/cxx4/ncCheck.h
@@ -13,7 +13,23 @@ namespace netCDF
     \param file    The name of the file from which this call originates.
     \param line    The line number in the file from which this call originates.
   */
-  void ncCheck(int retCode,char* file,int line);
+  void ncCheck(int retCode, const char* file, int line);
+
+  /*! 
+    Function checks if the file (group) is in define mode.
+    If not, it places it in the define mode.
+    While this is automatically done by the underlying C API
+    for netCDF-4 files, the netCDF-3 files still need this call.
+  */
+  void ncCheckDefineMode(int ncid);
+
+  /*! 
+    Function checks if the file (group) is in data mode.
+    If not, it places it in the data mode.
+    While this is automatically done by the underlying C API
+    for netCDF-4 files, the netCDF-3 files still need this call.
+  */
+  void ncCheckDataMode(int ncid);
 
 };
 
diff --git a/cxx4/ncCompoundType.cpp b/cxx4/ncCompoundType.cpp
index 6771867..c50c3c4 100644
--- a/cxx4/ncCompoundType.cpp
+++ b/cxx4/ncCompoundType.cpp
@@ -33,7 +33,7 @@ NcCompoundType& NcCompoundType::operator=(const NcType& rhs)
 {
   if (&rhs != this) {
     // check the rhs is the base of a Compound type
-    if(getTypeClass() != nc_COMPOUND) 	throw NcException("NcException","The NcType object must be the base of a Compound type.",__FILE__,__LINE__);
+    if(getTypeClass() != nc_COMPOUND) 	throw NcException("The NcType object must be the base of a Compound type.",__FILE__,__LINE__);
     // assign base class parts
     NcType::operator=(rhs);
   }
@@ -87,7 +87,10 @@ void NcCompoundType::addMember(const string& memberName, const NcType& newMember
 //  Inserts a named array field.
 void NcCompoundType::addMember(const string& memberName, const NcType& newMemberType, size_t offset, const vector<int>& shape)
 {
-  ncCheck(nc_insert_array_compound(groupId, myId,const_cast<char*>(memberName.c_str()), offset, newMemberType.getId(), shape.size(), const_cast<int*>(&shape[0])),__FILE__,__LINE__);
+  if (!shape.empty())
+    ncCheck(nc_insert_array_compound(groupId, myId,const_cast<char*>(memberName.c_str()), offset, newMemberType.getId(), shape.size(), const_cast<int*>(&shape[0])),__FILE__,__LINE__);
+  else
+    addMember(memberName, newMemberType, offset);
 }
 
 
@@ -125,7 +128,21 @@ NcType NcCompoundType::getMember(int memberIndex) const
   }
 }
 
-  
+// Returns name of member field.
+std::string NcCompoundType::getMemberName(int memberIndex) const
+{
+  char fieldName[NC_MAX_NAME+1];
+  ncCheck(nc_inq_compound_fieldname(groupId,myId,memberIndex, fieldName),__FILE__,__LINE__);
+  return std::string(fieldName);
+}
+
+// Returns index of named member field.
+int NcCompoundType::getMemberIndex(const std::string& memberName) const{
+  int memberIndex;
+  ncCheck(nc_inq_compound_fieldindex(groupId,myId, memberName.c_str(),&memberIndex),__FILE__,__LINE__);
+  return memberIndex;
+}
+
 // Returns the number of dimensions of a member with the given index.
 int NcCompoundType::getMemberDimCount(int memberIndex) const 
 {
@@ -140,7 +157,8 @@ vector<int> NcCompoundType::getMemberShape(int memberIndex) const
 {
   vector<int> dim_size;
   dim_size.resize(getMemberDimCount(memberIndex));
-  ncCheck(nc_inq_compound_fielddim_sizes(groupId,myId,memberIndex,&dim_size[0]),__FILE__,__LINE__);
+  if(!dim_size.empty())
+    ncCheck(nc_inq_compound_fielddim_sizes(groupId,myId,memberIndex,&dim_size[0]),__FILE__,__LINE__);
   return dim_size;
 }
  
diff --git a/cxx4/ncCompoundType.h b/cxx4/ncCompoundType.h
index d879f58..f018778 100644
--- a/cxx4/ncCompoundType.h
+++ b/cxx4/ncCompoundType.h
@@ -80,8 +80,14 @@ the offset of a member "mem4" in structure struct1 is: offsetof(struct1,mem4).
     size_t  getMemberCount() const;
       
     /*! Returns a NcType object for a single member. */
-    NcType getMember(int memberIndex) const;              
-      
+    NcType getMember(int memberIndex) const;
+
+    /*! Returns name of member field. */
+    std::string getMemberName(int memberIndex) const;
+
+    /*! Returns index of named member field. */
+    int getMemberIndex(const std::string& memberName) const;
+
     /*! Returns the offset of the member with given index. */
     size_t getMemberOffset(const int index) const;
 
diff --git a/cxx4/ncDim.cpp b/cxx4/ncDim.cpp
index b546091..f56b544 100644
--- a/cxx4/ncDim.cpp
+++ b/cxx4/ncDim.cpp
@@ -89,13 +89,16 @@ bool NcDim::isUnlimited() const
   int* unlimdimidsp=NULL;
   // get the number of unlimited dimensions
   ncCheck(nc_inq_unlimdims(groupId,&numlimdims,unlimdimidsp),__FILE__,__LINE__);
-  // get all the unlimited dimension ids in this group
-  vector<int> unlimdimid(numlimdims);
-  ncCheck(nc_inq_unlimdims(groupId,&numlimdims,&unlimdimid[0]),__FILE__,__LINE__);
-  vector<int>::iterator it;
-  // now look to see if this dimension is unlimited
-  it = find(unlimdimid.begin(),unlimdimid.end(),myId);
-  return it != unlimdimid.end();
+  if (numlimdims){
+	  // get all the unlimited dimension ids in this group
+	  vector<int> unlimdimid(numlimdims);
+	  ncCheck(nc_inq_unlimdims(groupId,&numlimdims,&unlimdimid[0]),__FILE__,__LINE__);
+	  vector<int>::iterator it;
+	  // now look to see if this dimension is unlimited
+	  it = find(unlimdimid.begin(),unlimdimid.end(),myId);
+	  return it != unlimdimid.end();
+  }
+  return false;
 }
 
 
diff --git a/cxx4/ncEnumType.cpp b/cxx4/ncEnumType.cpp
index b9f35c2..f3a3ad4 100644
--- a/cxx4/ncEnumType.cpp
+++ b/cxx4/ncEnumType.cpp
@@ -32,7 +32,7 @@ NcEnumType& NcEnumType::operator=(const NcType& rhs)
 {
   if (&rhs != this) {
     // check the rhs is the base of an Enum type
-    if(getTypeClass() != NC_ENUM) throw NcException("NcException","The NcType object must be the base of an Enum type.",__FILE__,__LINE__);
+    if(getTypeClass() != NC_ENUM) throw NcException("The NcType object must be the base of an Enum type.",__FILE__,__LINE__);
     // assign base class parts
     NcType::operator=(rhs);
   }
@@ -62,7 +62,7 @@ NcEnumType::NcEnumType(const NcType& ncType):
   NcType(ncType)
 {
   // check the nctype object is the base of an Enum type
-  if(getTypeClass() != NC_ENUM) throw NcException("NcException","The NcType object must be the base of an Enum type.",__FILE__,__LINE__);
+  if(getTypeClass() != NC_ENUM) throw NcException("The NcType object must be the base of an Enum type.",__FILE__,__LINE__);
 }
 
 // Returns the base type.
diff --git a/cxx4/ncException.cpp b/cxx4/ncException.cpp
index 511c8d3..8c665fa 100644
--- a/cxx4/ncException.cpp
+++ b/cxx4/ncException.cpp
@@ -1,236 +1,308 @@
 #include <ncException.h>
 #include <sstream>
+#include <netcdf.h>
 using namespace std;
 using namespace netCDF;
 using namespace netCDF::exceptions;
 
 
 // Default object thrown if a netCDF exception is encountered.
-NcException::NcException(const string& exceptionNameIn,const string& complaintIn,const char* fileNameIn,int lineNumberIn)
-  :exceptionName(exceptionNameIn), complaint(complaintIn),fileName(fileNameIn), lineNumber(lineNumberIn)
-{}
+/*NcException::NcException(const string& complaint,const char* fileName,int lineNumber)
+  : what_msg(NULL)
+  , ec(0)
+{
+	try{
+		std::ostringstream oss;
+		oss << lineNumber;
+		what_msg = new std::string(complaint+"\nfile: "+fileName+"  line:"+oss.str());
+	}catch(...){
+		what_msg = NULL;
+	}
+}*/
+
+NcException::NcException(const char* complaint,const char* fileName,int lineNumber)
+  : what_msg(NULL)
+  , ec(0)
+{
+  try{
+    std::ostringstream oss;
+    oss << lineNumber;
+    what_msg = new std::string(complaint?complaint:"");
+    what_msg->append("\nfile: ");
+    what_msg->append(fileName);
+    what_msg->append("  line:");
+    what_msg->append(oss.str());
+  }catch(...){
+    what_msg = NULL;
+  }
+}
+
+NcException::NcException(int errorCode, const char* complaint,const char* fileName,int lineNumber)
+  : what_msg(NULL)
+  , ec(errorCode)
+{
+  try{
+    std::ostringstream oss;
+    oss << lineNumber;
+    what_msg = new std::string(complaint?complaint:"");
+    what_msg->append("\nfile: ");
+    what_msg->append(fileName);
+    what_msg->append("  line:");
+    what_msg->append(oss.str());
+  }catch(...){
+    what_msg = NULL;
+  }
+}
+
+NcException::NcException(const NcException& e) throw()
+	: what_msg(NULL)
+  , ec(e.ec)
+{
+	try{
+		what_msg = new std::string(*(e.what_msg));
+	}catch(...){
+		what_msg = NULL;
+	}
+}
+
+NcException& NcException::operator=(const NcException& e) throw(){
+	if (this != &e){
+    ec = e.ec;
+		delete what_msg;
+		try{
+			what_msg = new std::string(*(e.what_msg));
+		}catch(...){
+			what_msg = NULL;
+		}
+	}
+	return *this;
+}
+
+NcException::~NcException()throw() {
+	delete what_msg;
+}
 
-NcException::~NcException()throw() {}
 
 const char* NcException::what() const throw()
 {
-  std::ostringstream oss;
-  oss << lineNumber;
-  string message(exceptionName+": "+complaint+"\nfile: "+fileName+"  line:"+oss.str());
-  return message.c_str();
+  return what_msg==NULL ? "" : what_msg->c_str();
+}
+
+int NcException::errorCode() const throw() {
+  return ec;
 }
 
 
 // Thrown if the specified netCDF ID does not refer to an open netCDF dataset. 
-NcBadId::NcBadId(const string& complaint,const char* file,int line) :
-  NcException("NcBadId",complaint,file,line) { }
+NcBadId::NcBadId(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADID,complaint,file,line) { }
 
 
 // Thrown if too many netcdf files are open.
-NcNFile::NcNFile(const string& complaint,const char* file,int line) :
-  NcException("NcFile",complaint,file,line) { }
+NcNFile::NcNFile(const char* complaint,const char* file,int line) :
+  NcException(NC_ENFILE,complaint,file,line) { }
 
 // Thrown if, having set NC_NOCLOBBER, the specified dataset already exists. 
-NcExist::NcExist(const string& complaint,const char* file,int line) :
-  NcException("NcExist",complaint,file,line) { }
+NcExist::NcExist(const char* complaint,const char* file,int line) :
+  NcException(NC_EEXIST,complaint,file,line) { }
 
 // Thrown if not a netCDF id.
-NcInvalidArg::NcInvalidArg(const string& complaint,const char* file,int line) :
-  NcException("NcInvalidArg",complaint,file,line) { }
+NcInvalidArg::NcInvalidArg(const char* complaint,const char* file,int line) :
+  NcException(NC_EINVAL,complaint,file,line) { }
 
 // Thrown if invalid argument.
-NcInvalidWrite::NcInvalidWrite(const string& complaint,const char* file,int line) :
-  NcException("NcInvalidWrite",complaint,file,line) { }
+NcInvalidWrite::NcInvalidWrite(const char* complaint,const char* file,int line) :
+  NcException(NC_EPERM,complaint,file,line) { }
 
 // Thrown if operation not allowed in data mode.
-NcNotInDefineMode::NcNotInDefineMode(const string& complaint,const char* file,int line) :
-  NcException("NcNotIndDefineMode",complaint,file,line) { }
+NcNotInDefineMode::NcNotInDefineMode(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOTINDEFINE,complaint,file,line) { }
 
 // Thrown if operation not allowed in defined mode.
-NcInDefineMode::NcInDefineMode(const string& complaint,const char* file,int line) :
-  NcException("NcInDefineMode",complaint,file,line) { }
+NcInDefineMode::NcInDefineMode(const char* complaint,const char* file,int line) :
+  NcException(NC_EINDEFINE,complaint,file,line) { }
 
 // Index exceeds dimension bound
-NcInvalidCoords::NcInvalidCoords(const string& complaint,const char* file,int line) :
-  NcException("NcInvalidCoords",complaint,file,line) { }
+NcInvalidCoords::NcInvalidCoords(const char* complaint,const char* file,int line) :
+  NcException(NC_EINVALCOORDS,complaint,file,line) { }
 
 // Thrown if NC_MAX_DIMS is exceeded.
-NcMaxDims::NcMaxDims(const string& complaint,const char* file,int line) :
-  NcException("NcMaxDims",complaint,file,line) { }
+NcMaxDims::NcMaxDims(const char* complaint,const char* file,int line) :
+  NcException(NC_EMAXDIMS,complaint,file,line) { }
 
 // Thrown if string match to name is in use.
-NcNameInUse::NcNameInUse(const string& complaint,const char* file,int line) :
-  NcException("NcNameInUse",complaint,file,line) { }
+NcNameInUse::NcNameInUse(const char* complaint,const char* file,int line) :
+  NcException(NC_ENAMEINUSE,complaint,file,line) { }
 
 // Thrown if attribute is not found.
-NcNotAtt::NcNotAtt(const string& complaint,const char* file,int line) :
-  NcException("NcNotAtt",complaint,file,line) { }
+NcNotAtt::NcNotAtt(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOTATT,complaint,file,line) { }
 
 // Thrown if Nc_MAX_ATTRS is exceeded.
-NcMaxAtts::NcMaxAtts(const string& complaint,const char* file,int line) :
-  NcException("NcMaxAtts",complaint,file,line) { }
+NcMaxAtts::NcMaxAtts(const char* complaint,const char* file,int line) :
+  NcException(NC_EMAXATTS,complaint,file,line) { }
 
 // Thrown if not a valid netCDF data type.
-NcBadType::NcBadType(const string& complaint,const char* file,int line) :
-  NcException("NcBadType",complaint,file,line) { }
+NcBadType::NcBadType(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADTYPE,complaint,file,line) { }
 
 // Thrown if an invalid dimension id or name.
-NcBadDim::NcBadDim(const string& complaint,const char* file,int line) :
-  NcException("NcBadDim",complaint,file,line) { }
+NcBadDim::NcBadDim(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADDIM,complaint,file,line) { }
 
 // Thrown if Nc_UNLIMITED is in the wrong index.
-NcUnlimPos::NcUnlimPos(const string& complaint,const char* file,int line) :
-  NcException("NcUnlimPos",complaint,file,line) { }
+NcUnlimPos::NcUnlimPos(const char* complaint,const char* file,int line) :
+  NcException(NC_EUNLIMPOS,complaint,file,line) { }
 
 // Thrown if NC_MAX_VARS is exceeded.
-NcMaxVars::NcMaxVars(const string& complaint,const char* file,int line) :
-  NcException("NcMaxVars",complaint,file,line) { }
+NcMaxVars::NcMaxVars(const char* complaint,const char* file,int line) :
+  NcException(NC_EMAXVARS,complaint,file,line) { }
 
 // Thrown if variable is not found.
-NcNotVar::NcNotVar(const string& complaint,const char* file,int line) :
-  NcException("NcNotVar",complaint,file,line) { }
+NcNotVar::NcNotVar(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOTVAR,complaint,file,line) { }
 
 // Thrown if the action is prohibited on the NC_GLOBAL varid.
-NcGlobal::NcGlobal(const string& complaint,const char* file,int line) :
-  NcException("NcGlobal",complaint,file,line) { }
+NcGlobal::NcGlobal(const char* complaint,const char* file,int line) :
+  NcException(NC_EGLOBAL,complaint,file,line) { }
 
 // Thrown if not a netCDF file.
-NcNotNCF::NcNotNCF(const string& complaint,const char* file,int line) :
-  NcException("NcNotNCF",complaint,file,line) { }
+NcNotNCF::NcNotNCF(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOTNC,complaint,file,line) { }
 
 // Thrown if in FORTRAN, string is too short.
-NcSts::NcSts(const string& complaint,const char* file,int line) :
-  NcException("NcSts",complaint,file,line) { }
+NcSts::NcSts(const char* complaint,const char* file,int line) :
+  NcException(NC_ESTS,complaint,file,line) { }
 
 // Thrown if NC_MAX_NAME is exceeded.
-NcMaxName::NcMaxName(const string& complaint,const char* file,int line) :
-  NcException("NcMaxName",complaint,file,line) { }
+NcMaxName::NcMaxName(const char* complaint,const char* file,int line) :
+  NcException(NC_EMAXNAME,complaint,file,line) { }
 
 // Thrown if NC_UNLIMITED size is already in use.
-NcUnlimit::NcUnlimit(const string& complaint,const char* file,int line) :
-  NcException("NcUnlimit",complaint,file,line) { }
+NcUnlimit::NcUnlimit(const char* complaint,const char* file,int line) :
+  NcException(NC_EUNLIMIT,complaint,file,line) { }
 
 // Thrown if nc_rec op when there are no record vars.
-NcNoRecVars::NcNoRecVars(const string& complaint,const char* file,int line) :
-  NcException("NcNoRecVars",complaint,file,line) { }
+NcNoRecVars::NcNoRecVars(const char* complaint,const char* file,int line) :
+  NcException(NC_ENORECVARS,complaint,file,line) { }
 
 // Thrown if attempt to convert between text and numbers.
-NcChar::NcChar(const string& complaint,const char* file,int line) :
-  NcException("NcChar",complaint,file,line) { }
+NcChar::NcChar(const char* complaint,const char* file,int line) :
+  NcException(NC_ECHAR,complaint,file,line) { }
 
 // Thrown if edge+start exceeds dimension bound.
-NcEdge::NcEdge(const string& complaint,const char* file,int line) :
-  NcException("NcEdge",complaint,file,line) { }
+NcEdge::NcEdge(const char* complaint,const char* file,int line) :
+  NcException(NC_EEDGE,complaint,file,line) { }
 
 // Thrown if illegal stride.
-NcStride::NcStride(const string& complaint,const char* file,int line) :
-  NcException("NcStride",complaint,file,line) { }
+NcStride::NcStride(const char* complaint,const char* file,int line) :
+  NcException(NC_ESTRIDE,complaint,file,line) { }
 
 // Thrown if attribute or variable name contains illegal characters.
-NcBadName::NcBadName(const string& complaint,const char* file,int line) :
-  NcException("NcBadName",complaint,file,line) { }
+NcBadName::NcBadName(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADNAME,complaint,file,line) { }
 
 // Thrown if math result not representable.
-NcRange::NcRange(const string& complaint,const char* file,int line) :
-  NcException("NcRange",complaint,file,line) { }
+NcRange::NcRange(const char* complaint,const char* file,int line) :
+  NcException(NC_ERANGE,complaint,file,line) { }
 
 // Thrown if memory allocation (malloc) failure.
-NcNoMem::NcNoMem(const string& complaint,const char* file,int line) :
-  NcException("NcNoMem",complaint,file,line) { }
+NcNoMem::NcNoMem(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOMEM,complaint,file,line) { }
 
 // Thrown if one or more variable sizes violate format constraints
-NcVarSize::NcVarSize(const string& complaint,const char* file,int line) :
-  NcException("NcVarSize",complaint,file,line) { }
+NcVarSize::NcVarSize(const char* complaint,const char* file,int line) :
+  NcException(NC_EVARSIZE,complaint,file,line) { }
 
 // Thrown if invalid dimension size.
-NcDimSize::NcDimSize(const string& complaint,const char* file,int line) :
-  NcException("NcDimSize",complaint,file,line) { }
+NcDimSize::NcDimSize(const char* complaint,const char* file,int line) :
+  NcException(NC_EDIMSIZE,complaint,file,line) { }
 
 // Thrown if file likely truncated or possibly corrupted.
-NcTrunc::NcTrunc(const string& complaint,const char* file,int line) :
-  NcException("NcTrunc",complaint,file,line) { }
+NcTrunc::NcTrunc(const char* complaint,const char* file,int line) :
+  NcException(NC_ETRUNC,complaint,file,line) { }
 
 // Thrown if an error was reported by the HDF5 layer.
-NcHdfErr::NcHdfErr(const string& complaint,const char* file,int line) :
-  NcException("NcHdfErr",complaint,file,line) { }
+NcHdfErr::NcHdfErr(const char* complaint,const char* file,int line) :
+  NcException(NC_EHDFERR,complaint,file,line) { }
 
 // Thrown if cannot read.
-NcCantRead::NcCantRead(const string& complaint,const char* file,int line) :
-  NcException("NcCantRead",complaint,file,line) { }
+NcCantRead::NcCantRead(const char* complaint,const char* file,int line) :
+  NcException(NC_ECANTREAD,complaint,file,line) { }
 
 // Thrown if cannot write.
-NcCantWrite::NcCantWrite(const string& complaint,const char* file,int line) :
-  NcException("NcCantWrite",complaint,file,line) { }
+NcCantWrite::NcCantWrite(const char* complaint,const char* file,int line) :
+  NcException(NC_ECANTWRITE,complaint,file,line) { }
 
 // Thrown if cannot create.
-NcCantCreate::NcCantCreate(const string& complaint,const char* file,int line) :
-  NcException("NcCantCreate",complaint,file,line) { }
+NcCantCreate::NcCantCreate(const char* complaint,const char* file,int line) :
+  NcException(NC_ECANTCREATE,complaint,file,line) { }
 
 // Thrown if file meta.
-NcFileMeta::NcFileMeta(const string& complaint,const char* file,int line) :
-  NcException("NcFileMeta",complaint,file,line) { }
+NcFileMeta::NcFileMeta(const char* complaint,const char* file,int line) :
+  NcException(NC_EFILEMETA,complaint,file,line) { }
 
 // Thrown if dim meta.
-NcDimMeta::NcDimMeta(const string& complaint,const char* file,int line) :
-  NcException("NcDimMeta",complaint,file,line) { }
+NcDimMeta::NcDimMeta(const char* complaint,const char* file,int line) :
+  NcException(NC_EDIMMETA,complaint,file,line) { }
 
 // Thrown if attribute meta.
-NcAttMeta::NcAttMeta(const string& complaint,const char* file,int line) :
-  NcException("NcAttMeta",complaint,file,line) { }
+NcAttMeta::NcAttMeta(const char* complaint,const char* file,int line) :
+  NcException(NC_EATTMETA,complaint,file,line) { }
 
 // Thrown if variable meta.
-NcVarMeta::NcVarMeta(const string& complaint,const char* file,int line) :
-  NcException("NcVarMeta",complaint,file,line) { }
+NcVarMeta::NcVarMeta(const char* complaint,const char* file,int line) :
+  NcException(NC_EVARMETA,complaint,file,line) { }
 
 // Thrown if no compound.
-NcNoCompound::NcNoCompound(const string& complaint,const char* file,int line) :
-  NcException("NcNoCompound",complaint,file,line) { }
+NcNoCompound::NcNoCompound(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOCOMPOUND,complaint,file,line) { }
 
 // Thrown if attribute exists.
-NcAttExists::NcAttExists(const string& complaint,const char* file,int line) :
-  NcException("NcAttExists",complaint,file,line) { }
+NcAttExists::NcAttExists(const char* complaint,const char* file,int line) :
+  NcException(NC_EATTEXISTS,complaint,file,line) { }
 
 // Thrown if attempting netcdf-4 operation on netcdf-3 file.
-NcNotNc4::NcNotNc4(const string& complaint,const char* file,int line) :
-  NcException("NcNotNc4",complaint,file,line) { }
+NcNotNc4::NcNotNc4(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOTNC4,complaint,file,line) { }
 
 // Thrown if attempting netcdf-4 operation on strict nc3 netcdf-4 file.
-NcStrictNc3::NcStrictNc3(const string& complaint,const char* file,int line) :
-  NcException("NcStrictNc3",complaint,file,line) { }
+NcStrictNc3::NcStrictNc3(const char* complaint,const char* file,int line) :
+  NcException(NC_ESTRICTNC3,complaint,file,line) { }
 
 // Thrown if bad group id.
-NcBadGroupId::NcBadGroupId(const string& complaint,const char* file,int line) :
-  NcException("NcBadGroupId",complaint,file,line) { }
+NcBadGroupId::NcBadGroupId(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADGRPID,complaint,file,line) { }
 
 // Thrown if bad type id.
-NcBadTypeId::NcBadTypeId(const string& complaint,const char* file,int line) :
-  NcException("NcBadTypeId",complaint,file,line) { }
+NcBadTypeId::NcBadTypeId(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADTYPID,complaint,file,line) { }
 
 // Thrown if bad field id.
-NcBadFieldId::NcBadFieldId(const string& complaint,const char* file,int line) :
-  NcException("NcBadFieldId",complaint,file,line) { }
+NcBadFieldId::NcBadFieldId(const char* complaint,const char* file,int line) :
+  NcException(NC_EBADFIELD,complaint,file,line) { }
 
 // Thrown if cannot find the field id.
-NcUnknownName::NcUnknownName(const string& complaint,const char* file,int line) :
-  NcException("NcUnknownName",complaint,file,line) { }
+NcUnknownName::NcUnknownName(const char* complaint,const char* file,int line) :
+  NcException(complaint,file,line) { }
 
 // Thrown if cannot find the field id.
-NcEnoGrp::NcEnoGrp(const string& complaint,const char* file,int line) :
-  NcException("NcEnoGrp",complaint,file,line) { }
+NcEnoGrp::NcEnoGrp(const char* complaint,const char* file,int line) :
+  NcException(NC_ENOGRP,complaint,file,line) { }
 
 // Thrown if cannot find the field id.
-NcNullGrp::NcNullGrp(const string& complaint,const char* file,int line) :
-  NcException("NcNullGrp",complaint,file,line) { }
+NcNullGrp::NcNullGrp(const char* complaint,const char* file,int line) :
+  NcException(complaint,file,line) { }
 
 // Thrown if cannot find the field id.
-NcNullDim::NcNullDim(const string& complaint,const char* file,int line) :
-  NcException("NcNullDim",complaint,file,line) { }
+NcNullDim::NcNullDim(const char* complaint,const char* file,int line) :
+  NcException(complaint,file,line) { }
 
 // Thrown if cannot find the field id.
-NcNullType::NcNullType(const string& complaint,const char* file,int line) :
-  NcException("NcNullType",complaint,file,line) { }
+NcNullType::NcNullType(const char* complaint,const char* file,int line) :
+  NcException(complaint,file,line) { }
 
 // Thrown if an operation to set the deflation, chunking, endianness, fill, compression, or checksum of a NcVar object is issued after a call to NcVar::getVar or NcVar::putVar.
-NcElateDef::NcElateDef(const string& complaint,const char* file,int line) :
-  NcException("NcElateDef",complaint,file,line) { }
+NcElateDef::NcElateDef(const char* complaint,const char* file,int line) :
+  NcException(NC_ELATEDEF,complaint,file,line) { }
 
diff --git a/cxx4/ncException.h b/cxx4/ncException.h
index 88e0d8e..731ab49 100644
--- a/cxx4/ncException.h
+++ b/cxx4/ncException.h
@@ -23,12 +23,17 @@ namespace netCDF
     */
     class NcException : public std::exception {
     public:
-      NcException(const std::string& exceptionName,const std::string& complaint,const char* fileName,int lineNumber);
+      //NcException(const string& complaint,const char* fileName,int lineNumber);
+      NcException(const char* complaint,const char* fileName,int lineNumber);
+      NcException(int errorCode, const char* complaint,const char* fileName,int lineNumber);
+      NcException(const NcException& e) throw();
+      NcException& operator=(const NcException& e) throw();
       virtual ~NcException() throw();
       const char* what() const throw();
+      int errorCode() const throw();
     private:
-      std::string exceptionName, complaint, fileName;
-      int lineNumber;
+      std::string* what_msg;
+      int ec;
     };
 
 
@@ -36,49 +41,49 @@ namespace netCDF
     class NcBadId : public NcException
     {
     public:
-      NcBadId(const std::string& complaint,const char* file,int line);
+      NcBadId(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if too many netcdf files are open. */
     class NcNFile : public NcException
     {
     public:
-      NcNFile(const std::string& complaint,const char* file,int line);
+      NcNFile(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if, having set NC_NOCLOBBER, the specified dataset already exists. */
     class NcExist : public NcException
     {
     public:
-      NcExist(const std::string& complaint,const char* file,int line);
+      NcExist(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if not a netCDF id.  */
     class NcInvalidArg : public NcException
     {
     public:
-      NcInvalidArg(const std::string& complaint,const char* file,int line);
+      NcInvalidArg(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if invalid argument. */
     class NcInvalidWrite : public NcException
     {
     public:
-      NcInvalidWrite(const std::string& complaint,const char* file,int line);
+      NcInvalidWrite(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if operation not allowed in data mode. */
     class NcNotInDefineMode : public NcException
     {
     public:
-      NcNotInDefineMode(const std::string& complaint,const char* file,int line);
+      NcNotInDefineMode(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if operation not allowed in defined mode. */
     class NcInDefineMode : public NcException
     {
     public:
-      NcInDefineMode(const std::string& complaint,const char* file,int line);
+      NcInDefineMode(const char* complaint,const char* file,int line);
     };
 
     /*! 
@@ -91,294 +96,294 @@ namespace netCDF
     class NcInvalidCoords : public NcException
     {
     public:
-      NcInvalidCoords(const std::string& complaint,const char* file,int line);
+      NcInvalidCoords(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if NC_MAX_DIMS is exceeded. */
     class NcMaxDims : public NcException
     {
     public:
-      NcMaxDims(const std::string& complaint,const char* file,int line);
+      NcMaxDims(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if string match to name is in use. */
     class NcNameInUse : public NcException
     {
     public:
-      NcNameInUse(const std::string& complaint,const char* file,int line);
+      NcNameInUse(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attribute is not found. */
     class NcNotAtt : public NcException
     {
     public:
-      NcNotAtt(const std::string& complaint,const char* file,int line);
+      NcNotAtt(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if Nc_MAX_ATTRS is exceeded. */
     class NcMaxAtts : public NcException
     {
     public:
-      NcMaxAtts(const std::string& complaint,const char* file,int line);
+      NcMaxAtts(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if not a valid netCDF data type. */
     class NcBadType : public NcException
     {
     public:
-      NcBadType(const std::string& complaint,const char* file,int line);
+      NcBadType(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if an invalid dimension id or name. */
     class NcBadDim : public NcException
     {
     public:
-      NcBadDim(const std::string& complaint,const char* file,int line);
+      NcBadDim(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if Nc_UNLIMITED is in the wrong index. */
     class NcUnlimPos : public NcException
     {
     public:
-      NcUnlimPos(const std::string& complaint,const char* file,int line);
+      NcUnlimPos(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if NC_MAX_VARS is exceeded. */
     class NcMaxVars : public NcException
     {
     public:
-      NcMaxVars(const std::string& complaint,const char* file,int line);
+      NcMaxVars(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if variable is not found. */
     class NcNotVar : public NcException
     {
     public:
-      NcNotVar(const std::string& complaint,const char* file,int line);
+      NcNotVar(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if the action is prohibited on the NC_GLOBAL varid. */
     class NcGlobal : public NcException
     {
     public:
-      NcGlobal(const std::string& complaint,const char* file,int line);
+      NcGlobal(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if not a netCDF file. */
     class NcNotNCF : public NcException
     {
     public:
-      NcNotNCF(const std::string& complaint,const char* file,int line);
+      NcNotNCF(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if in FORTRAN, string is too short. */
     class NcSts : public NcException
     {
     public:
-      NcSts(const std::string& complaint,const char* file,int line);
+      NcSts(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if NC_MAX_NAME is exceeded. */
     class NcMaxName : public NcException
     {
     public:
-      NcMaxName(const std::string& complaint,const char* file,int line);
+      NcMaxName(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if NC_UNLIMITED size is already in use. */
     class NcUnlimit : public NcException
     {
     public:
-      NcUnlimit(const std::string& complaint,const char* file,int line);
+      NcUnlimit(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if nc_rec op when there are no record vars. */
     class NcNoRecVars : public NcException
     {
     public:
-      NcNoRecVars(const std::string& complaint,const char* file,int line);
+      NcNoRecVars(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attempt to convert between text and numbers. */
     class NcChar : public NcException
     {
     public:
-      NcChar(const std::string& complaint,const char* file,int line);
+      NcChar(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if edge+start exceeds dimension bound. */
     class NcEdge : public NcException
     {
     public:
-      NcEdge(const std::string& complaint,const char* file,int line);
+      NcEdge(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if illegal stride. */
     class NcStride : public NcException
     {
     public:
-      NcStride(const std::string& complaint,const char* file,int line);
+      NcStride(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attribute or variable name contains illegal characters. */
     class NcBadName : public NcException
     {
     public:
-      NcBadName(const std::string& complaint,const char* file,int line);
+      NcBadName(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if math result not representable. */
     class NcRange : public NcException
     {
     public:
-      NcRange(const std::string& complaint,const char* file,int line);
+      NcRange(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if memory allocation (malloc) failure. */
     class NcNoMem : public NcException
     {
     public:
-      NcNoMem(const std::string& complaint,const char* file,int line);
+      NcNoMem(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if one or more variable sizes violate format constraints */
     class NcVarSize : public NcException
     {
     public:
-      NcVarSize(const std::string& complaint,const char* file,int line);
+      NcVarSize(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if invalid dimension size. */
     class NcDimSize : public NcException
     {
     public:
-      NcDimSize(const std::string& complaint,const char* file,int line);
+      NcDimSize(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if file likely truncated or possibly corrupted. */
     class NcTrunc : public NcException
     {
     public:
-      NcTrunc(const std::string& complaint,const char* file,int line);
+      NcTrunc(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if an error was reported by the HDF5 layer. */
     class NcHdfErr : public NcException
     {
     public:
-      NcHdfErr(const std::string& complaint,const char* file,int line);
+      NcHdfErr(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if cannot read. */
     class NcCantRead : public NcException
     {
     public:
-      NcCantRead(const std::string& complaint,const char* file,int line);
+      NcCantRead(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if cannot write. */
     class NcCantWrite : public NcException
     {
     public:
-      NcCantWrite(const std::string& complaint,const char* file,int line);
+      NcCantWrite(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if cannot create. */
     class NcCantCreate : public NcException
     {
     public:
-      NcCantCreate(const std::string& complaint,const char* file,int line);
+      NcCantCreate(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if file meta. */
     class NcFileMeta : public NcException
     {
     public:
-      NcFileMeta(const std::string& complaint,const char* file,int line);
+      NcFileMeta(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if dim meta. */
     class NcDimMeta : public NcException
     {
     public:
-      NcDimMeta(const std::string& complaint,const char* file,int line);
+      NcDimMeta(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attribute meta. */
     class NcAttMeta : public NcException
     {
     public:
-      NcAttMeta(const std::string& complaint,const char* file,int line);
+      NcAttMeta(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if variable meta. */
     class NcVarMeta : public NcException
     {
     public:
-      NcVarMeta(const std::string& complaint,const char* file,int line);
+      NcVarMeta(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if no compound. */
     class NcNoCompound : public NcException
     {
     public:
-      NcNoCompound(const std::string& complaint,const char* file,int line);
+      NcNoCompound(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attribute exists. */
     class NcAttExists : public NcException
     {
     public:
-      NcAttExists(const std::string& complaint,const char* file,int line);
+      NcAttExists(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attempting netcdf-4 operation on netcdf-3 file. */
     class NcNotNc4 : public NcException
     {
     public:
-      NcNotNc4(const std::string& complaint,const char* file,int line);
+      NcNotNc4(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if attempting netcdf-4 operation on strict nc3 netcdf-4 file. */
     class NcStrictNc3 : public NcException
     {
     public:
-      NcStrictNc3(const std::string& complaint,const char* file,int line);
+      NcStrictNc3(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if bad group id. */
     class NcBadGroupId : public NcException
     {
     public:
-      NcBadGroupId(const std::string& complaint,const char* file,int line);
+      NcBadGroupId(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if bad type id. */
     class NcBadTypeId : public NcException
     {
     public:
-      NcBadTypeId(const std::string& complaint,const char* file,int line);
+      NcBadTypeId(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if bad field id. */
     class NcBadFieldId : public NcException
     {
     public:
-      NcBadFieldId(const std::string& complaint,const char* file,int line);
+      NcBadFieldId(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if cannot find the field id. */
     class NcUnknownName : public NcException
     {
     public:
-      NcUnknownName(const std::string& complaint,const char* file,int line);
+      NcUnknownName(const char* complaint,const char* file,int line);
     };
 
     /*! Thrown if cannot return a netCDF group. */
     class NcEnoGrp : public NcException
     {
     public:
-      NcEnoGrp(const std::string& complaint,const char* file,int line);
+      NcEnoGrp(const char* complaint,const char* file,int line);
     };
 
     /*! 
@@ -389,7 +394,7 @@ namespace netCDF
     class NcNullGrp : public NcException
     {
     public:
-      NcNullGrp(const std::string& complaint,const char* file,int line);
+      NcNullGrp(const char* complaint,const char* file,int line);
     };
 
     /*! 
@@ -400,7 +405,7 @@ namespace netCDF
     class NcNullType : public NcException
     {
     public:
-      NcNullType(const std::string& complaint,const char* file,int line);
+      NcNullType(const char* complaint,const char* file,int line);
     };
 
     /*! 
@@ -411,7 +416,7 @@ namespace netCDF
     class NcNullDim : public NcException
     {
     public:
-      NcNullDim(const std::string& complaint,const char* file,int line);
+      NcNullDim(const char* complaint,const char* file,int line);
     };
 
     /*! 
@@ -421,7 +426,7 @@ namespace netCDF
     class NcElateDef : public NcException
     {
     public:
-      NcElateDef(const std::string& complaint,const char* file,int line);
+      NcElateDef(const char* complaint,const char* file,int line);
     };
 
   }
diff --git a/cxx4/ncFile.cpp b/cxx4/ncFile.cpp
index aa6150e..08d043e 100644
--- a/cxx4/ncFile.cpp
+++ b/cxx4/ncFile.cpp
@@ -9,34 +9,52 @@ using namespace std;
 using namespace netCDF;
 using namespace netCDF::exceptions;
 
+int g_ncid = -1;
+
 // destructor
 NcFile::~NcFile()
 {
-  ncCheck(nc_close(myId),__FILE__,__LINE__);
+  // destructor may be called due to an exception being thrown
+  // hence throwing an exception from within a destructor
+  // causes undefined behaviour! so just printing a warning message
+  try
+  {
+    close();
+  }
+  catch (NcException &e)
+  {
+    cerr << e.what() << endl;
+  }
 }
 
-
-// assignment operator
-  NcFile& NcFile::operator=(const NcGroup & rhs)
+void NcFile::close()
 {
-  NcGroup::operator=(rhs);      // assign base class parts
-  return *this;
-}
+  if (!nullObject) {
+    ncCheck(nc_close(myId),__FILE__,__LINE__);
+    g_ncid = -1;
+  }
 
-//! The copy constructor.
-NcFile::NcFile(const NcGroup& rhs):
-    NcGroup(rhs)                   // intialize base class parts
-{}
+  nullObject = true;
+}
 
 // Constructor generates a null object.
-NcFile::NcFile() : 
+NcFile::NcFile() :
     NcGroup()  // invoke base class constructor
 {}
 
 // constructor
 NcFile::NcFile(const string& filePath, const FileMode fMode)
 {
-  switch (fMode) 
+  open(filePath, fMode);
+}
+
+// open a file from path and mode
+void NcFile::open(const string& filePath, const FileMode fMode)
+{
+  if (!nullObject)
+    close();
+
+  switch (fMode)
     {
     case NcFile::write:
       ncCheck(nc_open(filePath.c_str(), NC_WRITE, &myId),__FILE__,__LINE__);
@@ -51,12 +69,23 @@ NcFile::NcFile(const string& filePath, const FileMode fMode)
       ncCheck(nc_create(filePath.c_str(), NC_NETCDF4 | NC_CLOBBER, &myId),__FILE__,__LINE__);
       break;
     }
+
+  g_ncid = myId;
+
   nullObject=false;
 }
 
 // constructor with file type specified
 NcFile::NcFile(const string& filePath, const FileMode fMode, const FileFormat fFormat )
 {
+  open(filePath, fMode, fFormat);
+}
+
+void NcFile::open(const string& filePath, const FileMode fMode, const FileFormat fFormat )
+{
+  if (!nullObject)
+    close();
+
   int format;
   switch (fFormat)
     {
@@ -73,13 +102,13 @@ NcFile::NcFile(const string& filePath, const FileMode fMode, const FileFormat fF
 	format = NC_NETCDF4 | NC_CLASSIC_MODEL;
 	break;
     }
-  switch (fMode) 
+  switch (fMode)
     {
     case NcFile::write:
-      ncCheck(NC_EINVAL,__FILE__,__LINE__);
+      ncCheck(nc_open(filePath.c_str(), format | NC_WRITE, &myId),__FILE__,__LINE__);
       break;
     case NcFile::read:
-      ncCheck(NC_EINVAL,__FILE__,__LINE__);
+      ncCheck(nc_open(filePath.c_str(), format | NC_NOWRITE, &myId),__FILE__,__LINE__);
       break;
     case NcFile::newFile:
       ncCheck(nc_create(filePath.c_str(), format | NC_NOCLOBBER, &myId),__FILE__,__LINE__);
@@ -88,5 +117,17 @@ NcFile::NcFile(const string& filePath, const FileMode fMode, const FileFormat fF
       ncCheck(nc_create(filePath.c_str(), format | NC_CLOBBER, &myId),__FILE__,__LINE__);
       break;
     }
+
+  g_ncid = myId;
   nullObject=false;
 }
+
+// Synchronize an open netcdf dataset to disk
+void NcFile::sync(){
+  ncCheck(nc_sync(myId),__FILE__,__LINE__);
+}
+
+// Leave define mode, used for classic model
+void NcFile::enddef() {
+    ncCheck(nc_enddef(myId),__FILE__,__LINE__);
+}
diff --git a/cxx4/ncFile.h b/cxx4/ncFile.h
index bc50b7f..bc8df79 100644
--- a/cxx4/ncFile.h
+++ b/cxx4/ncFile.h
@@ -10,16 +10,16 @@
 namespace netCDF
 {
 
-  /*! 
+  /*!
     Class represents a netCDF root group.
-    The Ncfile class is the same as the NcGroup class with the additional functionality for opening 
+    The Ncfile class is the same as the NcGroup class with the additional functionality for opening
     and closing files.
    */
   class NcFile : public NcGroup
    {
    public:
-    
-      enum FileMode 
+
+      enum FileMode
 	 {
 	    read,	//!< File exists, open read-only.
 	    write,      //!< File exists, open for writing.
@@ -34,20 +34,12 @@ namespace netCDF
 	    nc4,        //!< (default) netCDF-4/HDF5 format, enhanced data model
 	    nc4classic  //!< netCDF-4/HDF5 format, classic data model
          };
-    
-      /*! assignment operator  */
-      NcFile& operator =(const NcGroup & rhs);
-
-      /*! 
-	The copy constructor. */
-      NcFile(const NcGroup& rhs);
 
 
-    
       /*! Constructor generates a \ref isNull "null object". */
       NcFile();
 
-      /*! 
+      /*!
 	Opens a netCDF file.
 	\param filePath    Name of netCDF optional path.
 	\param fMode       The file mode:
@@ -57,8 +49,18 @@ namespace netCDF
 	                    - 'newFile' Create new file, fail it exists already.
       */
       NcFile(const std::string& filePath, FileMode fMode);
+      /*!
+      Opens a netCDF file.
+      \param filePath    Name of netCDF optional path.
+      \param fMode       The file mode:
+                          - 'read'    File exists, open for read-only.
+                          - 'write'   File exists, open for writing.
+                          - 'replace' Create new file, even it already exists.
+                          - 'newFile' Create new file, fail it exists already.
+      */
+      void open(const std::string& filePath, FileMode fMode);
 
-      /*! 
+      /*!
 	Creates a netCDF file of a specified format.
 	\param filePath    Name of netCDF optional path.
 	\param fMode       The file mode:
@@ -66,14 +68,38 @@ namespace netCDF
 	                    - 'newFile' Create new file, fail it exists already.
       */
       NcFile(const std::string& filePath, FileMode fMode, FileFormat fFormat);
-    
+      /*!
+      Creates a netCDF file of a specified format.
+      \param filePath    Name of netCDF optional path.
+      \param fMode       The file mode:
+                          - 'replace' Create new file, even it already exists.
+                          - 'newFile' Create new file, fail it exists already.
+      */
+      void open(const std::string& filePath, FileMode fMode, FileFormat fFormat);
+
+      //! Close a file before destructor call
+      void close();
+
       /*! destructor */
       virtual ~NcFile(); //closes file and releases all resources
-    
+
+      //! Synchronize an open netcdf dataset to disk
+      void sync();
+
+      //! Leave define mode, used for classic model
+      void enddef();
+
+   private:
+	   /* Do not allow definition of NcFile involving copying any NcFile or NcGroup.
+		  Because the destructor closes the file and releases al resources such 
+		  an action could leave NcFile objects in an invalid state */
+	   NcFile& operator =(const NcGroup & rhs);
+	   NcFile& operator =(const NcFile & rhs);
+	   NcFile(const NcGroup& rhs);
+	   NcFile(const NcFile& rhs);
    };
-  
+
 }
 
- 
-#endif
 
+#endif
diff --git a/cxx4/ncGroup.cpp b/cxx4/ncGroup.cpp
index 31d7302..1680129 100644
--- a/cxx4/ncGroup.cpp
+++ b/cxx4/ncGroup.cpp
@@ -24,13 +24,13 @@ using namespace netCDF::exceptions;
 
 namespace netCDF {
   //  Global comparator operator ==============
-  // comparator operator 
+  // comparator operator
   bool operator<(const NcGroup& lhs,const NcGroup& rhs)
   {
     return false;
   }
-  
-  // comparator operator 
+
+  // comparator operator
   bool operator>(const NcGroup& lhs,const NcGroup& rhs)
   {
     return true;
@@ -38,7 +38,7 @@ namespace netCDF {
 }
 
 using namespace netCDF;
-    
+
 /////////////////////////////////////////////
 
 NcGroup::~NcGroup()
@@ -47,10 +47,11 @@ NcGroup::~NcGroup()
 
 // Constructor generates a null object.
 NcGroup::NcGroup() :
-  nullObject(true)
+  nullObject(true),
+  myId(-1)
 {}
 
-   
+
 // constructor
 NcGroup::NcGroup(const int groupId) :
   nullObject(false),
@@ -66,7 +67,7 @@ NcGroup& NcGroup::operator=(const NcGroup & rhs)
 }
 
 // The copy constructor.
-NcGroup::NcGroup(const NcGroup& rhs): 
+NcGroup::NcGroup(const NcGroup& rhs):
   nullObject(rhs.nullObject),
   myId(rhs.myId)
 {}
@@ -75,23 +76,23 @@ NcGroup::NcGroup(const NcGroup& rhs):
 // equivalence operator
 bool NcGroup::operator==(const NcGroup & rhs) const
 {
-  if(nullObject) 
+  if(nullObject)
     return nullObject == rhs.nullObject;
   else
     return myId == rhs.myId;
-}  
-  
+}
+
 //  !=  operator
 bool NcGroup::operator!=(const NcGroup & rhs) const
 {
   return !(*this == rhs);
-}  
-  
-  
+}
+
+
 // /////////////
 // NcGroup-related methods
 // /////////////
-  
+
 // Get the group name.
 string NcGroup::getName(bool fullName) const {
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getName on a Null group",__FILE__,__LINE__);
@@ -119,7 +120,7 @@ bool NcGroup::isRootGroup()  const{
   bool result = getName() == "/";
   return result;
 }
-  
+
 // Get the parent group.
 NcGroup NcGroup::getParentGroup() const {
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getParentGroup on a Null group",__FILE__,__LINE__);
@@ -134,14 +135,14 @@ NcGroup NcGroup::getParentGroup() const {
     return NcGroup();
   }
 }
-  
-  
+
+
 // Get the group id.
 int  NcGroup::getId() const {
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getId on a Null group",__FILE__,__LINE__);
   return myId;
 }
-  
+
 // Get the number of NcGroup objects.
 int NcGroup::getGroupCount(NcGroup::GroupLocation location) const {
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getGroupCount on a Null group",__FILE__,__LINE__);
@@ -177,7 +178,7 @@ int NcGroup::getGroupCount(NcGroup::GroupLocation location) const {
   return ngroups;
 }
 
-  
+
 // Get the set of child NcGroup objects.
 multimap<std::string,NcGroup> NcGroup::getGroups(NcGroup::GroupLocation location) const {
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getGroups on a Null group",__FILE__,__LINE__);
@@ -193,19 +194,21 @@ multimap<std::string,NcGroup> NcGroup::getGroups(NcGroup::GroupLocation location
   if(location == ChildrenGrps || location == AllChildrenGrps || location == AllGrps ) {
     // get the number of groups
     int groupCount = getGroupCount();
-    vector<int> ncids(groupCount);
-    int* numgrps=NULL;
-    // now get the id of each NcGroup and populate the ncGroups container.
-    ncCheck(nc_inq_grps(myId, numgrps,&ncids[0]),__FILE__,__LINE__);
-    for(int i=0; i<groupCount;i++){
-      NcGroup tmpGroup(ncids[i]);
-      ncGroups.insert(pair<const string,NcGroup>(tmpGroup.getName(),tmpGroup));
+    if (groupCount){
+      vector<int> ncids(groupCount);
+      int* numgrps=NULL;
+      // now get the id of each NcGroup and populate the ncGroups container.
+      ncCheck(nc_inq_grps(myId, numgrps,&ncids[0]),__FILE__,__LINE__);
+      for(int i=0; i<groupCount;i++){
+        NcGroup tmpGroup(ncids[i]);
+        ncGroups.insert(pair<const string,NcGroup>(tmpGroup.getName(),tmpGroup));
+      }
     }
   }
 
   // search in parent groups.
   if(location == ParentsGrps || location == ParentsAndCurrentGrps || location == AllGrps ) {
-    NcGroup tmpGroup(*this); 
+    NcGroup tmpGroup(*this);
     if(!tmpGroup.isRootGroup()) {
       while(1) {
 	const NcGroup parentGroup(tmpGroup.getParentGroup());
@@ -215,7 +218,7 @@ multimap<std::string,NcGroup> NcGroup::getGroups(NcGroup::GroupLocation location
       }
     }
   }
- 
+
   // search in child groups of the children
   if(location == ChildrenOfChildrenGrps || location == AllChildrenGrps || location == AllGrps ) {
     multimap<string,NcGroup>::iterator it;
@@ -225,23 +228,23 @@ multimap<std::string,NcGroup> NcGroup::getGroups(NcGroup::GroupLocation location
       ncGroups.insert(childGroups.begin(),childGroups.end());
     }
   }
-  
+
   return ncGroups;
 }
-  
+
 // Get the named child NcGroup object.
 NcGroup NcGroup::getGroup(const string& name,NcGroup::GroupLocation location) const{
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getGroup on a Null group",__FILE__,__LINE__);
   multimap<string,NcGroup> ncGroups(getGroups(location));
   pair<multimap<string,NcGroup>::iterator,multimap<string,NcGroup>::iterator> ret;
   ret = ncGroups.equal_range(name);
-  if(ret.first == ret.second) 
+  if(ret.first == ret.second)
     return NcGroup();  // null group is returned
-  else 
+  else
     return ret.first->second;
 }
 
-  
+
 
 // Get all NcGroup objects with a given name.
 set<NcGroup> NcGroup::getGroups(const std::string& name,NcGroup::GroupLocation location) const {
@@ -267,16 +270,16 @@ NcGroup NcGroup::addGroup(const string& name) const {
 }
 
 
-  
+
 // /////////////
 // NcVar-related accessors
 // /////////////
-  
+
 // Get the number of NcVar objects in this group.
 int NcGroup::getVarCount(NcGroup::Location location) const {
 
   // search in current group.
-  NcGroup tmpGroup(*this); 
+  NcGroup tmpGroup(*this);
   int nvars=0;
   // search in current group
   if((location == ParentsAndCurrent || location == ChildrenAndCurrent || location == Current || location ==All) && !tmpGroup.isNull()) {
@@ -313,34 +316,38 @@ multimap<std::string,NcVar> NcGroup::getVars(NcGroup::Location location) const {
   multimap<string,NcVar> ncVars;
 
   // search in current group.
-  NcGroup tmpGroup(*this); 
+  NcGroup tmpGroup(*this);
   if((location == ParentsAndCurrent || location == ChildrenAndCurrent || location == Current || location ==All) && !tmpGroup.isNull()) {
     // get the number of variables.
     int varCount = getVarCount();
-    // now get the name of each NcVar object and populate the ncVars container.
-    int* nvars=NULL;
-    vector<int> varids(varCount);
-    ncCheck(nc_inq_varids(myId, nvars,&varids[0]),__FILE__,__LINE__);
-    for(int i=0; i<varCount;i++){
-      NcVar tmpVar(*this,varids[i]);
-      ncVars.insert(pair<const string,NcVar>(tmpVar.getName(),tmpVar));
+    if (varCount){
+      // now get the name of each NcVar object and populate the ncVars container.
+      int* nvars=NULL;
+      vector<int> varids(varCount);
+      ncCheck(nc_inq_varids(myId, nvars,&varids[0]),__FILE__,__LINE__);
+      for(int i=0; i<varCount;i++){
+        NcVar tmpVar(*this,varids[i]);
+        ncVars.insert(pair<const string,NcVar>(tmpVar.getName(),tmpVar));
+      }
     }
   }
 
-  
+
   // search recursively in all parent groups.
   if(location == Parents || location == ParentsAndCurrent || location ==All) {
     tmpGroup=getParentGroup();
     while(!tmpGroup.isNull()) {
       // get the number of variables
       int varCount = tmpGroup.getVarCount();
-      // now get the name of each NcVar object and populate the ncVars container.
-      int* nvars=NULL;
-      vector<int> varids(varCount);
-      ncCheck(nc_inq_varids(tmpGroup.getId(), nvars,&varids[0]),__FILE__,__LINE__);
-      for(int i=0; i<varCount;i++){
-	NcVar tmpVar(tmpGroup,varids[i]);
-	ncVars.insert(pair<const string,NcVar>(tmpVar.getName(),tmpVar));
+      if (varCount){
+        // now get the name of each NcVar object and populate the ncVars container.
+        int* nvars=NULL;
+        vector<int> varids(varCount);
+        ncCheck(nc_inq_varids(tmpGroup.getId(), nvars,&varids[0]),__FILE__,__LINE__);
+        for(int i=0; i<varCount;i++){
+          NcVar tmpVar(tmpGroup,varids[i]);
+          ncVars.insert(pair<const string,NcVar>(tmpVar.getName(),tmpVar));
+        }
       }
       // continue loop with the parent.
       tmpGroup=tmpGroup.getParentGroup();
@@ -359,7 +366,7 @@ multimap<std::string,NcVar> NcGroup::getVars(NcGroup::Location location) const {
 
   return ncVars;
 }
-  
+
 
 // Get all NcVar objects with a given name.
 set<NcVar> NcGroup::getVars(const string& name,NcGroup::Location location) const {
@@ -382,17 +389,22 @@ NcVar NcGroup::getVar(const string& name,NcGroup::Location location) const {
   multimap<std::string,NcVar> ncVars(getVars(location));
   pair<multimap<string,NcVar>::iterator,multimap<string,NcVar>::iterator> ret;
   ret = ncVars.equal_range(name);
-  if(ret.first == ret.second) 
+  if(ret.first == ret.second)
     // no matching netCDF variable found so return null object.
     return NcVar();
-  else 
+  else
     return ret.first->second;
 }
 
+// Adds a new netCDF scalar variable.
+NcVar NcGroup::addVar(const std::string& name, const NcType& ncType) const {
+  return NcGroup::addVar(name, ncType, std::vector<NcDim>());
+}
 
 // Add a new netCDF variable.
 NcVar NcGroup::addVar(const string& name, const string& typeName, const string& dimName) const {
-    
+  ncCheckDefineMode(myId);
+
   // get an NcType object with the given type name.
   NcType tmpType(getType(typeName,NcGroup::ParentsAndCurrent));
   if(tmpType.isNull()) throw NcNullType("Attempt to invoke NcGroup::addVar failed: typeName must be defined in either the current group or a parent group",__FILE__,__LINE__);
@@ -412,17 +424,18 @@ NcVar NcGroup::addVar(const string& name, const string& typeName, const string&
 
 // Add a new netCDF variable.
 NcVar NcGroup::addVar(const string& name, const NcType& ncType, const NcDim& ncDim) const {
-    
+  ncCheckDefineMode(myId);
+
   // check NcType object is valid
   if(ncType.isNull()) throw NcNullType("Attempt to invoke NcGroup::addVar with a Null NcType object",__FILE__,__LINE__);
   NcType tmpType(getType(ncType.getName(),NcGroup::ParentsAndCurrent));
   if(tmpType.isNull()) throw NcNullType("Attempt to invoke NcGroup::addVar failed: NcType must be defined in either the current group or a parent group",__FILE__,__LINE__);
-  
+
   // check NcDim object is valid
   if(ncDim.isNull()) throw NcNullDim("Attempt to invoke NcGroup::addVar with a Null NcDim object",__FILE__,__LINE__);
   NcDim tmpDim(getDim(ncDim.getName(),NcGroup::ParentsAndCurrent));
   if(tmpDim.isNull()) throw NcNullDim("Attempt to invoke NcGroup::addVar failed: NcDim must be defined in either the current group or a parent group",__FILE__,__LINE__);
-  
+
   // finally define a new netCDF variable
   int varId;
   int dimId(tmpDim.getId());
@@ -434,7 +447,8 @@ NcVar NcGroup::addVar(const string& name, const NcType& ncType, const NcDim& ncD
 
 // Add a new netCDF multi-dimensional variable.
 NcVar NcGroup::addVar(const string& name, const string& typeName, const vector<string>& dimNames) const {
-    
+  ncCheckDefineMode(myId);
+
   // get an NcType object with the given name.
   NcType tmpType(getType(typeName,NcGroup::ParentsAndCurrent));
   if(tmpType.isNull()) throw NcNullType("Attempt to invoke NcGroup::addVar failed: typeName must be defined in either the current group or a parent group",__FILE__,__LINE__);
@@ -450,19 +464,21 @@ NcVar NcGroup::addVar(const string& name, const string& typeName, const vector<s
 
   // finally define a new netCDF variable
   int varId;
-  ncCheck(nc_def_var(myId,name.c_str(),tmpType.getId(),dimIds.size(),&dimIds[0],&varId),__FILE__,__LINE__);
+  int *dimIdsPtr = dimIds.empty() ? 0 : &dimIds[0];
+  ncCheck(nc_def_var(myId,name.c_str(),tmpType.getId(),dimIds.size(), dimIdsPtr,&varId),__FILE__,__LINE__);
   // return an NcVar object for this new variable
   return NcVar(*this,varId);
 }
 
 // Add a new netCDF multi-dimensional variable.
 NcVar NcGroup::addVar(const string& name, const NcType& ncType, const vector<NcDim>& ncDimVector) const {
-    
+  ncCheckDefineMode(myId);
+
   // check NcType object is valid
   if(ncType.isNull()) throw NcNullType("Attempt to invoke NcGroup::addVar with a Null NcType object",__FILE__,__LINE__);
   NcType tmpType(getType(ncType.getName(),NcGroup::ParentsAndCurrent));
   if(tmpType.isNull()) throw NcNullType("Attempt to invoke NcGroup::addVar failed: NcType must be defined in either the current group or a parent group",__FILE__,__LINE__);
-  
+
   // check NcDim objects are valid
   vector<NcDim>::const_iterator iter;
   vector<int> dimIds;
@@ -476,7 +492,8 @@ NcVar NcGroup::addVar(const string& name, const NcType& ncType, const vector<NcD
 
   // finally define a new netCDF variable
   int varId;
-  ncCheck(nc_def_var(myId,name.c_str(),tmpType.getId(),dimIds.size(),&dimIds[0],&varId),__FILE__,__LINE__);
+  int *dimIdsPtr = dimIds.empty() ? 0 : &dimIds[0];
+  ncCheck(nc_def_var(myId,name.c_str(),tmpType.getId(),dimIds.size(), dimIdsPtr,&varId),__FILE__,__LINE__);
   // return an NcVar object for this new variable
   return NcVar(*this,varId);
 }
@@ -485,12 +502,12 @@ NcVar NcGroup::addVar(const string& name, const NcType& ncType, const vector<NcD
 // /////////////
 // NcAtt-related methods
 // /////////////
-  
+
 // Get the number of group attributes.
 int NcGroup::getAttCount(NcGroup::Location location) const {
 
   // search in current group.
-  NcGroup tmpGroup(*this); 
+  NcGroup tmpGroup(*this);
   int ngatts=0;
   // search in current group
   if((location == ParentsAndCurrent || location == ChildrenAndCurrent || location == Current || location ==All) && !tmpGroup.isNull()) {
@@ -520,7 +537,7 @@ int NcGroup::getAttCount(NcGroup::Location location) const {
 
   return ngatts;
 }
-  
+
 // Get the collection of NcGroupAtt objects.
 multimap<std::string,NcGroupAtt> NcGroup::getAtts(NcGroup::Location location) const {
 
@@ -528,7 +545,7 @@ multimap<std::string,NcGroupAtt> NcGroup::getAtts(NcGroup::Location location) co
   multimap<string,NcGroupAtt> ncAtts;
 
   // search in current group.
-  NcGroup tmpGroup(*this); 
+  NcGroup tmpGroup(*this);
   if((location == ParentsAndCurrent || location == ChildrenAndCurrent || location == Current || location ==All) && !tmpGroup.isNull()) {
     // get the number of attributes
     int attCount = tmpGroup.getAttCount();
@@ -540,7 +557,7 @@ multimap<std::string,NcGroupAtt> NcGroup::getAtts(NcGroup::Location location) co
       ncAtts.insert(pair<const string,NcGroupAtt>(string(charName),tmpAtt));
     }
   }
-  
+
   // search recursively in all parent groups.
   if(location == Parents || location == ParentsAndCurrent || location ==All) {
     tmpGroup=getParentGroup();
@@ -549,10 +566,10 @@ multimap<std::string,NcGroupAtt> NcGroup::getAtts(NcGroup::Location location) co
       int attCount = tmpGroup.getAttCount();
       // now get the name of each NcAtt and populate the ncAtts container.
       for(int i=0; i<attCount;i++){
-	char charName[NC_MAX_NAME+1];
-	ncCheck(nc_inq_attname(tmpGroup.getId(),NC_GLOBAL,i,charName),__FILE__,__LINE__);
-	NcGroupAtt tmpAtt(tmpGroup.getId(),i);
-	ncAtts.insert(pair<const string,NcGroupAtt>(string(charName),tmpAtt));
+        char charName[NC_MAX_NAME+1];
+        ncCheck(nc_inq_attname(tmpGroup.getId(),NC_GLOBAL,i,charName),__FILE__,__LINE__);
+        NcGroupAtt tmpAtt(tmpGroup.getId(),i);
+        ncAtts.insert(pair<const string,NcGroupAtt>(string(charName),tmpAtt));
       }
       // continue loop with the parent.
       tmpGroup=tmpGroup.getParentGroup();
@@ -571,16 +588,16 @@ multimap<std::string,NcGroupAtt> NcGroup::getAtts(NcGroup::Location location) co
 
   return ncAtts;
 }
-  
+
 // Get the named NcGroupAtt object.
 NcGroupAtt NcGroup::getAtt(const std::string& name,NcGroup::Location location) const {
   multimap<std::string,NcGroupAtt> ncAtts(getAtts(location));
   pair<multimap<string,NcGroupAtt>::iterator,multimap<string,NcGroupAtt>::iterator> ret;
   ret = ncAtts.equal_range(name);
-  if(ret.first == ret.second) 
+  if(ret.first == ret.second)
     // no matching groupAttribute so return null object.
     return NcGroupAtt();
-  else 
+  else
     return ret.first->second;
 }
 
@@ -603,6 +620,7 @@ set<NcGroupAtt> NcGroup::getAtts(const string& name,NcGroup::Location location)
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const string& dataValues) const {
+  ncCheckDefineMode(myId);
   ncCheck(nc_put_att_text(myId,NC_GLOBAL,name.c_str(),dataValues.size(),dataValues.c_str()),__FILE__,__LINE__);
   // finally instantiate this attribute and return
   return getAtt(name);
@@ -610,8 +628,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const string& dataValues) const {
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const unsigned char* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_uchar(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -622,8 +641,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const signed char* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_schar(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -634,8 +654,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, short datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_short(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -646,8 +667,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, short datumVa
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, int datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_int(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -657,8 +679,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, int datumValu
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, long datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_long(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -668,8 +691,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, long datumVal
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, float datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_float(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -680,8 +704,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, float datumVa
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, double datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_double(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -692,8 +717,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, double datumV
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, unsigned short datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ushort(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -703,8 +729,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, unsigned shor
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, unsigned int datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_uint(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -714,8 +741,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, unsigned int
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, long long datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_longlong(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -726,8 +754,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, long long dat
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, unsigned long long datumValue) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ulonglong(myId,NC_GLOBAL,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -738,8 +767,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, unsigned long
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const short* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_short(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -750,8 +780,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const int* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_int(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -761,8 +792,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const long* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_long(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -772,8 +804,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const float* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_float(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -784,8 +817,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const double* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_double(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -796,8 +830,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const unsigned short* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ushort(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -807,8 +842,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const unsigned int* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_uint(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -818,8 +854,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const long long* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_longlong(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -830,8 +867,9 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const unsigned long long* dataValues) const {
+  ncCheckDefineMode(myId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ulonglong(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -842,6 +880,7 @@ NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, c
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
 NcGroupAtt NcGroup::putAtt(const string& name, size_t len, const char** dataValues) const {
+  ncCheckDefineMode(myId);
   ncCheck(nc_put_att_string(myId,NC_GLOBAL,name.c_str(),len,dataValues),__FILE__,__LINE__);
   // finally instantiate this attribute and return
   return getAtt(name);
@@ -849,17 +888,18 @@ NcGroupAtt NcGroup::putAtt(const string& name, size_t len, const char** dataValu
 
 //  Creates a new NetCDF group attribute or if already exisiting replaces it.
  NcGroupAtt NcGroup::putAtt(const string& name, const NcType& type, size_t len, const void* dataValues) const {
+  ncCheckDefineMode(myId);
   ncCheck(nc_put_att(myId,NC_GLOBAL,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   // finally instantiate this attribute and return
   return getAtt(name);
 }
 
 
-  
+
 // /////////////
 // NcDim-related methods
 // /////////////
-  
+
 // Get the number of NcDim objects.
 int NcGroup::getDimCount(NcGroup::Location location) const {
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::getDimCount on a Null group",__FILE__,__LINE__);
@@ -882,7 +922,7 @@ int NcGroup::getDimCount(NcGroup::Location location) const {
       ndims += it->second.getDimCount();
     }
   }
-  
+
   // search in child groups.
   if(location == Children || location == ChildrenAndCurrent || location == All ) {
     multimap<string,NcGroup>::iterator it;
@@ -904,12 +944,14 @@ multimap<string,NcDim> NcGroup::getDims(NcGroup::Location location) const {
   // search in current group
   if(location == Current || location == ParentsAndCurrent || location == ChildrenAndCurrent || location == All ) {
     int dimCount = getDimCount();
-    vector<int> dimids(dimCount);
-    ncCheck(nc_inq_dimids(getId(),&dimCount,&dimids[0],0),__FILE__,__LINE__);
-    // now get the name of each NcDim and populate the nDims container.
-    for(int i=0; i<dimCount;i++){
-      NcDim tmpDim(*this,dimids[i]); 
-      ncDims.insert(pair<const string,NcDim>(tmpDim.getName(),tmpDim));
+    if (dimCount){
+      vector<int> dimids(dimCount);
+      ncCheck(nc_inq_dimids(getId(), &dimCount, &dimids[0], 0),__FILE__,__LINE__);
+      // now get the name of each NcDim and populate the nDims container.
+      for(int i=0; i<dimCount;i++){
+        NcDim tmpDim(*this,dimids[i]);
+        ncDims.insert(pair<const string,NcDim>(tmpDim.getName(),tmpDim));
+      }
     }
   }
 
@@ -944,9 +986,9 @@ NcDim NcGroup::getDim(const string& name,NcGroup::Location location) const {
   multimap<string,NcDim> ncDims(getDims(location));
   pair<multimap<string,NcDim>::iterator,multimap<string,NcDim>::iterator> ret;
   ret = ncDims.equal_range(name);
-  if(ret.first == ret.second) 
+  if(ret.first == ret.second)
     return NcDim(); // null group is returned
-  else 
+  else
     return ret.first->second;
 }
 
@@ -968,6 +1010,7 @@ set<NcDim> NcGroup::getDims(const string& name,NcGroup::Location location) const
 
 // Add a new NcDim object.
 NcDim NcGroup::addDim(const string& name, size_t dimSize) const {
+  ncCheckDefineMode(myId);
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::addDim on a Null group",__FILE__,__LINE__);
   int dimId;
   ncCheck(nc_def_dim(myId,name.c_str(),dimSize,&dimId),__FILE__,__LINE__);
@@ -977,6 +1020,7 @@ NcDim NcGroup::addDim(const string& name, size_t dimSize) const {
 
 // Add a new NcDim object with unlimited size..
 NcDim NcGroup::addDim(const string& name) const {
+  ncCheckDefineMode(myId);
   if(isNull()) throw NcNullGrp("Attempt to invoke NcGroup::addDim on a Null group",__FILE__,__LINE__);
   int dimId;
   ncCheck(nc_def_dim(myId,name.c_str(),NC_UNLIMITED,&dimId),__FILE__,__LINE__);
@@ -1016,7 +1060,7 @@ int NcGroup::getTypeCount(NcGroup::Location location) const {
       ntypes += it->second.getTypeCount();
     }
   }
-  
+
   // search in child groups.
   if(location == Children || location == ChildrenAndCurrent || location == All ) {
     multimap<string,NcGroup>::iterator it;
@@ -1029,7 +1073,7 @@ int NcGroup::getTypeCount(NcGroup::Location location) const {
 }
 
 
-  
+
 // Gets the number of type objects with a given enumeration type.
 int NcGroup::getTypeCount(NcType::ncType enumType, NcGroup::Location location) const {
 
@@ -1043,11 +1087,13 @@ int NcGroup::getTypeCount(NcType::ncType enumType, NcGroup::Location location) c
     int ntypesp;
     int* typeidsp=NULL;
     ncCheck(nc_inq_typeids(getId(), &ntypesp,typeidsp),__FILE__,__LINE__);
-    vector<int> typeids(ntypesp);
-    ncCheck(nc_inq_typeids(getId(), &ntypesp,&typeids[0]),__FILE__,__LINE__);
-    for (int i=0; i<ntypesp;i++){
-      NcType tmpType(*this,typeids[i]);
-      if(tmpType.getTypeClass() == enumType) ntypes++;
+    if (ntypesp){
+      vector<int> typeids(ntypesp);
+      ncCheck(nc_inq_typeids(getId(), &ntypesp,&typeids[0]),__FILE__,__LINE__);
+      for (int i=0; i<ntypesp;i++){
+        NcType tmpType(*this,typeids[i]);
+        if(tmpType.getTypeClass() == enumType) ntypes++;
+      }
     }
   }
 
@@ -1059,7 +1105,7 @@ int NcGroup::getTypeCount(NcType::ncType enumType, NcGroup::Location location) c
       ntypes += it->second.getTypeCount(enumType);
     }
   }
-  
+
   // search in child groups.
   if(location == Children || location == ChildrenAndCurrent || location == All ) {
     multimap<string,NcGroup>::iterator it;
@@ -1081,12 +1127,14 @@ multimap<string,NcType> NcGroup::getTypes(NcGroup::Location location) const {
   // search in current group
   if(location == Current || location == ParentsAndCurrent || location == ChildrenAndCurrent || location == All ) {
     int typeCount = getTypeCount();
-    vector<int> typeids(typeCount);
-    ncCheck(nc_inq_typeids(getId(), &typeCount,&typeids[0]),__FILE__,__LINE__);
-    // now get the name of each NcType and populate the nTypes container.
-    for(int i=0; i<typeCount;i++){
-      NcType tmpType(*this,typeids[i]); 
-      ncTypes.insert(pair<const string,NcType>(tmpType.getName(),tmpType));
+    if (typeCount){
+      vector<int> typeids(typeCount);
+      ncCheck(nc_inq_typeids(getId(), &typeCount,&typeids[0]),__FILE__,__LINE__);
+      // now get the name of each NcType and populate the nTypes container.
+      for(int i=0; i<typeCount;i++){
+        NcType tmpType(*this,typeids[i]);
+        ncTypes.insert(pair<const string,NcType>(tmpType.getName(),tmpType));
+      }
     }
   }
 
@@ -1184,8 +1232,8 @@ NcType NcGroup::getType(const string& name, NcGroup::Location location) const {
   if(name ==  "short"   ) return ncShort;
   if(name ==  "ushort"  ) return ncUshort;
   if(name ==  "int"     ) return ncInt;
-  if(name ==  "uint"    ) return ncUint;  
-  if(name ==  "int64"   ) return ncInt64; 
+  if(name ==  "uint"    ) return ncUint;
+  if(name ==  "int64"   ) return ncInt64;
   if(name ==  "uint64"  ) return ncUint64;
   if(name ==  "float"   ) return ncFloat;
   if(name ==  "double"  ) return ncDouble;
@@ -1202,7 +1250,7 @@ NcType NcGroup::getType(const string& name, NcGroup::Location location) const {
   set<NcType> tmpType;
     // get the set of NcType objects with a given name
   ret=types.equal_range(name);
-  if(ret.first == ret.second) 
+  if(ret.first == ret.second)
     return NcType();
   else
     return ret.first->second;
@@ -1211,6 +1259,7 @@ NcType NcGroup::getType(const string& name, NcGroup::Location location) const {
 
 // Adds a new netCDF Enum type.
 NcEnumType NcGroup::addEnumType(const string& name,NcEnumType::ncEnumType baseType) const {
+  ncCheckDefineMode(myId);
   nc_type typeId;
   ncCheck(nc_def_enum(myId, baseType, name.c_str(), &typeId),__FILE__,__LINE__);
   NcEnumType ncTypeTmp(*this,name);
@@ -1220,6 +1269,7 @@ NcEnumType NcGroup::addEnumType(const string& name,NcEnumType::ncEnumType baseTy
 
 // Adds a new netCDF Vlen type.
 NcVlenType NcGroup::addVlenType(const string& name,NcType& baseType) const {
+  ncCheckDefineMode(myId);
   nc_type typeId;
   ncCheck(nc_def_vlen(myId,  const_cast<char*>(name.c_str()),baseType.getId(),&typeId),__FILE__,__LINE__);
   NcVlenType ncTypeTmp(*this,name);
@@ -1229,27 +1279,29 @@ NcVlenType NcGroup::addVlenType(const string& name,NcType& baseType) const {
 
 // Adds a new netCDF Opaque type.
 NcOpaqueType NcGroup::addOpaqueType(const string& name, size_t size) const {
+  ncCheckDefineMode(myId);
   nc_type typeId;
   ncCheck(nc_def_opaque(myId, size,const_cast<char*>(name.c_str()), &typeId),__FILE__,__LINE__);
   NcOpaqueType ncTypeTmp(*this,name);
   return ncTypeTmp;
 }
-    
+
 // Adds a new netCDF UserDefined type.
 NcCompoundType NcGroup::addCompoundType(const string& name, size_t size) const {
+  ncCheckDefineMode(myId);
   nc_type typeId;
   ncCheck(nc_def_compound(myId, size,const_cast<char*>(name.c_str()),&typeId),__FILE__,__LINE__);
   NcCompoundType ncTypeTmp(*this,name);
   return ncTypeTmp;
 }
-  
-  
+
+
 // Get the collection of coordinate variables.
 map<string,NcGroup> NcGroup::getCoordVars(NcGroup::Location location) const {
   map<string,NcGroup> coordVars;
 
   // search in current group and parent groups.
-  NcGroup tmpGroup(*this); 
+  NcGroup tmpGroup(*this);
   multimap<string,NcDim>::iterator itD;
   multimap<string,NcVar>::iterator itV;
   while(1) {
@@ -1279,7 +1331,7 @@ map<string,NcGroup> NcGroup::getCoordVars(NcGroup::Location location) const {
       coordVars.insert(coordVarsTmp.begin(),coordVarsTmp.end());
     }
   }
-  
+
   return coordVars;
 }
 
@@ -1288,7 +1340,7 @@ void NcGroup::getCoordVar(string& coordVarName, NcDim& ncDim, NcVar& ncVar, NcGr
 
   // search in current group and parent groups.
   multimap<string,NcDim>::iterator itD;
-  NcGroup tmpGroup(*this); 
+  NcGroup tmpGroup(*this);
   multimap<string,NcVar>::iterator itV;
   while(1) {
     // get the collection of NcDim objects defined in this group.
diff --git a/cxx4/ncGroup.h b/cxx4/ncGroup.h
index 3f993a8..3acf1a5 100644
--- a/cxx4/ncGroup.h
+++ b/cxx4/ncGroup.h
@@ -14,6 +14,9 @@
 
 namespace netCDF
 {
+
+  static int file_id;
+
   class NcVar;          // forward declaration.
   class NcDim;          // forward declaration.
   class NcVlenType;     // forward declaration.
@@ -22,10 +25,10 @@ namespace netCDF
 
   /*! Class represents a netCDF group. */
   class NcGroup
-  {	
-    
+  {
+
   public:
-    
+
     /*!
       The enumeration list contains the options for selecting groups (used for returned set of NcGroup objects).
     */
@@ -38,7 +41,7 @@ namespace netCDF
 	ParentsAndCurrentGrps,     //!< Select from set of parent groups(includes the current group).
 	AllGrps                    //!< Select from set of parent groups, current groups and all the children beneath.
       };
-    
+
     /*!
       The enumeration list contains the options for selecting groups.
     */
@@ -51,11 +54,11 @@ namespace netCDF
 	ChildrenAndCurrent, //!< Select from contents of current and child groups.
 	All                 //!< Select from contents of current, parents and child groups.
       };
-    
+
 
     /*! assignment operator  */
     NcGroup& operator=(const NcGroup& rhs);
-    
+
     /*! Constructor generates a \ref isNull "null object". */
     NcGroup();
 
@@ -67,23 +70,23 @@ namespace netCDF
 
     /*! destructor  */
     virtual ~NcGroup();
-    
+
     /*! equivalence operator */
-    bool operator==(const NcGroup& rhs) const;     
-    
+    bool operator==(const NcGroup& rhs) const;
+
     /*!  != operator */
-    bool operator!=(const NcGroup& rhs) const;     
+    bool operator!=(const NcGroup& rhs) const;
 
     /*! comparator operator  */
     friend bool operator<(const NcGroup& lhs,const NcGroup& rhs);
-    
+
     /*! comparator operator  */
     friend bool operator>(const NcGroup& lhs,const NcGroup& rhs);
-    
+
     // /////////////
     // NcGroup-related methods
     // /////////////
-    
+
     /*! Gets the group name. */
     /*!
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
@@ -92,20 +95,20 @@ namespace netCDF
     */
     std::string getName(bool fullName=false) const;
 
-    /*! 
+    /*!
       Gets the parent group.
       Method will throw an netCDF::exceptions::NcNullgrp exception if the  group is null (ie NcGroup::isNull()=true).
       If the current root is the parent group, then return a null group.
     */
     NcGroup getParentGroup() const ;
 
-    /*! 
+    /*!
       Gets the group id.
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
     */
     int  getId() const;
-    
-    /*! 
+
+    /*!
       Gets the number of  NcGroup objects.
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
       \param location Enumeration type controlling the groups to search.
@@ -113,7 +116,7 @@ namespace netCDF
     */
     int getGroupCount(NcGroup::GroupLocation location=ChildrenGrps) const;
 
-    /*! 
+    /*!
       Gets the collection of NcGroup objects.
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
       \param location Enumeration type controlling the groups to search.
@@ -122,7 +125,7 @@ namespace netCDF
     std::multimap<std::string,NcGroup> getGroups(NcGroup::GroupLocation location=ChildrenGrps) const;
 
 
-    /*! 
+    /*!
       Gets NcGroup objects with a given name.
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
       \param name     Name of group.
@@ -136,13 +139,13 @@ namespace netCDF
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
       \param name  Group name.
       \param location   Enumeration type controlling the groups to search.
-      \return      An NcGroup object. If there are multiple objects indentied with the same name, 
-      the object closest to the current group is returned. If no valid object is found , 
+      \return      An NcGroup object. If there are multiple objects indentied with the same name,
+      the object closest to the current group is returned. If no valid object is found ,
       a \ref NcGroup::isNull "null node" is returned.
     */
     NcGroup getGroup(const std::string& name,NcGroup::GroupLocation location=ChildrenGrps) const;
 
-    /*! 
+    /*!
       Adds a new child netCDF group object.
       Method will throw an netCDF::exceptions::NcNullgrp exception if the group is null (ie NcGroup::isNull()=true).
       \param   name     Variable name.
@@ -161,7 +164,7 @@ namespace netCDF
     // NcVar-related accessors
     // /////////////
 
-    /*! 
+    /*!
       Gets the number of NcVar objects in this group.
       \param location Enumeration type controlling the groups to search.
       \return         Number of variables.
@@ -175,25 +178,35 @@ namespace netCDF
     */
    std::multimap<std::string,NcVar> getVars(NcGroup::Location location=Current) const;
 
-   /*! 
+   /*!
      Gets all NcVar objects with a given name.
       \param name     Name of attribute
       \param location Enumeration type controlling the groups to search.
       \return         Set of NcVar objects.
     */
     std::set<NcVar> getVars(const std::string& name,NcGroup::Location location=Current) const;
-    
-    /*! 
+
+    /*!
       Gets the named NcVar object..
       \param name     Variable name.
       \param location Enumeration type controlling the groups to search.
-      \return         A NcVar object. If there are multiple objects indentied with the 
-      same name, the object closest  to the current group is returned.  
+      \return         A NcVar object. If there are multiple objects indentied with the
+      same name, the object closest  to the current group is returned.
       If no valid object is found , a \ref NcVar::isNull "null node" is returned.
      */
     NcVar getVar(const std::string& name,NcGroup::Location location=Current) const;
 
     /*!
+      Adds a new netCDF scalar variable.
+      The NcType must be non-null, and be defined in either the current group or a parent group.
+      An NcNullType exception is thrown if the NcType object is invalid.
+      \param    name     Variable name.
+      \param   typeName  Type name.
+      \return            The NcVar object for this new netCDF variable.
+    */
+    NcVar addVar(const std::string& name, const NcType& ncType) const;
+
+    /*!
       Adds a new netCDF variable.
       The NcType and NcDim objects must be non-null, and be defined in either the current group or a parent group.
       An NcNullType exception is thrown if the NcType object is invalid.
@@ -205,7 +218,7 @@ namespace netCDF
     */
     NcVar addVar(const std::string& name, const std::string& typeName, const std::string& dimName) const;
 
-    /*! 
+    /*!
       Adds a new netCDF variable.
       The NcType and NcDim objects must be non-null, and be defined in either the current group or a parent group.
       An NcNullType exception is thrown if the NcType object is invalid.
@@ -217,7 +230,7 @@ namespace netCDF
     */
     NcVar addVar(const std::string& name, const NcType& ncType, const NcDim& ncDim) const;
 
-    /*! 
+    /*!
       Adds a new netCDF multi-dimensional variable.
       The NcType and NcDim objects must be non-null, and be defined in either the current group or a parent group.
       An NcNullType exception is thrown if the NcType object is invalid.
@@ -228,9 +241,9 @@ namespace netCDF
       \return           The NcVar object for this new netCDF variable.
     */
     NcVar addVar(const std::string& name, const std::string& typeName, const std::vector<std::string>& dimNames) const;
-    
 
-    /*! 
+
+    /*!
       Adds a new multi-dimensional netCDF variable.
       The NcType and NcDim objects must be non-null, and be defined in either the current group or a parent group.
       An NcNullType exception is thrown if the NcType object is invalid.
@@ -246,117 +259,117 @@ namespace netCDF
     // NcGroupAtt-related methods
     // /////////////
 
-    /*! 
+    /*!
       Gets the number of group attributes.
       \param location Enumeration type controlling the groups to search.
       \return         Number of attributes.
     */
     int getAttCount(NcGroup::Location location=Current) const;
 
-    /*! 
+    /*!
       Gets the collection of NcGroupAtt objects.
       \param location Enumeration type controlling the groups to search.
       \return         A STL multimap object, containing pairs of <attribute name, NcGroupAtt object> entities.
     */
     std::multimap<std::string,NcGroupAtt> getAtts(NcGroup::Location location=Current) const;
-    
-    /*! 
+
+    /*!
     Gets all NcGroupAtt objects with a given name.
       \param name     Name of attribute
       \param location Enumeration type controlling the groups to search.
       \return         Set of NcGroupAtt objects.
     */
     std::set<NcGroupAtt> getAtts(const std::string& name,NcGroup::Location location=Current) const;
-    
-    /*! 
+
+    /*!
       Gets the named NcGroupAtt object.
       \param name     Name of attribute
       \param location Enumeration type controlling the groups to search.
-      \return         A NcGroupAtt object. If there are multiple objects indentied with the 
-      same name, the object closest  to the current group is returned.  If no valid object is found , 
+      \return         A NcGroupAtt object. If there are multiple objects indentied with the
+      same name, the object closest  to the current group is returned.  If no valid object is found ,
       a \ref NcGroupAtt::isNull "null node" is returned.
     */
     NcGroupAtt getAtt(const std::string& name,NcGroup::Location location=Current) const;
-    
+
 
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, size_t len, const char** dataValues) const ;
 
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const std::string& dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, short datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, int datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, long datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, float datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, double datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, unsigned short datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, unsigned int datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, unsigned long long datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, long long datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned char* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const signed char* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const short* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const int* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const long* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const float* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const double* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned short* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned int* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned long long* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcGroupAtt putAtt(const std::string& name, const NcType& type, size_t len, const long long* dataValues) const ;
-    /*! 
+    /*!
       Creates a new NetCDF group attribute or if already exisiting replaces it.
-      If you are writing a _Fill_Value_ attribute, and will tell the HDF5 layer to use 
-      the specified fill value for that variable. 
-      \par 
-      Although it's possible to create attributes of all types, text and double attributes are adequate for most purposes. 
+      If you are writing a _Fill_Value_ attribute, and will tell the HDF5 layer to use
+      the specified fill value for that variable.
+      \par
+      Although it's possible to create attributes of all types, text and double attributes are adequate for most purposes.
       \param name        Name of attribute.
       \param type    The attribute type.
       \param len         The length of the attribute (number of Nctype repeats).
       \param dataValues  Data Values to put into the new attribute.
-      If the type of data values differs from the netCDF variable type, type conversion will occur. 
+      If the type of data values differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
       \return            The NcGroupAtt object for this new netCDF attribute.
@@ -369,21 +382,21 @@ namespace netCDF
     // NcDim-related methods
     // /////////////
 
-    /*! 
+    /*!
       Gets the number of NcDim objects.
       \param location Enumeration type controlling the groups to search.
       \return         Number of dimensions.
     */
     int getDimCount(NcGroup::Location location=Current) const;
-    
-    /*! 
+
+    /*!
       Gets the collection of NcDim objects.
       \param location Enumeration type controlling the groups to search.
       \return         A STL multimap object, containing pairs of <attribute name, NcDim object> entities.
     */
     std::multimap<std::string,NcDim> getDims(NcGroup::Location location=Current) const;
-    
-    /*! 
+
+    /*!
       Gets NcDim objects with a given name.
       \param name     Name of dimension.
       \param location Enumeration type controlling the groups to search.
@@ -391,25 +404,25 @@ namespace netCDF
     */
     std::set<NcDim> getDims(const std::string& name,NcGroup::Location location=Current) const;
 
-    /*! 
+    /*!
       Gets the named NcDim object.
       \param name       Name of dimension.
       \param location   Enumeration type controlling the groups to search.
-      \return           An NcDim object. If there are multiple objects indentied with the same name, 
+      \return           An NcDim object. If there are multiple objects indentied with the same name,
       the object closest to the current group is returned. If no valid object is found , a \ref NcDim::isNull "null node" is returned.
     */
     NcDim getDim(const std::string& name,NcGroup::Location location=Current) const;
 
-    /*! 
+    /*!
       Adds a new netCDF dimension.
       \param The name of new dimension.
-      \param Length of dimension; that is, number of values for this dimension as an index to variables 
+      \param Length of dimension; that is, number of values for this dimension as an index to variables
       that use it.
       \return   The NcDim object for this new netCDF dimension.
     */
     NcDim addDim(const std::string& name, size_t dimSize) const;
 
-    /*! 
+    /*!
       Adds a new unlimited netCDF dimension.
       \param The name of new dimension.
       \return   The NcDim object for this new netCDF dimension.
@@ -420,24 +433,24 @@ namespace netCDF
     // NcType-related methods
     // /////////////
 
-    /*! 
+    /*!
       Gets the number of type objects.
       \param location Enumeration type controlling the groups to search.
       \return         Number of types.
     */
     int getTypeCount(NcGroup::Location location=Current) const;
-    
-    
-    /*! 
+
+
+    /*!
       Gets the number of type objects with a given enumeration type.
       \param enumType The enumeration value of the object type.
       \param location Enumeration type controlling the groups to search.
       \return         Number of types of the given enumeration type.
     */
     int getTypeCount(NcType::ncType enumType, NcGroup::Location location=Current) const;
-    
-    
-    /*! 
+
+
+    /*!
       Gets the collection of NcType objects.
       \param location Enumeration type controlling the groups to search.
       \return         A STL multimap object, on return contains pairs of <Type name, NcType object> entities.
@@ -445,17 +458,17 @@ namespace netCDF
     */
     std::multimap<std::string,NcType> getTypes(NcGroup::Location location=Current) const;
 
-  
-    /*! 
+
+    /*!
       Gets the collection of NcType objects with a given name.
-      \param name     Name of type. For atomic types, the CDL name is expected. This is consistent with the 
+      \param name     Name of type. For atomic types, the CDL name is expected. This is consistent with the
                          string returned from NcType::getName().
       \param location Enumeration type controlling the groups to search.
       \return         Set of  NcType objects.
     */
     std::set<NcType> getTypes(const std::string& name, NcGroup::Location location=Current) const;
 
-    /*! 
+    /*!
       Gets the collection of NcType objects with a given data type.
       \param enumType Enumeration type specifying the data type.
       \param location Enumeration type controlling the groups to search.
@@ -464,9 +477,9 @@ namespace netCDF
     std::set<NcType> getTypes(NcType::ncType enumType, NcGroup::Location location=Current) const;
 
 
-    /*! 
+    /*!
       Gets the collection of NcType objects with a given name and data type.
-      \param name     Name of type. For atomic types, the CDL name is expected. This is consistent with the 
+      \param name     Name of type. For atomic types, the CDL name is expected. This is consistent with the
                          string returned from NcType::getName().
       \param enumType Enumeration type specifying the data type.
       \param location Enumeration type controlling the groups to search.
@@ -475,21 +488,21 @@ namespace netCDF
     std::set<NcType> getTypes(const std::string& name, NcType::ncType enumType, NcGroup::Location location=Current) const;
 
 
-    /*! 
+    /*!
       Gets the NcType object with a given name.
-      \param name     Name of type. For atomic types, the CDL name is expected. This is consistent with the 
+      \param name     Name of type. For atomic types, the CDL name is expected. This is consistent with the
                          string returned from NcType::getName().
       \param location Enumeration type controlling the groups to search.
-      \return         NcType object. If there are multiple objects indentied with the same name, 
+      \return         NcType object. If there are multiple objects indentied with the same name,
       the object closest to the current group is returned.  If no valid object is found , a \ref NcType::isNull "null node" is returned.
 
     */
     NcType getType(const std::string& name, NcGroup::Location location=Current) const;
-    
-    
-    /*! 
+
+
+    /*!
       Adds a new netCDF enum type.
-      \param name        Name of type. For atomic types, the CDL name is expected. This is consistent with the 
+      \param name        Name of type. For atomic types, the CDL name is expected. This is consistent with the
                          string returned from NcType::getName().
       \param enumType    The enumeration value of the object type.
       \return            The NcEnumType object for this new netCDF enum type.
@@ -497,7 +510,7 @@ namespace netCDF
     NcEnumType addEnumType(const std::string& name,NcEnumType::ncEnumType basetype) const;
 
 
-    /*! 
+    /*!
       Adds a new netCDF Vlen type.
       \param name        Name of type.
       \param basetype    A NcType object to be used for the basetype.
@@ -506,7 +519,7 @@ namespace netCDF
     NcVlenType addVlenType(const std::string& name,NcType& basetype) const;
 
 
-    /*! 
+    /*!
       Adds a new netCDF Opaque type.
       \param name     Name of type.
       \param size     The size of the new type in bytes.
@@ -515,49 +528,49 @@ namespace netCDF
     NcOpaqueType addOpaqueType(const std::string& name, size_t size) const;
 
 
-    /*! 
+    /*!
       Adds a new netCDF UserDefined type.
       \param name     Name of type.
       \param size     The size of the new type in bytes.
       \return         The new NcCompoundType object for this new netCDF userDefined type.
     */
-    NcCompoundType addCompoundType(const std::string& name, size_t size) const; 
+    NcCompoundType addCompoundType(const std::string& name, size_t size) const;
 
 
-    /*! 
+    /*!
       Gets a collection of  coordinate variables.
       Coordinate variable have  an NcDim and NcVar object with the same name defined in the same group.
       \par
       The method returns STL map object containing a coordinate variables in the current group  and optionally
       in the parent and child groups. It is expected that within each group, the names of dimensions are unique and
       the the names of variables are unique. However, if this is not the case, this method will still work correctly.
-      
+
       \param location Enumeration type controlling the groups to search.
       \return         The NcVar dimension variable. If no valid object is found , a \ref NcVar::isNull "null node" is returned.
     */
     std::map<std::string,NcGroup> getCoordVars(NcGroup::Location location=Current) const;
 
-    /*! 
+    /*!
       Gets the NcDim and NcVar object pair for a named coordinate variable.
       Coordinate variable have  an NcDim and NcVar object with the same name defined in the same group.
       \par
-      The method returns two objects for the named coordinate variable. The method searches first in the current 
+      The method returns two objects for the named coordinate variable. The method searches first in the current
       group and optionally in the parent and child group and returns the first instance found.
       \param location Enumeration type controlling the groups to search.
-      \return         The set of names of dimension variables. 
+      \return         The set of names of dimension variables.
     */
     void getCoordVar(std::string& coordVarName, NcDim& ncDim, NcVar& ncVar, NcGroup::Location location=Current) const;
 
 
   protected:
-    
+
     /*! assignment operator  */
     /* NcGroup& operator=(const NcGroup& rhs); */
-    
+
     bool nullObject;
 
-    int myId;	
-    
+    int myId;
+
   };
 
 }
diff --git a/cxx4/ncOpaqueType.cpp b/cxx4/ncOpaqueType.cpp
index 37439fd..44080ff 100644
--- a/cxx4/ncOpaqueType.cpp
+++ b/cxx4/ncOpaqueType.cpp
@@ -23,7 +23,7 @@ NcOpaqueType& NcOpaqueType::operator=(const NcType& rhs)
 {
   if (&rhs != this) {
     // check the rhs is the base of an Opaque type
-    if(getTypeClass() != NC_OPAQUE) 	throw NcException("NcException","The NcType object must be the base of an Opaque type.",__FILE__,__LINE__);
+    if(getTypeClass() != NC_OPAQUE) 	throw NcException("The NcType object must be the base of an Opaque type.",__FILE__,__LINE__);
     // assign base class parts
     NcType::operator=(rhs);
   }
@@ -54,7 +54,7 @@ NcOpaqueType::NcOpaqueType(const NcType& ncType) :
   NcType(ncType)
 {
   // check the nctype object is the base of a Opaque type
-  if(getTypeClass() != NC_OPAQUE) 	throw NcException("NcException","The NcType object must be the base of an Opaque type.",__FILE__,__LINE__);
+  if(getTypeClass() != NC_OPAQUE) 	throw NcException("The NcType object must be the base of an Opaque type.",__FILE__,__LINE__);
 }
   
 // Returns the size of the opaque type in bytes.
diff --git a/cxx4/ncType.cpp b/cxx4/ncType.cpp
index 1fb9a54..471c0e1 100644
--- a/cxx4/ncType.cpp
+++ b/cxx4/ncType.cpp
@@ -4,16 +4,17 @@
 #include "ncCheck.h"
 using namespace std;
 
+extern int g_ncid;
 
 namespace netCDF {
   //  Global comparator operator ==============
-  // comparator operator 
+  // comparator operator
   bool operator<(const NcType& lhs,const NcType& rhs)
   {
     return false;
   }
-  
-  // comparator operator 
+
+  // comparator operator
   bool operator>(const NcType& lhs,const NcType& rhs)
   {
     return true;
@@ -32,16 +33,16 @@ NcType& NcType::operator=(const NcType & rhs)
 }
 
 // The copy constructor.
-NcType::NcType(const NcType& rhs): 
+NcType::NcType(const NcType& rhs):
   nullObject(rhs.nullObject),
-  myId(rhs.myId), 
+  myId(rhs.myId),
   groupId(rhs.groupId)
 {}
 
 
 // Constructor generates a null object.
-NcType::NcType() : 
-  nullObject(true) 
+NcType::NcType() :
+  nullObject(true)
 {}
 
 // constructor
@@ -53,14 +54,13 @@ NcType::NcType(const NcGroup& grp, const string& name) :
   myId = typTmp.getId();
 }
 
-// constructor for a global type 
+// constructor for a global type
 NcType::NcType(nc_type id) :
   nullObject(false),
   myId(id),
   groupId(0)
 {
 }
-  
 
 // Constructor for a non-global type
 NcType::NcType(const netCDF::NcGroup& grp, nc_type id):
@@ -73,40 +73,45 @@ NcType::NcType(const netCDF::NcGroup& grp, nc_type id):
 // equivalence operator
 bool NcType::operator==(const NcType & rhs) const
 {
-  if(nullObject) 
+  if(nullObject)
     return nullObject == rhs.nullObject;
   else
     return groupId == rhs.groupId && myId == rhs.myId;
-}  
-  
+}
+
 //  !=  operator
 bool NcType::operator!=(const NcType & rhs) const
 {
   return !(*this == rhs);
-}  
-  
+}
+
 // Gets parent group.
 NcGroup  NcType::getParentGroup() const {
   if(groupId == 0) return NcGroup(); else  return NcGroup(groupId);
 }
-  
+
 // Returns the type name.
 string  NcType::getName() const{
   char charName[NC_MAX_NAME+1];
   size_t *sizep=NULL;
-  ncCheck(nc_inq_type(groupId,myId,charName,sizep),__FILE__,__LINE__);
+
+  /* We cannot call nc_inq_type without a valid
+     netcdf file ID (ncid), which is not *groupid*.
+     Working around this for now. */
+
+  ncCheck(nc_inq_type(g_ncid,myId,charName,sizep),__FILE__,__LINE__);
   return string(charName);
-  //  }
+
 };
 
 // Returns the size in bytes
 size_t NcType::getSize() const{
   char* charName=NULL;
   size_t sizep;
-  ncCheck(nc_inq_type(groupId,myId,charName,&sizep),__FILE__,__LINE__);
+  ncCheck(nc_inq_type(g_ncid,myId,charName,&sizep),__FILE__,__LINE__);
   return sizep;
 };
-  
+
 // The type class returned as an enumeration type.
 NcType::ncType NcType::getTypeClass() const{
   switch (myId) {
@@ -116,15 +121,15 @@ NcType::ncType NcType::getTypeClass() const{
   case NC_SHORT   : return nc_SHORT;
   case NC_USHORT  : return nc_USHORT;
   case NC_INT     : return nc_INT;
-  case NC_UINT    : return nc_UINT;  
-  case NC_INT64   : return nc_INT64; 
+  case NC_UINT    : return nc_UINT;
+  case NC_INT64   : return nc_INT64;
   case NC_UINT64  : return nc_UINT64;
   case NC_FLOAT   : return nc_FLOAT;
   case NC_DOUBLE  : return nc_DOUBLE;
   case NC_STRING  : return nc_STRING;
-  default:  
+  default:
     // this is a user defined type
-    // establish its type class, ie whether it is: NC_VLEN, NC_OPAQUE, NC_ENUM, or NC_COMPOUND. 
+    // establish its type class, ie whether it is: NC_VLEN, NC_OPAQUE, NC_ENUM, or NC_COMPOUND.
     char* name=NULL;
     size_t* sizep=NULL;
     nc_type* base_nc_typep=NULL;
@@ -134,7 +139,7 @@ NcType::ncType NcType::getTypeClass() const{
     return static_cast<ncType>(classp);
   }
 }
-  
+
 // The type class returned as a string.
 string NcType::getTypeClassName() const{
   ncType typeClass=getTypeClass();
@@ -145,8 +150,8 @@ string NcType::getTypeClassName() const{
   case nc_SHORT   : return string("nc_SHORT");
   case nc_USHORT  : return string("nc_USHORT");
   case nc_INT     : return string("nc_INT");
-  case nc_UINT    : return string("nc_UINT");  
-  case nc_INT64   : return string("nc_INT64"); 
+  case nc_UINT    : return string("nc_UINT");
+  case nc_INT64   : return string("nc_INT64");
   case nc_UINT64  : return string("nc_UINT64");
   case nc_FLOAT   : return string("nc_FLOAT");
   case nc_DOUBLE  : return string("nc_DOUBLE");
diff --git a/cxx4/ncType.h b/cxx4/ncType.h
index 3da82a6..c763c92 100644
--- a/cxx4/ncType.h
+++ b/cxx4/ncType.h
@@ -7,14 +7,15 @@
 
 namespace netCDF
 {
+
   class NcGroup; // forward declaration to avoid cyclic reference.
 
   /*! Base class inherited by NcOpaque, NcVlen, NcCompound and NcEnum classes. */
   class NcType
-  {	
-    
+  {
+
   public:
-    
+
     /*!
       List of netCDF types that can be represented.
       The enumeration list contains the complete set of netCDF variable types. In addition, the type NC_TYPE
@@ -40,11 +41,11 @@ namespace netCDF
       nc_ENUM     = NC_ENUM, 	//!< "NcEnum type"
       nc_COMPOUND = NC_COMPOUND //!< "NcCompound type"
     };
-    
+
     /*! Constructor generates a \ref isNull "null object". */
     NcType();
 
-    /*! 
+    /*!
       Constructor for a non-global type.
       This object describes the "essential" information for all netCDF types required by NcVar, NcAtt objects.
       New netCDF types can be added using the appropriate "add" method in the NcGroup object.
@@ -54,7 +55,7 @@ namespace netCDF
     NcType(const netCDF::NcGroup& grp, const std::string& name);
 
 
-    /*! 
+    /*!
       Constructor for a non-global type.
       This object describes the "essential" information for all netCDF types required by NcVar, NcAtt objects.
       New netCDF types can be added using the appropriate "add" method in the NcGroup object.
@@ -63,7 +64,7 @@ namespace netCDF
     */
     NcType(const netCDF::NcGroup& grp, nc_type id);
 
-    /*! 
+    /*!
       Constructor for a global type
       This object describes the "essential" information for a netCDF global type.
       \param id     type id
@@ -75,82 +76,88 @@ namespace netCDF
 
     /*! destructor  */
     virtual ~NcType() {}
-    
+
     /*! equivalence operator */
-    bool operator==(const NcType&) const;     
-    
+    bool operator==(const NcType&) const;
+
     /*!  != operator */
     bool operator!=(const NcType &) const;
 
     // accessors to private data.
     /*! The netCDF Id of this type. */
-    nc_type getId() const {return myId;} 
+    nc_type getId() const {return myId;}
 
     /*! Gets parent group. For an atomic type, returns a Null object.*/
     netCDF::NcGroup getParentGroup() const;
 
-    /*! 
-      The name of this type. For atomic types, the CDL type names are returned. These are as follows: 
+    /*!
+      The name of this type. For atomic types, the CDL type names are returned. These are as follows:
         - NcByte   String returned is "byte".
         - NcUbyte  String returned is "ubyte".
-        - NcChar   String returned is "char".   
-        - NcShort  String returned is "short".  
-        - NcUshort String returned is "ushort". 
-        - NcInt    String returned is "int".    
-        - NcUint   String returned is "uint".   
-        - NcInt64  String returned is "int64".  
-        - NcUint64 String returned is "uint64". 
-        - NcFloat  String returned is "float".  
-        - NcDouble String returned is "double". 
+        - NcChar   String returned is "char".
+        - NcShort  String returned is "short".
+        - NcUshort String returned is "ushort".
+        - NcInt    String returned is "int".
+        - NcUint   String returned is "uint".
+        - NcInt64  String returned is "int64".
+        - NcUint64 String returned is "uint64".
+        - NcFloat  String returned is "float".
+        - NcDouble String returned is "double".
         - NcString String returned is "string".
      */
-    std::string getName() const;                        
+    std::string getName() const;
+
+    /*!
+      The size in bytes.
+      This function will work on any type, including atomic and any user defined type, whether
+      compound, opaque, enumeration, or variable length array.
 
-    /*! 
-      The size in bytes. 
-      This function will work on any type, including atomic and any user defined type, whether 
-      compound, opaque, enumeration, or variable length array. 
      */
-    size_t getSize() const;                         
+    size_t getSize() const;
 
-    /*! 
+    /*!
       The type class returned as enumeration type.
       Valid for all types, whether atomic or user-defined. User-defined types are returned as one of the following
-      enumeration types: nc_VLEN, nc_OPAQUE, nc_ENUM, or nc_COMPOUND. 
+      enumeration types: nc_VLEN, nc_OPAQUE, nc_ENUM, or nc_COMPOUND.
      */
-    ncType getTypeClass() const;                       
+    ncType getTypeClass() const;
 
-    /*! 
+    /*!
       Return a string containing the name of the enumerated type.  (ie one of the following strings:
-      "nc_BYTE", "nc_CHAR", "nc_SHORT", "nc_INT", "nc_FLOAT", "nc_DOUBLE", "nc_UBYTE", "nc_USHORT", 
+      "nc_BYTE", "nc_CHAR", "nc_SHORT", "nc_INT", "nc_FLOAT", "nc_DOUBLE", "nc_UBYTE", "nc_USHORT",
       "nc_UINT", "nc_INT64", "nc_UINT64", "nc_STRING", "nc_VLEN", "nc_OPAQUE", "nc_ENUM", "nc_COMPOUND"
      */
     std::string getTypeClassName() const;
-    
+
     /*! Returns true if this object is null (i.e. it has no contents); otherwise returns false. */
     bool isNull() const  {return nullObject;}
 
     /*! comparator operator  */
     friend bool operator<(const NcType& lhs,const NcType& rhs);
-    
+
     /*! comparator operator  */
     friend bool operator>(const NcType& lhs,const NcType& rhs);
-    
+
   protected:
 
     /*! assignment operator  */
     NcType& operator=(const NcType& rhs);
-    
+
     bool nullObject;
 
     /*! the type Id */
     nc_type myId;
-    
+
     /*! the group Id */
     int groupId;
 
+    /*! An ncid associated with a particular open file
+      (returned from nc_open).
+      This is required by many of the functions ncType uses,
+      such as nc_inq_type */
+    int g_fileId;
+
   };
 
 }
 #endif
-
diff --git a/cxx4/ncVar.cpp b/cxx4/ncVar.cpp
index 6c6f715..93fe6ba 100644
--- a/cxx4/ncVar.cpp
+++ b/cxx4/ncVar.cpp
@@ -7,16 +7,16 @@
 #include<netcdf.h>
 using namespace std;
 using namespace netCDF::exceptions;
-  
+
 namespace netCDF {
   //  Global comparator operator ==============
-  // comparator operator 
+  // comparator operator
   bool operator<(const NcVar& lhs,const NcVar& rhs)
   {
     return false;
   }
-  
-  // comparator operator 
+
+  // comparator operator
   bool operator>(const NcVar& lhs,const NcVar& rhs)
   {
     return true;
@@ -35,7 +35,7 @@ NcVar& NcVar::operator=(const NcVar & rhs)
 }
 
 // The copy constructor.
-NcVar::NcVar(const NcVar& rhs) : 
+NcVar::NcVar(const NcVar& rhs) :
   nullObject(rhs.nullObject),
   myId(rhs.myId),
   groupId(rhs.groupId)
@@ -47,23 +47,26 @@ bool NcVar::operator==(const NcVar & rhs) const
 {
   // simply check the netCDF id.
   return (myId == rhs.myId);
-}  
+}
 
 //  !=  operator
 bool NcVar::operator!=(const NcVar & rhs) const
 {
   return !(*this == rhs);
-}  
+}
 
 /////////////////
-  
+
 // Constructors and intialization
-  
+
 /////////////////
-  
+
 // Constructor generates a null object.
-NcVar::NcVar() : nullObject(true) {}
-  
+NcVar::NcVar() : nullObject(true),
+                 myId(-1),
+                 groupId(-1)
+{}
+
 // Constructor for a variable (must already exist in the netCDF file.)
 NcVar::NcVar (const NcGroup& grp, const int& varId) :
   nullObject (false),
@@ -71,17 +74,17 @@ NcVar::NcVar (const NcGroup& grp, const int& varId) :
   groupId(grp.getId())
 {}
 
-  
-  
+
+
 // Gets parent group.
 NcGroup  NcVar::getParentGroup() const {
   return NcGroup(groupId);
 }
-  
+
 
 // Get the variable id.
 int  NcVar::getId() const {return myId;}
-    
+
 //////////////////////
 
 //  Information about the variable type
@@ -105,8 +108,8 @@ NcType NcVar::getType() const {
   if(xtypep ==  ncShort.getId()   ) return ncShort;
   if(xtypep ==  ncUshort.getId()  ) return ncUshort;
   if(xtypep ==  ncInt.getId()     ) return ncInt;
-  if(xtypep ==  ncUint.getId()    ) return ncUint;  
-  if(xtypep ==  ncInt64.getId()   ) return ncInt64; 
+  if(xtypep ==  ncUint.getId()    ) return ncUint;
+  if(xtypep ==  ncInt64.getId()   ) return ncInt64;
   if(xtypep ==  ncUint64.getId()  ) return ncUint64;
   if(xtypep ==  ncFloat.getId()   ) return ncFloat;
   if(xtypep ==  ncDouble.getId()  ) return ncDouble;
@@ -127,14 +130,14 @@ NcType NcVar::getType() const {
 
 
 
-  
+
 /////////////////
-  
+
 // Information about Dimensions
-  
+
 /////////////////
 
-  
+
 // Gets the number of dimensions.
 int NcVar::getDimCount() const
 {
@@ -142,42 +145,44 @@ int NcVar::getDimCount() const
   int dimCount;
   ncCheck(nc_inq_varndims(groupId,myId, &dimCount),__FILE__,__LINE__);
   return dimCount;
-}  
+}
 
 // Gets the set of Ncdim objects.
 vector<NcDim> NcVar::getDims() const
 {
   // get the number of dimensions
-  int dimCount = getDimCount();  
+  int dimCount = getDimCount();
   // create a vector of dimensions.
   vector<NcDim> ncDims;
-  vector<int> dimids(dimCount);
-  ncCheck(nc_inq_vardimid(groupId,myId, &dimids[0]),__FILE__,__LINE__);
-  ncDims.reserve(dimCount);
-  for (int i=0; i<dimCount; i++){
-    NcDim tmpDim(getParentGroup(),dimids[i]);
-    ncDims.push_back(tmpDim);
+  if (dimCount){
+    vector<int> dimids(dimCount);
+    ncCheck(nc_inq_vardimid(groupId,myId, &dimids[0]),__FILE__,__LINE__);
+    ncDims.reserve(dimCount);
+    for (int i=0; i<dimCount; i++){
+      NcDim tmpDim(getParentGroup(),dimids[i]);
+      ncDims.push_back(tmpDim);
+    }
   }
   return ncDims;
-}  
+}
+
 
-  
 // Gets the i'th NcDim object.
 NcDim NcVar::getDim(int i) const
 {
   vector<NcDim> ncDims = getDims();
-  if((size_t)i >= ncDims.size() | i < 0) throw NcException("NcException","Index out of range",__FILE__,__LINE__);
+  if((size_t)i >= ncDims.size() || i < 0) throw NcException("Index out of range",__FILE__,__LINE__);
   return ncDims[i];
 }
 
 
 /////////////////
-  
+
 // Information about Attributes
-  
+
 /////////////////
 
-  
+
 // Gets the number of attributes.
 int NcVar::getAttCount() const
 {
@@ -185,13 +190,13 @@ int NcVar::getAttCount() const
   int attCount;
   ncCheck(nc_inq_varnatts(groupId,myId, &attCount),__FILE__,__LINE__);
   return attCount;
-}  
+}
 
 // Gets the set of attributes.
 map<string,NcVarAtt> NcVar::getAtts() const
 {
   // get the number of attributes
-  int attCount = getAttCount();  
+  int attCount = getAttCount();
   // create a container of attributes.
   map<string,NcVarAtt> ncAtts;
   for (int i=0; i<attCount; i++){
@@ -199,17 +204,19 @@ map<string,NcVarAtt> NcVar::getAtts() const
     ncAtts.insert(pair<const string,NcVarAtt>(tmpAtt.getName(),tmpAtt));
   }
   return ncAtts;
-}  
+}
+
 
-  
 // Gets attribute by name.
 NcVarAtt NcVar::getAtt(const string& name) const
 {
   map<string,NcVarAtt> attributeList = getAtts();
   map<string,NcVarAtt>::iterator myIter;
   myIter = attributeList.find(name);
-  if(myIter == attributeList.end())
-    throw NcException("NcException","attribute '"+name+"' not found",__FILE__,__LINE__);
+  if(myIter == attributeList.end()){
+    string msg("Attribute '"+name+"' not found");
+    throw NcException(msg.c_str(),__FILE__,__LINE__);
+  }
   return NcVarAtt(myIter->second);
 }
 
@@ -220,6 +227,7 @@ NcVarAtt NcVar::getAtt(const string& name) const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const string& dataValues) const {
+  ncCheckDefineMode(groupId);
   ncCheck(nc_put_att_text(groupId,myId,name.c_str(),dataValues.size(),dataValues.c_str()),__FILE__,__LINE__);
   // finally instantiate this attribute and return
   return getAtt(name);
@@ -227,8 +235,9 @@ NcVarAtt NcVar::putAtt(const string& name, const string& dataValues) const {
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned char* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_uchar(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -239,8 +248,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const signed char* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_schar(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -253,8 +263,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 /////////////////////////////////
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, short datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_short(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -265,8 +276,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, short datumValue)
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, int datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_int(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -276,8 +288,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, int datumValue) c
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, long datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_long(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -287,8 +300,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, long datumValue)
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, float datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_float(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -299,8 +313,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, float datumValue)
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, double datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_double(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -311,8 +326,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, double datumValue
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned short datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ushort(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -322,8 +338,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned short da
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned int datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_uint(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -333,8 +350,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned int datu
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, long long datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_longlong(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -345,8 +363,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, long long datumVa
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned long long datumValue) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ulonglong(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__);
@@ -369,8 +388,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned long lon
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const short* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_short(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -381,8 +401,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const int* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_int(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -392,8 +413,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const long* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_long(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -403,8 +425,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const float* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_float(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -415,8 +438,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const double* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_double(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -427,8 +451,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned short* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ushort(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -438,8 +463,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned int* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_uint(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -449,8 +475,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const long long* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_longlong(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -461,8 +488,9 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned long long* dataValues) const {
+  ncCheckDefineMode(groupId);
   NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_att_ulonglong(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
@@ -473,6 +501,7 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, size_t len, const char** dataValues) const {
+  ncCheckDefineMode(groupId);
   ncCheck(nc_put_att_string(groupId,myId,name.c_str(),len,dataValues),__FILE__,__LINE__);
   // finally instantiate this attribute and return
   return getAtt(name);
@@ -480,6 +509,7 @@ NcVarAtt NcVar::putAtt(const string& name, size_t len, const char** dataValues)
 
 // Creates a new NetCDF variable attribute or if already exisiting replaces it.
 NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const void* dataValues) const {
+  ncCheckDefineMode(groupId);
   ncCheck(nc_put_att(groupId,myId ,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__);
   // finally instantiate this attribute and return
   return getAtt(name);
@@ -489,11 +519,11 @@ NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const
 
 
 ////////////////////
-  
+
 // Other Basic variable info
-  
+
 ////////////////////
-  
+
 // The name of this variable.
 string NcVar::getName() const{
   char charName[NC_MAX_NAME+1];
@@ -503,34 +533,35 @@ string NcVar::getName() const{
 
 
 ////////////////////
-  
+
 // Chunking details
-  
+
 ////////////////////
 
 
 // Sets chunking parameters.
-void NcVar::setChunking(ChunkMode chunkMode, vector<size_t>& chunksizes) const {
-  ncCheck(nc_def_var_chunking(groupId,myId,static_cast<int> (chunkMode), &chunksizes[0]),__FILE__,__LINE__);
+void NcVar::setChunking(ChunkMode chunkMode, vector<size_t>& chunkSizes) const {
+  size_t *chunkSizesPtr = chunkSizes.empty() ? 0 : &chunkSizes[0];
+  ncCheck(nc_def_var_chunking(groupId,myId,static_cast<int> (chunkMode), chunkSizesPtr),__FILE__,__LINE__);
 }
-  
-  
+
+
 // Gets the chunking parameters
 void NcVar::getChunkingParameters(ChunkMode& chunkMode, vector<size_t>& chunkSizes) const {
   int chunkModeInt;
-  chunkSizes.reserve(getDimCount());
-    
-  ncCheck(nc_inq_var_chunking(groupId,myId,&chunkModeInt, &chunkSizes[0]),__FILE__,__LINE__);
+  chunkSizes.resize(getDimCount());
+  size_t *chunkSizesPtr = chunkSizes.empty() ? 0 : &chunkSizes[0];
+  ncCheck(nc_inq_var_chunking(groupId,myId, &chunkModeInt, chunkSizesPtr),__FILE__,__LINE__);
   chunkMode = static_cast<ChunkMode> (chunkModeInt);
 }
-  
-  
-  
-  
+
+
+
+
 ////////////////////
-  
+
 // Fill details
-  
+
 ////////////////////
 
 
@@ -538,8 +569,8 @@ void NcVar::getChunkingParameters(ChunkMode& chunkMode, vector<size_t>& chunkSiz
 void NcVar::setFill(bool fillMode, void* fillValue) const {
   // If fillMode is enabled, check that fillValue has a legal pointer.
   if(fillMode && fillValue == NULL)
-    throw NcException("NcException","FillMode was set to zero but fillValue has invalid pointer",__FILE__,__LINE__);
-  
+    throw NcException("FillMode was set to zero but fillValue has invalid pointer",__FILE__,__LINE__);
+
   ncCheck(nc_def_var_fill(groupId,myId,static_cast<int> (!fillMode),fillValue),__FILE__,__LINE__);
 }
 
@@ -552,37 +583,37 @@ void NcVar::setFill(bool fillMode,const void* fillValue) const {
 
 // Gets the fill parameters
 void NcVar::getFillModeParameters(bool& fillMode, void* fillValue)const{
-    
+
   int fillModeInt;
   ncCheck(nc_inq_var_fill(groupId,myId,&fillModeInt,fillValue),__FILE__,__LINE__);
   fillMode= static_cast<bool> (fillModeInt == 0);
 }
-  
+
 
 ////////////////////
-  
+
 // Compression details
-  
+
 ////////////////////
 
 
 // Sets the compression parameters
 void NcVar::setCompression(bool enableShuffleFilter, bool enableDeflateFilter, int deflateLevel) const {
-    
+
   // Check that the deflate level is legal
-  if(enableDeflateFilter & (deflateLevel < 0 | deflateLevel >9))
-    throw NcException("NcException","The deflateLevel must be set between 0 and 9.",__FILE__,__LINE__);
-    
+  if(enableDeflateFilter & (deflateLevel < 0 || deflateLevel >9))
+    throw NcException("The deflateLevel must be set between 0 and 9.",__FILE__,__LINE__);
+
   ncCheck(nc_def_var_deflate(groupId,myId,
 			     static_cast<int> (enableShuffleFilter),
 			     static_cast<int> (enableDeflateFilter),
 			     deflateLevel),__FILE__,__LINE__);
 }
-  
+
 
 // Gets the compression parameters
 void NcVar::getCompressionParameters(bool& shuffleFilterEnabled, bool& deflateFilterEnabled, int& deflateLevel) const {
-    
+
   int enableShuffleFilterInt;
   int enableDeflateFilterInt;
   ncCheck(nc_inq_var_deflate(groupId,myId,
@@ -592,63 +623,63 @@ void NcVar::getCompressionParameters(bool& shuffleFilterEnabled, bool& deflateFi
   shuffleFilterEnabled =  static_cast<bool> (enableShuffleFilterInt);
   deflateFilterEnabled =  static_cast<bool> (enableDeflateFilterInt);
 }
-  
+
 
 
 ////////////////////
-  
+
 // Endianness details
-  
+
 ////////////////////
-      
+
 
 // Sets the endianness of the variable.
 void NcVar::setEndianness(EndianMode endianMode) const {
-    
+
   ncCheck(nc_def_var_endian(groupId,myId,static_cast<int> (endianMode)),__FILE__,__LINE__);
 }
-  
-  
+
+
 // Gets the endianness of the variable.
 NcVar::EndianMode NcVar::getEndianness() const {
-    
+
   int endianInt;
   ncCheck(nc_inq_var_endian(groupId,myId,&endianInt),__FILE__,__LINE__);
   return static_cast<EndianMode> (endianInt);
 }
-  
-      
-  
+
+
+
 ////////////////////
-  
+
 // Checksum details
-  
+
 ////////////////////
-  
-  
+
+
 // Sets the checksum parameters of a variable.
 void NcVar::setChecksum(ChecksumMode checksumMode) const {
   ncCheck(nc_def_var_fletcher32(groupId,myId,static_cast<int> (checksumMode)),__FILE__,__LINE__);
 }
-  
-  
+
+
 // Gets the checksum parameters of the variable.
 NcVar::ChecksumMode NcVar::getChecksum() const {
   int checksumInt;
   ncCheck(nc_inq_var_fletcher32(groupId,myId,&checksumInt),__FILE__,__LINE__);
   return static_cast<ChecksumMode> (checksumInt);
 }
-  
-  
 
-  
+
+
+
 ////////////////////
-  
+
 //  renaming the variable
-  
+
 ////////////////////
-  
-void NcVar::rename( const string& newname ) const 
+
+void NcVar::rename( const string& newname ) const
 {
   ncCheck(nc_rename_var(groupId,myId,newname.c_str()),__FILE__,__LINE__);
 }
@@ -665,110 +696,124 @@ void NcVar::rename( const string& newname ) const
 
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_text(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const unsigned char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_uchar(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const signed char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_schar(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_short(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_int(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_long(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const float* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_float(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const double* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_double(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const unsigned short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_ushort(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const unsigned int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_uint(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_longlong(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const unsigned long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_ulonglong(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable.
 void NcVar::putVar(const char** dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var_string(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 // Writes the entire data into the netCDF variable with no data conversion.
 void NcVar::putVar(const void* dataValues) const {
+    ncCheckDataMode(groupId);
     ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__);
 }
 
@@ -776,9 +821,10 @@ void NcVar::putVar(const void* dataValues) const {
 ///////////////////
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const string& datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    throw NcException("NcException","user-defined type must be of type void",__FILE__,__LINE__);
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
+    throw NcException("user-defined type must be of type void",__FILE__,__LINE__);
   else
     {
       const char* tmpPtr = datumValue.c_str();
@@ -787,102 +833,115 @@ void NcVar::putVar(const vector<size_t>& index, const string& datumValue) const
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const unsigned char* datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    throw NcException("NcException","user-defined type must be of type void",__FILE__,__LINE__);
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
+    throw NcException("user-defined type must be of type void",__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_uchar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const signed char* datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    throw NcException("NcException","user-defined type must be of type void",__FILE__,__LINE__);
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
+    throw NcException("user-defined type must be of type void",__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_schar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const short datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_short(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const int datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_int(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const long datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_long(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const float datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_float(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const double datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_double(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const unsigned short datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_ushort(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const unsigned int datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_uint(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const long long datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_longlong(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const unsigned long long datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_var1(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_ulonglong(groupId, myId,&index[0],&datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& index, const char** datumValue) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    throw NcException("NcException","user-defined type must be of type void",__FILE__,__LINE__);
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
+    throw NcException("user-defined type must be of type void",__FILE__,__LINE__);
   else
     ncCheck(nc_put_var1_string(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
 }
 // Writes a single datum value into the netCDF variable with no data conversion.
 void NcVar::putVar(const vector<size_t>& index, const void* datumValue) const {
+    ncCheckDataMode(groupId);
     ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
 }
 
@@ -891,110 +950,124 @@ void NcVar::putVar(const vector<size_t>& index, const void* datumValue) const {
 
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_text(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_uchar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const signed char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_schar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_short(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_int(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_long(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const float* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_float(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const double* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_double(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_ushort(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_uint(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_longlong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_ulonglong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const char** dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vara_string(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes an array of values into the netCDF variable with no data conversion.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const void* dataValues) const {
+    ncCheckDataMode(groupId);
     ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
 }
 
@@ -1004,110 +1077,124 @@ void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_text(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const signed char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_short(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_int(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_long(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const float* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_float(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const double* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_double(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const char** dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_vars_string(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a set of subsampled array values into the netCDF variable with no data conversion.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const void* dataValues) const {
+    ncCheckDataMode(groupId);
     ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
 }
 
@@ -1115,116 +1202,130 @@ void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, co
 ////////////////////
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_text(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const signed char* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_short(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_int(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_long(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const float* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_float(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const double* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_double(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned short* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned int* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned long long* dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const char** dataValues) const {
+  ncCheckDataMode(groupId);
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_put_varm_string(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 // Writes a mapped array section of values into the netCDF variable with no data conversion.
 void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const void* dataValues) const {
+    ncCheckDataMode(groupId);
     ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
 
 
 
-     
+
 
 // Data reading
 
@@ -1233,7 +1334,7 @@ void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, co
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_text(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1241,7 +1342,7 @@ void NcVar::getVar(char* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(unsigned char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_uchar(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1249,7 +1350,7 @@ void NcVar::getVar(unsigned char* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(signed char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_schar(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1257,7 +1358,7 @@ void NcVar::getVar(signed char* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_short(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1265,7 +1366,7 @@ void NcVar::getVar(short* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_int(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1273,7 +1374,7 @@ void NcVar::getVar(int* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_long(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1281,7 +1382,7 @@ void NcVar::getVar(long* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(float* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_float(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1289,7 +1390,7 @@ void NcVar::getVar(float* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(double* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_double(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1297,7 +1398,7 @@ void NcVar::getVar(double* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(unsigned short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_ushort(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1305,7 +1406,7 @@ void NcVar::getVar(unsigned short* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(unsigned int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_uint(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1313,7 +1414,7 @@ void NcVar::getVar(unsigned int* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_longlong(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1321,7 +1422,7 @@ void NcVar::getVar(long long* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(unsigned long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_ulonglong(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1329,7 +1430,7 @@ void NcVar::getVar(unsigned long long* dataValues) const {
 // Reads the entire data of the netCDF variable.
 void NcVar::getVar(char** dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var_string(groupId, myId,dataValues),__FILE__,__LINE__);
@@ -1346,7 +1447,7 @@ void NcVar::getVar(void* dataValues) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, char* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_text(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1354,7 +1455,7 @@ void NcVar::getVar(const vector<size_t>& index, char* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, unsigned char* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_uchar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1362,7 +1463,7 @@ void NcVar::getVar(const vector<size_t>& index, unsigned char* datumValue) const
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, signed char* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_schar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1370,7 +1471,7 @@ void NcVar::getVar(const vector<size_t>& index, signed char* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, short* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_short(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1378,7 +1479,7 @@ void NcVar::getVar(const vector<size_t>& index, short* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, int* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_int(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1386,7 +1487,7 @@ void NcVar::getVar(const vector<size_t>& index, int* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, long* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_long(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1394,7 +1495,7 @@ void NcVar::getVar(const vector<size_t>& index, long* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, float* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_float(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1402,7 +1503,7 @@ void NcVar::getVar(const vector<size_t>& index, float* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, double* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_double(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1410,7 +1511,7 @@ void NcVar::getVar(const vector<size_t>& index, double* datumValue) const {
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, unsigned short* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_ushort(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1418,7 +1519,7 @@ void NcVar::getVar(const vector<size_t>& index, unsigned short* datumValue) cons
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, unsigned int* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_uint(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1426,7 +1527,7 @@ void NcVar::getVar(const vector<size_t>& index, unsigned int* datumValue) const
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, long long* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_longlong(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1434,7 +1535,7 @@ void NcVar::getVar(const vector<size_t>& index, long long* datumValue) const {
 // Reads a single datum value of a netCDF variable
 void NcVar::getVar(const vector<size_t>& index, unsigned long long* datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_ulonglong(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1442,7 +1543,7 @@ void NcVar::getVar(const vector<size_t>& index, unsigned long long* datumValue)
 // Reads a single datum value of a netCDF variable.
 void NcVar::getVar(const vector<size_t>& index, char** datumValue) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
   else
     ncCheck(nc_get_var1_string(groupId, myId,&index[0],datumValue),__FILE__,__LINE__);
@@ -1459,7 +1560,7 @@ void NcVar::getVar(const vector<size_t>& index, void* datumValue) const {
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_text(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1467,7 +1568,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_uchar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1475,7 +1576,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, u
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, signed char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_schar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1483,7 +1584,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, s
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_short(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1491,7 +1592,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, s
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_int(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1499,7 +1600,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, i
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_long(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1507,7 +1608,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, l
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, float* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_float(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1515,7 +1616,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, f
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, double* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_double(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1523,7 +1624,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, d
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_ushort(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1531,7 +1632,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, u
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_uint(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1539,7 +1640,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, u
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_longlong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1547,7 +1648,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, l
 // Reads an array of values from  a netCDF variable
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_ulonglong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1555,7 +1656,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, u
 // Reads an array of values from  a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, char** dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vara_string(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__);
@@ -1571,7 +1672,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, v
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_text(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1579,7 +1680,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1587,7 +1688,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, signed char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1595,7 +1696,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_short(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1603,7 +1704,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_int(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1611,7 +1712,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_long(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1619,7 +1720,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, float* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_float(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1627,7 +1728,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, double* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_double(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1635,7 +1736,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1643,7 +1744,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1651,7 +1752,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1659,7 +1760,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1667,7 +1768,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a subsampled (strided) array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, char** dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_vars_string(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__);
@@ -1683,7 +1784,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_text(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1691,7 +1792,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1699,7 +1800,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, signed char* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1707,7 +1808,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_short(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1715,7 +1816,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_int(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1723,7 +1824,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_long(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1731,7 +1832,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, float* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_float(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1739,7 +1840,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, double* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_double(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1747,7 +1848,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned short* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN ||typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1755,7 +1856,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned int* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1763,7 +1864,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1771,7 +1872,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned long long* dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1779,7 +1880,7 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 // Reads a mapped array section of values from a netCDF variable.
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, char** dataValues) const {
   NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
+  if(typeClass == NcType::nc_VLEN || typeClass == NcType::nc_OPAQUE || typeClass == NcType::nc_ENUM || typeClass == NcType::nc_COMPOUND)
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
   else
     ncCheck(nc_get_varm_string(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
@@ -1788,5 +1889,3 @@ void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, c
 void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, void* dataValues) const {
     ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__);
 }
-
-
diff --git a/cxx4/ncVar.cpp_keep b/cxx4/ncVar.cpp_keep
deleted file mode 100644
index 1c64047..0000000
--- a/cxx4/ncVar.cpp_keep
+++ /dev/null
@@ -1,1788 +0,0 @@
-#include "ncVarAtt.h"
-#include "ncDim.h"
-#include "ncVar.h"
-#include "ncGroup.h"
-#include "ncCheck.h"
-#include "ncException.h"
-#include<netcdf.h>
-using namespace std;
-using namespace netCDF::exceptions;
-  
-namespace netCDF {
-  //  Global comparator operator ==============
-  // comparator operator 
-  bool operator<(const NcVar& lhs,const NcVar& rhs)
-  {
-    return false;
-  }
-  
-  // comparator operator 
-  bool operator>(const NcVar& lhs,const NcVar& rhs)
-  {
-    return true;
-  }
-}
-
-using namespace netCDF;
-
-// assignment operator
-NcVar& NcVar::operator=(const NcVar & rhs)
-{
-  nullObject = rhs.nullObject;
-  myId = rhs.myId;
-  groupId = rhs.groupId;
-  return *this;
-}
-
-// The copy constructor.
-NcVar::NcVar(const NcVar& rhs) : 
-  nullObject(rhs.nullObject),
-  myId(rhs.myId),
-  groupId(rhs.groupId)
-{}
-
-
-// equivalence operator
-bool NcVar::operator==(const NcVar & rhs) const
-{
-  // simply check the netCDF id.
-  return (myId == rhs.myId);
-}  
-
-//  !=  operator
-bool NcVar::operator!=(const NcVar & rhs) const
-{
-  return !(*this == rhs);
-}  
-
-/////////////////
-  
-// Constructors and intialization
-  
-/////////////////
-  
-// Constructor generates a null object.
-NcVar::NcVar() : nullObject(true) {}
-  
-// Constructor for a variable (must already exist in the netCDF file.)
-NcVar::NcVar (const NcGroup& grp, const int& varId) :
-  nullObject (false),
-  myId (varId),
-  groupId(grp.getId())
-{}
-
-  
-  
-// Gets parent group.
-NcGroup  NcVar::getParentGroup() const {
-  return NcGroup(groupId);
-}
-  
-
-// Get the variable id.
-int  NcVar::getId() const {return myId;}
-    
-//////////////////////
-
-//  Information about the variable type
-
-/////////////////////
-
-
-// Gets the NcType object with a given name.
-NcType NcVar::getType() const {
-
-  // if this variable has not been defined, return a NULL type
-  if(isNull()) return NcType();
-
-  // first get the typeid
-  nc_type xtypep;
-  ncCheck(nc_inq_vartype(groupId,myId,&xtypep),__FILE__,__LINE__,__FUNCTION__);
-
-  if(xtypep ==  ncByte.getId()    ) return ncByte;
-  if(xtypep ==  ncUbyte.getId()   ) return ncUbyte;
-  if(xtypep ==  ncChar.getId()    ) return ncChar;
-  if(xtypep ==  ncShort.getId()   ) return ncShort;
-  if(xtypep ==  ncUshort.getId()  ) return ncUshort;
-  if(xtypep ==  ncInt.getId()     ) return ncInt;
-  if(xtypep ==  ncUint.getId()    ) return ncUint;  
-  if(xtypep ==  ncInt64.getId()   ) return ncInt64; 
-  if(xtypep ==  ncUint64.getId()  ) return ncUint64;
-  if(xtypep ==  ncFloat.getId()   ) return ncFloat;
-  if(xtypep ==  ncDouble.getId()  ) return ncDouble;
-  if(xtypep ==  ncString.getId()  ) return ncString;
-
-  multimap<string,NcType>::const_iterator it;
-  multimap<string,NcType> types(NcGroup(groupId).getTypes(NcGroup::ParentsAndCurrent));
-  for(it=types.begin(); it!=types.end(); it++) {
-    if(it->second.getId() == xtypep) return it->second;
-  }
-  // we will never reach here
-  return true;
-}
-
-
-
-
-
-
-
-  
-/////////////////
-  
-// Information about Dimensions
-  
-/////////////////
-
-  
-// Gets the number of dimensions.
-int NcVar::getDimCount() const
-{
-  // get the number of dimensions
-  int dimCount;
-  ncCheck(nc_inq_varndims(groupId,myId, &dimCount),__FILE__,__LINE__,__FUNCTION__);
-  return dimCount;
-}  
-
-// Gets the set of Ncdim objects.
-vector<NcDim> NcVar::getDims() const
-{
-  // get the number of dimensions
-  int dimCount = getDimCount();  
-  // create a vector of dimensions.
-  vector<NcDim> ncDims;
-  vector<int> dimids(dimCount);
-  ncCheck(nc_inq_vardimid(groupId,myId, &dimids[0]),__FILE__,__LINE__,__FUNCTION__);
-  ncDims.reserve(dimCount);
-  for (int i=0; i<dimCount; i++){
-    NcDim tmpDim(getParentGroup(),dimids[i]);
-    ncDims.push_back(tmpDim);
-  }
-  return ncDims;
-}  
-
-  
-// Gets the i'th NcDim object.
-NcDim NcVar::getDim(int i) const
-{
-  vector<NcDim> ncDims = getDims();
-  if((size_t)i >= ncDims.size() | i < 0) throw NcException("NcException","Index out of range",__FILE__,__LINE__,__FUNCTION__);
-  return ncDims[i];
-}
-
-
-/////////////////
-  
-// Information about Attributes
-  
-/////////////////
-
-  
-// Gets the number of attributes.
-int NcVar::getAttCount() const
-{
-  // get the number of attributes
-  int attCount;
-  ncCheck(nc_inq_varnatts(groupId,myId, &attCount),__FILE__,__LINE__,__FUNCTION__);
-  return attCount;
-}  
-
-// Gets the set of attributes.
-map<string,NcVarAtt> NcVar::getAtts() const
-{
-  // get the number of attributes
-  int attCount = getAttCount();  
-  // create a container of attributes.
-  map<string,NcVarAtt> ncAtts;
-  for (int i=0; i<attCount; i++){
-    NcVarAtt tmpAtt(getParentGroup(),*this,i);
-    ncAtts.insert(pair<string,NcVarAtt>(tmpAtt.getName(),tmpAtt));
-  }
-  return ncAtts;
-}  
-
-  
-// Gets attribute by name.
-NcVarAtt NcVar::getAtt(const string& name) const
-{
-  map<string,NcVarAtt> attributeList = getAtts();
-  map<string,NcVarAtt>::iterator myIter;
-  myIter = attributeList.find(name);
-  if(myIter == attributeList.end())
-    throw NcException("NcException","attribute '"+name+"' not found",__FILE__,__LINE__,__FUNCTION__);
-  return NcVarAtt(myIter->second);
-}
-
-
-
-/////////////////////////
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const string& dataValues) const {
-  ncCheck(nc_put_att_text(groupId,myId,name.c_str(),dataValues.size(),dataValues.c_str()),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned char* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_uchar(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const signed char* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_schar(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-
-/////////////////////////////////
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, short datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_short(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, int datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_int(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, long datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_long(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, float datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_float(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, double datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_double(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned short datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_ushort(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned int datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_uint(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, long long datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_longlong(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, unsigned long long datumValue) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_ulonglong(groupId,myId,name.c_str(),type.getId(),1,&datumValue),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-/////////////////////////////////
-
-
-
-
-
-
-
-
-
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const short* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_short(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const int* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_int(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const long* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_long(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const float* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_float(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const double* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_double(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned short* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_ushort(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned int* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_uint(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const long long* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_longlong(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const unsigned long long* dataValues) const {
-  NcType::ncType typeClass(type.getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_att(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_att_ulonglong(groupId,myId,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, size_t len, const char** dataValues) const {
-  ncCheck(nc_put_att_string(groupId,myId,name.c_str(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-// Creates a new NetCDF variable attribute or if already exisiting replaces it.
-NcVarAtt NcVar::putAtt(const string& name, const NcType& type, size_t len, const void* dataValues) const {
-  ncCheck(nc_put_att(groupId,myId ,name.c_str(),type.getId(),len,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  // finally instantiate this attribute and return
-  return getAtt(name);
-}
-
-
-
-
-////////////////////
-  
-// Other Basic variable info
-  
-////////////////////
-  
-// The name of this variable.
-string NcVar::getName() const{
-  char charName[NC_MAX_NAME+1];
-  ncCheck(nc_inq_varname(groupId, myId, charName),__FILE__,__LINE__,__FUNCTION__);
-  return string(charName);
-}
-
-
-////////////////////
-  
-// Chunking details
-  
-////////////////////
-
-
-// Sets chunking parameters.
-void NcVar::setChunking(ChunkMode chunkMode, vector<size_t>& chunksizes) const {
-  ncCheck(nc_def_var_chunking(groupId,myId,static_cast<int> (chunkMode), &chunksizes[0]),__FILE__,__LINE__,__FUNCTION__);
-}
-  
-  
-// Gets the chunking parameters
-void NcVar::getChunkingParameters(ChunkMode& chunkMode, vector<size_t>& chunkSizes) const {
-  int chunkModeInt;
-  chunkSizes.reserve(getDimCount());
-    
-  ncCheck(nc_inq_var_chunking(groupId,myId,&chunkModeInt, &chunkSizes[0]),__FILE__,__LINE__,__FUNCTION__);
-  chunkMode = static_cast<ChunkMode> (chunkModeInt);
-}
-  
-  
-  
-  
-////////////////////
-  
-// Fill details
-  
-////////////////////
-
-
-// Sets the fill parameters
-void NcVar::setFill(bool fillMode, void* fillValue) const {
-  // If fillMode is enabled, check that fillValue has a legal pointer.
-  if(fillMode && fillValue == NULL)
-    throw NcException("NcException","FillMode was set to zero but fillValue has invalid pointer",__FILE__,__LINE__,__FUNCTION__);
-  
-  ncCheck(nc_def_var_fill(groupId,myId,static_cast<int> (!fillMode),fillValue),__FILE__,__LINE__,__FUNCTION__);
-}
-
-// Sets the fill parameters
-void NcVar::setFill(bool fillMode,const void* fillValue) const {
-  setFill(fillMode,const_cast<void*>(fillValue));
-}
-
-
-
-// Gets the fill parameters
-void NcVar::getFillModeParameters(bool& fillMode, void* fillValue)const{
-    
-  int fillModeInt;
-  ncCheck(nc_inq_var_fill(groupId,myId,&fillModeInt,fillValue),__FILE__,__LINE__,__FUNCTION__);
-  fillMode= static_cast<bool> (fillModeInt == 0);
-}
-  
-
-////////////////////
-  
-// Compression details
-  
-////////////////////
-
-
-// Sets the compression parameters
-void NcVar::setCompression(bool enableShuffleFilter, bool enableDeflateFilter, int deflateLevel) const {
-    
-  // Check that the deflate level is legal
-  if(enableDeflateFilter & (deflateLevel < 0 | deflateLevel >9))
-    throw NcException("NcException","The deflateLevel must be set between 0 and 9.",__FILE__,__LINE__,__FUNCTION__);
-    
-  ncCheck(nc_def_var_deflate(groupId,myId,
-			     static_cast<int> (enableShuffleFilter),
-			     static_cast<int> (enableDeflateFilter),
-			     deflateLevel),__FILE__,__LINE__,__FUNCTION__);
-}
-  
-
-// Gets the compression parameters
-void NcVar::getCompressionParameters(bool& shuffleFilterEnabled, bool& deflateFilterEnabled, int& deflateLevel) const {
-    
-  int enableShuffleFilterInt;
-  int enableDeflateFilterInt;
-  ncCheck(nc_inq_var_deflate(groupId,myId,
-			     &enableShuffleFilterInt,
-			     &enableDeflateFilterInt,
-			     &deflateLevel),__FILE__,__LINE__,__FUNCTION__);
-  shuffleFilterEnabled =  static_cast<bool> (enableShuffleFilterInt);
-  deflateFilterEnabled =  static_cast<bool> (enableDeflateFilterInt);
-}
-  
-
-
-////////////////////
-  
-// Endianness details
-  
-////////////////////
-      
-
-// Sets the endianness of the variable.
-void NcVar::setEndianness(EndianMode endianMode) const {
-    
-  ncCheck(nc_def_var_endian(groupId,myId,static_cast<int> (endianMode)),__FILE__,__LINE__,__FUNCTION__);
-}
-  
-  
-// Gets the endianness of the variable.
-NcVar::EndianMode NcVar::getEndianness() const {
-    
-  int endianInt;
-  ncCheck(nc_inq_var_endian(groupId,myId,&endianInt),__FILE__,__LINE__,__FUNCTION__);
-  return static_cast<EndianMode> (endianInt);
-}
-  
-      
-  
-////////////////////
-  
-// Checksum details
-  
-////////////////////
-  
-  
-// Sets the checksum parameters of a variable.
-void NcVar::setChecksum(ChecksumMode checksumMode) const {
-  ncCheck(nc_def_var_fletcher32(groupId,myId,static_cast<int> (checksumMode)),__FILE__,__LINE__,__FUNCTION__);
-}
-  
-  
-// Gets the checksum parameters of the variable.
-NcVar::ChecksumMode NcVar::getChecksum() const {
-  int checksumInt;
-  ncCheck(nc_inq_var_fletcher32(groupId,myId,&checksumInt),__FILE__,__LINE__,__FUNCTION__);
-  return static_cast<ChecksumMode> (checksumInt);
-}
-  
-  
-
-  
-////////////////////
-  
-//  renaming the variable
-  
-////////////////////
-  
-void NcVar::rename( const string& newname ) const 
-{
-  ncCheck(nc_rename_var(groupId,myId,newname.c_str()),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-
-
-
-////////////////////
-
-//  data writing
-
-////////////////////
-
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_text(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_uchar(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_schar(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_short(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_int(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_long(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_float(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_double(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_ushort(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_uint(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_longlong(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_ulonglong(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable.
-void NcVar::putVar(const char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var_string(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes the entire data into the netCDF variable with no data conversion.
-void NcVar::putVar(const void* dataValues) const {
-    ncCheck(nc_put_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-///////////////////
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const char* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_text(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const unsigned char* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_uchar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const signed char* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_schar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const short* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_short(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const int* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_int(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const long* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_long(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const float* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_float(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const double* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_double(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const unsigned short* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_ushort(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const unsigned int* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_uint(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const long long* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_longlong(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const unsigned long long* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_ulonglong(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& index, const char** datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_var1_string(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a single datum value into the netCDF variable with no data conversion.
-void NcVar::putVar(const vector<size_t>& index, const void* datumValue) const {
-    ncCheck(nc_put_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-////////////////////
-
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_text(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_uchar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_schar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_short(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_int(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_long(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_float(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_double(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_ushort(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_uint(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_longlong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_ulonglong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vara_string(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes an array of values into the netCDF variable with no data conversion.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>& countp, const void* dataValues) const {
-    ncCheck(nc_put_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-
-////////////////////
-
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_text(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_short(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_int(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_long(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_float(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_double(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_vars_string(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a set of subsampled array values into the netCDF variable with no data conversion.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep,  const void* dataValues) const {
-    ncCheck(nc_put_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-////////////////////
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_text(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_short(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_int(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_long(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_float(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_double(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_put_varm_string(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Writes a mapped array section of values into the netCDF variable with no data conversion.
-void NcVar::putVar(const vector<size_t>& startp, const vector<size_t>&countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, const void* dataValues) const {
-    ncCheck(nc_put_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-
-     
-
-// Data reading
-
-
-
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_text(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_uchar(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_schar(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_short(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_int(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_long(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_float(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_double(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_ushort(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_uint(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_longlong(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_ulonglong(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable.
-void NcVar::getVar(char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var_string(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads the entire data of the netCDF variable with no data conversion.
-void NcVar::getVar(void* dataValues) const {
-    ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-
-///////////
-
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, char* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_text(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, unsigned char* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_uchar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, signed char* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_schar(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, short* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_short(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, int* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_int(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, long* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_long(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, float* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_float(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, double* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_double(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, unsigned short* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_ushort(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, unsigned int* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_uint(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, long long* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_longlong(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable
-void NcVar::getVar(const vector<size_t>& index, unsigned long long* datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_ulonglong(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable.
-void NcVar::getVar(const vector<size_t>& index, char** datumValue) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_var1_string(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a single datum value of a netCDF variable with no data conversion.
-void NcVar::getVar(const vector<size_t>& index, void* datumValue) const {
-    ncCheck(nc_get_var1(groupId, myId,&index[0],datumValue),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-
-///////////
-
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_text(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_uchar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_schar(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_short(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_int(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_long(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_float(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_double(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_ushort(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_uint(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_longlong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_ulonglong(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vara_string(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads an array of values from  a netCDF variable with no data conversion.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, void* dataValues) const {
-    ncCheck(nc_get_vara(groupId, myId,&startp[0],&countp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-///////////
-
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_text(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_short(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_int(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_long(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_float(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_double(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_vars_string(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a subsampled (strided) array section of values from a netCDF variable with no data conversion.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, void* dataValues) const {
-    ncCheck(nc_get_vars(groupId, myId,&startp[0],&countp[0],&stridep[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
-
-///////////
-
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_text(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_uchar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, signed char* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_schar(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_short(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_int(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_long(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, float* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_float(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, double* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_double(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned short* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_ushort(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned int* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_uint(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_longlong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, unsigned long long* dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_ulonglong(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, char** dataValues) const {
-  NcType::ncType typeClass(getType().getTypeClass());
-  if(typeClass == NcType::nc_VLEN | typeClass == NcType::nc_OPAQUE | typeClass == NcType::nc_ENUM | typeClass == NcType::nc_COMPOUND) 
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-  else
-    ncCheck(nc_get_varm_string(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-// Reads a mapped array section of values from a netCDF variable with no data conversion.
-void NcVar::getVar(const vector<size_t>& startp, const vector<size_t>& countp, const vector<ptrdiff_t>& stridep, const vector<ptrdiff_t>& imapp, void* dataValues) const {
-    ncCheck(nc_get_varm(groupId, myId,&startp[0],&countp[0],&stridep[0],&imapp[0],dataValues),__FILE__,__LINE__,__FUNCTION__);
-}
-
diff --git a/cxx4/ncVar.h b/cxx4/ncVar.h
index 4e56c02..7a682dc 100644
--- a/cxx4/ncVar.h
+++ b/cxx4/ncVar.h
@@ -33,19 +33,19 @@ namespace netCDF
   class NcVar
   {
   public:
-    
+
     /*! Used for chunking specifications (see NcVar::setChunking,  NcVar::getChunkingParameters). */
     enum ChunkMode
       {
 	/*!
 	  Chunked storage is used for this variable.
 	*/
-	nc_CHUNKED    = NC_CHUNKED,   
-	/*! Contiguous storage is used for this variable. Variables with one or more unlimited 
-	  dimensions cannot use contiguous storage. If contiguous storage is turned on, the 
-	  chunkSizes parameter is ignored. 
-	*/
-	nc_CONTIGUOUS = NC_CONTIGUOUS
+        nc_CHUNKED    = NC_CHUNKED,
+        /*! Contiguous storage is used for this variable. Variables with one or more unlimited
+          dimensions cannot use contiguous storage. If contiguous storage is turned on, the
+          chunkSizes parameter is ignored.
+        */
+        nc_CONTIGUOUS = NC_CONTIGUOUS
       };
 
     /*!
@@ -60,19 +60,19 @@ namespace netCDF
 
     /*! Used for checksum specification (see NcVar::setChecksum, NcVar::getChecksum). */
     enum ChecksumMode
-      {
-	nc_NOCHECKSUM = NC_NOCHECKSUM, //!< No checksum (the default).
-	nc_FLETCHER32 = NC_FLETCHER32  //!< Selects the Fletcher32 checksum filter. 
+    {
+      nc_NOCHECKSUM = NC_NOCHECKSUM, //!< No checksum (the default).
+      nc_FLETCHER32 = NC_FLETCHER32  //!< Selects the Fletcher32 checksum filter.
       };
 
     /*! destructor */
     ~NcVar(){};
-      
+
     /*! Constructor generates a \ref isNull "null object". */
     NcVar ();
 
     /*! Constructor for a variable .
-    
+
       The variable must already exist in the netCDF file. New netCDF variables can be added using NcGroup::addNcVar();
       \param grp    Parent NcGroup object.
       \param varId  Id of the is NcVar object.
@@ -81,16 +81,16 @@ namespace netCDF
 
     /*! assignment operator  */
     NcVar& operator =(const NcVar& rhs);
-      
+
     /*! equivalence operator */
-    bool operator==(const NcVar& rhs) const;     
-      
+    bool operator==(const NcVar& rhs) const;
+
     /*!  != operator */
-    bool operator!=(const NcVar& rhs) const;     
+    bool operator!=(const NcVar& rhs) const;
 
     /*! The copy constructor. */
     NcVar(const NcVar& ncVar);
-      
+
     /*! Name of this NcVar object.*/
     std::string getName() const;
 
@@ -98,31 +98,31 @@ namespace netCDF
     NcGroup  getParentGroup() const;
 
     /*! Returns the variable type. */
-    NcType getType() const;              
-      
-      
+    NcType getType() const;
+
+
     /*! Rename the variable. */
     void rename( const std::string& newname ) const;
-      
+
 
     /*! Get the variable id. */
     int  getId() const;
-    
+
     /*! Returns true if this object variable is not defined. */
     bool isNull() const  {return nullObject;}
 
     /*! comparator operator  */
     friend bool operator<(const NcVar& lhs,const NcVar& rhs);
-    
+
     /*! comparator operator  */
     friend bool operator>(const NcVar& lhs,const NcVar& rhs);
-    
+
     /////////////////
-      
+
     // Information about Dimensions
-      
+
     /////////////////
-      
+
     /*! The the number of dimensions. */
     int getDimCount() const ;
 
@@ -133,14 +133,14 @@ namespace netCDF
     std::vector<NcDim> getDims() const;
 
     /////////////////
-      
+
     // Information about Attributes
-      
+
     /////////////////
-      
+
     /*! Gets the number of attributes. */
     int getAttCount() const;
-      
+
     /*! Gets attribute by name */
     NcVarAtt getAtt(const std::string& name) const;
 
@@ -154,84 +154,84 @@ namespace netCDF
 
 
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, size_t len, const char** dataValues) const ;
 
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const std::string& dataValues) const ;
 
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned char* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const signed char* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, short datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, int datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, long datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, float datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, double datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, unsigned short datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, unsigned int datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, unsigned long long datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, long long datumValue) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const short* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const int* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const long* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const float* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const double* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned short* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned int* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const unsigned long long* dataValues) const ;
     /*! \overload
-     */ 
+     */
     NcVarAtt putAtt(const std::string& name, const NcType& type, size_t len, const long long* dataValues) const ;
-    /*! 
+    /*!
       Creates a new variable attribute or if already exisiting replaces it.
-      If you are writing a _Fill_Value_ attribute, and will tell the HDF5 layer to use 
-      the specified fill value for that variable. 
-      \par 
-      Although it's possible to create attributes of all types, text and double attributes are adequate for most purposes. 
+      If you are writing a _Fill_Value_ attribute, and will tell the HDF5 layer to use
+      the specified fill value for that variable.
+      \par
+      Although it's possible to create attributes of all types, text and double attributes are adequate for most purposes.
       \param name        Name of attribute.
-      \param type        The attribute type. 
+      \param type        The attribute type.
       \param len         The length of the attribute (number of Nctype repeats).
       \param dataValues  Data Values to put into the new attribute.
-      If the type of data values differs from the netCDF variable type, type conversion will occur. 
+      If the type of data values differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
       \return            The NcVarAtt object for this new netCDF attribute.
@@ -241,31 +241,31 @@ namespace netCDF
 
 
     ////////////////////
-      
+
     // Chunking details
-      
+
     ////////////////////
-      
+
     /*! Sets chunking parameters.
       \param chunkMode   Enumeration type. Allowable parameters are: "nc_CONTIGUOUS", "nc_CHUNKED"
       \param chunksizes  Shape of chunking, used if ChunkMode=nc_CHUNKED.
     */
     void setChunking(ChunkMode chunkMode, std::vector<size_t>& chunksizes) const;
-      
+
     /*! Gets the chunking parameters
       \param chunkMode   On return contains either: "nc_CONTIGUOUS" or "nc_CHUNKED"
       \param chunksizes  On return contains shape of chunking, used if ChunkMode=nc_CHUNKED.
     */
     void getChunkingParameters(ChunkMode& chunkMode, std::vector<size_t>& chunkSizes) const;
-      
-      
-      
+
+
+
     ////////////////////
-      
+
     // Fill details
-      
+
     ////////////////////
-      
+
     // Sets the fill parameters
     /*!
       \overload
@@ -273,9 +273,9 @@ namespace netCDF
     void setFill(bool fillMode,void* fillValue=NULL) const;
 
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      The function can be used for any type, including user-defined types. 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      The function can be used for any type, including user-defined types.
       \param fillMode   Setting to true, turns on fill mode.
       \param fillValue  Pointer to fill value.
       Must be the same type as the variable. Ignored if fillMode=.false.
@@ -284,7 +284,7 @@ namespace netCDF
 
     /*! Sets the fill parameters
       \param fillMode   Setting to true, turns on fill mode.
-      \param fillValue  Fill value for the variable. 
+      \param fillValue  Fill value for the variable.
       Must be the same type as the variable. Ignored if fillMode=.false.
     */
     template<class T>
@@ -294,18 +294,18 @@ namespace netCDF
       }
 
 
-    
-    
+
+
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      The function can be used for any type, including user-defined types. 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      The function can be used for any type, including user-defined types.
       \param fillMode   On return set to true  if fill mode is enabled.
       \param fillValue  On return containts a pointer to fill value.
       Must be the same type as the variable. Ignored if fillMode=.false.
     */
     void getFillModeParameters(bool& fillMode, void* fillValue=NULL) const;
-    
+
 
     /*! Gets the fill parameters
       \param On return set to true  if fill mode is enabled.
@@ -316,135 +316,135 @@ namespace netCDF
       ncCheck(nc_inq_var_fill(groupId,myId,&fillModeInt,&fillValue),__FILE__,__LINE__);
       fillMode= static_cast<bool> (fillModeInt == 0);
     }
-  
 
 
-      
+
+
     ////////////////////
-      
+
     // Compression details
-      
+
     ////////////////////
-      
-      
+
+
     /*! Sets the compression parameters
       \param enableShuffleFilter Set to true to turn on shuffle filter.
       \param enableDeflateFilter Set to true to turn on deflate filter.
       \param deflateLevel        The deflate level, must be 0 and 9.
     */
     void setCompression(bool enableShuffleFilter, bool enableDeflateFilter, int deflateLevel) const;
-      
+
     /*! Gets the compression parameters
       \param enableShuffleFilter  On return set to true if the shuffle filter is enabled.
       \param enableDeflateFilter  On return set to true if the deflate filter is enabled.
       \param deflateLevel         On return set to the deflate level.
     */
     void getCompressionParameters(bool& shuffleFilterEnabled, bool& deflateFilterEnabled, int& deflateLevel) const;
-      
-      
-      
+
+
+
     ////////////////////
-      
+
     // Endianness details
-      
+
     ////////////////////
-      
-      
+
+
     /*! Sets the endianness of the variable.
       \param Endianness enumeration type. Allowable parameters are: "nc_ENDIAN_NATIVE" (the default), "nc_ENDIAN_LITTLE", "nc_ENDIAN_BIG"
     */
     void setEndianness(EndianMode endianMode) const;
-      
+
     /*! Gets the endianness of the variable.
       \return Endianness enumeration type. Allowable parameters are: "nc_ENDIAN_NATIVE" (the default), "nc_ENDIAN_LITTLE", "nc_ENDIAN_BIG"
     */
     EndianMode getEndianness() const;
-      
-      
-      
+
+
+
     ////////////////////
-      
+
     // Checksum details
-      
+
     ////////////////////
-      
-      
+
+
     /*! Sets the checksum parameters of a variable.
       \param ChecksumMode Enumeration type. Allowable parameters are: "nc_NOCHECKSUM", "nc_FLETCHER32".
     */
     void setChecksum(ChecksumMode checksumMode) const;
-      
+
     /*! Gets the checksum parameters of the variable.
       \return ChecksumMode Enumeration type. Allowable parameters are: "nc_NOCHECKSUM", "nc_FLETCHER32".
     */
     ChecksumMode getChecksum() const;
-    
-    
-    
+
+
+
     ////////////////////
-    
+
     //  data  reading
-    
+
     ////////////////////
-      
-      
+
+
 
     // Reads the entire data into the netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void getVar(void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(char** dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(unsigned char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(signed char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(long* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(float* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(double* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(unsigned short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(unsigned int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Reads the entire data from an netCDF variable.
-      This is the simplest interface to use for reading the value of a scalar variable 
-      or when all the values of a multidimensional variable can be read at once. The values 
-      are read into consecutive locations with the last dimension varying fastest. 
-      
-      Take care when using the simplest forms of this interface with record variables when you 
-      don't specify how many records are to be read. If you try to read all the values of a 
-      record variable into an array but there are more records in the file than you assume, 
+      This is the simplest interface to use for reading the value of a scalar variable
+      or when all the values of a multidimensional variable can be read at once. The values
+      are read into consecutive locations with the last dimension varying fastest.
+
+      Take care when using the simplest forms of this interface with record variables when you
+      don't specify how many records are to be read. If you try to read all the values of a
+      record variable into an array but there are more records in the file than you assume,
       more data will be read than you expect, which may cause a segmentation violation.
 
-      \param dataValues Pointer to the location into which the data value is read. If the type of 
+      \param dataValues Pointer to the location into which the data value is read. If the type of
       data value differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
@@ -456,57 +456,57 @@ namespace netCDF
 
     // Reads a single datum value from a variable of an open netCDF dataset.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void getVar(const std::vector<size_t>& index, void* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, char** datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, char* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, unsigned char* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, signed char* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, short* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, int* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, long* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, float* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, double* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, unsigned short* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, unsigned int* datumValue) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& index, unsigned long long* datumValue) const;
     /*! Reads a single datum value from a variable of an open netCDF dataset.
       The value is converted from the external data type of the variable, if necessary.
 
-      \param index       Vector specifying the index of the data value to be read. 
-      The indices are relative to 0, so for example, the first data value of a two-dimensional 
-      variable would have index (0,0). The elements of index must correspond to the variable's dimensions. 
+      \param index       Vector specifying the index of the data value to be read.
+      The indices are relative to 0, so for example, the first data value of a two-dimensional
+      variable would have index (0,0). The elements of index must correspond to the variable's dimensions.
       Hence, if the variable is a record variable, the first index is the record number.
 
-      \param datumValue Pointer to the location into which the data value is read. If the type of 
+      \param datumValue Pointer to the location into which the data value is read. If the type of
       data value differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
@@ -515,70 +515,70 @@ namespace netCDF
 
     //////////////////////
 
-    // Reads an array of values from a netCDF variable of an open netCDF dataset. 
+    // Reads an array of values from a netCDF variable of an open netCDF dataset.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, char** dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, unsigned char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, signed char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, long* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, float* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, double* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, unsigned short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, unsigned int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count, unsigned long long* dataValues) const;
-    /*! 
-      Reads an array of values from a netCDF variable of an open netCDF dataset. 
-      The array is specified by giving a corner and a vector of edge lengths. 
+    /*!
+      Reads an array of values from a netCDF variable of an open netCDF dataset.
+      The array is specified by giving a corner and a vector of edge lengths.
       The values are read into consecutive locations with the last dimension varying fastest.
 
       \param start
-      Vector specifying the index in the variable where the first of the data values will be read. 
-      The indices are relative to 0, so for example, the first data value of a variable would have index (0, 0, ... , 0). 
-      The length of start must be the same as the number of dimensions of the specified variable. 
-      The elements of start correspond, in order, to the variable's dimensions. Hence, if the variable is a record variable, 
+      Vector specifying the index in the variable where the first of the data values will be read.
+      The indices are relative to 0, so for example, the first data value of a variable would have index (0, 0, ... , 0).
+      The length of start must be the same as the number of dimensions of the specified variable.
+      The elements of start correspond, in order, to the variable's dimensions. Hence, if the variable is a record variable,
       the first index would correspond to the starting record number for reading the data values.
 
       \param count
-      Vector specifying the edge lengths along each dimension of the block of data values to be read. 
-      To read a single value, for example, specify count as (1, 1, ... , 1). The length of count is the number of 
-      dimensions of the specified variable. The elements of count correspond, in order, to the variable's dimensions. 
+      Vector specifying the edge lengths along each dimension of the block of data values to be read.
+      To read a single value, for example, specify count as (1, 1, ... , 1). The length of count is the number of
+      dimensions of the specified variable. The elements of count correspond, in order, to the variable's dimensions.
       Hence, if the variable is a record variable, the first element of count corresponds to a count of the number of records to read.
-      Note: setting any element of the count array to zero causes the function to exit without error, and without doing anything. 
+      Note: setting any element of the count array to zero causes the function to exit without error, and without doing anything.
 
-      \param dataValues Pointer to the location into which the data value is read. If the type of 
+      \param dataValues Pointer to the location into which the data value is read. If the type of
       data value differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
@@ -589,74 +589,74 @@ namespace netCDF
 
     // Reads a subsampled (strided) array section of values from a netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, char** dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, unsigned char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, signed char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, long* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, float* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, double* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, unsigned short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, unsigned int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Reads a subsampled (strided) array section of values from a netCDF variable.
-      The subsampled array section is specified by giving a corner, a vector of edge lengths, and a stride vector. 
+      The subsampled array section is specified by giving a corner, a vector of edge lengths, and a stride vector.
       The values are read with the last dimension of the netCDF variable varying fastest.
 
       \param start
-      Vector specifying the index in the variable where the first of the data values will be read. 
-      The indices are relative to 0, so for example, the first data value of a variable would have index (0, 0, ... , 0). 
-      The length of start must be the same as the number of dimensions of the specified variable. 
-      The elements of start correspond, in order, to the variable's dimensions. Hence, if the variable is a record variable, 
+      Vector specifying the index in the variable where the first of the data values will be read.
+      The indices are relative to 0, so for example, the first data value of a variable would have index (0, 0, ... , 0).
+      The length of start must be the same as the number of dimensions of the specified variable.
+      The elements of start correspond, in order, to the variable's dimensions. Hence, if the variable is a record variable,
       the first index would correspond to the starting record number for reading the data values.
 
       \param count
-      Vector specifying the edge lengths along each dimension of the block of data values to be read. 
-      To read a single value, for example, specify count as (1, 1, ... , 1). The length of count is the number of 
-      dimensions of the specified variable. The elements of count correspond, in order, to the variable's dimensions. 
+      Vector specifying the edge lengths along each dimension of the block of data values to be read.
+      To read a single value, for example, specify count as (1, 1, ... , 1). The length of count is the number of
+      dimensions of the specified variable. The elements of count correspond, in order, to the variable's dimensions.
       Hence, if the variable is a record variable, the first element of count corresponds to a count of the number of records to read.
-      Note: setting any element of the count array to zero causes the function to exit without error, and without doing anything. 
+      Note: setting any element of the count array to zero causes the function to exit without error, and without doing anything.
 
       \param stride
-      Vector specifying the interval between selected indices. The elements of the stride vector correspond, in order, 
-      to the variable's dimensions. A value of 1 accesses adjacent values of the netCDF variable in the corresponding 
-      dimension; a value of 2 accesses every other value of the netCDF variable in the corresponding dimension; and so 
-      on. A NULL stride argument is treated as (1, 1, ... , 1). 
+      Vector specifying the interval between selected indices. The elements of the stride vector correspond, in order,
+      to the variable's dimensions. A value of 1 accesses adjacent values of the netCDF variable in the corresponding
+      dimension; a value of 2 accesses every other value of the netCDF variable in the corresponding dimension; and so
+      on. A NULL stride argument is treated as (1, 1, ... , 1).
 
-      \param dataValues Pointer to the location into which the data value is read. If the type of 
+      \param dataValues Pointer to the location into which the data value is read. If the type of
       data value differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
@@ -668,85 +668,85 @@ namespace netCDF
 
     // Reads a mapped array section of values from a netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, char** dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, unsigned char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, signed char* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, long* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, float* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, double* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, unsigned short* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, unsigned int* dataValues) const;
     /*! \overload
-     */ 
+     */
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Reads a mapped array section of values from a netCDF variable.
-      The mapped array section is specified by giving a corner, a vector of edge lengths, a stride vector, and an 
-      index mapping vector. The index mapping vector is a vector of integers that specifies the mapping between the 
-      dimensions of a netCDF variable and the in-memory structure of the internal data array. No assumptions are 
-      made about the ordering or length of the dimensions of the data array. 
+      The mapped array section is specified by giving a corner, a vector of edge lengths, a stride vector, and an
+      index mapping vector. The index mapping vector is a vector of integers that specifies the mapping between the
+      dimensions of a netCDF variable and the in-memory structure of the internal data array. No assumptions are
+      made about the ordering or length of the dimensions of the data array.
 
       \param start
-      Vector specifying the index in the variable where the first of the data values will be read. 
-      The indices are relative to 0, so for example, the first data value of a variable would have index (0, 0, ... , 0). 
-      The length of start must be the same as the number of dimensions of the specified variable. 
-      The elements of start correspond, in order, to the variable's dimensions. Hence, if the variable is a record variable, 
+      Vector specifying the index in the variable where the first of the data values will be read.
+      The indices are relative to 0, so for example, the first data value of a variable would have index (0, 0, ... , 0).
+      The length of start must be the same as the number of dimensions of the specified variable.
+      The elements of start correspond, in order, to the variable's dimensions. Hence, if the variable is a record variable,
       the first index would correspond to the starting record number for reading the data values.
 
       \param count
-      Vector specifying the edge lengths along each dimension of the block of data values to be read. 
-      To read a single value, for example, specify count as (1, 1, ... , 1). The length of count is the number of 
-      dimensions of the specified variable. The elements of count correspond, in order, to the variable's dimensions. 
+      Vector specifying the edge lengths along each dimension of the block of data values to be read.
+      To read a single value, for example, specify count as (1, 1, ... , 1). The length of count is the number of
+      dimensions of the specified variable. The elements of count correspond, in order, to the variable's dimensions.
       Hence, if the variable is a record variable, the first element of count corresponds to a count of the number of records to read.
-      Note: setting any element of the count array to zero causes the function to exit without error, and without doing anything. 
+      Note: setting any element of the count array to zero causes the function to exit without error, and without doing anything.
 
       \param stride
-      Vector specifying the interval between selected indices. The elements of the stride vector correspond, in order, 
-      to the variable's dimensions. A value of 1 accesses adjacent values of the netCDF variable in the corresponding 
-      dimension; a value of 2 accesses every other value of the netCDF variable in the corresponding dimension; and so 
-      on. A NULL stride argument is treated as (1, 1, ... , 1). 
+      Vector specifying the interval between selected indices. The elements of the stride vector correspond, in order,
+      to the variable's dimensions. A value of 1 accesses adjacent values of the netCDF variable in the corresponding
+      dimension; a value of 2 accesses every other value of the netCDF variable in the corresponding dimension; and so
+      on. A NULL stride argument is treated as (1, 1, ... , 1).
 
       \param imap
-      Vector of integers that specifies the mapping between the dimensions of a netCDF variable and the in-memory 
-      structure of the internal data array. imap[0] gives the distance between elements of the internal array corresponding 
-      to the most slowly varying dimension of the netCDF variable. imap[n-1] (where n is the rank of the netCDF variable) 
-      gives the distance between elements of the internal array corresponding to the most rapidly varying dimension of the 
-      netCDF variable. Intervening imap elements correspond to other dimensions of the netCDF variable in the obvious way. 
-      Distances between elements are specified in type-independent units of elements (the distance between internal elements 
-      that occupy adjacent memory locations is 1 and not the element's byte-length as in netCDF 2). 
-
-      \param dataValues Pointer to the location into which the data value is read. If the type of 
+      Vector of integers that specifies the mapping between the dimensions of a netCDF variable and the in-memory
+      structure of the internal data array. imap[0] gives the distance between elements of the internal array corresponding
+      to the most slowly varying dimension of the netCDF variable. imap[n-1] (where n is the rank of the netCDF variable)
+      gives the distance between elements of the internal array corresponding to the most rapidly varying dimension of the
+      netCDF variable. Intervening imap elements correspond to other dimensions of the netCDF variable in the obvious way.
+      Distances between elements are specified in type-independent units of elements (the distance between internal elements
+      that occupy adjacent memory locations is 1 and not the element's byte-length as in netCDF 2).
+
+      \param dataValues Pointer to the location into which the data value is read. If the type of
       data value differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
@@ -754,24 +754,24 @@ namespace netCDF
     void getVar(const std::vector<size_t>& start, const std::vector<size_t>& count,  const std::vector<ptrdiff_t>& stride, const std::vector<ptrdiff_t>& imap, long long* dataValues) const;
 
 
-   
+
     ////////////////////
 
     //  data writing
 
     ////////////////////
-   
-   
+
+
     // Writes the entire data into the netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void putVar(const void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void putVar(const char** dataValues) const;
     /*!  \overload
     */
@@ -806,25 +806,25 @@ namespace netCDF
     /*!  \overload
     */
     void putVar(const unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Writes the entire data into the netCDF variable.
-      This is the simplest interface to use for writing a value in a scalar variable 
-      or whenever all the values of a multidimensional variable can all be 
-      written at once. The values to be written are associated with the 
-      netCDF variable by assuming that the last dimension of the netCDF 
-      variable varies fastest in the C interface. 
-      
-      Take care when using the simplest forms of this interface with 
-      record variables when you don't specify how many records are to be 
-      written. If you try to write all the values of a record variable 
-      into a netCDF file that has no record data yet (hence has 0 records), 
-      nothing will be written. Similarly, if you try to write all of a record 
-      variable but there are more records in the file than you assume, more data 
-      may be written to the file than you supply, which may result in a 
+      This is the simplest interface to use for writing a value in a scalar variable
+      or whenever all the values of a multidimensional variable can all be
+      written at once. The values to be written are associated with the
+      netCDF variable by assuming that the last dimension of the netCDF
+      variable varies fastest in the C interface.
+
+      Take care when using the simplest forms of this interface with
+      record variables when you don't specify how many records are to be
+      written. If you try to write all the values of a record variable
+      into a netCDF file that has no record data yet (hence has 0 records),
+      nothing will be written. Similarly, if you try to write all of a record
+      variable but there are more records in the file than you assume, more data
+      may be written to the file than you supply, which may result in a
       segmentation violation.
-      
-      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last 
-      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable type, type conversion will occur. 
+
+      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last
+      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
     */
@@ -837,14 +837,14 @@ namespace netCDF
 
     // Writes a single datum into the netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void putVar(const std::vector<size_t>& index, const void* datumValue) const;
     /*! \overload
-     */ 
+     */
     void putVar(const std::vector<size_t>& index, const char** datumValue) const;
     /*!  \overload
     */
@@ -879,11 +879,11 @@ namespace netCDF
     /*!  \overload
     */
     void putVar(const std::vector<size_t>& index, const unsigned long long datumValue) const;
-    /*! 
+    /*!
       Writes a single datum into the netCDF variable.
 
-      \param index      Vector specifying the index where the data values will be written. The indices are relative to 0, so for example, 
-      the first data value of a two-dimensional variable would have index (0,0). The elements of index must correspond to the variable's dimensions. 
+      \param index      Vector specifying the index where the data values will be written. The indices are relative to 0, so for example,
+      the first data value of a two-dimensional variable would have index (0,0). The elements of index must correspond to the variable's dimensions.
       Hence, if the variable uses the unlimited dimension, the first index would correspond to the unlimited dimension.
 
       \param datumValue The data value. If the type of data values differs from the netCDF variable type, type conversion will occur.
@@ -895,18 +895,18 @@ namespace netCDF
 
     /////////////////////////
 
-     
+
 
     // Writes an array of values into the netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const char** dataValues) const;
     /*!  \overload
     */
@@ -941,25 +941,25 @@ namespace netCDF
     /*!  \overload
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Writes an array of values into the netCDF variable.
-      The portion of the netCDF variable to write is specified by giving a corner and a vector of edge lengths 
-      that refer to an array section of the netCDF variable. The values to be written are associated with 
-      the netCDF variable by assuming that the last dimension of the netCDF variable varies fastest. 
+      The portion of the netCDF variable to write is specified by giving a corner and a vector of edge lengths
+      that refer to an array section of the netCDF variable. The values to be written are associated with
+      the netCDF variable by assuming that the last dimension of the netCDF variable varies fastest.
 
-      \param startp  Vector specifying the index where the first data values will be written.  The indices are relative to 0, so for 
-      example, the first data value of a variable would have index (0, 0, ... , 0). The elements of start correspond, in order, to the 
+      \param startp  Vector specifying the index where the first data values will be written.  The indices are relative to 0, so for
+      example, the first data value of a variable would have index (0, 0, ... , 0). The elements of start correspond, in order, to the
       variable's dimensions. Hence, if the variable is a record variable, the first index corresponds to the starting record number for writing the data values.
 
-      \param countp  Vector specifying the number of indices selected along each dimension. 
-      To write a single value, for example, specify count as (1, 1, ... , 1). The elements of 
-      count correspond, in order, to the variable's dimensions. Hence, if the variable is a record 
-      variable, the first element of count corresponds to a count of the number of records to write. Note: setting any element 
-      of the count array to zero causes the function to exit without error, and without doing anything. 
+      \param countp  Vector specifying the number of indices selected along each dimension.
+      To write a single value, for example, specify count as (1, 1, ... , 1). The elements of
+      count correspond, in order, to the variable's dimensions. Hence, if the variable is a record
+      variable, the first element of count corresponds to a count of the number of records to write. Note: setting any element
+      of the count array to zero causes the function to exit without error, and without doing anything.
 
-      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last 
-      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable 
-      type, type conversion will occur. (However, no type conversion is 
+      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last
+      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable
+      type, type conversion will occur. (However, no type conversion is
       carried out for variables using the user-defined data types:
       nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
     */
@@ -968,18 +968,18 @@ namespace netCDF
 
     ////////////////
 
-   
+
 
     // Writes a set of subsampled array values into the netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const char** dataValues) const;
     /*!  \overload
     */
@@ -1014,28 +1014,28 @@ namespace netCDF
     /*!  \overload
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Writes an array of values into the netCDF variable.
-      The subsampled array section is specified by giving a corner, a vector of counts, and a stride vector. 
+      The subsampled array section is specified by giving a corner, a vector of counts, and a stride vector.
 
-      \param startp  Vector specifying the index where the first data values will be written.  The indices are relative to 0, so for 
-      example, the first data value of a variable would have index (0, 0, ... , 0). The elements of start correspond, in order, to the 
+      \param startp  Vector specifying the index where the first data values will be written.  The indices are relative to 0, so for
+      example, the first data value of a variable would have index (0, 0, ... , 0). The elements of start correspond, in order, to the
       variable's dimensions. Hence, if the variable is a record variable, the first index corresponds to the starting record number for writing the data values.
 
-      \param countp  Vector specifying the number of indices selected along each dimension. 
-      To write a single value, for example, specify count as (1, 1, ... , 1). The elements of 
-      count correspond, in order, to the variable's dimensions. Hence, if the variable is a record 
-      variable, the first element of count corresponds to a count of the number of records to write. Note: setting any element 
-      of the count array to zero causes the function to exit without error, and without doing anything. 
+      \param countp  Vector specifying the number of indices selected along each dimension.
+      To write a single value, for example, specify count as (1, 1, ... , 1). The elements of
+      count correspond, in order, to the variable's dimensions. Hence, if the variable is a record
+      variable, the first element of count corresponds to a count of the number of records to write. Note: setting any element
+      of the count array to zero causes the function to exit without error, and without doing anything.
 
-      \param stridep  A vector of ptrdiff_t integers that specifies the sampling interval along each dimension of the netCDF variable. 
-      The elements of the stride vector correspond, in order, to the netCDF variable's dimensions (stride[0] gives the sampling interval 
-      along the most slowly varying dimension of the netCDF variable). Sampling intervals are specified in type-independent units of 
-      elements (a value of 1 selects consecutive elements of the netCDF variable along the corresponding dimension, a value of 2 selects 
+      \param stridep  A vector of ptrdiff_t integers that specifies the sampling interval along each dimension of the netCDF variable.
+      The elements of the stride vector correspond, in order, to the netCDF variable's dimensions (stride[0] gives the sampling interval
+      along the most slowly varying dimension of the netCDF variable). Sampling intervals are specified in type-independent units of
+      elements (a value of 1 selects consecutive elements of the netCDF variable along the corresponding dimension, a value of 2 selects
       every other element, etc.). A NULL stride argument is treated as (1, 1, ... , 1).
 
-      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last 
-      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable type, type conversion will occur. 
+      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last
+      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable type, type conversion will occur.
       (However, no type conversion is  carried out for variables using the user-defined data types: nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const long long* dataValues) const;
@@ -1044,14 +1044,14 @@ namespace netCDF
 
     // Writes a mapped array section of values into the netCDF variable.
     /*!
-      This is an overloaded member function, provided for convenience. 
-      It differs from the above function in what argument(s) it accepts. 
-      In addition, no data conversion is carried out. This means that 
+      This is an overloaded member function, provided for convenience.
+      It differs from the above function in what argument(s) it accepts.
+      In addition, no data conversion is carried out. This means that
       the type of the data in memory must match the type of the variable.
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const std::vector<ptrdiff_t>& imapp, const void* dataValues) const;
     /*! \overload
-     */ 
+     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const std::vector<ptrdiff_t>& imapp, const char** dataValues) const;
     /*!  \overload
     */
@@ -1086,47 +1086,47 @@ namespace netCDF
     /*!  \overload
     */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const std::vector<ptrdiff_t>& imapp, const unsigned long long* dataValues) const;
-    /*! 
+    /*!
       Writes a mapped array section of values into the netCDF variable.
-      The mapped array section is specified by giving a corner, a vector of counts, a stride vector, and an index mapping vector. 
-      The index mapping vector is a vector of integers that specifies the mapping between the dimensions of a netCDF variable and the in-memory structure of the internal data array. 
-      No assumptions are made about the ordering or length of the dimensions of the data array. 
-
-      \param countp  Vector specifying the number of indices selected along each dimension. 
-      To write a single value, for example, specify count as (1, 1, ... , 1). The elements of 
-      count correspond, in order, to the variable's dimensions. Hence, if the variable is a record 
-      variable, the first element of count corresponds to a count of the number of records to write. Note: setting any element 
-      of the count array to zero causes the function to exit without error, and without doing anything. 
-
-      \param stridep  A vector of ptrdiff_t integers that specifies the sampling interval along each dimension of the netCDF variable. 
-      The elements of the stride vector correspond, in order, to the netCDF variable's dimensions (stride[0] gives the sampling interval 
-      along the most slowly varying dimension of the netCDF variable). Sampling intervals are specified in type-independent units of 
-      elements (a value of 1 selects consecutive elements of the netCDF variable along the corresponding dimension, a value of 2 selects 
+      The mapped array section is specified by giving a corner, a vector of counts, a stride vector, and an index mapping vector.
+      The index mapping vector is a vector of integers that specifies the mapping between the dimensions of a netCDF variable and the in-memory structure of the internal data array.
+      No assumptions are made about the ordering or length of the dimensions of the data array.
+
+      \param countp  Vector specifying the number of indices selected along each dimension.
+      To write a single value, for example, specify count as (1, 1, ... , 1). The elements of
+      count correspond, in order, to the variable's dimensions. Hence, if the variable is a record
+      variable, the first element of count corresponds to a count of the number of records to write. Note: setting any element
+      of the count array to zero causes the function to exit without error, and without doing anything.
+
+      \param stridep  A vector of ptrdiff_t integers that specifies the sampling interval along each dimension of the netCDF variable.
+      The elements of the stride vector correspond, in order, to the netCDF variable's dimensions (stride[0] gives the sampling interval
+      along the most slowly varying dimension of the netCDF variable). Sampling intervals are specified in type-independent units of
+      elements (a value of 1 selects consecutive elements of the netCDF variable along the corresponding dimension, a value of 2 selects
       every other element, etc.). A NULL stride argument is treated as (1, 1, ... , 1).
 
-      \param imap Vector  specifies the mapping between the dimensions of a netCDF variable and the in-memory structure of the internal data array. 
-      The elements of the index mapping vector correspond, in order, to the netCDF variable's dimensions (imap[0] gives the distance between elements 
-      of the internal array corresponding to the most slowly varying dimension of the netCDF variable). Distances between elements are 
-      specified in type-independent units of elements (the distance between internal elements that occupy adjacent memory locations is 
-      1 and not the element's byte-length as in netCDF 2). A NULL argument means the memory-resident values have the same structure as 
+      \param imap Vector  specifies the mapping between the dimensions of a netCDF variable and the in-memory structure of the internal data array.
+      The elements of the index mapping vector correspond, in order, to the netCDF variable's dimensions (imap[0] gives the distance between elements
+      of the internal array corresponding to the most slowly varying dimension of the netCDF variable). Distances between elements are
+      specified in type-independent units of elements (the distance between internal elements that occupy adjacent memory locations is
+      1 and not the element's byte-length as in netCDF 2). A NULL argument means the memory-resident values have the same structure as
       the associated netCDF variable.
 
-      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last 
-      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable type, type conversion will occur. 
+      \param dataValues The data values. The order in which the data will be written to the netCDF variable is with the last
+      dimension of the specified variable varying fastest. If the type of data values differs from the netCDF variable type, type conversion will occur.
      (However, no type conversion is carried out for variables using the user-defined data types:  nc_Vlen, nc_Opaque, nc_Compound and nc_Enum.)
 */
     void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const std::vector<ptrdiff_t>& imapp, const long long* dataValues) const;
 
-         
-      
+
+
   private:
-      
+
     bool nullObject;
 
-    int myId;	
+    int myId;
 
     int groupId;
-       
+
   };
 
 
@@ -1135,4 +1135,3 @@ namespace netCDF
 
 
 #endif
-
diff --git a/cxx4/ncVar.h_keep b/cxx4/ncVar.h_keep
deleted file mode 100644
index 1f13e3f..0000000
--- a/cxx4/ncVar.h_keep
+++ /dev/null
@@ -1,788 +0,0 @@
-#include <exception>
-#include <string>
-#include <typeinfo>
-#include <map>
-#include <vector>
-#include "netcdf.h"
-#include "ncVarAtt.h"
-#include "ncGroup.h"
-
-#ifndef NcVarClass
-#define NcVarClass
-
-namespace netCDF
-{
-  //  class NcGroup;  // forward declaration.
-  class NcDim;    // forward declaration.
-  //  class NcVarAtt; // forward declaration.
-  class NcType;   // forward declaration.
-
-  //! Class represents a netCDF variable.
-  class NcVar
-  {
-  public:
-    
-    //! Enumeration type used for chunking specification.
-    enum ChunkMode
-      {
-	nc_CONTIGUOUS = NC_CONTIGUOUS,  //!< Nc_CONTIGUOUS
-	nc_CHUNKED    = NC_CHUNKED      //!< Nc_CHUNKED
-      };
-
-    //! Enumeration type used for endian specification.
-    enum EndianMode
-      {
-	nc_ENDIAN_NATIVE = NC_ENDIAN_NATIVE,
-	nc_ENDIAN_LITTLE = NC_ENDIAN_LITTLE,
-	nc_ENDIAN_BIG    = NC_ENDIAN_BIG
-      };
-
-    //! Enumeration type used for checksum specification.
-    enum ChecksumMode
-      {
-	nc_NOCHECKSUM = NC_NOCHECKSUM,
-	nc_FLETCHER32 = NC_FLETCHER32
-      };
-
-    //! destructor
-    ~NcVar(){};
-      
-    //! Constructor generates a \ref isNull "null object".
-    NcVar ();
-
-    //! Constructor for a variable
-    /*!
-      The variable must already exist in the netCDF file. New netCDF variables can be added using NcGroup::addNcVar();
-      \param grp    Parent NcGroup object.
-      \param varId  Id of the is NcVar object.
-    */
-    NcVar (const NcGroup& grp, const int& varId);
-
-    //! assignment operator 
-    NcVar& operator =(const NcVar& rhs);
-      
-    //! equivalence operator
-    bool operator==(const NcVar& rhs) const;     
-      
-    //!  != operator
-    bool operator!=(const NcVar& rhs) const;     
-
-    //! The copy constructor.
-    NcVar(const NcVar& ncVar);
-      
-    //! Name of this NcVar object.
-    const std::string getName() const;
-
-    //! Gets parent group.
-    const NcGroup  getParentGroup() const;
-
-    //! Returns the variable type.
-    const NcType& getNcType() const;              
-      
-      
-    //! Rename the variable.
-    void rename( const std::string& newname ) const;
-      
-
-    //! Get the variable id.
-    int  getId() const;
-    
-    //! Returns true if this object variable is not defined.
-    bool isNull() const  {return nullObject;}
-
-    //! comparator operator 
-    friend bool operator<(const NcVar& lhs,const NcVar& rhs);
-    
-    //! comparator operator 
-    friend bool operator>(const NcVar& lhs,const NcVar& rhs);
-    
-    /////////////////
-      
-    // Information about Dimensions
-      
-    /////////////////
-      
-    // The the number of dimensions.
-    int getDimCount() const ;
-
-    //! Gets the i'th NcDim object.
-    const NcDim& getDim(int i) const;
-
-    //! Gets the set of NcDim objects.
-    const std::vector<NcDim> getDims() const;
-
-    /////////////////
-      
-    // Information about Attributes
-      
-    /////////////////
-      
-    //! Gets the number of attributes.
-    int getAttCount() const;
-      
-    //! Gets attribute by name
-    const NcVarAtt& getAtt(const std::string& name) const;
-
-    // Gets the set of attributes.
-    const std::map<std::string,NcVarAtt> getAtts() const;
-
-    //! Add a new NetCDF variable attribute.
-    /*!
-      \param name        Name of attribute.
-      \param typeName    Type name; must be a type known the the current group.
-      \param len        The length of the attribute (number of Nctype repeats).
-      \param dataValues  Data Values to put into the new attribute.
-    */
-    template<class T> NcVarAtt addAtt(const std::string& name, const std::string& typeName, size_t len, const T& dataValues) const {
-      // Create an NcType object with the given name.
-      NcType tmpType(getParentGroup().getType(typeName));
-      nc_type xtype = tmpType.getId();
-      if(typeid(T) == *type_a)
-	ncCheck(nc_put_att_text(groupId,myId,name.c_str(),len,&dataValues),__FILE__,__LINE__,__FUNCTION__); 
-      else if(typeid(T) == *type_b)
-	ncCheck(nc_put_att_uchar(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_c)
-	ncCheck(nc_put_att_schar(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_d)
-	ncCheck(nc_put_att_short(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_e)
-	ncCheck(nc_put_att_int(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_f)
-	ncCheck(nc_put_att_long(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_g)
-	ncCheck(nc_put_att_float(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_h)
-	ncCheck(nc_put_att_double(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_i)
-	ncCheck(nc_put_att_ushort(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_j)
-	ncCheck(nc_put_att_uint(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_k)
-	ncCheck(nc_put_att_longlong(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_l)
-	ncCheck(nc_put_att_ulonglong(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_m)
-	ncCheck(nc_put_att_string(groupId,myId,name.c_str(),len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_n) {
-	ncCheck(nc_put_att(groupId,myId,name.c_str(),xtype,len,&dataValues),__FILE__,__LINE__,__FUNCTION__);
-      }
-      else 
-	throw NcException("Unrecognised container type for getting attribute data",__FILE__,__LINE__,__FUNCTION__);
-      
-      // finally instantiate this attribute and return
-      return getAtt(name);
-      
-    }
-    
-    ////////////////////
-      
-    // Chunking details
-      
-    ////////////////////
-      
-    //! Sets chunking parameters.
-    /*!
-      \param chunkMode   Enumeration type. Allowable parameters are: "nc_CONTIGUOUS", "nc_CHUNKED"
-      \param chunksizes  Shape of chunking, used if ChunkMode=nc_CHUNKED.
-    */
-    void setChunking(ChunkMode chunkMode, std::vector<size_t>& chunksizes);
-      
-    //! Gets the chunking parameters
-    /*!
-      \param chunkMode   On return contains either: "nc_CONTIGUOUS" or "nc_CHUNKED"
-      \param chunksizes  On return contains shape of chunking, used if ChunkMode=nc_CHUNKED.
-    */
-    void getChunkingParameters(ChunkMode& chunkMode, std::vector<size_t>& chunkSizes);
-      
-      
-      
-    ////////////////////
-      
-    // Fill details
-      
-    ////////////////////
-      
-      
-    //! Sets the fill parameters
-    /*!
-      \param fillMode   Setting to true, turns on fill mode.
-      \param fillValue  A pointer to a value which will be used as the fill value for the variable. 
-      Must be the same type as the variable. Ignored if fillMode=.false.
-    */
-    void setFill(bool fillMode,void* fillValues=NULL);
-      
-      
-    //! Gets the fill parameters
-    /*!
-      \param On return set to true  if fill mode is enabled.
-      \param On return  pointer is set to fill values.
-    */
-    void getFillModeParameters(bool& fillMode, void* fillValues=NULL);
-      
-      
-    ////////////////////
-      
-    // Compression details
-      
-    ////////////////////
-      
-      
-    //! Sets the compression parameters
-    /*!
-      \param enableShuffleFilter Set to true to turn on shuffle filter.
-      \param enableDeflateFilter Set to true to turn on deflate filter.
-      \param deflateLevel        The deflate level, must be 0 and 9.
-    */
-    void setCompression(bool enableShuffleFilter, bool enableDeflateFilter, int deflateLevel);
-      
-    //! Gets the compression parameters
-    /*!
-      \param enableShuffleFilter  On return set to true if the shuffle filter is enabled.
-      \param enableDeflateFilter  On return set to true if the deflate filter is enabled.
-      \param deflateLevel         On return set to the deflate level.
-    */
-    void getCompressionParameters(bool& shuffleFilterEnabled, bool& deflateFilterEnabled, int& deflateLevel);
-      
-      
-      
-    ////////////////////
-      
-    // Endianness details
-      
-    ////////////////////
-      
-      
-    //! Sets the endianness of the variable.
-    /*!
-      \param Endianness enumeration type. Allowable parameters are: "nc_ENDIAN_NATIVE" (the default), "nc_ENDIAN_LITTLE", "nc_ENDIAN_BIG"
-    */
-    void setEndianness(EndianMode endianMode);
-      
-    //! Gets the endianness of the variable.
-    /*!
-      \return Endianness enumeration type. Allowable parameters are: "nc_ENDIAN_NATIVE" (the default), "nc_ENDIAN_LITTLE", "nc_ENDIAN_BIG"
-    */
-    EndianMode getEndianness();
-      
-      
-      
-    ////////////////////
-      
-    // Checksum details
-      
-    ////////////////////
-      
-      
-    //! Sets the checksum parameters of a variable.
-    /*!
-      \param ChecksumMode enumeration type. Allowable parameters are: "nc_NOCHECKSUM", "nc_FLETCHER32".
-    */
-    void setChecksum(ChecksumMode checksumMode);
-      
-    //! Gets the checksum parameters of the variable.
-    /*!
-      \return ChecksumMode enumeration type. Allowable parameters are: "nc_NOCHECKSUM", "nc_FLETCHER32".
-    */
-    ChecksumMode getChecksum();
-    
-    
-    
-    ////////////////////
-    
-    //  data  reading
-    
-    ////////////////////
-      
-      
-
-    //! Reads the entire data into the netCDF variable.
-    /*!
-      \param dataValues The data values.
-    */
-    template <class T> void get_var(T& dataValues)
-      {
-	if(typeid(T) == *type_a)
-	  ncCheck(nc_get_var_text(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_b)
-	  ncCheck(nc_get_var_uchar(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_c)
-	  ncCheck(nc_get_var_schar(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_d)
-	  ncCheck(nc_get_var_short(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_e)
-	  ncCheck(nc_get_var_int(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_f)
-	  ncCheck(nc_get_var_long(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_g)
-	  ncCheck(nc_get_var_float(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_h)
-	  ncCheck(nc_get_var_double(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_i)
-	  ncCheck(nc_get_var_ushort(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_j)
-	  ncCheck(nc_get_var_uint(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_k)
-	  ncCheck(nc_get_var_longlong(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_l)
-	  ncCheck(nc_get_var_ulonglong(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_m)
-	  ncCheck(nc_get_var_string(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_n){
-	  ncCheck(nc_get_var(groupId, myId,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	}
-	else 
-	  throw NcException("Unrecognised container type for getting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-    
-      }  
-
-    //! Reads a single datum value into the netCDF variable.
-    /*!
-      \param index       Vector specifying the index where the data values will be written.
-      \param datumValue The datum values.
-    */
-    template <class T> void get_var(const std::vector<size_t>& index, T& datumValue)
-      {
-	if(typeid(T) == *type_a)
-	  ncCheck(nc_get_var1_text(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_b)
-	  ncCheck(nc_get_var1_uchar(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_c)
-	  ncCheck(nc_get_var1_schar(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_d)
-	  ncCheck(nc_get_var1_short(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_e)
-	  ncCheck(nc_get_var1_int(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_f)
-	  ncCheck(nc_get_var1_long(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_g)
-	  ncCheck(nc_get_var1_float(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_h)
-	  ncCheck(nc_get_var1_double(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_i)
-	  ncCheck(nc_get_var1_ushort(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_j)
-	  ncCheck(nc_get_var1_uint(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_k)
-	  ncCheck(nc_get_var1_longlong(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_l)
-	  ncCheck(nc_get_var1_ulonglong(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_m)
-	  ncCheck(nc_get_var1_string(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_n){
-	  ncCheck(nc_get_var1(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-	}
-	else 
-	  throw NcException("Unrecognised container type for getting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-      }  
-
-
-    //! Reads data for an array of values into the netCDF variable.
-    /*!
-      \param startp  Vector specifying the index where the first data values will be written.
-      \param countp  Vector specifying the number of indices along each dimension.
-      \param dataValues The data values.
-    */
-    template <class T> void get_var(const std::vector<size_t>& startp, const std::vector<size_t>& countp, T& dataValues)
-      {
-	if(typeid(T) == *type_a)
-	  ncCheck(nc_get_vara_text(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_b)
-	  ncCheck(nc_get_vara_uchar(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_c)
-	  ncCheck(nc_get_vara_schar(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_d)
-	  ncCheck(nc_get_vara_short(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_e)
-	  ncCheck(nc_get_vara_int(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_f)
-	  ncCheck(nc_get_vara_long(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_g)
-	  ncCheck(nc_get_vara_float(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_h)
-	  ncCheck(nc_get_vara_double(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_i)
-	  ncCheck(nc_get_vara_ushort(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_j)
-	  ncCheck(nc_get_vara_uint(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_k)
-	  ncCheck(nc_get_vara_longlong(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_l)
-	  ncCheck(nc_get_vara_ulonglong(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_m)
-	  ncCheck(nc_get_vara_string(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_n){
-	  ncCheck(nc_get_vara(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	}
-	else 
-	  throw NcException("Unrecognised container type for getting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-      }  
-
-
-
-
-
-    //! Reads data for a set of subsampled array values into the netCDF variable.
-    /*!
-      \param startp  Vector specifying the index where the first data values will be written.
-      \param countp  Vector specifying the number of indices along each dimension.
-      \param stridep Vector specifying the sampling interval along each dimension of the netCDF variable.
-      \param dataValues The data values.
-    */
-    template <class T> void get_var(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, T& dataValues)
-      {
-	if(typeid(T) == *type_a)
-	  ncCheck(nc_get_vars_text(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_b)
-	  ncCheck(nc_get_vars_uchar(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_c)
-	  ncCheck(nc_get_vars_schar(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_d)
-	  ncCheck(nc_get_vars_short(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_e)
-	  ncCheck(nc_get_vars_int(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_f)
-	  ncCheck(nc_get_vars_long(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_g)
-	  ncCheck(nc_get_vars_float(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_h)
-	  ncCheck(nc_get_vars_double(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_i)
-	  ncCheck(nc_get_vars_ushort(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_j)
-	  ncCheck(nc_get_vars_uint(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_k)
-	  ncCheck(nc_get_vars_longlong(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_l)
-	  ncCheck(nc_get_vars_ulonglong(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_m)
-	  ncCheck(nc_get_vars_string(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_n){
-	  ncCheck(nc_get_vars(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	}
-	else 
-	  throw NcException("Unrecognised container type for getting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-      }  
-
-
-
-    //! Reads data for a set of mapped values into the netCDF variable.
-    /*!
-      \param startp  Vector specifying the index where the first data values will be written.
-      \param countp  Vector specifying the number of indices along each dimension.
-      \param stridep Vector specifying the sampling interval along each dimension of the netCDF variable.
-      \param imapp   Vector specifying the mapping  between the dimensions of a netCDF variables and the in-memory strucutre of the internal data array.
-      \param dataValues The data values.
-    */
-    template <class T> void get_var(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep , const std::vector<ptrdiff_t>& imapp, T& dataValues)
-      {
-	if(typeid(T) == *type_a)
-	  ncCheck(nc_get_varm_text(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_b)
-	  ncCheck(nc_get_varm_uchar(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_c)
-	  ncCheck(nc_get_varm_schar(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_d)
-	  ncCheck(nc_get_varm_short(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_e)
-	  ncCheck(nc_get_varm_int(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_f)
-	  ncCheck(nc_get_varm_long(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_g)
-	  ncCheck(nc_get_varm_float(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_h)
-	  ncCheck(nc_get_varm_double(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_i)
-	  ncCheck(nc_get_varm_ushort(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_j)
-	  ncCheck(nc_get_varm_uint(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_k)
-	  ncCheck(nc_get_varm_longlong(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_l)
-	  ncCheck(nc_get_varm_ulonglong(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_m)
-	  ncCheck(nc_get_varm_string(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	else if(typeid(T) == *type_n){
-	  ncCheck(nc_get_varm(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-	}
-	else 
-	  throw NcException("Unrecognised container type for getting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-    
-      }  
-
-
-   
-    ////////////////////
-
-    //  data writing
-
-    ////////////////////
-   
-   
-    //! Writes the entire data into the netCDF variable.
-    /*!
-	This is the simplest interface to use for writing a value in a scalar variable 
-	or whenever all the values of a multidimensional variable can all be 
-	written at once. The values to be written are associated with the 
-	netCDF variable by assuming that the last dimension of the netCDF 
-	variable varies fastest in the C interface. The values are converted 
-	to the external data type of the variable, if necessary.
-	
-	Take care when using the simplest forms of this interface with 
-	record variables when you don't specify how many records are to be 
-	written. If you try to write all the values of a record variable 
-	into a netCDF file that has no record data yet (hence has 0 records), 
-	nothing will be written. Similarly, if you try to write all of a record 
-	variable but there are more records in the file than you assume, more data 
-	may be written to the file than you supply, which may result in a 
-	segmentation violation.
-	\param dataValues The data values.
-    */
-    void putVar(const long long* dataValues);
-    /*! \overload
-     */ 
-    void putVar(const char** dataValues);
-    /*!  \overload
-    */
-    void putVar(const char* dataValues);
-    /*!  \overload
-    */
-    void putVar(const unsigned char* dataValues);
-    /*!  \overload
-    */
-    void putVar(const signed char* dataValues);
-    /*!  \overload
-    */
-    void putVar(const short* dataValues);
-    /*!  \overload
-    */
-    void putVar(const int* dataValues);
-    /*!  \overload
-    */
-    void putVar(const long* dataValues);
-    /*!  \overload
-    */
-    void putVar(const float* dataValues);
-    /*!  \overload
-    */
-    void putVar(const double* dataValues);
-    /*!  \overload
-    */
-    void putVar(const unsigned short* dataValues);
-    /*!  \overload
-    */
-    void putVar(const unsigned int* dataValues);
-    /*!  \overload
-    */
-    void putVar(const unsigned long long* dataValues);
-    //! Writes the entire data into the netCDF variable.
-    /*!
-      \param dataValues The data values.
-    */
-    void putVar(const void* dataValues);
-
-
-
-
-      
-    //! Writes a single datum value into the netCDF variable.
-    /*!
-      \param index      Vector specifying the index where the data values will be written.
-      \param datumValue The datum values.
-    */
-    template <class T> void putVar(const std::vector<size_t>& index, const T& datumValue) {
-      if(typeid(T) == *type_a)
-	ncCheck(nc_put_var1_text(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_b)
-	ncCheck(nc_put_var1_uchar(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_c)
-	ncCheck(nc_put_var1_schar(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_d)
-	ncCheck(nc_put_var1_short(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_e)
-	ncCheck(nc_put_var1_int(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_f)
-	ncCheck(nc_put_var1_long(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_g)
-	ncCheck(nc_put_var1_float(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_h)
-	ncCheck(nc_put_var1_double(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_i)
-	ncCheck(nc_put_var1_ushort(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_j)
-	ncCheck(nc_put_var1_uint(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_k)
-	ncCheck(nc_put_var1_longlong(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_l)
-	ncCheck(nc_put_var1_ulonglong(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_m)
-	ncCheck(nc_put_var1_string(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_n){
-	ncCheck(nc_put_var1(groupId, myId,index,datumValue),__FILE__,__LINE__,__FUNCTION__);
-      }
-      else 
-	throw NcException("Unrecognised container type for putting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-    }  
-
-      
-    //! Writes data for an array of values into the netCDF variable.
-    /*!
-      \param startp  Vector specifying the index where the first data values will be written.
-      \param countp  Vector specifying the number of indices along each dimension.
-      \param dataValues The data values.
-    */
-    template <class T> void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const T& dataValues) {
-      if(typeid(T) == *type_a)
-	ncCheck(nc_put_vara_text(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_b)
-	ncCheck(nc_put_vara_uchar(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_c)
-	ncCheck(nc_put_vara_schar(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_d)
-	ncCheck(nc_put_vara_short(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_e)
-	ncCheck(nc_put_vara_int(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_f)
-	ncCheck(nc_put_vara_long(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_g)
-	ncCheck(nc_put_vara_float(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_h)
-	ncCheck(nc_put_vara_double(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_i)
-	ncCheck(nc_put_vara_ushort(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_j)
-	ncCheck(nc_put_vara_uint(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_k)
-	ncCheck(nc_put_vara_longlong(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_l)
-	ncCheck(nc_put_vara_ulonglong(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_m)
-	ncCheck(nc_put_vara_string(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_n){
-	ncCheck(nc_put_vara(groupId, myId,startp,countp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      }
-      else 
-	throw NcException("Unrecognised container type for putting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-    }  
-
-      
-      
-    //! Writes data for a set of subsampled array values into the netCDF variable.
-    /*!
-      \param startp  Vector specifying the index where the first data values will be written.
-      \param countp  Vector specifying the number of indices along each dimension.
-      \param stridep Vector specifying the sampling interval along each dimension of the netCDF variable.
-      \param dataValues The data values.
-    */
-    template <class T> void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep, const T& dataValues) {
-            
-      if(typeid(T) == *type_a)
-	ncCheck(nc_put_vars_text(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_b)
-	ncCheck(nc_put_vars_uchar(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_c)
-	ncCheck(nc_put_vars_schar(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_d)
-	ncCheck(nc_put_vars_short(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_e)
-	ncCheck(nc_put_vars_int(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_f)
-	ncCheck(nc_put_vars_long(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_g)
-	ncCheck(nc_put_vars_float(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_h)
-	ncCheck(nc_put_vars_double(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_i)
-	ncCheck(nc_put_vars_ushort(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_j)
-	ncCheck(nc_put_vars_uint(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_k)
-	ncCheck(nc_put_vars_longlong(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_l)
-	ncCheck(nc_put_vars_ulonglong(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_m)
-	ncCheck(nc_put_vars_string(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_n){
-	ncCheck(nc_put_vars(groupId, myId,startp,countp,stridep,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      }
-      else 
-	throw NcException("Unrecognised container type for putting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-    }  
-      
-      
-      
-      
-
-      
-    //! Writes data for a set of mapped values into the netCDF variable.
-    /*!
-      \param startp     Vector specifying the index where the first data values will be written.
-      \param countp     Vector specifying the number of indices along each dimension.
-      \param stridep    Vector specifying the sampling interval along each dimension of the netCDF variable.
-      \param imapp      Vector specifying the mapping  between the dimensions of a netCDF variables and the in-memory strucutre of the internal data array.
-      \param dataValues The data values.
-    */
-    template <class T> void putVar(const std::vector<size_t>& startp, const std::vector<size_t>& countp, const std::vector<ptrdiff_t>& stridep , const std::vector<ptrdiff_t>& imapp, const T& dataValues) {
-            
-      if(typeid(T) == *type_a)
-	ncCheck(nc_put_varm_text(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_b)
-	ncCheck(nc_put_varm_uchar(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_c)
-	ncCheck(nc_put_varm_schar(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_d)
-	ncCheck(nc_put_varm_short(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_e)
-	ncCheck(nc_put_varm_int(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_f)
-	ncCheck(nc_put_varm_long(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_g)
-	ncCheck(nc_put_varm_float(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_h)
-	ncCheck(nc_put_varm_double(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_i)
-	ncCheck(nc_put_varm_ushort(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_j)
-	ncCheck(nc_put_varm_uint(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_k)
-	ncCheck(nc_put_varm_longlong(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_l)
-	ncCheck(nc_put_varm_ulonglong(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_m)
-	ncCheck(nc_put_varm_string(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      else if(typeid(T) == *type_n){
-	ncCheck(nc_put_varm(groupId, myId,startp,countp,stridep, imapp,dataValues),__FILE__,__LINE__,__FUNCTION__);
-      }
-      else 
-	throw NcException("Unrecognised container type for putting ncVar data",__FILE__,__LINE__,__FUNCTION__);
-    }  
-
-      
-  private:
-      
-    int myId;	
-
-    int groupId;
-       
-    bool nullObject;
-
-    // The following hold the typeid for different variable types
-    const std::type_info* type_a;
-    const std::type_info* type_b;
-    const std::type_info* type_c;
-    const std::type_info* type_d;
-    const std::type_info* type_e;
-    const std::type_info* type_f;
-    const std::type_info* type_g;
-    const std::type_info* type_h;
-    const std::type_info* type_i;
-    const std::type_info* type_j;
-    const std::type_info* type_k;
-    const std::type_info* type_l;
-    const std::type_info* type_m;
-    const std::type_info* type_n;
-      
-  };
-
-}
-
-#endif
diff --git a/cxx4/ncVlenType.cpp b/cxx4/ncVlenType.cpp
index 17eaa51..07daaf0 100644
--- a/cxx4/ncVlenType.cpp
+++ b/cxx4/ncVlenType.cpp
@@ -34,7 +34,7 @@ NcVlenType& NcVlenType::operator=(const NcType& rhs)
 {
   if (&rhs != this) {
     // check the rhs is the base of an Opaque type
-    if(getTypeClass() != NC_VLEN) 	throw NcException("NcException","The NcType object must be the base of an Vlen type.",__FILE__,__LINE__);
+    if(getTypeClass() != NC_VLEN) 	throw NcException("The NcType object must be the base of an Vlen type.",__FILE__,__LINE__);
     // assign base class parts
     NcType::operator=(rhs);
   }
@@ -63,7 +63,7 @@ NcVlenType::NcVlenType(const NcType& ncType):
   NcType(ncType)
 {
   // check the nctype object is the base of a Vlen type
-  if(getTypeClass() != NC_VLEN) throw NcException("NcException","The NcType object must be the base of a Vlen type.",__FILE__,__LINE__);
+  if(getTypeClass() != NC_VLEN) throw NcException("The NcType object must be the base of a Vlen type.",__FILE__,__LINE__);
 }
 
 // Returns the base type.
diff --git a/cxx4/test_att.cpp b/cxx4/test_att.cpp
index d9fa6c8..ecc4b8a 100644
--- a/cxx4/test_att.cpp
+++ b/cxx4/test_att.cpp
@@ -20,14 +20,14 @@ int main()
     {
       cout<<"Opening file \"firstFile.cdf\" with NcFile::replace"<<endl;
       NcFile ncFile("firstFile.cdf",NcFile::replace);
-    
+
       cout<<left<<setw(55)<<"Testing addGroup(\"groupName\")";
       NcGroup groupA(ncFile.addGroup("groupA"));
       NcGroup groupA0(ncFile.addGroup("groupA0"));
       NcGroup groupB(groupA.addGroup("groupB"));
       NcGroup groupC(groupA.addGroup("groupC"));
       cout <<"    -----------   passed\n";
-    
+
       cout <<left<<setw(55)<<"Testing putAtt(\"attName\",\"typeName\",len,dataValues)";
       vector<string>  b1(10);
       vector<unsigned char *>  b2(10);
@@ -178,60 +178,60 @@ int main()
 
 
       cout <<left<<setw(55)<<"Testing getAttLength()";
-      if(att_C1.getAttLength() != 10) throw NcException("NcException","Error in test 2.1",__FILE__,__LINE__);
+      if(att_C1.getAttLength() != 10) throw NcException("Error in test 2.1",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
       cout <<left<<setw(55)<<"Testing getName()";
-      if(att_C1.getName() != "att_C1") throw NcException("NcException","Error in test 3.1",__FILE__,__LINE__);
+      if(att_C1.getName() != "att_C1") throw NcException("Error in test 3.1",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
       cout <<left<<setw(55)<<"Testing getType()";
 
-      if(att_C1.getType() != ncByte) throw NcException("NcException","Error in test 4.1",__FILE__,__LINE__);
+      if(att_C1.getType() != ncByte) throw NcException("Error in test 4.1",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
       cout <<left<<setw(55)<<"Testing getParentGroup()";
-      if(att_C1.getParentGroup() != groupC) throw NcException("NcException","Error in test 5.1",__FILE__,__LINE__);
+      if(att_C1.getParentGroup() != groupC) throw NcException("Error in test 5.1",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
       cout <<left<<setw(55)<<"Testing getValues()";
 
       vector<double>  atest(10);
       att_C1.getValues(&atest[0]);
-      if(atest != a9) throw NcException("NcException","Error in test 6.1",__FILE__,__LINE__);
+      if(atest != a9) throw NcException("Error in test 6.1",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
 
       cout <<left<<setw(55)<<"Testing attCount([netCDF::Location])";
-      if(ncFile.getAttCount() != 93)                           throw NcException("NcException","Error in test 7.1",__FILE__,__LINE__);
-      if(ncFile.getAttCount(NcGroup::Current) != 93)           throw NcException("NcException","Error in test 7.2",__FILE__,__LINE__);
-      if(ncFile.getAttCount(NcGroup::Parents) != 0)            throw NcException("NcException","Error in test 7.3",__FILE__,__LINE__);
-      if(ncFile.getAttCount(NcGroup::Children) != 14)          throw NcException("NcException","Error in test 7.4",__FILE__,__LINE__);
-      if(ncFile.getAttCount(NcGroup::ParentsAndCurrent) != 93) throw NcException("NcException","Error in test 7.5",__FILE__,__LINE__);
-      if(ncFile.getAttCount(NcGroup::ChildrenAndCurrent) !=107)throw NcException("NcException","Error in test 7.6",__FILE__,__LINE__);
-      if(ncFile.getAttCount(NcGroup::All) != 107)              throw NcException("NcException","Error in test 7.7",__FILE__,__LINE__);
-      if(groupB.getAttCount() != 4)                            throw NcException("NcException","Error in test 7.8",__FILE__,__LINE__);
-      if(groupB.getAttCount(NcGroup::Current) != 4)            throw NcException("NcException","Error in test 7.9",__FILE__,__LINE__);
-      if(groupB.getAttCount(NcGroup::Parents) != 96)           throw NcException("NcException","Error in test 7.10",__FILE__,__LINE__);
-      if(groupB.getAttCount(NcGroup::Children) != 0)           throw NcException("NcException","Error in test 7.11",__FILE__,__LINE__);
-      if(groupB.getAttCount(NcGroup::ParentsAndCurrent) != 100) throw NcException("NcException","Error in test 7.12",__FILE__,__LINE__);
-      if(groupB.getAttCount(NcGroup::ChildrenAndCurrent) != 4) throw NcException("NcException","Error in test 7.13",__FILE__,__LINE__);
-      if(groupB.getAttCount(NcGroup::All) != 100)               throw NcException("NcException","Error in test 7.14",__FILE__,__LINE__);
-      if(groupA0.getAttCount() != 2)                           throw NcException("NcException","Error in test 7.15",__FILE__,__LINE__);
-      if(groupA0.getAttCount(NcGroup::Current) != 2)           throw NcException("NcException","Error in test 7.16",__FILE__,__LINE__);
-      if(groupA0.getAttCount(NcGroup::Parents) != 93)          throw NcException("NcException","Error in test 7.17",__FILE__,__LINE__);
-      if(groupA0.getAttCount(NcGroup::Children) != 0)          throw NcException("NcException","Error in test 7.18",__FILE__,__LINE__);
-      if(groupA0.getAttCount(NcGroup::ParentsAndCurrent) != 95)throw NcException("NcException","Error in test 7.19",__FILE__,__LINE__);
-      if(groupA0.getAttCount(NcGroup::ChildrenAndCurrent) != 2)throw NcException("NcException","Error in test 7.20",__FILE__,__LINE__);
-      if(groupA0.getAttCount(NcGroup::All) != 95)              throw NcException("NcException","Error in test 7.21",__FILE__,__LINE__);
-
-      if(groupA.getAttCount() != 3)                            throw NcException("NcException","Error in test 7.15",__FILE__,__LINE__);
-      if(groupA.getAttCount(NcGroup::Current) != 3)            throw NcException("NcException","Error in test 7.16",__FILE__,__LINE__);
-      if(groupA.getAttCount(NcGroup::Parents) != 93)           throw NcException("NcException","Error in test 7.17",__FILE__,__LINE__);
-      if(groupA.getAttCount(NcGroup::Children) != 9)           throw NcException("NcException","Error in test 7.18",__FILE__,__LINE__);
-      if(groupA.getAttCount(NcGroup::ParentsAndCurrent) != 96) throw NcException("NcException","Error in test 7.19",__FILE__,__LINE__);
-      if(groupA.getAttCount(NcGroup::ChildrenAndCurrent) !=12) throw NcException("NcException","Error in test 7.20",__FILE__,__LINE__);
-      if(groupA.getAttCount(NcGroup::All) != 105)              throw NcException("NcException","Error in test 7.21",__FILE__,__LINE__);
+      if(ncFile.getAttCount() != 93)                           throw NcException("Error in test 7.1",__FILE__,__LINE__);
+      if(ncFile.getAttCount(NcGroup::Current) != 93)           throw NcException("Error in test 7.2",__FILE__,__LINE__);
+      if(ncFile.getAttCount(NcGroup::Parents) != 0)            throw NcException("Error in test 7.3",__FILE__,__LINE__);
+      if(ncFile.getAttCount(NcGroup::Children) != 14)          throw NcException("Error in test 7.4",__FILE__,__LINE__);
+      if(ncFile.getAttCount(NcGroup::ParentsAndCurrent) != 93) throw NcException("Error in test 7.5",__FILE__,__LINE__);
+      if(ncFile.getAttCount(NcGroup::ChildrenAndCurrent) !=107)throw NcException("Error in test 7.6",__FILE__,__LINE__);
+      if(ncFile.getAttCount(NcGroup::All) != 107)              throw NcException("Error in test 7.7",__FILE__,__LINE__);
+      if(groupB.getAttCount() != 4)                            throw NcException("Error in test 7.8",__FILE__,__LINE__);
+      if(groupB.getAttCount(NcGroup::Current) != 4)            throw NcException("Error in test 7.9",__FILE__,__LINE__);
+      if(groupB.getAttCount(NcGroup::Parents) != 96)           throw NcException("Error in test 7.10",__FILE__,__LINE__);
+      if(groupB.getAttCount(NcGroup::Children) != 0)           throw NcException("Error in test 7.11",__FILE__,__LINE__);
+      if(groupB.getAttCount(NcGroup::ParentsAndCurrent) != 100) throw NcException("Error in test 7.12",__FILE__,__LINE__);
+      if(groupB.getAttCount(NcGroup::ChildrenAndCurrent) != 4) throw NcException("Error in test 7.13",__FILE__,__LINE__);
+      if(groupB.getAttCount(NcGroup::All) != 100)               throw NcException("Error in test 7.14",__FILE__,__LINE__);
+      if(groupA0.getAttCount() != 2)                           throw NcException("Error in test 7.15",__FILE__,__LINE__);
+      if(groupA0.getAttCount(NcGroup::Current) != 2)           throw NcException("Error in test 7.16",__FILE__,__LINE__);
+      if(groupA0.getAttCount(NcGroup::Parents) != 93)          throw NcException("Error in test 7.17",__FILE__,__LINE__);
+      if(groupA0.getAttCount(NcGroup::Children) != 0)          throw NcException("Error in test 7.18",__FILE__,__LINE__);
+      if(groupA0.getAttCount(NcGroup::ParentsAndCurrent) != 95)throw NcException("Error in test 7.19",__FILE__,__LINE__);
+      if(groupA0.getAttCount(NcGroup::ChildrenAndCurrent) != 2)throw NcException("Error in test 7.20",__FILE__,__LINE__);
+      if(groupA0.getAttCount(NcGroup::All) != 95)              throw NcException("Error in test 7.21",__FILE__,__LINE__);
+
+      if(groupA.getAttCount() != 3)                            throw NcException("Error in test 7.15",__FILE__,__LINE__);
+      if(groupA.getAttCount(NcGroup::Current) != 3)            throw NcException("Error in test 7.16",__FILE__,__LINE__);
+      if(groupA.getAttCount(NcGroup::Parents) != 93)           throw NcException("Error in test 7.17",__FILE__,__LINE__);
+      if(groupA.getAttCount(NcGroup::Children) != 9)           throw NcException("Error in test 7.18",__FILE__,__LINE__);
+      if(groupA.getAttCount(NcGroup::ParentsAndCurrent) != 96) throw NcException("Error in test 7.19",__FILE__,__LINE__);
+      if(groupA.getAttCount(NcGroup::ChildrenAndCurrent) !=12) throw NcException("Error in test 7.20",__FILE__,__LINE__);
+      if(groupA.getAttCount(NcGroup::All) != 105)              throw NcException("Error in test 7.21",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
 
@@ -241,385 +241,385 @@ int main()
 	multimap<string,NcGroupAtt>::iterator iter;
 
 	groupMap = ncFile.getAtts();
-	if(groupMap.size() != 93)                                  throw NcException("NcException","Error in test 8.1",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.2",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.3",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.4",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.5",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.6",__FILE__,__LINE__);
+	if(groupMap.size() != 93)                                  throw NcException("Error in test 8.1",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.2",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.3",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.4",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.5",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.6",__FILE__,__LINE__);
 
 	groupMap = ncFile.getAtts(NcGroup::Current);
-	if(groupMap.size() != 93)                                  throw NcException("NcException","Error in test 8.7",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.8",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.9",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.10",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.11",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.12",__FILE__,__LINE__);
+	if(groupMap.size() != 93)                                  throw NcException("Error in test 8.7",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.8",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.9",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.10",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.11",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.12",__FILE__,__LINE__);
 
 	groupMap = ncFile.getAtts(NcGroup::Parents);
-	if(groupMap.size() != 0)                                   throw NcException("NcException","Error in test 8.13",__FILE__,__LINE__);
+	if(groupMap.size() != 0)                                   throw NcException("Error in test 8.13",__FILE__,__LINE__);
 
 	groupMap = ncFile.getAtts(NcGroup::Children);
-	if(groupMap.size() != 14)                                  throw NcException("NcException","Error in test 8.14",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.15",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.16",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.17",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.18",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.19",__FILE__,__LINE__);
+	if(groupMap.size() != 14)                                  throw NcException("Error in test 8.14",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.15",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.16",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.17",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.18",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("Error in test 8.19",__FILE__,__LINE__);
 
 	groupMap = ncFile.getAtts(NcGroup::ParentsAndCurrent);
-	if(groupMap.size() != 93)                                  throw NcException("NcException","Error in test 8.20",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.21",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.22",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.23",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.24",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.25",__FILE__,__LINE__);
+	if(groupMap.size() != 93)                                  throw NcException("Error in test 8.20",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.21",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.22",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.23",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.24",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.25",__FILE__,__LINE__);
 
 	groupMap = ncFile.getAtts(NcGroup::ChildrenAndCurrent);
-	if(groupMap.size() != 107)                                 throw NcException("NcException","Error in test 8.26",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.27",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.28",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.29",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.30",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.31",__FILE__,__LINE__);
+	if(groupMap.size() != 107)                                 throw NcException("Error in test 8.26",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.27",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.28",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.29",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.30",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("Error in test 8.31",__FILE__,__LINE__);
 
 	groupMap = ncFile.getAtts(NcGroup::All);
-	if(groupMap.size() != 107)                                 throw NcException("NcException","Error in test 8.32",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.33",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.34",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.35",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.36",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.37",__FILE__,__LINE__);
+	if(groupMap.size() != 107)                                 throw NcException("Error in test 8.32",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.33",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.34",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.35",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.36",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("Error in test 8.37",__FILE__,__LINE__);
 
 
 	//group A now
 	groupMap = groupA.getAtts();
-	if(groupMap.size() != 3)                                   throw NcException("NcException","Error in test 8.38",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.39",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.40",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.41",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.42",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.43",__FILE__,__LINE__);
+	if(groupMap.size() != 3)                                   throw NcException("Error in test 8.38",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.39",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.40",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.41",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.42",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.43",__FILE__,__LINE__);
 
 	groupMap = groupA.getAtts(NcGroup::Current);
-	if(groupMap.size() != 3)                                   throw NcException("NcException","Error in test 8.44",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.45",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.46",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.47",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.48",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.49",__FILE__,__LINE__);
+	if(groupMap.size() != 3)                                   throw NcException("Error in test 8.44",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.45",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.46",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.47",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.48",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.49",__FILE__,__LINE__);
 
 	groupMap = groupA.getAtts(NcGroup::Parents);
-	if(groupMap.size() != 93)                                  throw NcException("NcException","Error in test 8.50",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.51",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.52",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.53",__FILE__,__LINE__);
-	iter=groupMap.find("att_b3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.54",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.55",__FILE__,__LINE__);
+	if(groupMap.size() != 93)                                  throw NcException("Error in test 8.50",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.51",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.52",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.53",__FILE__,__LINE__);
+	iter=groupMap.find("att_b3"); if( iter != groupMap.end()) throw NcException("Error in test 8.54",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.55",__FILE__,__LINE__);
 
 	groupMap = groupA.getAtts(NcGroup::Children);
-	if(groupMap.size() != 9)                                   throw NcException("NcException","Error in test 8.56",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.57",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.58",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.59",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.60",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.61",__FILE__,__LINE__);
+	if(groupMap.size() != 9)                                   throw NcException("Error in test 8.56",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.57",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.58",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.59",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.60",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("Error in test 8.61",__FILE__,__LINE__);
 
 	groupMap = groupA.getAtts(NcGroup::ParentsAndCurrent);
-	if(groupMap.size() != 96)                                  throw NcException("NcException","Error in test 8.62",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.63",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.64",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.65",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.66",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.67",__FILE__,__LINE__);
+	if(groupMap.size() != 96)                                  throw NcException("Error in test 8.62",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.63",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.64",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.65",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.66",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.67",__FILE__,__LINE__);
 
 	groupMap = groupA.getAtts(NcGroup::ChildrenAndCurrent);
-	if(groupMap.size() != 12)                                  throw NcException("NcException","Error in test 8.68",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.69",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.70",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.71",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.72",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.73",__FILE__,__LINE__);
+	if(groupMap.size() != 12)                                  throw NcException("Error in test 8.68",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.69",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.70",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.71",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.72",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("Error in test 8.73",__FILE__,__LINE__);
 
 	groupMap = groupA.getAtts(NcGroup::All);
-	if(groupMap.size() != 105)                                 throw NcException("NcException","Error in test 8.74",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.75",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.76",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.77",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.78",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.79",__FILE__,__LINE__);
+	if(groupMap.size() != 105)                                 throw NcException("Error in test 8.74",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.75",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.76",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.77",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.78",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter == groupMap.end()) throw NcException("Error in test 8.79",__FILE__,__LINE__);
 
 	// group A0 now
 	groupMap = groupA0.getAtts();
-	if(groupMap.size() != 2)                                   throw NcException("NcException","Error in test 8.80",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.81",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.82",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.83",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.84",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.85",__FILE__,__LINE__);
+	if(groupMap.size() != 2)                                   throw NcException("Error in test 8.80",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.81",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.82",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.83",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.84",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.85",__FILE__,__LINE__);
 
 	groupMap = groupA0.getAtts(NcGroup::Current);
-	if(groupMap.size() != 2)                                   throw NcException("NcException","Error in test 8.86",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.87",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.88",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.89",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.90",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.91",__FILE__,__LINE__);
+	if(groupMap.size() != 2)                                   throw NcException("Error in test 8.86",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.87",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.88",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.89",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.90",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.91",__FILE__,__LINE__);
 
 	groupMap = groupA0.getAtts(NcGroup::Parents);
-	if(groupMap.size() != 93)                                  throw NcException("NcException","Error in test 8.92",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.93",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.94",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.95",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.96",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.97",__FILE__,__LINE__);
+	if(groupMap.size() != 93)                                  throw NcException("Error in test 8.92",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.93",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.94",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.95",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.96",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.97",__FILE__,__LINE__);
 
 	groupMap = groupA0.getAtts(NcGroup::Children);
-	if(groupMap.size() != 0)                                   throw NcException("NcException","Error in test 8.98",__FILE__,__LINE__);
+	if(groupMap.size() != 0)                                   throw NcException("Error in test 8.98",__FILE__,__LINE__);
 
 	groupMap = groupA0.getAtts(NcGroup::ParentsAndCurrent);
-	if(groupMap.size() != 95)                                  throw NcException("NcException","Error in test 8.99",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.100",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.101",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.102",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.103",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.104",__FILE__,__LINE__);
+	if(groupMap.size() != 95)                                  throw NcException("Error in test 8.99",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.100",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.101",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.102",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.103",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.104",__FILE__,__LINE__);
 
 	groupMap = groupA0.getAtts(NcGroup::ChildrenAndCurrent);
-	if(groupMap.size() != 2)                                   throw NcException("NcException","Error in test 8.105",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.106",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.107",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.108",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.109",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.110",__FILE__,__LINE__);
+	if(groupMap.size() != 2)                                   throw NcException("Error in test 8.105",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.106",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.107",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.108",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.109",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.110",__FILE__,__LINE__);
 
 	groupMap = groupA0.getAtts(NcGroup::All);
-	if(groupMap.size() != 95)                                  throw NcException("NcException","Error in test 8.111",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.112",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.113",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.114",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.115",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.116",__FILE__,__LINE__);
+	if(groupMap.size() != 95)                                  throw NcException("Error in test 8.111",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.112",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.113",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter == groupMap.end()) throw NcException("Error in test 8.114",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.115",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.116",__FILE__,__LINE__);
 
 
-	// now for groupB    
+	// now for groupB
 	groupMap = groupB.getAtts();
-	if(groupMap.size() != 4)                                   throw NcException("NcException","Error in test 8.117",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.118",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.119",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.120",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.121",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.122",__FILE__,__LINE__);
+	if(groupMap.size() != 4)                                   throw NcException("Error in test 8.117",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.118",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.119",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.120",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.121",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.122",__FILE__,__LINE__);
 
 	groupMap = groupB.getAtts(NcGroup::Current);
-	if(groupMap.size() != 4)                                   throw NcException("NcException","Error in test 8.123",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.124",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.125",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.126",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.127",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.128",__FILE__,__LINE__);
+	if(groupMap.size() != 4)                                   throw NcException("Error in test 8.123",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.124",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.125",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.126",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.127",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.128",__FILE__,__LINE__);
 
 	groupMap = groupB.getAtts(NcGroup::Parents);
-	if(groupMap.size() != 96)                                  throw NcException("NcException","Error in test 8.129",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.130",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.131",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.132",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.133",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.134",__FILE__,__LINE__);
+	if(groupMap.size() != 96)                                  throw NcException("Error in test 8.129",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.130",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.131",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.132",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter != groupMap.end()) throw NcException("Error in test 8.133",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.134",__FILE__,__LINE__);
 
 	groupMap = groupB.getAtts(NcGroup::Children);
-	if(groupMap.size() != 0)                                   throw NcException("NcException","Error in test 8.135",__FILE__,__LINE__);
+	if(groupMap.size() != 0)                                   throw NcException("Error in test 8.135",__FILE__,__LINE__);
 
 	groupMap = groupB.getAtts(NcGroup::ParentsAndCurrent);
-	if(groupMap.size() != 100)                                  throw NcException("NcException","Error in test 8.136",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.137",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.138",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.139",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.140",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.141",__FILE__,__LINE__);
+	if(groupMap.size() != 100)                                  throw NcException("Error in test 8.136",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.137",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.138",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.139",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.140",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.141",__FILE__,__LINE__);
 
 	groupMap = groupB.getAtts(NcGroup::ChildrenAndCurrent);
-	if(groupMap.size() != 4)                                   throw NcException("NcException","Error in test 8.142",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.143",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.144",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.145",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.146",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.147",__FILE__,__LINE__);
+	if(groupMap.size() != 4)                                   throw NcException("Error in test 8.142",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter != groupMap.end()) throw NcException("Error in test 8.143",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter != groupMap.end()) throw NcException("Error in test 8.144",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.145",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.146",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.147",__FILE__,__LINE__);
 
 	groupMap = groupB.getAtts(NcGroup::All);
-	if(groupMap.size() != 100)                                  throw NcException("NcException","Error in test 8.148",__FILE__,__LINE__);
-	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.149",__FILE__,__LINE__);
-	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.150",__FILE__,__LINE__);
-	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.151",__FILE__,__LINE__);
-	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 8.152",__FILE__,__LINE__);
-	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 8.153",__FILE__,__LINE__);
+	if(groupMap.size() != 100)                                  throw NcException("Error in test 8.148",__FILE__,__LINE__);
+	iter=groupMap.find("att1_7");  if( iter == groupMap.end()) throw NcException("Error in test 8.149",__FILE__,__LINE__);
+	iter=groupMap.find("att_A01"); if( iter == groupMap.end()) throw NcException("Error in test 8.150",__FILE__,__LINE__);
+	iter=groupMap.find("att_A1"); if( iter != groupMap.end()) throw NcException("Error in test 8.151",__FILE__,__LINE__);
+	iter=groupMap.find("att_B3"); if( iter == groupMap.end()) throw NcException("Error in test 8.152",__FILE__,__LINE__);
+	iter=groupMap.find("att_C1"); if( iter != groupMap.end()) throw NcException("Error in test 8.153",__FILE__,__LINE__);
 
 	cout <<"    -----------   passed\n";
       }
-    
+
       cout <<left<<setw(55)<<"Testing getAtt(\"name\",[netCDF::Location])";
-      if(ncFile.getAtt("att1_7") != attA1_7)                            throw NcException("NcException","Error in test 9.1",__FILE__,__LINE__);
-      if(ncFile.getAtt("att1_7",NcGroup::Current) != attA1_7)           throw NcException("NcException","Error in test 9.2",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att1_7",NcGroup::Parents).isNull())            throw NcException("NcException","Error in test 9.3",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 9.4",__FILE__,__LINE__);
-      if(ncFile.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("NcException","Error in test 9.5",__FILE__,__LINE__);
-      if(ncFile.getAtt("att1_7",NcGroup::ChildrenAndCurrent)!= attA1_7) throw NcException("NcException","Error in test 9.6",__FILE__,__LINE__);
-      if(ncFile.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("NcException","Error in test 9.7",__FILE__,__LINE__);
-
-      if(!ncFile.getAtt("att_A01").isNull())                            throw NcException("NcException","Error in test 9.8",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_A01",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.9",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_A01",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.10",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_A01",NcGroup::Children) != att_A01)         throw NcException("NcException","Error in test 9.11",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_A01",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.12",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_A01",NcGroup::ChildrenAndCurrent) != att_A01)throw NcException("NcException","Error in test 9.13",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_A01",NcGroup::All) != att_A01)              throw NcException("NcException","Error in test 9.14",__FILE__,__LINE__);
-
-      if(!ncFile.getAtt("att_A1").isNull())                            throw NcException("NcException","Error in test 9.15",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_A1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.16",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.17",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_A1",NcGroup::Children) != att_A1)          throw NcException("NcException","Error in test 9.18",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_A1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.19",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_A1",NcGroup::ChildrenAndCurrent) != att_A1)throw NcException("NcException","Error in test 9.20",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_A1",NcGroup::All) != att_A1)               throw NcException("NcException","Error in test 9.21",__FILE__,__LINE__);
-
-      if(!ncFile.getAtt("att_B3").isNull())                            throw NcException("NcException","Error in test 9.22",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_B3",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.23",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.24",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_B3",NcGroup::Children) != att_B3)          throw NcException("NcException","Error in test 9.25",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_B3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.26",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_B3",NcGroup::ChildrenAndCurrent) != att_B3)throw NcException("NcException","Error in test 9.27",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_B3",NcGroup::All) != att_B3)               throw NcException("NcException","Error in test 9.28",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_C1").isNull())                            throw NcException("NcException","Error in test 9.29",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.30",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.31",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_C1",NcGroup::Children) != att_C1)          throw NcException("NcException","Error in test 9.32",__FILE__,__LINE__);
-      if(!ncFile.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.33",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_C1",NcGroup::ChildrenAndCurrent) != att_C1)throw NcException("NcException","Error in test 9.34",__FILE__,__LINE__);
-      if(ncFile.getAtt("att_C1",NcGroup::All) != att_C1)               throw NcException("NcException","Error in test 9.35",__FILE__,__LINE__);
+      if(ncFile.getAtt("att1_7") != attA1_7)                            throw NcException("Error in test 9.1",__FILE__,__LINE__);
+      if(ncFile.getAtt("att1_7",NcGroup::Current) != attA1_7)           throw NcException("Error in test 9.2",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att1_7",NcGroup::Parents).isNull())            throw NcException("Error in test 9.3",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("Error in test 9.4",__FILE__,__LINE__);
+      if(ncFile.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("Error in test 9.5",__FILE__,__LINE__);
+      if(ncFile.getAtt("att1_7",NcGroup::ChildrenAndCurrent)!= attA1_7) throw NcException("Error in test 9.6",__FILE__,__LINE__);
+      if(ncFile.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("Error in test 9.7",__FILE__,__LINE__);
+
+      if(!ncFile.getAtt("att_A01").isNull())                            throw NcException("Error in test 9.8",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_A01",NcGroup::Current).isNull())           throw NcException("Error in test 9.9",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_A01",NcGroup::Parents).isNull())           throw NcException("Error in test 9.10",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_A01",NcGroup::Children) != att_A01)         throw NcException("Error in test 9.11",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_A01",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.12",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_A01",NcGroup::ChildrenAndCurrent) != att_A01)throw NcException("Error in test 9.13",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_A01",NcGroup::All) != att_A01)              throw NcException("Error in test 9.14",__FILE__,__LINE__);
+
+      if(!ncFile.getAtt("att_A1").isNull())                            throw NcException("Error in test 9.15",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_A1",NcGroup::Current).isNull())           throw NcException("Error in test 9.16",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.17",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_A1",NcGroup::Children) != att_A1)          throw NcException("Error in test 9.18",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_A1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.19",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_A1",NcGroup::ChildrenAndCurrent) != att_A1)throw NcException("Error in test 9.20",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_A1",NcGroup::All) != att_A1)               throw NcException("Error in test 9.21",__FILE__,__LINE__);
+
+      if(!ncFile.getAtt("att_B3").isNull())                            throw NcException("Error in test 9.22",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_B3",NcGroup::Current).isNull())           throw NcException("Error in test 9.23",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("Error in test 9.24",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_B3",NcGroup::Children) != att_B3)          throw NcException("Error in test 9.25",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_B3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.26",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_B3",NcGroup::ChildrenAndCurrent) != att_B3)throw NcException("Error in test 9.27",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_B3",NcGroup::All) != att_B3)               throw NcException("Error in test 9.28",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_C1").isNull())                            throw NcException("Error in test 9.29",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("Error in test 9.30",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.31",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_C1",NcGroup::Children) != att_C1)          throw NcException("Error in test 9.32",__FILE__,__LINE__);
+      if(!ncFile.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.33",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_C1",NcGroup::ChildrenAndCurrent) != att_C1)throw NcException("Error in test 9.34",__FILE__,__LINE__);
+      if(ncFile.getAtt("att_C1",NcGroup::All) != att_C1)               throw NcException("Error in test 9.35",__FILE__,__LINE__);
 
       // now for next group
-    
-      if(!groupA0.getAtt("att1_7").isNull())                             throw NcException("NcException","Error in test 9.36",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att1_7",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 9.37",__FILE__,__LINE__);
-      if(groupA0.getAtt("att1_7",NcGroup::Parents)  != attA1_7)          throw NcException("NcException","Error in test 9.38",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 9.39",__FILE__,__LINE__);
-      if(groupA0.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("NcException","Error in test 9.40",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att1_7",NcGroup::ChildrenAndCurrent).isNull()) throw NcException("NcException","Error in test 9.41",__FILE__,__LINE__);
-      if(groupA0.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("NcException","Error in test 9.42",__FILE__,__LINE__);
-    
-      if(!groupA0.getAtt("att_A01").isNull())                           throw NcException("NcException","Error in test 9.43",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A01",NcGroup::Current).isNull())          throw NcException("NcException","Error in test 9.44",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A01",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.45",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A01",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.46",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A01",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.47",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A01",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.48",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A01",NcGroup::All).isNull())              throw NcException("NcException","Error in test 9.49",__FILE__,__LINE__);
-    
-      if(groupA0.getAtt("att_A1") != att_A1)                            throw NcException("NcException","Error in test 9.50",__FILE__,__LINE__);
-      if(groupA0.getAtt("att_A1",NcGroup::Current) != att_A1)           throw NcException("NcException","Error in test 9.51",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.52",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_A1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.53",__FILE__,__LINE__);
-      if(groupA0.getAtt("att_A1",NcGroup::ParentsAndCurrent) != att_A1)throw NcException("NcException","Error in test 9.54",__FILE__,__LINE__);
-      if(groupA0.getAtt("att_A1",NcGroup::ChildrenAndCurrent)!= att_A1) throw NcException("NcException","Error in test 9.55",__FILE__,__LINE__);
-      if(groupA0.getAtt("att_A1",NcGroup::All) != att_A1)               throw NcException("NcException","Error in test 9.56",__FILE__,__LINE__);
-    
-      if(!groupA0.getAtt("att_B3").isNull())                            throw NcException("NcException","Error in test 9.57",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_B3",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.58",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.59",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_B3",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.60",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_B3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.61",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_B3",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.62",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_B3",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.63",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1").isNull())                            throw NcException("NcException","Error in test 9.64",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.65",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.66",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.67",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.68",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.69",__FILE__,__LINE__);
-      if(!groupA0.getAtt("att_C1",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.70",__FILE__,__LINE__);
+
+      if(!groupA0.getAtt("att1_7").isNull())                             throw NcException("Error in test 9.36",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att1_7",NcGroup::Current).isNull())            throw NcException("Error in test 9.37",__FILE__,__LINE__);
+      if(groupA0.getAtt("att1_7",NcGroup::Parents)  != attA1_7)          throw NcException("Error in test 9.38",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("Error in test 9.39",__FILE__,__LINE__);
+      if(groupA0.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("Error in test 9.40",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att1_7",NcGroup::ChildrenAndCurrent).isNull()) throw NcException("Error in test 9.41",__FILE__,__LINE__);
+      if(groupA0.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("Error in test 9.42",__FILE__,__LINE__);
+
+      if(!groupA0.getAtt("att_A01").isNull())                           throw NcException("Error in test 9.43",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A01",NcGroup::Current).isNull())          throw NcException("Error in test 9.44",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A01",NcGroup::Parents).isNull())           throw NcException("Error in test 9.45",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A01",NcGroup::Children).isNull())          throw NcException("Error in test 9.46",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A01",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.47",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A01",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.48",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A01",NcGroup::All).isNull())              throw NcException("Error in test 9.49",__FILE__,__LINE__);
+
+      if(groupA0.getAtt("att_A1") != att_A1)                            throw NcException("Error in test 9.50",__FILE__,__LINE__);
+      if(groupA0.getAtt("att_A1",NcGroup::Current) != att_A1)           throw NcException("Error in test 9.51",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.52",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_A1",NcGroup::Children).isNull())          throw NcException("Error in test 9.53",__FILE__,__LINE__);
+      if(groupA0.getAtt("att_A1",NcGroup::ParentsAndCurrent) != att_A1)throw NcException("Error in test 9.54",__FILE__,__LINE__);
+      if(groupA0.getAtt("att_A1",NcGroup::ChildrenAndCurrent)!= att_A1) throw NcException("Error in test 9.55",__FILE__,__LINE__);
+      if(groupA0.getAtt("att_A1",NcGroup::All) != att_A1)               throw NcException("Error in test 9.56",__FILE__,__LINE__);
+
+      if(!groupA0.getAtt("att_B3").isNull())                            throw NcException("Error in test 9.57",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_B3",NcGroup::Current).isNull())           throw NcException("Error in test 9.58",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("Error in test 9.59",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_B3",NcGroup::Children).isNull())          throw NcException("Error in test 9.60",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_B3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.61",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_B3",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.62",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_B3",NcGroup::All).isNull())               throw NcException("Error in test 9.63",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1").isNull())                            throw NcException("Error in test 9.64",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("Error in test 9.65",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.66",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1",NcGroup::Children).isNull())          throw NcException("Error in test 9.67",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.68",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.69",__FILE__,__LINE__);
+      if(!groupA0.getAtt("att_C1",NcGroup::All).isNull())               throw NcException("Error in test 9.70",__FILE__,__LINE__);
 
       // now for next group
 
-      if(!groupA.getAtt("att1_7").isNull())                             throw NcException("NcException","Error in test 9.71",__FILE__,__LINE__);
-      if(!groupA.getAtt("att1_7",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 9.72",__FILE__,__LINE__);
-      if(groupA.getAtt("att1_7",NcGroup::Parents) != attA1_7)           throw NcException("NcException","Error in test 9.73",__FILE__,__LINE__);
-      if(!groupA.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 9.74",__FILE__,__LINE__);
-      if(groupA.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("NcException","Error in test 9.75",__FILE__,__LINE__);
-      if(!groupA.getAtt("att1_7",NcGroup::ChildrenAndCurrent).isNull()) throw NcException("NcException","Error in test 9.76",__FILE__,__LINE__);
-      if(groupA.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("NcException","Error in test 9.77",__FILE__,__LINE__);
-
-      if(groupA.getAtt("att_A01") != att_A01)                           throw NcException("NcException","Error in test 9.78",__FILE__,__LINE__);
-      if(groupA.getAtt("att_A01",NcGroup::Current) != att_A01)          throw NcException("NcException","Error in test 9.79",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A01",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.80",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A01",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.81",__FILE__,__LINE__);
-      if(groupA.getAtt("att_A01",NcGroup::ParentsAndCurrent) != att_A01)throw NcException("NcException","Error in test 9.82",__FILE__,__LINE__);
-      if(groupA.getAtt("att_A01",NcGroup::ChildrenAndCurrent) != att_A01)throw NcException("NcException","Error in test 9.83",__FILE__,__LINE__);
-      if(groupA.getAtt("att_A01",NcGroup::All) != att_A01)               throw NcException("NcException","Error in test 9.84",__FILE__,__LINE__);
-
-      if(!groupA.getAtt("att_A1").isNull())                            throw NcException("NcException","Error in test 9.85",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.86",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.87",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.88",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.89",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.90",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_A1",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.91",__FILE__,__LINE__);
-
-      if(!groupA.getAtt("att_B3").isNull())                            throw NcException("NcException","Error in test 9.92",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_B3",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.93",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.94",__FILE__,__LINE__);
-      if(groupA.getAtt("att_B3",NcGroup::Children) != att_B3)          throw NcException("NcException","Error in test 9.95",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_B3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.96",__FILE__,__LINE__);
-      if(groupA.getAtt("att_B3",NcGroup::ChildrenAndCurrent) != att_B3)throw NcException("NcException","Error in test 9.97",__FILE__,__LINE__);
-      if(groupA.getAtt("att_B3",NcGroup::All) != att_B3)               throw NcException("NcException","Error in test 9.98",__FILE__,__LINE__);
-
-      if(!groupA.getAtt("att_C1").isNull())                            throw NcException("NcException","Error in test 9.99",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.100",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.101",__FILE__,__LINE__);
-      if(groupA.getAtt("att_C1",NcGroup::Children) != att_C1)          throw NcException("NcException","Error in test 9.102",__FILE__,__LINE__);
-      if(!groupA.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.103",__FILE__,__LINE__);
-      if(groupA.getAtt("att_C1",NcGroup::ChildrenAndCurrent) != att_C1)throw NcException("NcException","Error in test 9.104",__FILE__,__LINE__);
-      if(groupA.getAtt("att_C1",NcGroup::All) != att_C1)               throw NcException("NcException","Error in test 9.105",__FILE__,__LINE__);
+      if(!groupA.getAtt("att1_7").isNull())                             throw NcException("Error in test 9.71",__FILE__,__LINE__);
+      if(!groupA.getAtt("att1_7",NcGroup::Current).isNull())            throw NcException("Error in test 9.72",__FILE__,__LINE__);
+      if(groupA.getAtt("att1_7",NcGroup::Parents) != attA1_7)           throw NcException("Error in test 9.73",__FILE__,__LINE__);
+      if(!groupA.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("Error in test 9.74",__FILE__,__LINE__);
+      if(groupA.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("Error in test 9.75",__FILE__,__LINE__);
+      if(!groupA.getAtt("att1_7",NcGroup::ChildrenAndCurrent).isNull()) throw NcException("Error in test 9.76",__FILE__,__LINE__);
+      if(groupA.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("Error in test 9.77",__FILE__,__LINE__);
+
+      if(groupA.getAtt("att_A01") != att_A01)                           throw NcException("Error in test 9.78",__FILE__,__LINE__);
+      if(groupA.getAtt("att_A01",NcGroup::Current) != att_A01)          throw NcException("Error in test 9.79",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A01",NcGroup::Parents).isNull())           throw NcException("Error in test 9.80",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A01",NcGroup::Children).isNull())          throw NcException("Error in test 9.81",__FILE__,__LINE__);
+      if(groupA.getAtt("att_A01",NcGroup::ParentsAndCurrent) != att_A01)throw NcException("Error in test 9.82",__FILE__,__LINE__);
+      if(groupA.getAtt("att_A01",NcGroup::ChildrenAndCurrent) != att_A01)throw NcException("Error in test 9.83",__FILE__,__LINE__);
+      if(groupA.getAtt("att_A01",NcGroup::All) != att_A01)               throw NcException("Error in test 9.84",__FILE__,__LINE__);
+
+      if(!groupA.getAtt("att_A1").isNull())                            throw NcException("Error in test 9.85",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A1",NcGroup::Current).isNull())           throw NcException("Error in test 9.86",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.87",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A1",NcGroup::Children).isNull())          throw NcException("Error in test 9.88",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.89",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.90",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_A1",NcGroup::All).isNull())               throw NcException("Error in test 9.91",__FILE__,__LINE__);
+
+      if(!groupA.getAtt("att_B3").isNull())                            throw NcException("Error in test 9.92",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_B3",NcGroup::Current).isNull())           throw NcException("Error in test 9.93",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("Error in test 9.94",__FILE__,__LINE__);
+      if(groupA.getAtt("att_B3",NcGroup::Children) != att_B3)          throw NcException("Error in test 9.95",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_B3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.96",__FILE__,__LINE__);
+      if(groupA.getAtt("att_B3",NcGroup::ChildrenAndCurrent) != att_B3)throw NcException("Error in test 9.97",__FILE__,__LINE__);
+      if(groupA.getAtt("att_B3",NcGroup::All) != att_B3)               throw NcException("Error in test 9.98",__FILE__,__LINE__);
+
+      if(!groupA.getAtt("att_C1").isNull())                            throw NcException("Error in test 9.99",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("Error in test 9.100",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.101",__FILE__,__LINE__);
+      if(groupA.getAtt("att_C1",NcGroup::Children) != att_C1)          throw NcException("Error in test 9.102",__FILE__,__LINE__);
+      if(!groupA.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.103",__FILE__,__LINE__);
+      if(groupA.getAtt("att_C1",NcGroup::ChildrenAndCurrent) != att_C1)throw NcException("Error in test 9.104",__FILE__,__LINE__);
+      if(groupA.getAtt("att_C1",NcGroup::All) != att_C1)               throw NcException("Error in test 9.105",__FILE__,__LINE__);
 
       // now for next group
 
-      if(!groupB.getAtt("att1_7").isNull())                             throw NcException("NcException","Error in test 9.106",__FILE__,__LINE__);
-      if(!groupB.getAtt("att1_7",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 9.107",__FILE__,__LINE__);
-      if(groupB.getAtt("att1_7",NcGroup::Parents) != attA1_7)           throw NcException("NcException","Error in test 9.108",__FILE__,__LINE__);
-      if(!groupB.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 9.109",__FILE__,__LINE__);
-      if(groupB.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("NcException","Error in test 9.110",__FILE__,__LINE__);
-      if(!groupB.getAtt("att1_7",NcGroup::ChildrenAndCurrent).isNull()) throw NcException("NcException","Error in test 9.111",__FILE__,__LINE__);
-      if(groupB.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("NcException","Error in test 9.112",__FILE__,__LINE__);
-
-      if(!groupB.getAtt("att_A01").isNull())                            throw NcException("NcException","Error in test 9.113",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A01",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.114",__FILE__,__LINE__);
-      if(groupB.getAtt("att_A01",NcGroup::Parents) != att_A01)          throw NcException("NcException","Error in test 9.115",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A01",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.116",__FILE__,__LINE__);
-      if(groupB.getAtt("att_A01",NcGroup::ParentsAndCurrent) != att_A01) throw NcException("NcException","Error in test 9.117",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A01",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.118",__FILE__,__LINE__);
-      if(groupB.getAtt("att_A01",NcGroup::All) != att_A01)              throw NcException("NcException","Error in test 9.119",__FILE__,__LINE__);
-
-      if(!groupB.getAtt("att_A1").isNull())                            throw NcException("NcException","Error in test 9.120",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.121",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.122",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.123",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.124",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.125",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_A1",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.126",__FILE__,__LINE__);
-    
-      if(groupB.getAtt("att_B3") != att_B3)                            throw NcException("NcException","Error in test 9.127",__FILE__,__LINE__);
-      if(groupB.getAtt("att_B3",NcGroup::Current) != att_B3)           throw NcException("NcException","Error in test 9.128",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.129",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_B3",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.130",__FILE__,__LINE__);
-      if(groupB.getAtt("att_B3",NcGroup::ParentsAndCurrent) != att_B3) throw NcException("NcException","Error in test 9.131",__FILE__,__LINE__);
-      if(groupB.getAtt("att_B3",NcGroup::ChildrenAndCurrent) != att_B3)throw NcException("NcException","Error in test 9.132",__FILE__,__LINE__);
-      if(groupB.getAtt("att_B3",NcGroup::All) != att_B3)               throw NcException("NcException","Error in test 9.133",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1").isNull())                            throw NcException("NcException","Error in test 9.134",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.135",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.136",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.137",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.138",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.139",__FILE__,__LINE__);
-      if(!groupB.getAtt("att_C1",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.140",__FILE__,__LINE__);
+      if(!groupB.getAtt("att1_7").isNull())                             throw NcException("Error in test 9.106",__FILE__,__LINE__);
+      if(!groupB.getAtt("att1_7",NcGroup::Current).isNull())            throw NcException("Error in test 9.107",__FILE__,__LINE__);
+      if(groupB.getAtt("att1_7",NcGroup::Parents) != attA1_7)           throw NcException("Error in test 9.108",__FILE__,__LINE__);
+      if(!groupB.getAtt("att1_7",NcGroup::Children).isNull())           throw NcException("Error in test 9.109",__FILE__,__LINE__);
+      if(groupB.getAtt("att1_7",NcGroup::ParentsAndCurrent) != attA1_7) throw NcException("Error in test 9.110",__FILE__,__LINE__);
+      if(!groupB.getAtt("att1_7",NcGroup::ChildrenAndCurrent).isNull()) throw NcException("Error in test 9.111",__FILE__,__LINE__);
+      if(groupB.getAtt("att1_7",NcGroup::All) != attA1_7)               throw NcException("Error in test 9.112",__FILE__,__LINE__);
+
+      if(!groupB.getAtt("att_A01").isNull())                            throw NcException("Error in test 9.113",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A01",NcGroup::Current).isNull())           throw NcException("Error in test 9.114",__FILE__,__LINE__);
+      if(groupB.getAtt("att_A01",NcGroup::Parents) != att_A01)          throw NcException("Error in test 9.115",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A01",NcGroup::Children).isNull())          throw NcException("Error in test 9.116",__FILE__,__LINE__);
+      if(groupB.getAtt("att_A01",NcGroup::ParentsAndCurrent) != att_A01) throw NcException("Error in test 9.117",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A01",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.118",__FILE__,__LINE__);
+      if(groupB.getAtt("att_A01",NcGroup::All) != att_A01)              throw NcException("Error in test 9.119",__FILE__,__LINE__);
+
+      if(!groupB.getAtt("att_A1").isNull())                            throw NcException("Error in test 9.120",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A1",NcGroup::Current).isNull())           throw NcException("Error in test 9.121",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.122",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A1",NcGroup::Children).isNull())          throw NcException("Error in test 9.123",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.124",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.125",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_A1",NcGroup::All).isNull())               throw NcException("Error in test 9.126",__FILE__,__LINE__);
+
+      if(groupB.getAtt("att_B3") != att_B3)                            throw NcException("Error in test 9.127",__FILE__,__LINE__);
+      if(groupB.getAtt("att_B3",NcGroup::Current) != att_B3)           throw NcException("Error in test 9.128",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_B3",NcGroup::Parents).isNull())           throw NcException("Error in test 9.129",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_B3",NcGroup::Children).isNull())          throw NcException("Error in test 9.130",__FILE__,__LINE__);
+      if(groupB.getAtt("att_B3",NcGroup::ParentsAndCurrent) != att_B3) throw NcException("Error in test 9.131",__FILE__,__LINE__);
+      if(groupB.getAtt("att_B3",NcGroup::ChildrenAndCurrent) != att_B3)throw NcException("Error in test 9.132",__FILE__,__LINE__);
+      if(groupB.getAtt("att_B3",NcGroup::All) != att_B3)               throw NcException("Error in test 9.133",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1").isNull())                            throw NcException("Error in test 9.134",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1",NcGroup::Current).isNull())           throw NcException("Error in test 9.135",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1",NcGroup::Parents).isNull())           throw NcException("Error in test 9.136",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1",NcGroup::Children).isNull())          throw NcException("Error in test 9.137",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.138",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.139",__FILE__,__LINE__);
+      if(!groupB.getAtt("att_C1",NcGroup::All).isNull())               throw NcException("Error in test 9.140",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
 
@@ -629,195 +629,195 @@ int main()
 	set<NcGroupAtt>::iterator iter;
 
 	groupSet = ncFile.getAtts("att1_7");
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.1",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.2",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.1",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.2",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.3",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.3",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.4",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.4",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.5",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.5",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.6",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.6",__FILE__,__LINE__);
 
 	groupSet = ncFile.getAtts("att1_7",NcGroup::Current);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.7",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.8",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.7",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.8",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.9",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.9",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.10",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.10",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.11",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.11",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.12",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.12",__FILE__,__LINE__);
 
 	groupSet = ncFile.getAtts("att1_7",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.13",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.13",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.14",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.14",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.15",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.15",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.16",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.16",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.17",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.17",__FILE__,__LINE__);
 
 	groupSet = ncFile.getAtts("att1_7",NcGroup::Children);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.18",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.18",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01",NcGroup::Children);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.19",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 10.20",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.19",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end())  throw NcException("Error in test 10.20",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1",NcGroup::Children);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.21",__FILE__,__LINE__);
-	iter=groupSet.find(att_A1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.20",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.21",__FILE__,__LINE__);
+	iter=groupSet.find(att_A1);  if( iter == groupSet.end())   throw NcException("Error in test 10.20",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3",NcGroup::Children);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.22",__FILE__,__LINE__);
-	iter=groupSet.find(att_B3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.20",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.22",__FILE__,__LINE__);
+	iter=groupSet.find(att_B3);  if( iter == groupSet.end())   throw NcException("Error in test 10.20",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1",NcGroup::Children);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.23",__FILE__,__LINE__);
-	iter=groupSet.find(att_C1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.20",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.23",__FILE__,__LINE__);
+	iter=groupSet.find(att_C1);  if( iter == groupSet.end())   throw NcException("Error in test 10.20",__FILE__,__LINE__);
 
 	groupSet = ncFile.getAtts("att1_7",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.24",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.25",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.24",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.25",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.26",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.26",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.27",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.27",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.28",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.28",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.29",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.29",__FILE__,__LINE__);
 
 	groupSet = ncFile.getAtts("att1_7",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.30",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.30",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end())  throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.32",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.32",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end())  throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.33",__FILE__,__LINE__);
-	iter=groupSet.find(att_A1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.33",__FILE__,__LINE__);
+	iter=groupSet.find(att_A1);  if( iter == groupSet.end())   throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.34",__FILE__,__LINE__);
-	iter=groupSet.find(att_B3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.34",__FILE__,__LINE__);
+	iter=groupSet.find(att_B3);  if( iter == groupSet.end())   throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.35",__FILE__,__LINE__);
-	iter=groupSet.find(att_C1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.35",__FILE__,__LINE__);
+	iter=groupSet.find(att_C1);  if( iter == groupSet.end())   throw NcException("Error in test 10.31",__FILE__,__LINE__);
 
 	groupSet = ncFile.getAtts("att1_7",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.36",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.37",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.36",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.37",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A01",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.38",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.38",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end())  throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_A1",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.39",__FILE__,__LINE__);
-	iter=groupSet.find(att_A1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.39",__FILE__,__LINE__);
+	iter=groupSet.find(att_A1);  if( iter == groupSet.end())   throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_B3",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.40",__FILE__,__LINE__);
-	iter=groupSet.find(att_B3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.40",__FILE__,__LINE__);
+	iter=groupSet.find(att_B3);  if( iter == groupSet.end())   throw NcException("Error in test 10.31",__FILE__,__LINE__);
 	groupSet = ncFile.getAtts("att_C1",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.41",__FILE__,__LINE__);
-	iter=groupSet.find(att_C1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 10.31",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.41",__FILE__,__LINE__);
+	iter=groupSet.find(att_C1);  if( iter == groupSet.end())   throw NcException("Error in test 10.31",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.42",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.42",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01");
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.43",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.44",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.43",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("Error in test 10.44",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.45",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.45",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.46",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.46",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1");
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.47",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.47",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.48",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.48",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01",NcGroup::Current);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.49",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.50",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.49",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("Error in test 10.50",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.51",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.51",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.52",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.52",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1",NcGroup::Current);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.53",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.53",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7",NcGroup::Parents);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.54",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.55",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.54",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.55",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.56",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.56",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.57",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.57",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.58",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.58",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1",NcGroup::Parents);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.59",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.59",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7",NcGroup::Children);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.60",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.60",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01",NcGroup::Children);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.61",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.61",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1",NcGroup::Children);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.62",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.62",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3",NcGroup::Children);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.63",__FILE__,__LINE__);
-	iter=groupSet.find(att_B3);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.64",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.63",__FILE__,__LINE__);
+	iter=groupSet.find(att_B3);  if( iter == groupSet.end()) throw NcException("Error in test 10.64",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1",NcGroup::Children);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.65",__FILE__,__LINE__);
-	iter=groupSet.find(att_C1);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.66",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.65",__FILE__,__LINE__);
+	iter=groupSet.find(att_C1);  if( iter == groupSet.end()) throw NcException("Error in test 10.66",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.67",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.68",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.67",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.68",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.69",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.70",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.69",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("Error in test 10.70",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.71",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.71",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.72",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.72",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1",NcGroup::ParentsAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.73",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.73",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.74",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.74",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.75",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.76",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.75",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("Error in test 10.76",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.77",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.77",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.78",__FILE__,__LINE__);
-	iter=groupSet.find(att_B3);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.79",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.78",__FILE__,__LINE__);
+	iter=groupSet.find(att_B3);  if( iter == groupSet.end()) throw NcException("Error in test 10.79",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1",NcGroup::ChildrenAndCurrent);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.80",__FILE__,__LINE__);
-	iter=groupSet.find(att_C1);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.81",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.80",__FILE__,__LINE__);
+	iter=groupSet.find(att_C1);  if( iter == groupSet.end()) throw NcException("Error in test 10.81",__FILE__,__LINE__);
 
 	groupSet = groupA.getAtts("att1_7",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.82",__FILE__,__LINE__);
-	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.83",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.82",__FILE__,__LINE__);
+	iter=groupSet.find(attA1_7);  if( iter == groupSet.end()) throw NcException("Error in test 10.83",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A01",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.84",__FILE__,__LINE__);
-	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.85",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.84",__FILE__,__LINE__);
+	iter=groupSet.find(att_A01);  if( iter == groupSet.end()) throw NcException("Error in test 10.85",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_A1",NcGroup::All);
-	if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 10.86",__FILE__,__LINE__);
+	if(groupSet.size() != 0)                                   throw NcException("Error in test 10.86",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_B3",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.87",__FILE__,__LINE__);
-	iter=groupSet.find(att_B3);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.88",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.87",__FILE__,__LINE__);
+	iter=groupSet.find(att_B3);  if( iter == groupSet.end()) throw NcException("Error in test 10.88",__FILE__,__LINE__);
 	groupSet = groupA.getAtts("att_C1",NcGroup::All);
-	if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 10.89",__FILE__,__LINE__);
-	iter=groupSet.find(att_C1);  if( iter == groupSet.end()) throw NcException("NcException","Error in test 10.90",__FILE__,__LINE__);
+	if(groupSet.size() != 1)                                   throw NcException("Error in test 10.89",__FILE__,__LINE__);
+	iter=groupSet.find(att_C1);  if( iter == groupSet.end()) throw NcException("Error in test 10.90",__FILE__,__LINE__);
 
 	cout <<"    -----------   passed\n";
 
 	return 0;
       }
-    
+
 
 
 
@@ -830,5 +830,6 @@ int main()
     {
       cout << "unknown error"<<endl;
       e.what();
+      return e.errorCode();
     }
 }
diff --git a/cxx4/test_classic.cpp b/cxx4/test_classic.cpp
index 604939b..de9e830 100644
--- a/cxx4/test_classic.cpp
+++ b/cxx4/test_classic.cpp
@@ -13,7 +13,7 @@ int main()
 {
    try
    {
-      cout << "Test creation of classic format file";
+      cout << "Test creation of classic format file" << endl;
       {
 	 NcFile ncFile("test_classic.nc", NcFile::replace, NcFile::classic);
 	 NcDim dim1 = ncFile.addDim("dim1",11);
@@ -26,6 +26,11 @@ int main()
 	 // dimArray[0]=dim1;
 	 // dimArray[1]=dim2;
 	 // NcVar varA1_3  = ncFile.addVar("varA1_3", ncInt, dimArray);
+
+         // and inserting some data that needs leaving the define mode
+         cout << "testing the swith to DATA mode..." << endl;
+         int arr[] = {1,2,3,4,5,6,7,8,9,10,11};
+         var_gw.putVar(arr);
       }
 
       // Now test reading.
@@ -33,7 +38,14 @@ int main()
 	 NcFile ncFile("test_classic.nc", NcFile::read);
 
 	 if (ncFile.getVarCount() != 1)
-	    throw NcException("NcException", "Holy Mother of Pearl!", __FILE__, __LINE__);
+	    throw NcException( "Holy Mother of Pearl!", __FILE__, __LINE__);
+      }
+
+      // and redefinition
+      {
+        NcFile ncFile("test_classic.nc", NcFile::write);
+        cout << "testing the swith to DEFINE mode..." << endl;
+        ncFile.putAtt(string("name"),string("value"));
       }
 
       cout << "    -----------   passed\n";
@@ -41,6 +53,6 @@ int main()
    catch(NcException& e)
    {
       cout << "Error!\n";
-      return 99;
+      return e.errorCode();
    }
 }
diff --git a/cxx4/test_dim.cpp b/cxx4/test_dim.cpp
index 901e851..bcfd852 100644
--- a/cxx4/test_dim.cpp
+++ b/cxx4/test_dim.cpp
@@ -19,14 +19,14 @@ int main()
     {
       cout<<"Opening file \"firstFile.cdf\" with NcFile::replace"<<endl;
       NcFile ncFile("firstFile.cdf", NcFile::replace);
-    
+
       cout<<left<<setw(55)<<"Testing addGroup(\"groupName\")";
       NcGroup groupA(ncFile.addGroup("groupA"));
       NcGroup groupA0(ncFile.addGroup("groupA0"));
       NcGroup groupB(groupA.addGroup("groupB"));
       NcGroup groupC(groupA.addGroup("groupC"));
       cout <<"    -----------   passed\n";
-    
+
       cout <<left<<setw(55)<<"Testing addDim(\"dimensionName\")";
       NcDim dim1 = ncFile.addDim("dim1",11);
       NcDim dim2 = ncFile.addDim("dim2");
@@ -38,49 +38,49 @@ int main()
       cout <<"    -----------   passed\n";
 
       cout <<left<<setw(55)<<"Testing NcDim::isUnlimited()";
-      if( dim1.isUnlimited())    throw NcException("NcException","Error in test 1.1",__FILE__,__LINE__);
-      if( !dim2.isUnlimited())   throw NcException("NcException","Error in test 1.2",__FILE__,__LINE__);
-      if( dim3.isUnlimited())    throw NcException("NcException","Error in test 1.3",__FILE__,__LINE__);
-      if( dim4.isUnlimited())    throw NcException("NcException","Error in test 1.4",__FILE__,__LINE__);
-      if( dim5.isUnlimited())    throw NcException("NcException","Error in test 1.5",__FILE__,__LINE__);
-      if( dim6.isUnlimited())    throw NcException("NcException","Error in test 1.6",__FILE__,__LINE__);
-      if( dim7.isUnlimited())    throw NcException("NcException","Error in test 1.7",__FILE__,__LINE__);
+      if( dim1.isUnlimited())    throw NcException("Error in test 1.1",__FILE__,__LINE__);
+      if( !dim2.isUnlimited())   throw NcException("Error in test 1.2",__FILE__,__LINE__);
+      if( dim3.isUnlimited())    throw NcException("Error in test 1.3",__FILE__,__LINE__);
+      if( dim4.isUnlimited())    throw NcException("Error in test 1.4",__FILE__,__LINE__);
+      if( dim5.isUnlimited())    throw NcException("Error in test 1.5",__FILE__,__LINE__);
+      if( dim6.isUnlimited())    throw NcException("Error in test 1.6",__FILE__,__LINE__);
+      if( dim7.isUnlimited())    throw NcException("Error in test 1.7",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
      cout <<left<<setw(55)<<"Testing NcDim::isNull()";
-     if( dim1.isNull())    throw NcException("NcException","Error in test 2.1",__FILE__,__LINE__);
+     if( dim1.isNull())    throw NcException("Error in test 2.1",__FILE__,__LINE__);
      NcDim tmpDim;
-     if( !tmpDim.isNull()) throw NcException("NcException","Error in test 2.2",__FILE__,__LINE__);
+     if( !tmpDim.isNull()) throw NcException("Error in test 2.2",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
      cout <<left<<setw(55)<<"Testing NcDim::getSize()";
-     if( dim1.getSize() != 11)    throw NcException("NcException","Error in test 3.1",__FILE__,__LINE__);
-     if( dim2.getSize() != 0 )    throw NcException("NcException","Error in test 3.2",__FILE__,__LINE__);
-     if( dim3.getSize() != 13)    throw NcException("NcException","Error in test 3.3",__FILE__,__LINE__);
-     if( dim4.getSize() != 14)    throw NcException("NcException","Error in test 3.4",__FILE__,__LINE__);
-     if( dim5.getSize() != 15)    throw NcException("NcException","Error in test 3.5",__FILE__,__LINE__);
-     if( dim6.getSize() != 16)    throw NcException("NcException","Error in test 3.6",__FILE__,__LINE__);
-     if( dim7.getSize() != 17)    throw NcException("NcException","Error in test 3.7",__FILE__,__LINE__);
+     if( dim1.getSize() != 11)    throw NcException("Error in test 3.1",__FILE__,__LINE__);
+     if( dim2.getSize() != 0 )    throw NcException("Error in test 3.2",__FILE__,__LINE__);
+     if( dim3.getSize() != 13)    throw NcException("Error in test 3.3",__FILE__,__LINE__);
+     if( dim4.getSize() != 14)    throw NcException("Error in test 3.4",__FILE__,__LINE__);
+     if( dim5.getSize() != 15)    throw NcException("Error in test 3.5",__FILE__,__LINE__);
+     if( dim6.getSize() != 16)    throw NcException("Error in test 3.6",__FILE__,__LINE__);
+     if( dim7.getSize() != 17)    throw NcException("Error in test 3.7",__FILE__,__LINE__);
      cout <<"    -----------   passed\n";
 
      cout <<left<<setw(55)<<"Testing NcDim::getParentGroup()";
-     if( !(dim1.getParentGroup() == ncFile))   throw NcException("NcException","Error in test 4.1",__FILE__,__LINE__);
-     if( !(dim2.getParentGroup() == ncFile))   throw NcException("NcException","Error in test 4.2",__FILE__,__LINE__);
-     if( !(dim3.getParentGroup() == ncFile))   throw NcException("NcException","Error in test 4.3",__FILE__,__LINE__);
-     if( !(dim4.getParentGroup() == groupB))   throw NcException("NcException","Error in test 4.4",__FILE__,__LINE__);
-     if( !(dim5.getParentGroup() == groupB))   throw NcException("NcException","Error in test 4.5",__FILE__,__LINE__);
-     if( !(dim6.getParentGroup() == groupB))   throw NcException("NcException","Error in test 4.6",__FILE__,__LINE__);
-     if( !(dim7.getParentGroup() == groupB))   throw NcException("NcException","Error in test 4.7",__FILE__,__LINE__);
+     if( !(dim1.getParentGroup() == ncFile))   throw NcException("Error in test 4.1",__FILE__,__LINE__);
+     if( !(dim2.getParentGroup() == ncFile))   throw NcException("Error in test 4.2",__FILE__,__LINE__);
+     if( !(dim3.getParentGroup() == ncFile))   throw NcException("Error in test 4.3",__FILE__,__LINE__);
+     if( !(dim4.getParentGroup() == groupB))   throw NcException("Error in test 4.4",__FILE__,__LINE__);
+     if( !(dim5.getParentGroup() == groupB))   throw NcException("Error in test 4.5",__FILE__,__LINE__);
+     if( !(dim6.getParentGroup() == groupB))   throw NcException("Error in test 4.6",__FILE__,__LINE__);
+     if( !(dim7.getParentGroup() == groupB))   throw NcException("Error in test 4.7",__FILE__,__LINE__);
      cout <<"    -----------   passed\n";
 
      cout <<left<<setw(55)<<"Testing NcDim::getName()";
-     if( dim1.getName() != "dim1")   throw NcException("NcException","Error in test 5.1",__FILE__,__LINE__);
-     if( dim2.getName() != "dim2")   throw NcException("NcException","Error in test 5.2",__FILE__,__LINE__);
-     if( dim3.getName() != "dim3")   throw NcException("NcException","Error in test 5.3",__FILE__,__LINE__);
-     if( dim4.getName() != "dim4")   throw NcException("NcException","Error in test 5.4",__FILE__,__LINE__);
-     if( dim5.getName() != "dim5")   throw NcException("NcException","Error in test 5.5",__FILE__,__LINE__);
-     if( dim6.getName() != "dim6")   throw NcException("NcException","Error in test 5.6",__FILE__,__LINE__);
-     if( dim7.getName() != "dim7")   throw NcException("NcException","Error in test 5.7",__FILE__,__LINE__);
+     if( dim1.getName() != "dim1")   throw NcException("Error in test 5.1",__FILE__,__LINE__);
+     if( dim2.getName() != "dim2")   throw NcException("Error in test 5.2",__FILE__,__LINE__);
+     if( dim3.getName() != "dim3")   throw NcException("Error in test 5.3",__FILE__,__LINE__);
+     if( dim4.getName() != "dim4")   throw NcException("Error in test 5.4",__FILE__,__LINE__);
+     if( dim5.getName() != "dim5")   throw NcException("Error in test 5.5",__FILE__,__LINE__);
+     if( dim6.getName() != "dim6")   throw NcException("Error in test 5.6",__FILE__,__LINE__);
+     if( dim7.getName() != "dim7")   throw NcException("Error in test 5.7",__FILE__,__LINE__);
      cout <<"    -----------   passed\n";
 
 
@@ -88,24 +88,24 @@ int main()
 
 
       cout <<left<<setw(55)<<"Testing NcGroup::getDimCount([netCDF::Location])";
-      if( ncFile.getDimCount() != 3)                           throw NcException("NcException","Error in test 6.1",__FILE__,__LINE__);
-      if( ncFile.getDimCount(NcGroup::Current) != 3)           throw NcException("NcException","Error in test 6.2",__FILE__,__LINE__);
-      if( ncFile.getDimCount(NcGroup::All) != 7)               throw NcException("NcException","Error in test 6.3",__FILE__,__LINE__);
-      if( ncFile.getDimCount(NcGroup::Parents) != 0)           throw NcException("NcException","Error in test 6.4",__FILE__,__LINE__);
-      if( ncFile.getDimCount(NcGroup::Children) != 4)          throw NcException("NcException","Error in test 6.5",__FILE__,__LINE__);
-      if( ncFile.getDimCount(NcGroup::ParentsAndCurrent) != 3) throw NcException("NcException","Error in test 6.6",__FILE__,__LINE__);
-      if( ncFile.getDimCount(NcGroup::ChildrenAndCurrent) != 7)throw NcException("NcException","Error in test 6.7",__FILE__,__LINE__);
-      if( groupA.getDimCount() != 0)                           throw NcException("NcException","Error in test 6.8",__FILE__,__LINE__);
-      if( groupA.getDimCount(NcGroup::Current) != 0)           throw NcException("NcException","Error in test 6.9",__FILE__,__LINE__);
-      if( groupA.getDimCount(NcGroup::All) != 7)               throw NcException("NcException","Error in test 6.10",__FILE__,__LINE__);
-      if( groupA.getDimCount(NcGroup::Parents) != 3)           throw NcException("NcException","Error in test 6.11",__FILE__,__LINE__);
-      if( groupA.getDimCount(NcGroup::Children) != 4)          throw NcException("NcException","Error in test 6.12",__FILE__,__LINE__);
-      if( groupA.getDimCount(NcGroup::ParentsAndCurrent) != 3) throw NcException("NcException","Error in test 6.13",__FILE__,__LINE__);
-      if( groupA.getDimCount(NcGroup::ChildrenAndCurrent) != 4)throw NcException("NcException","Error in test 6.14",__FILE__,__LINE__);
+      if( ncFile.getDimCount() != 3)                           throw NcException("Error in test 6.1",__FILE__,__LINE__);
+      if( ncFile.getDimCount(NcGroup::Current) != 3)           throw NcException("Error in test 6.2",__FILE__,__LINE__);
+      if( ncFile.getDimCount(NcGroup::All) != 7)               throw NcException("Error in test 6.3",__FILE__,__LINE__);
+      if( ncFile.getDimCount(NcGroup::Parents) != 0)           throw NcException("Error in test 6.4",__FILE__,__LINE__);
+      if( ncFile.getDimCount(NcGroup::Children) != 4)          throw NcException("Error in test 6.5",__FILE__,__LINE__);
+      if( ncFile.getDimCount(NcGroup::ParentsAndCurrent) != 3) throw NcException("Error in test 6.6",__FILE__,__LINE__);
+      if( ncFile.getDimCount(NcGroup::ChildrenAndCurrent) != 7)throw NcException("Error in test 6.7",__FILE__,__LINE__);
+      if( groupA.getDimCount() != 0)                           throw NcException("Error in test 6.8",__FILE__,__LINE__);
+      if( groupA.getDimCount(NcGroup::Current) != 0)           throw NcException("Error in test 6.9",__FILE__,__LINE__);
+      if( groupA.getDimCount(NcGroup::All) != 7)               throw NcException("Error in test 6.10",__FILE__,__LINE__);
+      if( groupA.getDimCount(NcGroup::Parents) != 3)           throw NcException("Error in test 6.11",__FILE__,__LINE__);
+      if( groupA.getDimCount(NcGroup::Children) != 4)          throw NcException("Error in test 6.12",__FILE__,__LINE__);
+      if( groupA.getDimCount(NcGroup::ParentsAndCurrent) != 3) throw NcException("Error in test 6.13",__FILE__,__LINE__);
+      if( groupA.getDimCount(NcGroup::ChildrenAndCurrent) != 4)throw NcException("Error in test 6.14",__FILE__,__LINE__);
       cout <<"    -----------   passed\n";
 
 
-	
+
       cout <<left<<setw(55)<<"Testing NcGroup::getDims([netCDF::Location])";
       {
 	multimap<string,NcDim> dimMap;
@@ -114,60 +114,60 @@ int main()
 	// operations on ncFile
 
 	dimMap = ncFile.getDims();
-	if( dimMap.size() != 3)        throw NcException("NcException","Error in test 7.1",__FILE__,__LINE__);
+	if( dimMap.size() != 3)        throw NcException("Error in test 7.1",__FILE__,__LINE__);
 	iter=dimMap.find("dim1");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.2",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.2",__FILE__,__LINE__);
 	iter=dimMap.find("dim2");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.3",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.3",__FILE__,__LINE__);
 	iter=dimMap.find("dim3");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.4",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.4",__FILE__,__LINE__);
 
 	dimMap = ncFile.getDims(NcGroup::Current);
-	if( dimMap.size() != 3)        throw NcException("NcException","Error in test 7.5",__FILE__,__LINE__);
+	if( dimMap.size() != 3)        throw NcException("Error in test 7.5",__FILE__,__LINE__);
 	iter=dimMap.find("dim1");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.6",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.6",__FILE__,__LINE__);
 	iter=dimMap.find("dim2");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.7",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.7",__FILE__,__LINE__);
 	iter=dimMap.find("dim3");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.8",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.8",__FILE__,__LINE__);
 
 	dimMap = ncFile.getDims(NcGroup::Parents);
-	if( dimMap.size() != 0)        throw NcException("NcException","Error in test 7.9",__FILE__,__LINE__);
+	if( dimMap.size() != 0)        throw NcException("Error in test 7.9",__FILE__,__LINE__);
 
 	dimMap = ncFile.getDims(NcGroup::Children);
-	if( dimMap.size() != 4)        throw NcException("NcException","Error in test 7.10",__FILE__,__LINE__);
+	if( dimMap.size() != 4)        throw NcException("Error in test 7.10",__FILE__,__LINE__);
 
 	dimMap = ncFile.getDims(NcGroup::ParentsAndCurrent);
-	if( dimMap.size() != 3)        throw NcException("NcException","Error in test 7.11",__FILE__,__LINE__);
+	if( dimMap.size() != 3)        throw NcException("Error in test 7.11",__FILE__,__LINE__);
 	iter=dimMap.find("dim1");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.12",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.12",__FILE__,__LINE__);
 	iter=dimMap.find("dim2");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.13",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.13",__FILE__,__LINE__);
 	iter=dimMap.find("dim3");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.14",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.14",__FILE__,__LINE__);
 
 	dimMap = ncFile.getDims(NcGroup::All);
-	if( dimMap.size() != 7)        throw NcException("NcException","Error in test 7.15",__FILE__,__LINE__);
+	if( dimMap.size() != 7)        throw NcException("Error in test 7.15",__FILE__,__LINE__);
 	iter=dimMap.find("dim1");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.16",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.16",__FILE__,__LINE__);
 	iter=dimMap.find("dim2");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.17",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.17",__FILE__,__LINE__);
 	iter=dimMap.find("dim3");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.18",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.18",__FILE__,__LINE__);
 	iter=dimMap.find("dim4");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.19",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.19",__FILE__,__LINE__);
 	iter=dimMap.find("dim5");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.20",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.20",__FILE__,__LINE__);
 	iter=dimMap.find("dim6");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.21",__FILE__,__LINE__);
+	if( iter == dimMap.end())    throw NcException("Error in test 7.21",__FILE__,__LINE__);
 	iter=dimMap.find("dim7");
-	if( iter == dimMap.end())    throw NcException("NcException","Error in test 7.22",__FILE__,__LINE__);
-      
+	if( iter == dimMap.end())    throw NcException("Error in test 7.22",__FILE__,__LINE__);
+
       }
       cout <<"    -----------   passed\n";
 
 
-	
+
       cout <<left<<setw(55)<<"Testing NcGroup::getDims(\"name\",[netCDF::Location])";
       {
 
@@ -177,100 +177,100 @@ int main()
 	// operations on ncFile:dim2
 
 	dimSet = ncFile.getDims("dim2");
-	if( dimSet.size() != 1)       throw NcException("NcException","Error in test 8.1",__FILE__,__LINE__);
+	if( dimSet.size() != 1)       throw NcException("Error in test 8.1",__FILE__,__LINE__);
 	iter=dimSet.find(dim2);
-	if( iter == dimSet.end())     throw NcException("NcException","Error in test 8.2",__FILE__,__LINE__);
-	if( iter->getName() != "dim2")throw NcException("NcException","Error in test 8.3",__FILE__,__LINE__);
+	if( iter == dimSet.end())     throw NcException("Error in test 8.2",__FILE__,__LINE__);
+	if( iter->getName() != "dim2")throw NcException("Error in test 8.3",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim2",NcGroup::Current);
-	if( dimSet.count(dim2) != 1) throw NcException("NcException","Error in test 8.4",__FILE__,__LINE__);
+	if( dimSet.count(dim2) != 1) throw NcException("Error in test 8.4",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim2",NcGroup::Parents);
-	if( dimSet.count(dim2) != 0) throw NcException("NcException","Error in test 8.5",__FILE__,__LINE__);
+	if( dimSet.count(dim2) != 0) throw NcException("Error in test 8.5",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim2",NcGroup::Children);
-	if( dimSet.count(dim2) != 0) throw NcException("NcException","Error in test 8.6",__FILE__,__LINE__);
+	if( dimSet.count(dim2) != 0) throw NcException("Error in test 8.6",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim2",NcGroup::ParentsAndCurrent);
-	if( dimSet.count(dim2) != 1) throw NcException("NcException","Error in test 8.7",__FILE__,__LINE__);
+	if( dimSet.count(dim2) != 1) throw NcException("Error in test 8.7",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim2",NcGroup::ChildrenAndCurrent);
-	if( dimSet.count(dim2) != 1) throw NcException("NcException","Error in test 8.8",__FILE__,__LINE__);
+	if( dimSet.count(dim2) != 1) throw NcException("Error in test 8.8",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim2",NcGroup::All);
-	if( dimSet.count(dim2) != 1) throw NcException("NcException","Error in test 8.9",__FILE__,__LINE__);
+	if( dimSet.count(dim2) != 1) throw NcException("Error in test 8.9",__FILE__,__LINE__);
 
 
 	// operations on ncFile:dim6
 
 	dimSet = ncFile.getDims("dim6");
-	if( dimSet.size() != 0)       throw NcException("NcException","Error in test 8.10",__FILE__,__LINE__);
+	if( dimSet.size() != 0)       throw NcException("Error in test 8.10",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim6",NcGroup::Current);
-	if( dimSet.count(dim6) != 0) throw NcException("NcException","Error in test 8.11",__FILE__,__LINE__);
+	if( dimSet.count(dim6) != 0) throw NcException("Error in test 8.11",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim6",NcGroup::Parents);
-	if( dimSet.count(dim6) != 0) throw NcException("NcException","Error in test 8.12",__FILE__,__LINE__);
+	if( dimSet.count(dim6) != 0) throw NcException("Error in test 8.12",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim6",NcGroup::Children);
-	if( dimSet.count(dim6) != 1) throw NcException("NcException","Error in test 8.13",__FILE__,__LINE__);
+	if( dimSet.count(dim6) != 1) throw NcException("Error in test 8.13",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim6",NcGroup::ParentsAndCurrent);
-	if( dimSet.count(dim6) != 0) throw NcException("NcException","Error in test 8.14",__FILE__,__LINE__);
+	if( dimSet.count(dim6) != 0) throw NcException("Error in test 8.14",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim6",NcGroup::ChildrenAndCurrent);
-	if( dimSet.count(dim6) != 1) throw NcException("NcException","Error in test 8.15",__FILE__,__LINE__);
+	if( dimSet.count(dim6) != 1) throw NcException("Error in test 8.15",__FILE__,__LINE__);
 
 	dimSet = ncFile.getDims("dim6",NcGroup::All);
-	if( dimSet.count(dim6) != 1) throw NcException("NcException","Error in test 8.16",__FILE__,__LINE__);
+	if( dimSet.count(dim6) != 1) throw NcException("Error in test 8.16",__FILE__,__LINE__);
 
 
 	// operations on groupB:dim1
 
 	dimSet = groupB.getDims("dim1");
-	if( dimSet.size() != 0)       throw NcException("NcException","Error in test 8.17",__FILE__,__LINE__);
+	if( dimSet.size() != 0)       throw NcException("Error in test 8.17",__FILE__,__LINE__);
 
 	dimSet = groupB.getDims("dim1",NcGroup::Current);
-	if( dimSet.count(dim1) != 0) throw NcException("NcException","Error in test 8.18",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 0) throw NcException("Error in test 8.18",__FILE__,__LINE__);
 
 	dimSet = groupB.getDims("dim1",NcGroup::Parents);
-	if( dimSet.count(dim1) != 1) throw NcException("NcException","Error in test 8.19",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 1) throw NcException("Error in test 8.19",__FILE__,__LINE__);
 
 	dimSet = groupB.getDims("dim1",NcGroup::Children);
-	if( dimSet.count(dim1) != 0) throw NcException("NcException","Error in test 8.20",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 0) throw NcException("Error in test 8.20",__FILE__,__LINE__);
 
 	dimSet = groupB.getDims("dim1",NcGroup::ParentsAndCurrent);
-	if( dimSet.count(dim1) != 1) throw NcException("NcException","Error in test 8.21",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 1) throw NcException("Error in test 8.21",__FILE__,__LINE__);
 
 	dimSet = groupB.getDims("dim1",NcGroup::ChildrenAndCurrent);
-	if( dimSet.count(dim1) != 0) throw NcException("NcException","Error in test 8.22",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 0) throw NcException("Error in test 8.22",__FILE__,__LINE__);
 
 	dimSet = groupB.getDims("dim1",NcGroup::All);
-	if( dimSet.count(dim1) != 1) throw NcException("NcException","Error in test 8.23",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 1) throw NcException("Error in test 8.23",__FILE__,__LINE__);
 
 
 	// operations on groupA:dim1
 
 	dimSet = groupA.getDims("dim1");
-	if( dimSet.size() != 0)       throw NcException("NcException","Error in test 8.24",__FILE__,__LINE__);
+	if( dimSet.size() != 0)       throw NcException("Error in test 8.24",__FILE__,__LINE__);
 
 	dimSet = groupA.getDims("dim1",NcGroup::Current);
-	if( dimSet.count(dim1) != 0) throw NcException("NcException","Error in test 8.25",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 0) throw NcException("Error in test 8.25",__FILE__,__LINE__);
 
 	dimSet = groupA.getDims("dim1",NcGroup::Parents);
-	if( dimSet.count(dim1) != 1) throw NcException("NcException","Error in test 8.26",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 1) throw NcException("Error in test 8.26",__FILE__,__LINE__);
 
 	dimSet = groupA.getDims("dim1",NcGroup::Children);
-	if( dimSet.count(dim1) != 0) throw NcException("NcException","Error in test 8.27",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 0) throw NcException("Error in test 8.27",__FILE__,__LINE__);
 
 	dimSet = groupA.getDims("dim1",NcGroup::ParentsAndCurrent);
-	if( dimSet.count(dim1) != 1) throw NcException("NcException","Error in test 8.28",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 1) throw NcException("Error in test 8.28",__FILE__,__LINE__);
 
 	dimSet = groupA.getDims("dim1",NcGroup::ChildrenAndCurrent);
-	if( dimSet.count(dim1) != 0) throw NcException("NcException","Error in test 8.29",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 0) throw NcException("Error in test 8.29",__FILE__,__LINE__);
 
 	dimSet = groupA.getDims("dim1",NcGroup::All);
-	if( dimSet.count(dim1) != 1) throw NcException("NcException","Error in test 8.30",__FILE__,__LINE__);
+	if( dimSet.count(dim1) != 1) throw NcException("Error in test 8.30",__FILE__,__LINE__);
 
       }
       cout <<"    -----------   passed\n";
@@ -281,43 +281,43 @@ int main()
 
       cout <<left<<setw(55)<<"Testing NcGroup::getDim(\"name\",[netCDF::Location])";
       {
-	if( ncFile.getDim("dim1",NcGroup::All).getName() !="dim1") throw NcException("NcException","Error in test 9.1",__FILE__,__LINE__);
-	if( ncFile.getDim("dim2",NcGroup::All).getName() !="dim2") throw NcException("NcException","Error in test 9.2",__FILE__,__LINE__);
-	if( ncFile.getDim("dim3",NcGroup::All).getName() !="dim3") throw NcException("NcException","Error in test 9.3",__FILE__,__LINE__);
-	if( ncFile.getDim("dim4",NcGroup::All).getName() !="dim4") throw NcException("NcException","Error in test 9.4",__FILE__,__LINE__);
-	if( ncFile.getDim("dim5",NcGroup::All).getName() !="dim5") throw NcException("NcException","Error in test 9.5",__FILE__,__LINE__);
-	if( ncFile.getDim("dim6",NcGroup::All).getName() !="dim6") throw NcException("NcException","Error in test 9.6",__FILE__,__LINE__);
-	if( ncFile.getDim("dim7",NcGroup::All).getName() !="dim7") throw NcException("NcException","Error in test 9.7",__FILE__,__LINE__);
-	if( groupB.getDim("dim1",NcGroup::All).getName() !="dim1") throw NcException("NcException","Error in test 9.8",__FILE__,__LINE__);
-	if( groupB.getDim("dim2",NcGroup::All).getName() !="dim2") throw NcException("NcException","Error in test 9.9",__FILE__,__LINE__);
-	if( groupB.getDim("dim3",NcGroup::All).getName() !="dim3") throw NcException("NcException","Error in test 9.10",__FILE__,__LINE__);
-	if( groupB.getDim("dim4",NcGroup::All).getName() !="dim4") throw NcException("NcException","Error in test 9.11",__FILE__,__LINE__);
-	if( groupB.getDim("dim5",NcGroup::All).getName() !="dim5") throw NcException("NcException","Error in test 9.12",__FILE__,__LINE__);
-	if( groupB.getDim("dim6",NcGroup::All).getName() !="dim6") throw NcException("NcException","Error in test 9.13",__FILE__,__LINE__);
-	if( groupB.getDim("dim7",NcGroup::All).getName() !="dim7") throw NcException("NcException","Error in test 9.14",__FILE__,__LINE__);
-	if( !ncFile.getDim("dim7").isNull())                            throw NcException("NcException","Error in test 9.15",__FILE__,__LINE__);
-	if( !ncFile.getDim("dim7",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.16",__FILE__,__LINE__);
-	if( !ncFile.getDim("dim7",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.17",__FILE__,__LINE__);
-	if(  ncFile.getDim("dim7",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.18",__FILE__,__LINE__);
-	if( !ncFile.getDim("dim7",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.19",__FILE__,__LINE__);
-	if(  ncFile.getDim("dim7",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.20",__FILE__,__LINE__);
-
-	if( !groupA.getDim("dim7").isNull())                            throw NcException("NcException","Error in test 9.21",__FILE__,__LINE__);
-	if( !groupA.getDim("dim7",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.22",__FILE__,__LINE__);
-	if( !groupA.getDim("dim7",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.23",__FILE__,__LINE__);
-	if(  groupA.getDim("dim7",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.24",__FILE__,__LINE__);
-	if( !groupA.getDim("dim7",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.25",__FILE__,__LINE__);
-	if(  groupA.getDim("dim7",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.26",__FILE__,__LINE__);
-	if(  groupA.getDim("dim7",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.27",__FILE__,__LINE__);
-
-	if(  groupB.getDim("dim7").isNull())                            throw NcException("NcException","Error in test 9.28",__FILE__,__LINE__);
-	if(  groupB.getDim("dim7",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 9.29",__FILE__,__LINE__);
-	if( !groupB.getDim("dim7",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 9.30",__FILE__,__LINE__);
-	if( !groupB.getDim("dim7",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 9.31",__FILE__,__LINE__);
-	if(  groupB.getDim("dim7",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 9.32",__FILE__,__LINE__);
-	if(  groupB.getDim("dim7",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 9.33",__FILE__,__LINE__);
-	if(  groupB.getDim("dim7",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.34",__FILE__,__LINE__);
-	if( !ncFile.getDim("dimX",NcGroup::All).isNull())               throw NcException("NcException","Error in test 9.35",__FILE__,__LINE__);
+	if( ncFile.getDim("dim1",NcGroup::All).getName() !="dim1") throw NcException("Error in test 9.1",__FILE__,__LINE__);
+	if( ncFile.getDim("dim2",NcGroup::All).getName() !="dim2") throw NcException("Error in test 9.2",__FILE__,__LINE__);
+	if( ncFile.getDim("dim3",NcGroup::All).getName() !="dim3") throw NcException("Error in test 9.3",__FILE__,__LINE__);
+	if( ncFile.getDim("dim4",NcGroup::All).getName() !="dim4") throw NcException("Error in test 9.4",__FILE__,__LINE__);
+	if( ncFile.getDim("dim5",NcGroup::All).getName() !="dim5") throw NcException("Error in test 9.5",__FILE__,__LINE__);
+	if( ncFile.getDim("dim6",NcGroup::All).getName() !="dim6") throw NcException("Error in test 9.6",__FILE__,__LINE__);
+	if( ncFile.getDim("dim7",NcGroup::All).getName() !="dim7") throw NcException("Error in test 9.7",__FILE__,__LINE__);
+	if( groupB.getDim("dim1",NcGroup::All).getName() !="dim1") throw NcException("Error in test 9.8",__FILE__,__LINE__);
+	if( groupB.getDim("dim2",NcGroup::All).getName() !="dim2") throw NcException("Error in test 9.9",__FILE__,__LINE__);
+	if( groupB.getDim("dim3",NcGroup::All).getName() !="dim3") throw NcException("Error in test 9.10",__FILE__,__LINE__);
+	if( groupB.getDim("dim4",NcGroup::All).getName() !="dim4") throw NcException("Error in test 9.11",__FILE__,__LINE__);
+	if( groupB.getDim("dim5",NcGroup::All).getName() !="dim5") throw NcException("Error in test 9.12",__FILE__,__LINE__);
+	if( groupB.getDim("dim6",NcGroup::All).getName() !="dim6") throw NcException("Error in test 9.13",__FILE__,__LINE__);
+	if( groupB.getDim("dim7",NcGroup::All).getName() !="dim7") throw NcException("Error in test 9.14",__FILE__,__LINE__);
+	if( !ncFile.getDim("dim7").isNull())                            throw NcException("Error in test 9.15",__FILE__,__LINE__);
+	if( !ncFile.getDim("dim7",NcGroup::Current).isNull())           throw NcException("Error in test 9.16",__FILE__,__LINE__);
+	if( !ncFile.getDim("dim7",NcGroup::Parents).isNull())           throw NcException("Error in test 9.17",__FILE__,__LINE__);
+	if(  ncFile.getDim("dim7",NcGroup::Children).isNull())          throw NcException("Error in test 9.18",__FILE__,__LINE__);
+	if( !ncFile.getDim("dim7",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.19",__FILE__,__LINE__);
+	if(  ncFile.getDim("dim7",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.20",__FILE__,__LINE__);
+
+	if( !groupA.getDim("dim7").isNull())                            throw NcException("Error in test 9.21",__FILE__,__LINE__);
+	if( !groupA.getDim("dim7",NcGroup::Current).isNull())           throw NcException("Error in test 9.22",__FILE__,__LINE__);
+	if( !groupA.getDim("dim7",NcGroup::Parents).isNull())           throw NcException("Error in test 9.23",__FILE__,__LINE__);
+	if(  groupA.getDim("dim7",NcGroup::Children).isNull())          throw NcException("Error in test 9.24",__FILE__,__LINE__);
+	if( !groupA.getDim("dim7",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.25",__FILE__,__LINE__);
+	if(  groupA.getDim("dim7",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.26",__FILE__,__LINE__);
+	if(  groupA.getDim("dim7",NcGroup::All).isNull())               throw NcException("Error in test 9.27",__FILE__,__LINE__);
+
+	if(  groupB.getDim("dim7").isNull())                            throw NcException("Error in test 9.28",__FILE__,__LINE__);
+	if(  groupB.getDim("dim7",NcGroup::Current).isNull())           throw NcException("Error in test 9.29",__FILE__,__LINE__);
+	if( !groupB.getDim("dim7",NcGroup::Parents).isNull())           throw NcException("Error in test 9.30",__FILE__,__LINE__);
+	if( !groupB.getDim("dim7",NcGroup::Children).isNull())          throw NcException("Error in test 9.31",__FILE__,__LINE__);
+	if(  groupB.getDim("dim7",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 9.32",__FILE__,__LINE__);
+	if(  groupB.getDim("dim7",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 9.33",__FILE__,__LINE__);
+	if(  groupB.getDim("dim7",NcGroup::All).isNull())               throw NcException("Error in test 9.34",__FILE__,__LINE__);
+	if( !ncFile.getDim("dimX",NcGroup::All).isNull())               throw NcException("Error in test 9.35",__FILE__,__LINE__);
       }
 
       cout <<"    -----------   passed\n";
@@ -328,5 +328,6 @@ int main()
     {
       cout <<"\n";
       e.what();
+      return e.errorCode();
     }
 }
diff --git a/cxx4/test_group.cpp b/cxx4/test_group.cpp
index 3712f29..9a524ef 100644
--- a/cxx4/test_group.cpp
+++ b/cxx4/test_group.cpp
@@ -16,26 +16,26 @@ try
   {
     cout<<"Opening file \"firstFile.cdf\" with NcFile::replace"<<endl;
     NcFile ncFile("firstFile.cdf",NcFile::replace);
-    
+
     cout<<left<<setw(50)<<"Testing addGroup(\"groupName\")";
     NcGroup groupA(ncFile.addGroup("groupA"));
     NcGroup groupA0(ncFile.addGroup("groupA0"));
     NcGroup groupB(groupA.addGroup("groupB"));
     NcGroup groupC(groupA.addGroup("groupC"));
     cout <<"    -----------   passed\n";
-    
+
     cout <<left<<setw(50)<<"Testing getGroupCount([netCDF::Location])";
-    if( ncFile.getGroupCount()!= 2)                                 throw NcException("NcException","Error in test 1.1",__FILE__,__LINE__);
-    if( groupA.getGroupCount()!= 2)                                 throw NcException("NcException","Error in test 1.2",__FILE__,__LINE__);
-    if( groupB.getGroupCount() !=0)                                 throw NcException("NcException","Error in test 1.3",__FILE__,__LINE__);
-    if( ncFile.getGroupCount(NcGroup::AllGrps) != 5)                throw NcException("NcException","Error in test 1.4",__FILE__,__LINE__);
-    if( ncFile.getGroupCount(NcGroup::AllChildrenGrps) != 4)        throw NcException("NcException","Error in test 1.5",__FILE__,__LINE__);
-    if( groupA.getGroupCount(NcGroup::AllGrps) != 4)                throw NcException("NcException","Error in test 1.6",__FILE__,__LINE__);
-    if( groupB.getGroupCount(NcGroup::ParentsGrps) != 2)            throw NcException("NcException","Error in test 1.7",__FILE__,__LINE__);
-    if( groupB.getGroupCount(NcGroup::ChildrenGrps) != 0)           throw NcException("NcException","Error in test 1.8",__FILE__,__LINE__);
-    if( groupB.getGroupCount(NcGroup::ChildrenOfChildrenGrps) != 0) throw NcException("NcException","Error in test 1.9",__FILE__,__LINE__);
-    if( groupB.getGroupCount(NcGroup::ParentsAndCurrentGrps) != 3)  throw NcException("NcException","Error in test 1.10",__FILE__,__LINE__);
-    if( groupB.getGroupCount(NcGroup::AllChildrenGrps) != 0)        throw NcException("NcException","Error in test 1.11",__FILE__,__LINE__);
+    if( ncFile.getGroupCount()!= 2)                                 throw NcException("Error in test 1.1",__FILE__,__LINE__);
+    if( groupA.getGroupCount()!= 2)                                 throw NcException("Error in test 1.2",__FILE__,__LINE__);
+    if( groupB.getGroupCount() !=0)                                 throw NcException("Error in test 1.3",__FILE__,__LINE__);
+    if( ncFile.getGroupCount(NcGroup::AllGrps) != 5)                throw NcException("Error in test 1.4",__FILE__,__LINE__);
+    if( ncFile.getGroupCount(NcGroup::AllChildrenGrps) != 4)        throw NcException("Error in test 1.5",__FILE__,__LINE__);
+    if( groupA.getGroupCount(NcGroup::AllGrps) != 4)                throw NcException("Error in test 1.6",__FILE__,__LINE__);
+    if( groupB.getGroupCount(NcGroup::ParentsGrps) != 2)            throw NcException("Error in test 1.7",__FILE__,__LINE__);
+    if( groupB.getGroupCount(NcGroup::ChildrenGrps) != 0)           throw NcException("Error in test 1.8",__FILE__,__LINE__);
+    if( groupB.getGroupCount(NcGroup::ChildrenOfChildrenGrps) != 0) throw NcException("Error in test 1.9",__FILE__,__LINE__);
+    if( groupB.getGroupCount(NcGroup::ParentsAndCurrentGrps) != 3)  throw NcException("Error in test 1.10",__FILE__,__LINE__);
+    if( groupB.getGroupCount(NcGroup::AllChildrenGrps) != 0)        throw NcException("Error in test 1.11",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
 
@@ -48,147 +48,147 @@ try
       // operations on ncFile
 
       groupMap = ncFile.getGroups();
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.1",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.1",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.2",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.2",__FILE__,__LINE__);
       iter=groupMap.find("groupA0");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.3",__FILE__,__LINE__);
-      
+      if( iter == groupMap.end())    throw NcException("Error in test 2.3",__FILE__,__LINE__);
+
       groupMap =ncFile.getGroups(NcGroup::ChildrenGrps);
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.4",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.4",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.5",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.5",__FILE__,__LINE__);
       iter=groupMap.find("groupA0");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.6",__FILE__,__LINE__);
-      
+      if( iter == groupMap.end())    throw NcException("Error in test 2.6",__FILE__,__LINE__);
+
       groupMap = ncFile.getGroups(NcGroup::ParentsGrps);
-      if( groupMap.size() != 0)      throw NcException("NcException","Error in test 2.7",__FILE__,__LINE__);
+      if( groupMap.size() != 0)      throw NcException("Error in test 2.7",__FILE__,__LINE__);
 
       groupMap = ncFile.getGroups(NcGroup::ChildrenOfChildrenGrps);
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.8",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.8",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.9",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.9",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.10",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.10",__FILE__,__LINE__);
 
       groupMap = ncFile.getGroups(NcGroup::AllChildrenGrps);
-      if( groupMap.size() != 4)      throw NcException("NcException","Error in test 2.11",__FILE__,__LINE__);
+      if( groupMap.size() != 4)      throw NcException("Error in test 2.11",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.12",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.12",__FILE__,__LINE__);
       iter=groupMap.find("groupA0");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.13",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.13",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.14",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.14",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.15",__FILE__,__LINE__);
-      
+      if( iter == groupMap.end())    throw NcException("Error in test 2.15",__FILE__,__LINE__);
+
       groupMap = ncFile.getGroups(NcGroup::ParentsAndCurrentGrps);
-      if( groupMap.size() != 1)      throw NcException("NcException","Error in test 2.16",__FILE__,__LINE__);
+      if( groupMap.size() != 1)      throw NcException("Error in test 2.16",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.17",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.17",__FILE__,__LINE__);
 
       groupMap = ncFile.getGroups(NcGroup::AllGrps);
-      if( groupMap.size() != 5)      throw NcException("NcException","Error in test 2.18",__FILE__,__LINE__);
+      if( groupMap.size() != 5)      throw NcException("Error in test 2.18",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.19",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.19",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.20",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.20",__FILE__,__LINE__);
       iter=groupMap.find("groupA0");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.21",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.21",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.22",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.22",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.23",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.23",__FILE__,__LINE__);
 
 
       // operations on groupA
 
       groupMap = groupA.getGroups();
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.24",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.24",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.25",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.25",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.26",__FILE__,__LINE__);
-      
+      if( iter == groupMap.end())    throw NcException("Error in test 2.26",__FILE__,__LINE__);
+
 
       groupMap =groupA.getGroups(NcGroup::ChildrenGrps);
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.27",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.27",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.28",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.28",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.29",__FILE__,__LINE__);
-      
+      if( iter == groupMap.end())    throw NcException("Error in test 2.29",__FILE__,__LINE__);
+
       groupMap = groupA.getGroups(NcGroup::ParentsGrps);
-      if( groupMap.size() != 1)      throw NcException("NcException","Error in test 2.30",__FILE__,__LINE__);
+      if( groupMap.size() != 1)      throw NcException("Error in test 2.30",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.31",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.31",__FILE__,__LINE__);
 
       groupMap = groupA.getGroups(NcGroup::ChildrenOfChildrenGrps);
-      if( groupMap.size() != 0)      throw NcException("NcException","Error in test 2.32",__FILE__,__LINE__);
+      if( groupMap.size() != 0)      throw NcException("Error in test 2.32",__FILE__,__LINE__);
 
       groupMap = groupA.getGroups(NcGroup::AllChildrenGrps);
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.33",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.33",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.34",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.34",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.35",__FILE__,__LINE__);
-      
+      if( iter == groupMap.end())    throw NcException("Error in test 2.35",__FILE__,__LINE__);
+
       groupMap = groupA.getGroups(NcGroup::ParentsAndCurrentGrps);
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.36",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.36",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.37",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.37",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.38",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.38",__FILE__,__LINE__);
 
       groupMap = groupA.getGroups(NcGroup::AllGrps);
-      if( groupMap.size() != 4)      throw NcException("NcException","Error in test 2.39",__FILE__,__LINE__);
+      if( groupMap.size() != 4)      throw NcException("Error in test 2.39",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.40",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.40",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.41",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.41",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.42",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.42",__FILE__,__LINE__);
       iter=groupMap.find("groupC");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.43",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.43",__FILE__,__LINE__);
 
       // operations on groupB
 
       groupMap = groupB.getGroups();
-      if( groupMap.size() != 0)      throw NcException("NcException","Error in test 2.44",__FILE__,__LINE__);
+      if( groupMap.size() != 0)      throw NcException("Error in test 2.44",__FILE__,__LINE__);
 
       groupMap =groupB.getGroups(NcGroup::ChildrenGrps);
-      if( groupMap.size() != 0)      throw NcException("NcException","Error in test 2.45",__FILE__,__LINE__);
-      
+      if( groupMap.size() != 0)      throw NcException("Error in test 2.45",__FILE__,__LINE__);
+
       groupMap = groupB.getGroups(NcGroup::ParentsGrps);
-      if( groupMap.size() != 2)      throw NcException("NcException","Error in test 2.46",__FILE__,__LINE__);
+      if( groupMap.size() != 2)      throw NcException("Error in test 2.46",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.47",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.47",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.48",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.48",__FILE__,__LINE__);
 
       groupMap = groupB.getGroups(NcGroup::ChildrenOfChildrenGrps);
-      if( groupMap.size() != 0)      throw NcException("NcException","Error in test 2.49",__FILE__,__LINE__);
+      if( groupMap.size() != 0)      throw NcException("Error in test 2.49",__FILE__,__LINE__);
 
       groupMap = groupB.getGroups(NcGroup::AllChildrenGrps);
-      if( groupMap.size() != 0)      throw NcException("NcException","Error in test 2.50",__FILE__,__LINE__);
-      
+      if( groupMap.size() != 0)      throw NcException("Error in test 2.50",__FILE__,__LINE__);
+
       groupMap = groupB.getGroups(NcGroup::ParentsAndCurrentGrps);
-      if( groupMap.size() != 3)      throw NcException("NcException","Error in test 2.51",__FILE__,__LINE__);
+      if( groupMap.size() != 3)      throw NcException("Error in test 2.51",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.52",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.52",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.53",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.53",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.54",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.54",__FILE__,__LINE__);
 
       groupMap = groupB.getGroups(NcGroup::AllGrps);
-      if( groupMap.size() != 3)      throw NcException("NcException","Error in test 2.55",__FILE__,__LINE__);
+      if( groupMap.size() != 3)      throw NcException("Error in test 2.55",__FILE__,__LINE__);
       iter=groupMap.find("/");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.56",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.56",__FILE__,__LINE__);
       iter=groupMap.find("groupA");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.57",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.57",__FILE__,__LINE__);
       iter=groupMap.find("groupB");
-      if( iter == groupMap.end())    throw NcException("NcException","Error in test 2.58",__FILE__,__LINE__);
+      if( iter == groupMap.end())    throw NcException("Error in test 2.58",__FILE__,__LINE__);
 
     }
     cout <<"    -----------   passed\n";
@@ -204,157 +204,157 @@ try
       // operations on ncFile:groupA
 
       groupSet = ncFile.getGroups("groupA");
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.1",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.1",__FILE__,__LINE__);
       iter=groupSet.find(groupA);
-      if( iter == groupSet.end())    throw NcException("NcException","Error in test 3.2",__FILE__,__LINE__);
-      if( iter->getName() != "groupA")throw NcException("NcException","Error in test 3.3",__FILE__,__LINE__);
+      if( iter == groupSet.end())    throw NcException("Error in test 3.2",__FILE__,__LINE__);
+      if( iter->getName() != "groupA")throw NcException("Error in test 3.3",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupA",NcGroup::ChildrenGrps);
-      if( groupSet.count(groupA) != 1)throw NcException("NcException","Error in test 3.4",__FILE__,__LINE__);
+      if( groupSet.count(groupA) != 1)throw NcException("Error in test 3.4",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupA",NcGroup::ParentsGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.5",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.5",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupA",NcGroup::ChildrenOfChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.6",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.6",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupA",NcGroup::AllChildrenGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.7",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.7",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupA",NcGroup::ParentsAndCurrentGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.8",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.8",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupA",NcGroup::AllGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.9",__FILE__,__LINE__);
-      
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.9",__FILE__,__LINE__);
+
 
       // operations on ncFile:groupB
 
       groupSet = ncFile.getGroups("groupB");
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.10",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.10",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupB",NcGroup::ChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.11",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.11",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupB",NcGroup::ParentsGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.12",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.12",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupB",NcGroup::ChildrenOfChildrenGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.13",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.13",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupB",NcGroup::AllChildrenGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.14",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.14",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupB",NcGroup::ParentsAndCurrentGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.15",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.15",__FILE__,__LINE__);
 
       groupSet = ncFile.getGroups("groupB",NcGroup::AllGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.16",__FILE__,__LINE__);
-      
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.16",__FILE__,__LINE__);
+
 
       // operations on groupA:groupA
 
       groupSet = groupA.getGroups("groupA");
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.17",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.17",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA",NcGroup::ChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.18",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.18",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA",NcGroup::ParentsGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.19",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.19",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA",NcGroup::ChildrenOfChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.20",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.20",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA",NcGroup::AllChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.21",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.21",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA",NcGroup::ParentsAndCurrentGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.22",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.22",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA",NcGroup::AllGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.23",__FILE__,__LINE__);
-      
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.23",__FILE__,__LINE__);
+
 
 
       // operations on groupA:ncFile
 
       groupSet = groupA.getGroups("/");
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.24",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.24",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("/",NcGroup::ChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.25",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.25",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("/",NcGroup::ParentsGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.26",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.26",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("/",NcGroup::ChildrenOfChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.27",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.27",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("/",NcGroup::AllChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.28",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.28",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("/",NcGroup::ParentsAndCurrentGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.29",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.29",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("/",NcGroup::AllGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.30",__FILE__,__LINE__);
-      
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.30",__FILE__,__LINE__);
+
 
 
       // operations on groupA:groupB
 
       groupSet = groupA.getGroups("groupB");
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.31",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.31",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupB",NcGroup::ChildrenGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.32",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.32",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupB",NcGroup::ParentsGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.33",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.33",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupB",NcGroup::ChildrenOfChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.34",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.34",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupB",NcGroup::AllChildrenGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.35",__FILE__,__LINE__);
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.35",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupB",NcGroup::ParentsAndCurrentGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.36",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.36",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupB",NcGroup::AllGrps);
-      if( groupSet.size() != 1)      throw NcException("NcException","Error in test 3.37",__FILE__,__LINE__);
-      
+      if( groupSet.size() != 1)      throw NcException("Error in test 3.37",__FILE__,__LINE__);
+
 
       // operations on groupA:groupA0
 
       groupSet = groupA.getGroups("groupA0");
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.38",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.38",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA0",NcGroup::ChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.39",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.39",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA0",NcGroup::ParentsGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.40",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.40",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA0",NcGroup::ChildrenOfChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.41",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.41",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA0",NcGroup::AllChildrenGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.42",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.42",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA0",NcGroup::ParentsAndCurrentGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.43",__FILE__,__LINE__);
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.43",__FILE__,__LINE__);
 
       groupSet = groupA.getGroups("groupA0",NcGroup::AllGrps);
-      if( groupSet.size() != 0)      throw NcException("NcException","Error in test 3.44",__FILE__,__LINE__);
-      
+      if( groupSet.size() != 0)      throw NcException("Error in test 3.44",__FILE__,__LINE__);
+
     }
 
     cout <<"    -----------   passed\n";
-    
-    
-    
+
+
+
 
 
     cout <<left<<setw(50)<<"Testing getGroup(\"name\",[netCDF::Location])";
@@ -362,24 +362,24 @@ try
 
       // operations on ncFile:groupA
 
-      if( ncFile.getGroup("groupA").getName() != "groupA")  throw NcException("NcException","Error in test 4.1",__FILE__,__LINE__);
-      if( !ncFile.getGroup("groupB").isNull())              throw NcException("NcException","Error in test 4.2",__FILE__,__LINE__);
-      
+      if( ncFile.getGroup("groupA").getName() != "groupA")  throw NcException("Error in test 4.1",__FILE__,__LINE__);
+      if( !ncFile.getGroup("groupB").isNull())              throw NcException("Error in test 4.2",__FILE__,__LINE__);
+
     }
 
     cout <<"    -----------   passed\n";
-    
+
 
 
 
     cout <<left<<setw(50)<<"Testing getParentGroup()";
 
-    if( !ncFile.getParentGroup().isNull())            throw NcException("NcException","Error in test 5.1",__FILE__,__LINE__);
-    if( groupA.getParentGroup().getName() != "/")     throw NcException("NcException","Error in test 5.2",__FILE__,__LINE__);
-    if( groupA0.getParentGroup().getName() != "/")    throw NcException("NcException","Error in test 5.3",__FILE__,__LINE__);
-    if( groupB.getParentGroup().getName() != "groupA")throw NcException("NcException","Error in test 5.4",__FILE__,__LINE__);
-    if( groupC.getParentGroup().getName() != "groupA")throw NcException("NcException","Error in test 5.5",__FILE__,__LINE__);
-    
+    if( !ncFile.getParentGroup().isNull())            throw NcException("Error in test 5.1",__FILE__,__LINE__);
+    if( groupA.getParentGroup().getName() != "/")     throw NcException("Error in test 5.2",__FILE__,__LINE__);
+    if( groupA0.getParentGroup().getName() != "/")    throw NcException("Error in test 5.3",__FILE__,__LINE__);
+    if( groupB.getParentGroup().getName() != "groupA")throw NcException("Error in test 5.4",__FILE__,__LINE__);
+    if( groupC.getParentGroup().getName() != "groupA")throw NcException("Error in test 5.5",__FILE__,__LINE__);
+
     cout <<"    -----------   passed\n";
 
 
@@ -388,5 +388,6 @@ try
    {
      cout << "unknown error"<<endl;
      e.what();
+     return e.errorCode();
    }
 }
diff --git a/cxx4/test_open_close.cpp b/cxx4/test_open_close.cpp
new file mode 100644
index 0000000..6624bec
--- /dev/null
+++ b/cxx4/test_open_close.cpp
@@ -0,0 +1,57 @@
+/*! Test open() and close() methods for NcFile.
+ *
+ * Methods contributed by user `Luthaf`. See
+ * https://github.com/Unidata/netcdf-cxx4/pull/18/files
+ * for more information.
+ */
+#include <iostream>
+#include <string>
+#include <vector>
+#include <set>
+#include <netcdf>
+#include <iomanip>
+#include "test_utilities.h"
+using namespace std;
+using namespace netCDF;
+using namespace netCDF::exceptions;
+
+/*! Standard 'main' function.
+ *
+ */
+int main() {
+    NcFile file;
+
+    // Test opening a null file. Should fail.
+    cout << "Attempting to open a file that doesn't exist... ";
+    try {
+      file.open("Doesn't Exist.",NcFile::read);
+      cout << "Error. Expected an exception." << endl;
+      return -1;
+    } catch(NcException &e) {
+      cout << "Caught Expected Exception." << endl;
+    }
+
+    // Test opening a file that exists.
+    cout << "Opening file \"firstFile.cdf\"... ";
+    try {
+      file.open("firstFile.cdf",NcFile::replace);
+      cout << "Success." << endl;
+    } catch(NcException &e) {
+      cout << "Caught unexpected exception." << endl;
+      return e.errorCode();
+    }
+
+    // Test closing a valid file.
+    cout << "Closing file...";
+    try {
+      file.close();
+      cout << "Success." << endl;
+    } catch(NcException &e) {
+      cout << "Caught unexpected exception." << endl;
+      return e.errorCode();
+    }
+
+
+    cout << endl << "Finished." << endl;
+    return 0;
+}
diff --git a/cxx4/test_type.cpp b/cxx4/test_type.cpp
index e2c7085..1244fa2 100644
--- a/cxx4/test_type.cpp
+++ b/cxx4/test_type.cpp
@@ -27,14 +27,14 @@ try
   {
     cout<<"Opening file \"firstFile.cdf\" with NcFile::replace"<<endl;
     NcFile ncFile("firstFile.cdf",NcFile::replace);
-    
+
     cout<<left<<std::setw(57)<<"Testing addGroup(\"groupName\")";
     NcGroup groupA(ncFile.addGroup("groupA"));
     NcGroup groupA0(ncFile.addGroup("groupA0"));
     NcGroup groupB(groupA.addGroup("groupB"));
     NcGroup groupC(groupA.addGroup("groupC"));
     cout <<"    -----------   passed\n";
-    
+
     vector<string>  b1(10);
     vector<unsigned char *>  b2(10);
     vector<signed char*>  b3(10);
@@ -59,82 +59,82 @@ try
 
 
     cout <<left<<setw(57)<<"Testing getName()";
-    if( ncByte.getName()   !=  "byte")   throw NcException("NcException","Error in test 1.1",__FILE__,__LINE__);
-    if( ncUbyte.getName()  !=  "ubyte")  throw NcException("NcException","Error in test 1.2",__FILE__,__LINE__);
-    if( ncChar.getName()   !=  "char")   throw NcException("NcException","Error in test 1.3",__FILE__,__LINE__);
-    if( ncShort.getName()  !=  "short")  throw NcException("NcException","Error in test 1.4",__FILE__,__LINE__);
-    if( ncUshort.getName() !=  "ushort") throw NcException("NcException","Error in test 1.5",__FILE__,__LINE__);
-    if( ncInt.getName()    !=  "int")    throw NcException("NcException","Error in test 1.6",__FILE__,__LINE__);
-    if( ncUint.getName()   !=  "uint")   throw NcException("NcException","Error in test 1.7",__FILE__,__LINE__);
-    if( ncInt64.getName()  !=  "int64")  throw NcException("NcException","Error in test 1.8",__FILE__,__LINE__);
-    if( ncUint64.getName() !=  "uint64") throw NcException("NcException","Error in test 1.9",__FILE__,__LINE__);
-    if( ncFloat.getName()  !=  "float")  throw NcException("NcException","Error in test 1.10",__FILE__,__LINE__);
-    if( ncDouble.getName() !=  "double") throw NcException("NcException","Error in test 1.11",__FILE__,__LINE__);
-    if( ncString.getName() !=  "string") throw NcException("NcException","Error in test 1.12",__FILE__,__LINE__);
+    if( ncByte.getName()   !=  "byte")   throw NcException("Error in test 1.1",__FILE__,__LINE__);
+    if( ncUbyte.getName()  !=  "ubyte")  throw NcException("Error in test 1.2",__FILE__,__LINE__);
+    if( ncChar.getName()   !=  "char")   throw NcException("Error in test 1.3",__FILE__,__LINE__);
+    if( ncShort.getName()  !=  "short")  throw NcException("Error in test 1.4",__FILE__,__LINE__);
+    if( ncUshort.getName() !=  "ushort") throw NcException("Error in test 1.5",__FILE__,__LINE__);
+    if( ncInt.getName()    !=  "int")    throw NcException("Error in test 1.6",__FILE__,__LINE__);
+    if( ncUint.getName()   !=  "uint")   throw NcException("Error in test 1.7",__FILE__,__LINE__);
+    if( ncInt64.getName()  !=  "int64")  throw NcException("Error in test 1.8",__FILE__,__LINE__);
+    if( ncUint64.getName() !=  "uint64") throw NcException("Error in test 1.9",__FILE__,__LINE__);
+    if( ncFloat.getName()  !=  "float")  throw NcException("Error in test 1.10",__FILE__,__LINE__);
+    if( ncDouble.getName() !=  "double") throw NcException("Error in test 1.11",__FILE__,__LINE__);
+    if( ncString.getName() !=  "string") throw NcException("Error in test 1.12",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing getParentGroup() and isNull()";
-    if( !ncByte.getParentGroup().isNull())       throw NcException("NcException","Error in test 2.1",__FILE__,__LINE__);
-    if( !ncUbyte.getParentGroup().isNull())      throw NcException("NcException","Error in test 2.2",__FILE__,__LINE__);
-    if( !ncChar.getParentGroup().isNull())       throw NcException("NcException","Error in test 2.3",__FILE__,__LINE__);
-    if( !ncShort.getParentGroup().isNull())      throw NcException("NcException","Error in test 2.4",__FILE__,__LINE__);
-    if( !ncUshort.getParentGroup().isNull())     throw NcException("NcException","Error in test 2.5",__FILE__,__LINE__);
-    if( !ncInt.getParentGroup().isNull())        throw NcException("NcException","Error in test 2.6",__FILE__,__LINE__);
-    if( !ncUint.getParentGroup().isNull())       throw NcException("NcException","Error in test 2.7",__FILE__,__LINE__);
-    if( !ncInt64.getParentGroup().isNull())      throw NcException("NcException","Error in test 2.8",__FILE__,__LINE__);
-    if( !ncUint64.getParentGroup().isNull())     throw NcException("NcException","Error in test 2.9",__FILE__,__LINE__);
-    if( !ncFloat.getParentGroup().isNull())      throw NcException("NcException","Error in test 2.10",__FILE__,__LINE__);
-    if( !ncDouble.getParentGroup().isNull())     throw NcException("NcException","Error in test 2.11",__FILE__,__LINE__);
-    if( !ncString.getParentGroup().isNull())     throw NcException("NcException","Error in test 2.12",__FILE__,__LINE__);
+    if( !ncByte.getParentGroup().isNull())       throw NcException("Error in test 2.1",__FILE__,__LINE__);
+    if( !ncUbyte.getParentGroup().isNull())      throw NcException("Error in test 2.2",__FILE__,__LINE__);
+    if( !ncChar.getParentGroup().isNull())       throw NcException("Error in test 2.3",__FILE__,__LINE__);
+    if( !ncShort.getParentGroup().isNull())      throw NcException("Error in test 2.4",__FILE__,__LINE__);
+    if( !ncUshort.getParentGroup().isNull())     throw NcException("Error in test 2.5",__FILE__,__LINE__);
+    if( !ncInt.getParentGroup().isNull())        throw NcException("Error in test 2.6",__FILE__,__LINE__);
+    if( !ncUint.getParentGroup().isNull())       throw NcException("Error in test 2.7",__FILE__,__LINE__);
+    if( !ncInt64.getParentGroup().isNull())      throw NcException("Error in test 2.8",__FILE__,__LINE__);
+    if( !ncUint64.getParentGroup().isNull())     throw NcException("Error in test 2.9",__FILE__,__LINE__);
+    if( !ncFloat.getParentGroup().isNull())      throw NcException("Error in test 2.10",__FILE__,__LINE__);
+    if( !ncDouble.getParentGroup().isNull())     throw NcException("Error in test 2.11",__FILE__,__LINE__);
+    if( !ncString.getParentGroup().isNull())     throw NcException("Error in test 2.12",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
 
     cout <<left<<setw(57)<<"Testing getSize()";
-    if( ncByte.getSize() !=  1)                  throw NcException("NcException","Error in test 3.1",__FILE__,__LINE__);
-    if( ncUbyte.getSize() !=  1)                 throw NcException("NcException","Error in test 3.2",__FILE__,__LINE__);
-    if( ncChar.getSize() !=  1)                  throw NcException("NcException","Error in test 3.3",__FILE__,__LINE__);
-    if( ncShort.getSize() !=  2)                 throw NcException("NcException","Error in test 3.4",__FILE__,__LINE__);
-    if( ncUshort.getSize() !=  2)                throw NcException("NcException","Error in test 3.5",__FILE__,__LINE__);
-    if( ncInt.getSize() !=  4)                   throw NcException("NcException","Error in test 3.6",__FILE__,__LINE__);
-    if( ncUint.getSize() !=  4)                  throw NcException("NcException","Error in test 3.7",__FILE__,__LINE__);
-    if( ncInt64.getSize() !=  8)                 throw NcException("NcException","Error in test 3.8",__FILE__,__LINE__);
-    if( ncUint64.getSize() !=  8)                throw NcException("NcException","Error in test 3.9",__FILE__,__LINE__);
-    if( ncFloat.getSize() !=  4)                 throw NcException("NcException","Error in test 3.10",__FILE__,__LINE__);
-    if( ncDouble.getSize() !=  8)                throw NcException("NcException","Error in test 3.11",__FILE__,__LINE__);
-    if( ncString.getSize() !=  sizeof(char *))   throw NcException("NcException","Error in test 3.12",__FILE__,__LINE__);
+    if( ncByte.getSize() !=  1)                  throw NcException("Error in test 3.1",__FILE__,__LINE__);
+    if( ncUbyte.getSize() !=  1)                 throw NcException("Error in test 3.2",__FILE__,__LINE__);
+    if( ncChar.getSize() !=  1)                  throw NcException("Error in test 3.3",__FILE__,__LINE__);
+    if( ncShort.getSize() !=  2)                 throw NcException("Error in test 3.4",__FILE__,__LINE__);
+    if( ncUshort.getSize() !=  2)                throw NcException("Error in test 3.5",__FILE__,__LINE__);
+    if( ncInt.getSize() !=  4)                   throw NcException("Error in test 3.6",__FILE__,__LINE__);
+    if( ncUint.getSize() !=  4)                  throw NcException("Error in test 3.7",__FILE__,__LINE__);
+    if( ncInt64.getSize() !=  8)                 throw NcException("Error in test 3.8",__FILE__,__LINE__);
+    if( ncUint64.getSize() !=  8)                throw NcException("Error in test 3.9",__FILE__,__LINE__);
+    if( ncFloat.getSize() !=  4)                 throw NcException("Error in test 3.10",__FILE__,__LINE__);
+    if( ncDouble.getSize() !=  8)                throw NcException("Error in test 3.11",__FILE__,__LINE__);
+    if( ncString.getSize() !=  sizeof(char *))   throw NcException("Error in test 3.12",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing getTypeClass()";
-    if( ncByte.getTypeClass() !=  NcType::nc_BYTE)     throw NcException("NcException","Error in test 4.1",__FILE__,__LINE__);
-    if( ncUbyte.getTypeClass() !=  NcType::nc_UBYTE)   throw NcException("NcException","Error in test 4.2",__FILE__,__LINE__);
-    if( ncChar.getTypeClass() !=  NcType::nc_CHAR)     throw NcException("NcException","Error in test 4.3",__FILE__,__LINE__);
-    if( ncShort.getTypeClass() !=  NcType::nc_SHORT)   throw NcException("NcException","Error in test 4.4",__FILE__,__LINE__);
-    if( ncUshort.getTypeClass() !=  NcType::nc_USHORT) throw NcException("NcException","Error in test 4.5",__FILE__,__LINE__);
-    if( ncInt.getTypeClass() !=  NcType::nc_INT)       throw NcException("NcException","Error in test 4.6",__FILE__,__LINE__);
-    if( ncUint.getTypeClass() !=  NcType::nc_UINT)     throw NcException("NcException","Error in test 4.7",__FILE__,__LINE__);
-    if( ncInt64.getTypeClass() !=  NcType::nc_INT64)   throw NcException("NcException","Error in test 4.8",__FILE__,__LINE__);
-    if( ncUint64.getTypeClass() !=  NcType::nc_UINT64) throw NcException("NcException","Error in test 4.9",__FILE__,__LINE__);
-    if( ncFloat.getTypeClass() !=  NcType::nc_FLOAT)   throw NcException("NcException","Error in test 4.10",__FILE__,__LINE__);
-    if( ncDouble.getTypeClass() !=  NcType::nc_DOUBLE) throw NcException("NcException","Error in test 4.11",__FILE__,__LINE__);
-    if( ncString.getTypeClass() !=  NcType::nc_STRING) throw NcException("NcException","Error in test 4.12",__FILE__,__LINE__);
+    if( ncByte.getTypeClass() !=  NcType::nc_BYTE)     throw NcException("Error in test 4.1",__FILE__,__LINE__);
+    if( ncUbyte.getTypeClass() !=  NcType::nc_UBYTE)   throw NcException("Error in test 4.2",__FILE__,__LINE__);
+    if( ncChar.getTypeClass() !=  NcType::nc_CHAR)     throw NcException("Error in test 4.3",__FILE__,__LINE__);
+    if( ncShort.getTypeClass() !=  NcType::nc_SHORT)   throw NcException("Error in test 4.4",__FILE__,__LINE__);
+    if( ncUshort.getTypeClass() !=  NcType::nc_USHORT) throw NcException("Error in test 4.5",__FILE__,__LINE__);
+    if( ncInt.getTypeClass() !=  NcType::nc_INT)       throw NcException("Error in test 4.6",__FILE__,__LINE__);
+    if( ncUint.getTypeClass() !=  NcType::nc_UINT)     throw NcException("Error in test 4.7",__FILE__,__LINE__);
+    if( ncInt64.getTypeClass() !=  NcType::nc_INT64)   throw NcException("Error in test 4.8",__FILE__,__LINE__);
+    if( ncUint64.getTypeClass() !=  NcType::nc_UINT64) throw NcException("Error in test 4.9",__FILE__,__LINE__);
+    if( ncFloat.getTypeClass() !=  NcType::nc_FLOAT)   throw NcException("Error in test 4.10",__FILE__,__LINE__);
+    if( ncDouble.getTypeClass() !=  NcType::nc_DOUBLE) throw NcException("Error in test 4.11",__FILE__,__LINE__);
+    if( ncString.getTypeClass() !=  NcType::nc_STRING) throw NcException("Error in test 4.12",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing getTypeClassName()";
-    if( ncByte.getTypeClassName() !=  "nc_BYTE")     throw NcException("NcException","Error in test 5.1",__FILE__,__LINE__);
-    if( ncUbyte.getTypeClassName() !=  "nc_UBYTE")   throw NcException("NcException","Error in test 5.2",__FILE__,__LINE__);
-    if( ncChar.getTypeClassName() !=  "nc_CHAR")     throw NcException("NcException","Error in test 5.3",__FILE__,__LINE__);
-    if( ncShort.getTypeClassName() !=  "nc_SHORT")   throw NcException("NcException","Error in test 5.4",__FILE__,__LINE__);
-    if( ncUshort.getTypeClassName() !=  "nc_USHORT") throw NcException("NcException","Error in test 5.5",__FILE__,__LINE__);
-    if( ncInt.getTypeClassName() !=  "nc_INT")       throw NcException("NcException","Error in test 5.6",__FILE__,__LINE__);
-    if( ncUint.getTypeClassName() !=  "nc_UINT")     throw NcException("NcException","Error in test 5.7",__FILE__,__LINE__);
-    if( ncInt64.getTypeClassName() !=  "nc_INT64")   throw NcException("NcException","Error in test 5.8",__FILE__,__LINE__);
-    if( ncUint64.getTypeClassName() !=  "nc_UINT64") throw NcException("NcException","Error in test 5.9",__FILE__,__LINE__);
-    if( ncFloat.getTypeClassName() !=  "nc_FLOAT")   throw NcException("NcException","Error in test 5.10",__FILE__,__LINE__);
-    if( ncDouble.getTypeClassName() !=  "nc_DOUBLE") throw NcException("NcException","Error in test 5.11",__FILE__,__LINE__);
-    if( ncString.getTypeClassName() !=  "nc_STRING") throw NcException("NcException","Error in test 5.12",__FILE__,__LINE__);
-    cout <<"    -----------   passed\n";
-
-    
+    if( ncByte.getTypeClassName() !=  "nc_BYTE")     throw NcException("Error in test 5.1",__FILE__,__LINE__);
+    if( ncUbyte.getTypeClassName() !=  "nc_UBYTE")   throw NcException("Error in test 5.2",__FILE__,__LINE__);
+    if( ncChar.getTypeClassName() !=  "nc_CHAR")     throw NcException("Error in test 5.3",__FILE__,__LINE__);
+    if( ncShort.getTypeClassName() !=  "nc_SHORT")   throw NcException("Error in test 5.4",__FILE__,__LINE__);
+    if( ncUshort.getTypeClassName() !=  "nc_USHORT") throw NcException("Error in test 5.5",__FILE__,__LINE__);
+    if( ncInt.getTypeClassName() !=  "nc_INT")       throw NcException("Error in test 5.6",__FILE__,__LINE__);
+    if( ncUint.getTypeClassName() !=  "nc_UINT")     throw NcException("Error in test 5.7",__FILE__,__LINE__);
+    if( ncInt64.getTypeClassName() !=  "nc_INT64")   throw NcException("Error in test 5.8",__FILE__,__LINE__);
+    if( ncUint64.getTypeClassName() !=  "nc_UINT64") throw NcException("Error in test 5.9",__FILE__,__LINE__);
+    if( ncFloat.getTypeClassName() !=  "nc_FLOAT")   throw NcException("Error in test 5.10",__FILE__,__LINE__);
+    if( ncDouble.getTypeClassName() !=  "nc_DOUBLE") throw NcException("Error in test 5.11",__FILE__,__LINE__);
+    if( ncString.getTypeClassName() !=  "nc_STRING") throw NcException("Error in test 5.12",__FILE__,__LINE__);
+    cout <<"    -----------   passed\n";
+
+
 
     cout <<left<<setw(57)<<"Testing creating new Compound Type";
     struct struct1{
@@ -143,7 +143,7 @@ try
       short mem3;
       double mem4;
     };
-    
+
     struct struct2{
       char mem1;
       double mem2;
@@ -174,55 +174,55 @@ try
 
     cout <<left<<setw(57)<<"Testing NcCompoundType==>NcType && NcType::getTypeClass()";
     NcType dummyType(compoundType2);
-    if(compoundType2.getTypeClass() != NcType::nc_COMPOUND) throw NcException("NcException","Error in test 8.1",__FILE__,__LINE__);
-    if(dummyType.getTypeClass() != NcType::nc_COMPOUND)     throw NcException("NcException","Error in test 8.2",__FILE__,__LINE__);
-    if(compoundType2.getTypeClass() != NcCompoundType::nc_COMPOUND) throw NcException("NcException","Error in test 8.3",__FILE__,__LINE__);
-    if(dummyType.getTypeClass() != NcCompoundType::nc_COMPOUND)     throw NcException("NcException","Error in test 8.4",__FILE__,__LINE__);
+    if(compoundType2.getTypeClass() != NcType::nc_COMPOUND) throw NcException("Error in test 8.1",__FILE__,__LINE__);
+    if(dummyType.getTypeClass() != NcType::nc_COMPOUND)     throw NcException("Error in test 8.2",__FILE__,__LINE__);
+    if(compoundType2.getTypeClass() != NcCompoundType::nc_COMPOUND) throw NcException("Error in test 8.3",__FILE__,__LINE__);
+    if(dummyType.getTypeClass() != NcCompoundType::nc_COMPOUND)     throw NcException("Error in test 8.4",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
     cout <<left<<setw(57)<<"Testing compoundClass.getMemberCount()";
-    if(compoundType2.getMemberCount() != 3)throw NcException("NcException","Error in test 9.1",__FILE__,__LINE__);
+    if(compoundType2.getMemberCount() != 3)throw NcException("Error in test 9.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcCompoundType::getMemberDimCount()";
-    if(compoundType2.getMemberDimCount(0) != 0)throw NcException("NcException","Error in test 10.1",__FILE__,__LINE__);
-    if(compoundType2.getMemberDimCount(1) != 0)throw NcException("NcException","Error in test 10.2",__FILE__,__LINE__);
-    if(compoundType2.getMemberDimCount(2) != 2)throw NcException("NcException","Error in test 10.3",__FILE__,__LINE__);
+    if(compoundType2.getMemberDimCount(0) != 0)throw NcException("Error in test 10.1",__FILE__,__LINE__);
+    if(compoundType2.getMemberDimCount(1) != 0)throw NcException("Error in test 10.2",__FILE__,__LINE__);
+    if(compoundType2.getMemberDimCount(2) != 2)throw NcException("Error in test 10.3",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
 
     cout <<left<<setw(57)<<"Testing NcCompoundType::getMemberShape(index)";
     vector<int> memberShape;
     memberShape =compoundType2.getMemberShape(0);
-    if(memberShape.size() != 0)throw NcException("NcException","Error in test 11.1",__FILE__,__LINE__);
+    if(memberShape.size() != 0)throw NcException("Error in test 11.1",__FILE__,__LINE__);
 
     memberShape =compoundType2.getMemberShape(1);
-    if(memberShape.size() != 0)throw NcException("NcException","Error in test 11.2",__FILE__,__LINE__);
+    if(memberShape.size() != 0)throw NcException("Error in test 11.2",__FILE__,__LINE__);
 
     memberShape =compoundType2.getMemberShape(2);
-    if(memberShape.size() != 2)throw NcException("NcException","Error in test 11.3",__FILE__,__LINE__);
-    if(memberShape[0] != 6)    throw NcException("NcException","Error in test 11.4",__FILE__,__LINE__);
-    if(memberShape[1] != 3)    throw NcException("NcException","Error in test 11.5",__FILE__,__LINE__);
+    if(memberShape.size() != 2)throw NcException("Error in test 11.3",__FILE__,__LINE__);
+    if(memberShape[0] != 6)    throw NcException("Error in test 11.4",__FILE__,__LINE__);
+    if(memberShape[1] != 3)    throw NcException("Error in test 11.5",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
 
     cout <<left<<setw(57)<<"Testing NcCompoundType::getMember(index).getName()";
-    if(compoundType2.getMember(0).getName() !=  "char")   throw NcException("NcException","Error in test 12.1",__FILE__,__LINE__);
-    if(compoundType2.getMember(1).getName() !=  "double") throw NcException("NcException","Error in test 12.2",__FILE__,__LINE__);
-    if(compoundType2.getMember(2).getName() !=  "short")  throw NcException("NcException","Error in test 12.3",__FILE__,__LINE__);
+    if(compoundType2.getMember(0).getName() !=  "char")   throw NcException("Error in test 12.1",__FILE__,__LINE__);
+    if(compoundType2.getMember(1).getName() !=  "double") throw NcException("Error in test 12.2",__FILE__,__LINE__);
+    if(compoundType2.getMember(2).getName() !=  "short")  throw NcException("Error in test 12.3",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
 
     cout <<left<<setw(57)<<"Testing NcCompoundType == NcType";
     NcType dummyType2(compoundType2);
-    if(!(dummyType2 == compoundType2)) throw NcException("NcException","Error in test 13.1",__FILE__,__LINE__);
+    if(!(dummyType2 == compoundType2)) throw NcException("Error in test 13.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcCompoundType == NcCompoundType";
     NcCompoundType dummy3(compoundType2);
-    if(!(dummy3 == compoundType2)) throw NcException("NcException","Error in test 14.1",__FILE__,__LINE__);
+    if(!(dummy3 == compoundType2)) throw NcException("Error in test 14.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
 
     ////////////////////////////
 
@@ -232,30 +232,30 @@ try
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcVlenType::getTypeClass()";
-    if(vlenType1.getTypeClass() != NcType::nc_VLEN) throw NcException("NcException","Error in test 15.1",__FILE__,__LINE__);
+    if(vlenType1.getTypeClass() != NcType::nc_VLEN) throw NcException("Error in test 15.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
     cout <<left<<setw(57)<<"Testing NcVlenType::getTypeClassName()";
-    if(vlenType1.getTypeClassName() != "nc_VLEN") throw NcException("NcException","Error in test 16.1",__FILE__,__LINE__);
+    if(vlenType1.getTypeClassName() != "nc_VLEN") throw NcException("Error in test 16.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
     cout <<left<<setw(57)<<"Testing NcVlenType::getName()";
-    if(vlenType1.getName() != "vlenType_1") throw NcException("NcException","Error in test 17.1",__FILE__,__LINE__);
+    if(vlenType1.getName() != "vlenType_1") throw NcException("Error in test 17.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
     cout <<left<<setw(57)<<"Testing NcVlenType::getBaseType(); == and !=";
-    if(!(vlenType1.getBaseType() == ncShort)) throw NcException("NcException","Error in test 18.1",__FILE__,__LINE__);
-    if(vlenType1.getBaseType() != ncShort) throw NcException("NcException","Error in test 18.2",__FILE__,__LINE__);
+    if(!(vlenType1.getBaseType() == ncShort)) throw NcException("Error in test 18.1",__FILE__,__LINE__);
+    if(vlenType1.getBaseType() != ncShort) throw NcException("Error in test 18.2",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
 
     cout <<left<<setw(57)<<"Testing NcVlenType constructors";
     NcType typevlen(vlenType1);
     NcVlenType vlenvlenType(typevlen);
-    if(vlenType1 != vlenvlenType) throw NcException("NcException","Error in test 19.1",__FILE__,__LINE__);
-    if(vlenType1 != typevlen) throw NcException("NcException","Error in test 19.2",__FILE__,__LINE__);
+    if(vlenType1 != vlenvlenType) throw NcException("Error in test 19.1",__FILE__,__LINE__);
+    if(vlenType1 != typevlen) throw NcException("Error in test 19.2",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
-    
+
 
 
 
@@ -273,43 +273,43 @@ try
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcEnumType::getBaseType() == and !=";
-    if(enumType1.getBaseType() != ncShort) throw NcException("NcException","Error in test 20.1",__FILE__,__LINE__);
-    if(!(enumType1.getBaseType() == ncShort)) throw NcException("NcException","Error in test 20.2",__FILE__,__LINE__);
+    if(enumType1.getBaseType() != ncShort) throw NcException("Error in test 20.1",__FILE__,__LINE__);
+    if(!(enumType1.getBaseType() == ncShort)) throw NcException("Error in test 20.2",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcEnumType::getMemberCount()";
-    if(enumType1.getMemberCount() != 3) throw NcException("NcException","Error in test 21.1",__FILE__,__LINE__);
+    if(enumType1.getMemberCount() != 3) throw NcException("Error in test 21.1",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcEnumType::getMemberNameFromIndex(index)";
-    if(enumType1.getMemberNameFromIndex(0) != "Monday") throw NcException("NcException","Error in test 22.1",__FILE__,__LINE__);
-    if(enumType1.getMemberNameFromIndex(1) != "Tuesday") throw NcException("NcException","Error in test 22.2",__FILE__,__LINE__);
-    if(enumType1.getMemberNameFromIndex(2) != "Wednesday") throw NcException("NcException","Error in test 22.3",__FILE__,__LINE__);
+    if(enumType1.getMemberNameFromIndex(0) != "Monday") throw NcException("Error in test 22.1",__FILE__,__LINE__);
+    if(enumType1.getMemberNameFromIndex(1) != "Tuesday") throw NcException("Error in test 22.2",__FILE__,__LINE__);
+    if(enumType1.getMemberNameFromIndex(2) != "Wednesday") throw NcException("Error in test 22.3",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcEnumType::getMemberNameFromValue(index)";
-    if(enumType1.getMemberNameFromValue(1) != "Monday") throw NcException("NcException","Error in test 23.1",__FILE__,__LINE__);
-    if(enumType1.getMemberNameFromValue(7) != "Tuesday") throw NcException("NcException","Error in test 23.2",__FILE__,__LINE__);
-    if(enumType1.getMemberNameFromValue(-20) != "Wednesday") throw NcException("NcException","Error in test 23.3",__FILE__,__LINE__);
+    if(enumType1.getMemberNameFromValue(1) != "Monday") throw NcException("Error in test 23.1",__FILE__,__LINE__);
+    if(enumType1.getMemberNameFromValue(7) != "Tuesday") throw NcException("Error in test 23.2",__FILE__,__LINE__);
+    if(enumType1.getMemberNameFromValue(-20) != "Wednesday") throw NcException("Error in test 23.3",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcEnumType::getMemberValue(index,value)";
     short value;
     enumType1.getMemberValue(0,value);
-    if(value != 1) throw NcException("NcException","Error in test 24.1",__FILE__,__LINE__);
+    if(value != 1) throw NcException("Error in test 24.1",__FILE__,__LINE__);
     enumType1.getMemberValue(1,value);
-    if(value != 7) throw NcException("NcException","Error in test 24.2",__FILE__,__LINE__);
+    if(value != 7) throw NcException("Error in test 24.2",__FILE__,__LINE__);
     enumType1.getMemberValue(2,value);
-    if(value != -20) throw NcException("NcException","Error in test 24.3",__FILE__,__LINE__);
+    if(value != -20) throw NcException("Error in test 24.3",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     cout <<left<<setw(57)<<"Testing NcEnumType constructors == and !=";
     NcType typeEnum(enumType1);
     NcEnumType EnumEnumType(typeEnum);
-    if(enumType1 != EnumEnumType) throw NcException("NcException","Error in test 25.1",__FILE__,__LINE__);
-    if(enumType1 != typeEnum) throw NcException("NcException","Error in test 25.2",__FILE__,__LINE__);
-    if(!(enumType1 == EnumEnumType)) throw NcException("NcException","Error in test 25.3",__FILE__,__LINE__);
-       if(!(enumType1 == typeEnum)) throw NcException("NcException","Error in test 25.4",__FILE__,__LINE__);
+    if(enumType1 != EnumEnumType) throw NcException("Error in test 25.1",__FILE__,__LINE__);
+    if(enumType1 != typeEnum) throw NcException("Error in test 25.2",__FILE__,__LINE__);
+    if(!(enumType1 == EnumEnumType)) throw NcException("Error in test 25.3",__FILE__,__LINE__);
+       if(!(enumType1 == typeEnum)) throw NcException("Error in test 25.4",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
 
@@ -317,30 +317,30 @@ try
 
     cout <<left<<setw(57)<<"Testing ncFile::getType() (overloaded)";
     NcType typ1(ncFile.getType("enumType_1"));
-    if(ncFile.getTypeCount()!= 4) throw NcException("NcException","Error in test 26.1",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_BYTE)!= 0) throw NcException("NcException","Error in test 26.3",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_CHAR)!= 0) throw NcException("NcException","Error in test 26.4",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_SHORT)!= 0) throw NcException("NcException","Error in test 26.5",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_INT)!= 0) throw NcException("NcException","Error in test 26.6",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_FLOAT)!= 0) throw NcException("NcException","Error in test 26.7",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_DOUBLE)!= 0) throw NcException("NcException","Error in test 26.8",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_UBYTE)!= 0) throw NcException("NcException","Error in test 26.9",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_USHORT)!= 0) throw NcException("NcException","Error in test 26.10",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_UINT)!= 0) throw NcException("NcException","Error in test 26.11",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_INT64)!= 0) throw NcException("NcException","Error in test 26.12",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_UINT64)!= 0) throw NcException("NcException","Error in test 26.13",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_STRING)!= 0) throw NcException("NcException","Error in test 26.14",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_VLEN)!= 1) throw NcException("NcException","Error in test 26.15",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_OPAQUE)!= 0) throw NcException("NcException","Error in test 26.16",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_ENUM)!= 1) throw NcException("NcException","Error in test 26.17",__FILE__,__LINE__);
-    if(ncFile.getTypeCount(NcType::nc_COMPOUND)!= 2) throw NcException("NcException","Error in test 26.18",__FILE__,__LINE__);
+    if(ncFile.getTypeCount()!= 4) throw NcException("Error in test 26.1",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_BYTE)!= 0) throw NcException("Error in test 26.3",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_CHAR)!= 0) throw NcException("Error in test 26.4",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_SHORT)!= 0) throw NcException("Error in test 26.5",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_INT)!= 0) throw NcException("Error in test 26.6",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_FLOAT)!= 0) throw NcException("Error in test 26.7",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_DOUBLE)!= 0) throw NcException("Error in test 26.8",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_UBYTE)!= 0) throw NcException("Error in test 26.9",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_USHORT)!= 0) throw NcException("Error in test 26.10",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_UINT)!= 0) throw NcException("Error in test 26.11",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_INT64)!= 0) throw NcException("Error in test 26.12",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_UINT64)!= 0) throw NcException("Error in test 26.13",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_STRING)!= 0) throw NcException("Error in test 26.14",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_VLEN)!= 1) throw NcException("Error in test 26.15",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_OPAQUE)!= 0) throw NcException("Error in test 26.16",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_ENUM)!= 1) throw NcException("Error in test 26.17",__FILE__,__LINE__);
+    if(ncFile.getTypeCount(NcType::nc_COMPOUND)!= 2) throw NcException("Error in test 26.18",__FILE__,__LINE__);
     cout <<"    -----------   passed\n";
 
     ncFile.getTypes("enumType_1",NcType::nc_ENUM);
     ncFile.getTypes(NcType::nc_ENUM);
     ncFile.getTypes("enumType_1");
     ncFile.getTypes();
-    
+
 
 
     cout <<left<<setw(57)<<"Testing ENUM ncFile::putVar() and NcFile::getVar()";
@@ -358,34 +358,34 @@ try
       enumValues[7] =  1;
       enumValues[8] =  -20;
       enumValues[9] =  7;
-      var_1.putVar(enumValues);  
+      var_1.putVar(enumValues);
 
       NcVar var_2(ncFile.getVar("var_1"));
-      
-      if(var_2.isNull()) throw NcException("NcException","Error in test 27.1",__FILE__,__LINE__);
+
+      if(var_2.isNull()) throw NcException("Error in test 27.1",__FILE__,__LINE__);
       short enumValues2[10];
       var_2.getVar(enumValues2);
-      if(enumValues[0] != 1)  throw NcException("NcException","Error in test 27.2",__FILE__,__LINE__);
-      if(enumValues[1] != 1)  throw NcException("NcException","Error in test 27.3",__FILE__,__LINE__);
-      if(enumValues[2] != 1)  throw NcException("NcException","Error in test 27.4",__FILE__,__LINE__);
-      if(enumValues[3] != 1)  throw NcException("NcException","Error in test 27.5",__FILE__,__LINE__);
-      if(enumValues[4] != 1)  throw NcException("NcException","Error in test 27.6",__FILE__,__LINE__);
-      if(enumValues[5] != 1)  throw NcException("NcException","Error in test 27.7",__FILE__,__LINE__);
-      if(enumValues[6] != 1)  throw NcException("NcException","Error in test 27.8",__FILE__,__LINE__);
-      if(enumValues[7] != 1)  throw NcException("NcException","Error in test 27.9",__FILE__,__LINE__);
-      if(enumValues[8] != -20)throw NcException("NcException","Error in test 27.10",__FILE__,__LINE__);
-      if(enumValues[9] != 7)  throw NcException("NcException","Error in test 27.11",__FILE__,__LINE__);
+      if(enumValues[0] != 1)  throw NcException("Error in test 27.2",__FILE__,__LINE__);
+      if(enumValues[1] != 1)  throw NcException("Error in test 27.3",__FILE__,__LINE__);
+      if(enumValues[2] != 1)  throw NcException("Error in test 27.4",__FILE__,__LINE__);
+      if(enumValues[3] != 1)  throw NcException("Error in test 27.5",__FILE__,__LINE__);
+      if(enumValues[4] != 1)  throw NcException("Error in test 27.6",__FILE__,__LINE__);
+      if(enumValues[5] != 1)  throw NcException("Error in test 27.7",__FILE__,__LINE__);
+      if(enumValues[6] != 1)  throw NcException("Error in test 27.8",__FILE__,__LINE__);
+      if(enumValues[7] != 1)  throw NcException("Error in test 27.9",__FILE__,__LINE__);
+      if(enumValues[8] != -20)throw NcException("Error in test 27.10",__FILE__,__LINE__);
+      if(enumValues[9] != 7)  throw NcException("Error in test 27.11",__FILE__,__LINE__);
     }
     cout <<"    -----------   passed\n";
- 
-  
+
+
 
 
 
     cout <<left<<setw(57)<<"Testing COMPOUND ncFile::putVar() and NcFile::getVar()";
     {
       vector<int> vecSize(2); vecSize[0]=6,vecSize[1]=3;
-      
+
       NcCompoundType compoundType3(ncFile.addCompoundType("compoundType_3",sizeof(struct3)));
       compoundType3.addMember("member1",ncInt,offsetof(struct3,mem1));
       compoundType3.addMember("member2",ncDouble,offsetof(struct3,mem2));
@@ -394,52 +394,52 @@ try
 
       NcDim dim3 = ncFile.addDim("dim3",2);
       NcVar var_3   = ncFile.addVar("var_3", compoundType3,dim3);
-      
+
       struct3 dummyStruct;
       dummyStruct.mem1=1;
       dummyStruct.mem2=-1.23456;
       dummyStruct.mem3[0]=1;
       dummyStruct.mem3[1]=-6;
       dummyStruct.mem3[2]=20;
-      
+
       struct3 dummyFill   ;
       dummyFill.mem1=94;
       dummyFill.mem2=95;
       dummyFill.mem3[0]=96;
       dummyFill.mem3[1]=97;
       dummyFill.mem3[2]=98;
-      
+
       struct3 dummyStruct2[2];
       dummyStruct2[0].mem1=1;
       dummyStruct2[0].mem2=-1.23456;
       dummyStruct2[0].mem3[0]=1;
       dummyStruct2[0].mem3[1]=-6;
       dummyStruct2[0].mem3[2]=20;
-      
-      var_3.setFill(true,&dummyFill);
+
+      var_3.setFill(true,dummyFill);
 
       vector<size_t> index(1);index[0]=1;
-      //var_3.putVar(&dummyStruct2);  
-      var_3.putVar(index,&dummyStruct);  
-      
+      //var_3.putVar(&dummyStruct2);
+      var_3.putVar(index,&dummyStruct);
+
       NcVar var_4(ncFile.getVar("var_3"));
 
-      if(var_4.isNull()) throw NcException("NcException","Error in test 28.1",__FILE__,__LINE__);
+      if(var_4.isNull()) throw NcException("Error in test 28.1",__FILE__,__LINE__);
       struct3 dummyStruct3[2];
       var_4.getVar(dummyStruct3);
 
-      if(dummyStruct3[1].mem1 != 1)  throw NcException("NcException","Error in test 28.2",__FILE__,__LINE__);
-      if(dummyStruct3[1].mem2 != -1.23456)  throw NcException("NcException","Error in test 28.3",__FILE__,__LINE__);
-      if(dummyStruct3[1].mem3[0] != 1)  throw NcException("NcException","Error in test 28.4",__FILE__,__LINE__);
-      if(dummyStruct3[1].mem3[1] != -6)  throw NcException("NcException","Error in test 28.5",__FILE__,__LINE__);
-      if(dummyStruct3[1].mem3[2] != 20)  throw NcException("NcException","Error in test 28.6",__FILE__,__LINE__);
-      
-      if(dummyStruct3[0].mem1 != 94)  throw NcException("NcException","Error in test 28.7",__FILE__,__LINE__);
-      if(dummyStruct3[0].mem2 != 95)  throw NcException("NcException","Error in test 28.8",__FILE__,__LINE__);
-      if(dummyStruct3[0].mem3[0] != 96)  throw NcException("NcException","Error in test 28.9",__FILE__,__LINE__);
-      if(dummyStruct3[0].mem3[1] != 97)  throw NcException("NcException","Error in test 28.10",__FILE__,__LINE__);
-      if(dummyStruct3[0].mem3[2] != 98)  throw NcException("NcException","Error in test 28.11",__FILE__,__LINE__);
-      
+      if(dummyStruct3[1].mem1 != 1)  throw NcException("Error in test 28.2",__FILE__,__LINE__);
+      if(dummyStruct3[1].mem2 != -1.23456)  throw NcException("Error in test 28.3",__FILE__,__LINE__);
+      if(dummyStruct3[1].mem3[0] != 1)  throw NcException("Error in test 28.4",__FILE__,__LINE__);
+      if(dummyStruct3[1].mem3[1] != -6)  throw NcException("Error in test 28.5",__FILE__,__LINE__);
+      if(dummyStruct3[1].mem3[2] != 20)  throw NcException("Error in test 28.6",__FILE__,__LINE__);
+
+      if(dummyStruct3[0].mem1 != 94)  throw NcException("Error in test 28.7",__FILE__,__LINE__);
+      if(dummyStruct3[0].mem2 != 95)  throw NcException("Error in test 28.8",__FILE__,__LINE__);
+      if(dummyStruct3[0].mem3[0] != 96)  throw NcException("Error in test 28.9",__FILE__,__LINE__);
+      if(dummyStruct3[0].mem3[1] != 97)  throw NcException("Error in test 28.10",__FILE__,__LINE__);
+      if(dummyStruct3[0].mem3[2] != 98)  throw NcException("Error in test 28.11",__FILE__,__LINE__);
+
     }
     cout <<"    -----------   passed\n";
 
@@ -472,7 +472,7 @@ try
       dummyData[1].p = vlenPointer;
       dummyData[1].len = 2;
 
-      var_7.putVar(dummyData);  
+      var_7.putVar(dummyData);
 
        nc_free_vlen(&dummyData[0]);
        nc_free_vlen(&dummyData[1]);
@@ -481,18 +481,18 @@ try
 
       NcVar var_8(ncFile.getVar("var_7"));
 
-      if(var_8.isNull()) throw NcException("NcException","Error in test 29.1",__FILE__,__LINE__);
+      if(var_8.isNull()) throw NcException("Error in test 29.1",__FILE__,__LINE__);
 
       // read data back
       nc_vlen_t dummyData2[2];
       var_8.getVar(dummyData2);
-      if(dummyData2[0].len != 3)  throw NcException("NcException","Error in test 29.2",__FILE__,__LINE__);
-      if(((short int *)dummyData2[0].p)[0] != 1)  throw NcException("NcException","Error in test 29.3",__FILE__,__LINE__);
-      if(((short int *)dummyData2[0].p)[1] != 31)  throw NcException("NcException","Error in test 29.4",__FILE__,__LINE__);
-      if(((short int *)dummyData2[0].p)[2] != -20)  throw NcException("NcException","Error in test 29.5",__FILE__,__LINE__);
-      if(dummyData2[1].len != 2)  throw NcException("NcException","Error in test 29.6",__FILE__,__LINE__);
-      if(((short int *)dummyData2[1].p)[0] != 73)  throw NcException("NcException","Error in test 29.7",__FILE__,__LINE__);
-      if(((short int *)dummyData2[1].p)[1] != 64)  throw NcException("NcException","Error in test 29.8",__FILE__,__LINE__);
+      if(dummyData2[0].len != 3)  throw NcException("Error in test 29.2",__FILE__,__LINE__);
+      if(((short int *)dummyData2[0].p)[0] != 1)  throw NcException("Error in test 29.3",__FILE__,__LINE__);
+      if(((short int *)dummyData2[0].p)[1] != 31)  throw NcException("Error in test 29.4",__FILE__,__LINE__);
+      if(((short int *)dummyData2[0].p)[2] != -20)  throw NcException("Error in test 29.5",__FILE__,__LINE__);
+      if(dummyData2[1].len != 2)  throw NcException("Error in test 29.6",__FILE__,__LINE__);
+      if(((short int *)dummyData2[1].p)[0] != 73)  throw NcException("Error in test 29.7",__FILE__,__LINE__);
+      if(((short int *)dummyData2[1].p)[1] != 64)  throw NcException("Error in test 29.8",__FILE__,__LINE__);
       nc_free_vlen(&dummyData2[0]);
       nc_free_vlen(&dummyData2[1]);
 
@@ -521,7 +521,7 @@ try
       // finally define a variable containing this new compound type
       NcDim dim13 = ncFile.addDim("dim13",2);
       NcVar var_13   = ncFile.addVar("var_13", compoundType4,dim13);
-      
+
       // here we populate a single entry.
       struct10 dummyData2;
       short int* vlenPointer;
@@ -539,12 +539,12 @@ try
       vlenPointer[1] = 64;
       dummyData2.mem1[1].p=vlenPointer;
       dummyData2.mem1[1].len=2;
-      
+
       dummyData2.mem2=20.1234;
 
       // ...and put the data into the netCDF file
       vector<size_t> index(1);index[0]=1;
-      var_13.putVar(index,&dummyData2);  
+      var_13.putVar(index,&dummyData2);
 
       nc_free_vlen(&dummyData2.mem1[0]);
       nc_free_vlen(&dummyData2.mem1[1]);
@@ -552,13 +552,14 @@ try
 
     }
     cout <<"    -----------   passed\n";
-      
 
- 
+
+
 }
 catch (NcException& e)
   {
     cout << "unknown error"<<endl;
-    e.what();
+    cout << e.what();
+    exit(e.errorCode());
   }
 }
diff --git a/cxx4/test_type2.cpp b/cxx4/test_type2.cpp
index 60f5281..fac2dc7 100644
--- a/cxx4/test_type2.cpp
+++ b/cxx4/test_type2.cpp
@@ -27,7 +27,7 @@ try
 	short mem3[3];
       };
       vector<int> vecSize(2); vecSize[0]=6,vecSize[1]=3;
-      
+
       NcCompoundType compoundType3(ncFile.addCompoundType("compoundType_3",sizeof(struct3)));
       compoundType3.addMember("member1",ncInt,offsetof(struct3,mem1));
       compoundType3.addMember("member2",ncDouble,offsetof(struct3,mem2));
@@ -36,17 +36,17 @@ try
 
       NcDim dim3 = ncFile.addDim("dim3",1);
       NcVar var_3   = ncFile.addVar("var_3", compoundType3,dim3);
-      
+
       struct3 dummyStruct;
       dummyStruct.mem1=1;
       dummyStruct.mem2=-1.23456;
       dummyStruct.mem3[0]=1;
       dummyStruct.mem3[1]=-6;
       dummyStruct.mem3[2]=20;
-      
+
       vector<size_t> index(1);index[0]=0;
-      var_3.putVar(index,&dummyStruct);  
-      
+      var_3.putVar(index,&dummyStruct);
+
       //NcVar var_4(ncFile.getVar("var_3"));
 
       exit(1);
@@ -55,5 +55,6 @@ catch (NcException& e)
   {
     cout << "unknown error"<<endl;
     e.what();
+    return e.errorCode();
   }
 }
diff --git a/cxx4/test_type3.cpp b/cxx4/test_type3.cpp
index 44e3cd1..76ea49e 100644
--- a/cxx4/test_type3.cpp
+++ b/cxx4/test_type3.cpp
@@ -30,28 +30,28 @@ try
       nc_vlen_t mem4;
     };
     vector<int> vecSize(2); vecSize[0]=6,vecSize[1]=3;
-    
+
     NcVlenType vlenType(ncFile.addVlenType("vlenType_1",ncDouble));
-    
-    
+
+
     NcCompoundType compoundType3(ncFile.addCompoundType("compoundType_3",sizeof(struct3)));
     compoundType3.addMember("member1",ncInt,offsetof(struct3,mem1));
     compoundType3.addMember("member2",ncDouble,offsetof(struct3,mem2));
     vector<int> mem3Shape(1);mem3Shape[0]=mem3Size;
     compoundType3.addMember("member3",ncDouble,offsetof(struct3,mem3),mem3Shape);
     compoundType3.addMember("member4",vlenType,offsetof(struct3,mem4));
-    
+
     NcDim dim3 = ncFile.addDim("dim3");
     NcVar var_3   = ncFile.addVar("var_3", compoundType3,dim3);
     // set the fill value
-    
+
     struct3 fillValue;
     fillValue.mem1=0;
     fillValue.mem2=0.0;
     for(int j=0;j<mem3Size;j++)fillValue.mem3[j]=0;
     fillValue.mem4.p=NULL;
     fillValue.mem4.len=vlenSize;
-    
+
 #if 1
     //var_3.setFill(true,&fillValue);
     // set the chunking;
@@ -74,21 +74,22 @@ try
       vlenPointer[j] = j*j+1.;//double(j)/1.21467;
     dummyStruct.mem4.p=vlenPointer;
     dummyStruct.mem4.len=vlenSize;
-    
+
     vector<size_t> index(1);
-    
+
     for (int i=0; i< 100;i++) {
       index[0]=i;
-      var_3.putVar(index,&dummyStruct);  
-    }      
-    
+      var_3.putVar(index,&dummyStruct);
+    }
+
     nc_free_vlen(&dummyStruct.mem4);
     exit(1);
-    
+
   }
  catch (NcException& e)
    {
      cout << "unknown error"<<endl;
      e.what();
+     return e.errorCode();
    }
 }
diff --git a/cxx4/test_type4.cpp b/cxx4/test_type4.cpp
index 7e753ea..8dfa879 100644
--- a/cxx4/test_type4.cpp
+++ b/cxx4/test_type4.cpp
@@ -28,7 +28,7 @@ try
       double mem3[mem3Size];
       int mem2[mem2Size];
     };
-    
+
     NcCompoundType compoundType3(ncFile.addCompoundType("compoundType_3",sizeof(struct3)));
     vector<int> mem2Shape(1);mem2Shape[0]=mem2Size;
     vector<int> mem3Shape(1);mem3Shape[0]=mem3Size;
@@ -38,10 +38,10 @@ try
     NcDim dim3 = ncFile.addDim("dim3");
     NcVar var_3   = ncFile.addVar("var_3", compoundType3,dim3);
     // set the fill value
-    
+
     struct3 fillValue;
     for(int j=0;j<mem3Size;j++)fillValue.mem3[j]=0;
-    
+
 #if 1
     //    var_3.setFill(true,&fillValue);
     // set the chunking;
@@ -60,19 +60,20 @@ try
       dummyStruct.mem2[j]=-(j*j*j-134597);
     for(int j=0;j<mem3Size;j++)
       dummyStruct.mem3[j]=j*j+1;
-    
+
     vector<size_t> index(1);
-    
+
     for (int i=0; i< 1000;i++) {
       index[0]=i;
-      var_3.putVar(index,&dummyStruct);  
-    }      
-    
-    
+      var_3.putVar(index,&dummyStruct);
+    }
+
+
   }
  catch (NcException& e)
    {
      cout << "unknown error"<<endl;
      e.what();
+     return e.errorCode();
    }
 }
diff --git a/cxx4/test_type5.cpp b/cxx4/test_type5.cpp
index cb1d213..f551fc7 100644
--- a/cxx4/test_type5.cpp
+++ b/cxx4/test_type5.cpp
@@ -25,7 +25,7 @@ try
     struct struct3{
       double mem3[mem3Size];
     };
-    
+
     NcCompoundType compoundType3(ncFile.addCompoundType("compoundType_3",sizeof(struct3)));
     vector<int> mem3Shape(1);mem3Shape[0]=mem3Size;
     compoundType3.addMember("member3",ncDouble,offsetof(struct3,mem3),mem3Shape);
@@ -39,7 +39,7 @@ try
     // set the fill value
     struct3 fillValue;
     for(int j=0;j<mem3Size;j++)fillValue.mem3[j]=0;
-    
+
 #if 1
     //var_3.setFill(true,&fillValue);
     // set the chunking;
@@ -63,22 +63,23 @@ try
     struct3 dummyStruct2;
     for(int j=0;j<mem3Size;j++)
       dummyStruct2.mem3[j]=-1./(j*j*j+1);
-    
+
     vector<size_t> index(2);
-    
+
     for (int i=0; i< 100;i++) {
       index[1]=i;
       index[0]=0;
-      var_3.putVar(index,&dummyStruct);  
+      var_3.putVar(index,&dummyStruct);
       index[0]=1;
-      var_3.putVar(index,&dummyStruct2);  
-    }      
-    
-    
+      var_3.putVar(index,&dummyStruct2);
+    }
+
+
   }
  catch (NcException& e)
    {
      cout << "unknown error"<<endl;
      e.what();
+     return e.errorCode();
    }
 }
diff --git a/cxx4/test_utilities.h b/cxx4/test_utilities.h
index 950fdf0..b021432 100644
--- a/cxx4/test_utilities.h
+++ b/cxx4/test_utilities.h
@@ -2,7 +2,7 @@
 using namespace std;
 
 template <class T> void initializeVector(std::vector<T>& dataVector) {
-  for(int  i=0; i<dataVector.size(); i++) {
-    dataVector[i]=i;
+  for(size_t  i=0; i<dataVector.size(); i++) {
+    dataVector[i] = static_cast<T>(i);
   }
 }
diff --git a/cxx4/test_var.cpp b/cxx4/test_var.cpp
index b0e2ee9..23147d1 100644
--- a/cxx4/test_var.cpp
+++ b/cxx4/test_var.cpp
@@ -21,14 +21,18 @@ int main()
       {
 	cout<<"Opening file \"firstFile.cdf\" with NcFile::replace"<<endl;
 	NcFile ncFile("firstFile.cdf",NcFile::replace);
-    
+
 	cout<<left<<setw(55)<<"Testing addGroup(\"groupName\")";
 	NcGroup groupA(ncFile.addGroup("groupA"));
 	NcGroup groupA0(ncFile.addGroup("groupA0"));
 	NcGroup groupB(groupA.addGroup("groupB"));
 	NcGroup groupC(groupA.addGroup("groupC"));
 	cout <<"    -----------   passed\n";
-    
+
+	cout <<left<<setw(55)<<"Testing addVar(\"varName\",\"typeName\")";
+	NcVar var_scalar  = ncFile.addVar("var_scalar",ncByte);
+	cout <<"    -----------   passed\n";
+
 	cout <<left<<setw(55)<<"Testing addDim(\"dimensionName\")";
 	NcDim dim1 = ncFile.addDim("dim1",11);
 	NcDim dim2 = ncFile.addDim("dim2");
@@ -69,12 +73,12 @@ int main()
 
       cout<<"Preparing for tests..."<<endl;
       NcFile ncFile("firstFile.cdf",NcFile::replace);
-    
+
       NcGroup groupA(ncFile.addGroup("groupA"));
       NcGroup groupA0(ncFile.addGroup("groupA0"));
       NcGroup groupB(groupA.addGroup("groupB"));
       NcGroup groupC(groupA.addGroup("groupC"));
-    
+
       NcDim dim1 = ncFile.addDim("dim1",11);
       NcDim dim2 = ncFile.addDim("dim2");
       NcDim dim3 = ncFile.addDim("dim3",13);
@@ -102,37 +106,37 @@ int main()
 
       {
 	cout <<left<<setw(55)<<"Testing addCount([netCDF::Location])";
-	if(ncFile.getVarCount() != 1 )                            throw NcException("NcException","Error in test 4.1",__FILE__,__LINE__);
-	if(ncFile.getVarCount(NcGroup::Current) != 1 )           throw NcException("NcException","Error in test 4.2",__FILE__,__LINE__);
-	if(ncFile.getVarCount(NcGroup::Parents) != 0)            throw NcException("NcException","Error in test 4.3",__FILE__,__LINE__);
-	if(ncFile.getVarCount(NcGroup::Children) != 14)          throw NcException("NcException","Error in test 4.4",__FILE__,__LINE__);
-	if(ncFile.getVarCount(NcGroup::ParentsAndCurrent) != 1 ) throw NcException("NcException","Error in test 4.5",__FILE__,__LINE__);
-	if(ncFile.getVarCount(NcGroup::ChildrenAndCurrent) !=15 )throw NcException("NcException","Error in test 4.6",__FILE__,__LINE__);
-	if(ncFile.getVarCount(NcGroup::All) != 15 )              throw NcException("NcException","Error in test 4.7",__FILE__,__LINE__);
-	if(groupB.getVarCount() != 4)                            throw NcException("NcException","Error in test 4.8",__FILE__,__LINE__);
-	if(groupB.getVarCount(NcGroup::Current) != 4)            throw NcException("NcException","Error in test 4.9",__FILE__,__LINE__);
-	if(groupB.getVarCount(NcGroup::Parents) != 3 )           throw NcException("NcException","Error in test 4.10",__FILE__,__LINE__);
-	if(groupB.getVarCount(NcGroup::Children) != 0)           throw NcException("NcException","Error in test 4.11",__FILE__,__LINE__);
-	if(groupB.getVarCount(NcGroup::ParentsAndCurrent) != 7 ) throw NcException("NcException","Error in test 4.12",__FILE__,__LINE__);
-	if(groupB.getVarCount(NcGroup::ChildrenAndCurrent) != 4) throw NcException("NcException","Error in test 4.13",__FILE__,__LINE__);
-	if(groupB.getVarCount(NcGroup::All) != 7 )               throw NcException("NcException","Error in test 4.14",__FILE__,__LINE__);
-	if(groupA0.getVarCount() != 3)                           throw NcException("NcException","Error in test 4.15",__FILE__,__LINE__);
-	if(groupA0.getVarCount(NcGroup::Current) != 3)           throw NcException("NcException","Error in test 4.16",__FILE__,__LINE__);
-	if(groupA0.getVarCount(NcGroup::Parents) != 1 )          throw NcException("NcException","Error in test 4.17",__FILE__,__LINE__);
-	if(groupA0.getVarCount(NcGroup::Children) != 0)          throw NcException("NcException","Error in test 4.18",__FILE__,__LINE__);
-	if(groupA0.getVarCount(NcGroup::ParentsAndCurrent) != 4 )throw NcException("NcException","Error in test 4.19",__FILE__,__LINE__);
-	if(groupA0.getVarCount(NcGroup::ChildrenAndCurrent) != 3)throw NcException("NcException","Error in test 4.20",__FILE__,__LINE__);
-	if(groupA0.getVarCount(NcGroup::All) != 4 )              throw NcException("NcException","Error in test 4.21",__FILE__,__LINE__);
-
-	if(groupA.getVarCount() != 2)                            throw NcException("NcException","Error in test 4.15",__FILE__,__LINE__);
-	if(groupA.getVarCount(NcGroup::Current) != 2)            throw NcException("NcException","Error in test 4.16",__FILE__,__LINE__);
-	if(groupA.getVarCount(NcGroup::Parents) != 1 )           throw NcException("NcException","Error in test 4.17",__FILE__,__LINE__);
-	if(groupA.getVarCount(NcGroup::Children) != 9)           throw NcException("NcException","Error in test 4.18",__FILE__,__LINE__);
-	if(groupA.getVarCount(NcGroup::ParentsAndCurrent) != 3 ) throw NcException("NcException","Error in test 4.19",__FILE__,__LINE__);
-	if(groupA.getVarCount(NcGroup::ChildrenAndCurrent) !=11) throw NcException("NcException","Error in test 4.20",__FILE__,__LINE__);
-	if(groupA.getVarCount(NcGroup::All) != 12 )              throw NcException("NcException","Error in test 4.21",__FILE__,__LINE__);
+	if(ncFile.getVarCount() != 1 )                            throw NcException("Error in test 4.1",__FILE__,__LINE__);
+	if(ncFile.getVarCount(NcGroup::Current) != 1 )           throw NcException("Error in test 4.2",__FILE__,__LINE__);
+	if(ncFile.getVarCount(NcGroup::Parents) != 0)            throw NcException("Error in test 4.3",__FILE__,__LINE__);
+	if(ncFile.getVarCount(NcGroup::Children) != 14)          throw NcException("Error in test 4.4",__FILE__,__LINE__);
+	if(ncFile.getVarCount(NcGroup::ParentsAndCurrent) != 1 ) throw NcException("Error in test 4.5",__FILE__,__LINE__);
+	if(ncFile.getVarCount(NcGroup::ChildrenAndCurrent) !=15 )throw NcException("Error in test 4.6",__FILE__,__LINE__);
+	if(ncFile.getVarCount(NcGroup::All) != 15 )              throw NcException("Error in test 4.7",__FILE__,__LINE__);
+	if(groupB.getVarCount() != 4)                            throw NcException("Error in test 4.8",__FILE__,__LINE__);
+	if(groupB.getVarCount(NcGroup::Current) != 4)            throw NcException("Error in test 4.9",__FILE__,__LINE__);
+	if(groupB.getVarCount(NcGroup::Parents) != 3 )           throw NcException("Error in test 4.10",__FILE__,__LINE__);
+	if(groupB.getVarCount(NcGroup::Children) != 0)           throw NcException("Error in test 4.11",__FILE__,__LINE__);
+	if(groupB.getVarCount(NcGroup::ParentsAndCurrent) != 7 ) throw NcException("Error in test 4.12",__FILE__,__LINE__);
+	if(groupB.getVarCount(NcGroup::ChildrenAndCurrent) != 4) throw NcException("Error in test 4.13",__FILE__,__LINE__);
+	if(groupB.getVarCount(NcGroup::All) != 7 )               throw NcException("Error in test 4.14",__FILE__,__LINE__);
+	if(groupA0.getVarCount() != 3)                           throw NcException("Error in test 4.15",__FILE__,__LINE__);
+	if(groupA0.getVarCount(NcGroup::Current) != 3)           throw NcException("Error in test 4.16",__FILE__,__LINE__);
+	if(groupA0.getVarCount(NcGroup::Parents) != 1 )          throw NcException("Error in test 4.17",__FILE__,__LINE__);
+	if(groupA0.getVarCount(NcGroup::Children) != 0)          throw NcException("Error in test 4.18",__FILE__,__LINE__);
+	if(groupA0.getVarCount(NcGroup::ParentsAndCurrent) != 4 )throw NcException("Error in test 4.19",__FILE__,__LINE__);
+	if(groupA0.getVarCount(NcGroup::ChildrenAndCurrent) != 3)throw NcException("Error in test 4.20",__FILE__,__LINE__);
+	if(groupA0.getVarCount(NcGroup::All) != 4 )              throw NcException("Error in test 4.21",__FILE__,__LINE__);
+
+	if(groupA.getVarCount() != 2)                            throw NcException("Error in test 4.15",__FILE__,__LINE__);
+	if(groupA.getVarCount(NcGroup::Current) != 2)            throw NcException("Error in test 4.16",__FILE__,__LINE__);
+	if(groupA.getVarCount(NcGroup::Parents) != 1 )           throw NcException("Error in test 4.17",__FILE__,__LINE__);
+	if(groupA.getVarCount(NcGroup::Children) != 9)           throw NcException("Error in test 4.18",__FILE__,__LINE__);
+	if(groupA.getVarCount(NcGroup::ParentsAndCurrent) != 3 ) throw NcException("Error in test 4.19",__FILE__,__LINE__);
+	if(groupA.getVarCount(NcGroup::ChildrenAndCurrent) !=11) throw NcException("Error in test 4.20",__FILE__,__LINE__);
+	if(groupA.getVarCount(NcGroup::All) != 12 )              throw NcException("Error in test 4.21",__FILE__,__LINE__);
 	cout <<"    -----------   passed\n";
-	
+
       }
 
 
@@ -142,112 +146,112 @@ int main()
 	multimap<string,NcVar>::iterator iter;
 
 	groupMap = ncFile.getVars();
-	if(groupMap.size() != 1)                                  throw NcException("NcException","Error in test 5.1",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.2",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.3",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.4",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.5",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.6",__FILE__,__LINE__);
+	if(groupMap.size() != 1)                                  throw NcException("Error in test 5.1",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.2",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("Error in test 5.3",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.4",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.5",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("Error in test 5.6",__FILE__,__LINE__);
 
 	groupMap = ncFile.getVars(NcGroup::Current);
-	if(groupMap.size() != 1)                                  throw NcException("NcException","Error in test 5.7",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.8",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.9",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.10",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.11",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.12",__FILE__,__LINE__);
+	if(groupMap.size() != 1)                                  throw NcException("Error in test 5.7",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.8",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("Error in test 5.9",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.10",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.11",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("Error in test 5.12",__FILE__,__LINE__);
 
 	groupMap = ncFile.getVars(NcGroup::Parents);
-	if(groupMap.size() != 0)                                  throw NcException("NcException","Error in test 5.13",__FILE__,__LINE__);
+	if(groupMap.size() != 0)                                  throw NcException("Error in test 5.13",__FILE__,__LINE__);
 
 	groupMap = ncFile.getVars(NcGroup::Children);
-	if(groupMap.size() != 14)                                 throw NcException("NcException","Error in test 5.14",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.15",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.16",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.17",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.18",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.19",__FILE__,__LINE__);
+	if(groupMap.size() != 14)                                 throw NcException("Error in test 5.14",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("Error in test 5.15",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("Error in test 5.16",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter == groupMap.end()) throw NcException("Error in test 5.17",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter == groupMap.end()) throw NcException("Error in test 5.18",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.19",__FILE__,__LINE__);
 
 
 	groupMap = ncFile.getVars(NcGroup::ParentsAndCurrent);
-	if(groupMap.size() != 1)                                  throw NcException("NcException","Error in test 5.20",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.21",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.22",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.23",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.24",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.25",__FILE__,__LINE__);
+	if(groupMap.size() != 1)                                  throw NcException("Error in test 5.20",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.21",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("Error in test 5.22",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.23",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.24",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("Error in test 5.25",__FILE__,__LINE__);
 
 
 	groupMap = ncFile.getVars(NcGroup::ChildrenAndCurrent);
-	if(groupMap.size() != 15)                                 throw NcException("NcException","Error in test 5.26",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.27",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.28",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.29",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.30",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.31",__FILE__,__LINE__);
+	if(groupMap.size() != 15)                                 throw NcException("Error in test 5.26",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.27",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("Error in test 5.28",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter == groupMap.end()) throw NcException("Error in test 5.29",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter == groupMap.end()) throw NcException("Error in test 5.30",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.31",__FILE__,__LINE__);
 
 	groupMap = ncFile.getVars(NcGroup::All               );
-	if(groupMap.size() != 15)                                 throw NcException("NcException","Error in test 5.32",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.33",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.34",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.35",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.36",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.37",__FILE__,__LINE__);
+	if(groupMap.size() != 15)                                 throw NcException("Error in test 5.32",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.33",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("Error in test 5.34",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter == groupMap.end()) throw NcException("Error in test 5.35",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter == groupMap.end()) throw NcException("Error in test 5.36",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.37",__FILE__,__LINE__);
 
 	// now groupC........
 
 	groupMap = groupC.getVars();
-	if(groupMap.size() != 5)                                  throw NcException("NcException","Error in test 5.38",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.39",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.40",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.41",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.42",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.43",__FILE__,__LINE__);
+	if(groupMap.size() != 5)                                  throw NcException("Error in test 5.38",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("Error in test 5.39",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("Error in test 5.40",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.41",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.42",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.43",__FILE__,__LINE__);
 
 	groupMap = groupC.getVars(NcGroup::Current);
-	if(groupMap.size() != 5)                                  throw NcException("NcException","Error in test 5.44",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.45",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.46",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.47",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.48",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.49",__FILE__,__LINE__);
+	if(groupMap.size() != 5)                                  throw NcException("Error in test 5.44",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("Error in test 5.45",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("Error in test 5.46",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.47",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.48",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.49",__FILE__,__LINE__);
 
 	groupMap = groupC.getVars(NcGroup::Parents);
-	if(groupMap.size() != 3)                                  throw NcException("NcException","Error in test 5.50",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.51",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.52",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.53",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.54",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.55",__FILE__,__LINE__);
+	if(groupMap.size() != 3)                                  throw NcException("Error in test 5.50",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.51",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("Error in test 5.52",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.53",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.54",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter != groupMap.end()) throw NcException("Error in test 5.55",__FILE__,__LINE__);
 
 	groupMap = groupC.getVars(NcGroup::Children);
-	if(groupMap.size() != 0)                                  throw NcException("NcException","Error in test 5.56",__FILE__,__LINE__);
+	if(groupMap.size() != 0)                                  throw NcException("Error in test 5.56",__FILE__,__LINE__);
 
 
 	groupMap = groupC.getVars(NcGroup::ParentsAndCurrent);
-	if(groupMap.size() != 8)                                  throw NcException("NcException","Error in test 5.57",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.58",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.59",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.60",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.61",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.62",__FILE__,__LINE__);
+	if(groupMap.size() != 8)                                  throw NcException("Error in test 5.57",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.58",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("Error in test 5.59",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.60",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.61",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.62",__FILE__,__LINE__);
 
 
 	groupMap = groupC.getVars(NcGroup::ChildrenAndCurrent);
-	if(groupMap.size() != 5)                                  throw NcException("NcException","Error in test 5.63",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.64",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.65",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.66",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.67",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.68",__FILE__,__LINE__);
+	if(groupMap.size() != 5)                                  throw NcException("Error in test 5.63",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter != groupMap.end()) throw NcException("Error in test 5.64",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter != groupMap.end()) throw NcException("Error in test 5.65",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.66",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.67",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.68",__FILE__,__LINE__);
 
 	groupMap = groupC.getVars(NcGroup::All               );
-	if(groupMap.size() != 8)                                  throw NcException("NcException","Error in test 5.69",__FILE__,__LINE__);
-	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.70",__FILE__,__LINE__);
-	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.71",__FILE__,__LINE__);
-	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.72",__FILE__,__LINE__);
-	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("NcException","Error in test 5.73",__FILE__,__LINE__);
-	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("NcException","Error in test 5.74",__FILE__,__LINE__);
+	if(groupMap.size() != 8)                                  throw NcException("Error in test 5.69",__FILE__,__LINE__);
+	iter=groupMap.find("var_1");  if( iter == groupMap.end()) throw NcException("Error in test 5.70",__FILE__,__LINE__);
+	iter=groupMap.find("varA_1"); if( iter == groupMap.end()) throw NcException("Error in test 5.71",__FILE__,__LINE__);
+	iter=groupMap.find("varA0_1");if( iter != groupMap.end()) throw NcException("Error in test 5.72",__FILE__,__LINE__);
+	iter=groupMap.find("varB_3"); if( iter != groupMap.end()) throw NcException("Error in test 5.73",__FILE__,__LINE__);
+	iter=groupMap.find("varC_5"); if( iter == groupMap.end()) throw NcException("Error in test 5.74",__FILE__,__LINE__);
 
 	cout <<"    -----------   passed\n";
 
@@ -255,166 +259,166 @@ int main()
 
 
 	cout <<left<<setw(55)<<"Testing getVar(\"name\",[netCDF::Location])";
-	if(ncFile.getVar("var_1") != var_1)                            throw NcException("NcException","Error in test 6.1",__FILE__,__LINE__);
-	if(ncFile.getVar("var_1",NcGroup::Current) != var_1)           throw NcException("NcException","Error in test 6.2",__FILE__,__LINE__);
-	if(!ncFile.getVar("var_1",NcGroup::Parents).isNull())          throw NcException("NcException","Error in test 6.3",__FILE__,__LINE__);
-	if(!ncFile.getVar("var_1",NcGroup::Children).isNull())         throw NcException("NcException","Error in test 6.4",__FILE__,__LINE__);
-	if(ncFile.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1) throw NcException("NcException","Error in test 6.5",__FILE__,__LINE__);
-	if(ncFile.getVar("var_1",NcGroup::ChildrenAndCurrent)!= var_1) throw NcException("NcException","Error in test 6.6",__FILE__,__LINE__);
-	if(ncFile.getVar("var_1",NcGroup::All) != var_1)               throw NcException("NcException","Error in test 6.7",__FILE__,__LINE__);
-
-	if(!ncFile.getVar("varA_2").isNull())                           throw NcException("NcException","Error in test 6.8",__FILE__,__LINE__);
-	if(!ncFile.getVar("varA_2",NcGroup::Current).isNull())          throw NcException("NcException","Error in test 6.9",__FILE__,__LINE__);
-	if(!ncFile.getVar("varA_2",NcGroup::Parents).isNull())          throw NcException("NcException","Error in test 6.10",__FILE__,__LINE__);
-	if(ncFile.getVar("varA_2",NcGroup::Children) != varA_2)         throw NcException("NcException","Error in test 6.11",__FILE__,__LINE__);
-	if(!ncFile.getVar("varA_2",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.12",__FILE__,__LINE__);
-	if(ncFile.getVar("varA_2",NcGroup::ChildrenAndCurrent)!= varA_2)throw NcException("NcException","Error in test 6.13",__FILE__,__LINE__);
-	if(ncFile.getVar("varA_2",NcGroup::All) != varA_2)              throw NcException("NcException","Error in test 6.14",__FILE__,__LINE__);
-
-	if(!ncFile.getVar("varA0_2").isNull())                             throw NcException("NcException","Error in test 6.15",__FILE__,__LINE__);
-	if(!ncFile.getVar("varA0_2",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 6.16",__FILE__,__LINE__);
-	if(!ncFile.getVar("varA0_2",NcGroup::Parents).isNull())            throw NcException("NcException","Error in test 6.17",__FILE__,__LINE__);
-	if(ncFile.getVar("varA0_2",NcGroup::Children) != varA0_2)          throw NcException("NcException","Error in test 6.18",__FILE__,__LINE__);
-	if(!ncFile.getVar("varA0_2",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 6.19",__FILE__,__LINE__);
-	if(ncFile.getVar("varA0_2",NcGroup::ChildrenAndCurrent)!= varA0_2)throw NcException("NcException","Error in test 6.20",__FILE__,__LINE__);
-	if(ncFile.getVar("varA0_2",NcGroup::All) != varA0_2)               throw NcException("NcException","Error in test 6.21",__FILE__,__LINE__);
-
-	if(!ncFile.getVar("varB_3").isNull())                            throw NcException("NcException","Error in test 6.22",__FILE__,__LINE__);
-	if(!ncFile.getVar("varB_3",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.23",__FILE__,__LINE__);
-	if(!ncFile.getVar("varB_3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 6.24",__FILE__,__LINE__);
-	if(ncFile.getVar("varB_3",NcGroup::Children) != varB_3)          throw NcException("NcException","Error in test 6.25",__FILE__,__LINE__);
-	if(!ncFile.getVar("varB_3",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.26",__FILE__,__LINE__);
-	if(ncFile.getVar("varB_3",NcGroup::ChildrenAndCurrent)!= varB_3)throw NcException("NcException","Error in test 6.27",__FILE__,__LINE__);
-	if(ncFile.getVar("varB_3",NcGroup::All) != varB_3)               throw NcException("NcException","Error in test 6.28",__FILE__,__LINE__);
-
-	if(!ncFile.getVar("varC_5").isNull())                            throw NcException("NcException","Error in test 6.29",__FILE__,__LINE__);
-	if(!ncFile.getVar("varC_5",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.30",__FILE__,__LINE__);
-	if(!ncFile.getVar("varC_5",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 6.31",__FILE__,__LINE__);
-	if(ncFile.getVar("varC_5",NcGroup::Children) != varC_5)          throw NcException("NcException","Error in test 6.32",__FILE__,__LINE__);
-	if(!ncFile.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.33",__FILE__,__LINE__);
-	if(ncFile.getVar("varC_5",NcGroup::ChildrenAndCurrent)!= varC_5)throw NcException("NcException","Error in test 6.34",__FILE__,__LINE__);
-	if(ncFile.getVar("varC_5",NcGroup::All) != varC_5)               throw NcException("NcException","Error in test 6.35",__FILE__,__LINE__);
-
-
-	if(!groupA.getVar("var_1").isNull())                            throw NcException("NcException","Error in test 6.36",__FILE__,__LINE__);
-	if(!groupA.getVar("var_1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.37",__FILE__,__LINE__);
-	if(groupA.getVar("var_1",NcGroup::Parents) != var_1)            throw NcException("NcException","Error in test 6.38",__FILE__,__LINE__);
-	if(!groupA.getVar("var_1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 6.38",__FILE__,__LINE__);
-	if(groupA.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1)  throw NcException("NcException","Error in test 6.39",__FILE__,__LINE__);
-	if(!groupA.getVar("var_1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.40",__FILE__,__LINE__);
-	if(groupA.getVar("var_1",NcGroup::All) != var_1)                throw NcException("NcException","Error in test 6.41",__FILE__,__LINE__);
-
-	if(groupA.getVar("varA_2") != varA_2)                           throw NcException("NcException","Error in test 6.42",__FILE__,__LINE__);
-	if(groupA.getVar("varA_2",NcGroup::Current) != varA_2)          throw NcException("NcException","Error in test 6.43",__FILE__,__LINE__);
-	if(!groupA.getVar("varA_2",NcGroup::Parents).isNull())          throw NcException("NcException","Error in test 6.44",__FILE__,__LINE__);
-	if(!groupA.getVar("varA_2",NcGroup::Children).isNull())         throw NcException("NcException","Error in test 6.45",__FILE__,__LINE__);
-	if(groupA.getVar("varA_2",NcGroup::ParentsAndCurrent) != varA_2)throw NcException("NcException","Error in test 6.46",__FILE__,__LINE__);
-	if(groupA.getVar("varA_2",NcGroup::ChildrenAndCurrent)!= varA_2)throw NcException("NcException","Error in test 6.47",__FILE__,__LINE__);
-	if(groupA.getVar("varA_2",NcGroup::All) != varA_2)              throw NcException("NcException","Error in test 6.48",__FILE__,__LINE__);
-
-	if(!groupA.getVar("varA0_2").isNull())                             throw NcException("NcException","Error in test 6.49",__FILE__,__LINE__);
-	if(!groupA.getVar("varA0_2",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 6.50",__FILE__,__LINE__);
-	if(!groupA.getVar("varA0_2",NcGroup::Parents).isNull())            throw NcException("NcException","Error in test 6.51",__FILE__,__LINE__);
-	if(!groupA.getVar("varA0_2",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 6.52",__FILE__,__LINE__);
-	if(!groupA.getVar("varA0_2",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 6.53",__FILE__,__LINE__);
-	if(!groupA.getVar("varA0_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.54",__FILE__,__LINE__);
-	if(!groupA.getVar("varA0_2",NcGroup::All).isNull())                throw NcException("NcException","Error in test 6.55",__FILE__,__LINE__);
-
-	if(!groupA.getVar("varB_3").isNull())                            throw NcException("NcException","Error in test 6.56",__FILE__,__LINE__);
-	if(!groupA.getVar("varB_3",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.57",__FILE__,__LINE__);
-	if(!groupA.getVar("varB_3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 6.58",__FILE__,__LINE__);
-	if(groupA.getVar("varB_3",NcGroup::Children) != varB_3)          throw NcException("NcException","Error in test 6.59",__FILE__,__LINE__);
-	if(!groupA.getVar("varB_3",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.60",__FILE__,__LINE__);
-	if(groupA.getVar("varB_3",NcGroup::ChildrenAndCurrent)!= varB_3)throw NcException("NcException","Error in test 6.61",__FILE__,__LINE__);
-	if(groupA.getVar("varB_3",NcGroup::All) != varB_3)               throw NcException("NcException","Error in test 6.62",__FILE__,__LINE__);
-
-	if(!groupA.getVar("varC_5").isNull())                            throw NcException("NcException","Error in test 6.63",__FILE__,__LINE__);
-	if(!groupA.getVar("varC_5",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.64",__FILE__,__LINE__);
-	if(!groupA.getVar("varC_5",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 6.65",__FILE__,__LINE__);
-	if(groupA.getVar("varC_5",NcGroup::Children) != varC_5)          throw NcException("NcException","Error in test 6.66",__FILE__,__LINE__);
-	if(!groupA.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.67",__FILE__,__LINE__);
-	if(groupA.getVar("varC_5",NcGroup::ChildrenAndCurrent)!= varC_5)throw NcException("NcException","Error in test 6.68",__FILE__,__LINE__);
-	if(groupA.getVar("varC_5",NcGroup::All) != varC_5)               throw NcException("NcException","Error in test 6.69",__FILE__,__LINE__);
-
-	if(!groupB.getVar("var_1").isNull())                            throw NcException("NcException","Error in test 6.70",__FILE__,__LINE__);
-	if(!groupB.getVar("var_1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.71",__FILE__,__LINE__);
-	if(groupB.getVar("var_1",NcGroup::Parents) != var_1)            throw NcException("NcException","Error in test 6.72",__FILE__,__LINE__);
-	if(!groupB.getVar("var_1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 6.73",__FILE__,__LINE__);
-	if(groupB.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1)  throw NcException("NcException","Error in test 6.74",__FILE__,__LINE__);
-	if(!groupB.getVar("var_1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.75",__FILE__,__LINE__);
-	if(groupB.getVar("var_1",NcGroup::All) != var_1)                throw NcException("NcException","Error in test 6.76",__FILE__,__LINE__);
-
-	if(!groupB.getVar("varA_2").isNull())                            throw NcException("NcException","Error in test 6.77",__FILE__,__LINE__);
-	if(!groupB.getVar("varA_2",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.78",__FILE__,__LINE__);
-	if(groupB.getVar("varA_2",NcGroup::Parents) != varA_2)           throw NcException("NcException","Error in test 6.79",__FILE__,__LINE__);
-	if(!groupB.getVar("varA_2",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 6.80",__FILE__,__LINE__);
-	if(groupB.getVar("varA_2",NcGroup::ParentsAndCurrent) != varA_2) throw NcException("NcException","Error in test 6.81",__FILE__,__LINE__);
-	if(!groupB.getVar("varA_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.82",__FILE__,__LINE__);
-	if(groupB.getVar("varA_2",NcGroup::All) != varA_2)               throw NcException("NcException","Error in test 6.83",__FILE__,__LINE__);
-
-	if(!groupB.getVar("varA0_2").isNull())                             throw NcException("NcException","Error in test 6.84",__FILE__,__LINE__);
-	if(!groupB.getVar("varA0_2",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 6.85",__FILE__,__LINE__);
-	if(!groupB.getVar("varA0_2",NcGroup::Parents).isNull())            throw NcException("NcException","Error in test 6.86",__FILE__,__LINE__);
-	if(!groupB.getVar("varA0_2",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 6.87",__FILE__,__LINE__);
-	if(!groupB.getVar("varA0_2",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 6.88",__FILE__,__LINE__);
-	if(!groupB.getVar("varA0_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.89",__FILE__,__LINE__);
-	if(!groupB.getVar("varA0_2",NcGroup::All).isNull())                throw NcException("NcException","Error in test 6.90",__FILE__,__LINE__);
-
-	if(groupB.getVar("varB_3") != varB_3)                            throw NcException("NcException","Error in test 6.91",__FILE__,__LINE__);
-	if(groupB.getVar("varB_3",NcGroup::Current) != varB_3)           throw NcException("NcException","Error in test 6.92",__FILE__,__LINE__);
-	if(!groupB.getVar("varB_3",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 6.93",__FILE__,__LINE__);
-	if(!groupB.getVar("varB_3",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 6.94",__FILE__,__LINE__);
-	if(groupB.getVar("varB_3",NcGroup::ParentsAndCurrent) != varB_3)throw NcException("NcException","Error in test 6.95",__FILE__,__LINE__);
-	if(groupB.getVar("varB_3",NcGroup::ChildrenAndCurrent)!= varB_3)throw NcException("NcException","Error in test 6.96",__FILE__,__LINE__);
-	if(groupB.getVar("varB_3",NcGroup::All) != varB_3)               throw NcException("NcException","Error in test 6.97",__FILE__,__LINE__);
-
-	if(!groupB.getVar("varC_5").isNull())                            throw NcException("NcException","Error in test 6.98",__FILE__,__LINE__);
-	if(!groupB.getVar("varC_5",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.99",__FILE__,__LINE__);
-	if(!groupB.getVar("varC_5",NcGroup::Parents).isNull())           throw NcException("NcException","Error in test 6.100",__FILE__,__LINE__);
-	if(!groupB.getVar("varC_5",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 6.101",__FILE__,__LINE__);
-	if(!groupB.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.102",__FILE__,__LINE__);
-	if(!groupB.getVar("varC_5",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.103",__FILE__,__LINE__);
-	if(!groupB.getVar("varC_5",NcGroup::All).isNull())               throw NcException("NcException","Error in test 6.104",__FILE__,__LINE__);
-
-	if(!groupA0.getVar("var_1").isNull())                            throw NcException("NcException","Error in test 6.105",__FILE__,__LINE__);
-	if(!groupA0.getVar("var_1",NcGroup::Current).isNull())           throw NcException("NcException","Error in test 6.106",__FILE__,__LINE__);
-	if(groupA0.getVar("var_1",NcGroup::Parents) != var_1)            throw NcException("NcException","Error in test 6.107",__FILE__,__LINE__);
-	if(!groupA0.getVar("var_1",NcGroup::Children).isNull())          throw NcException("NcException","Error in test 6.108",__FILE__,__LINE__);
-	if(groupA0.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1)  throw NcException("NcException","Error in test 6.109",__FILE__,__LINE__);
-	if(!groupA0.getVar("var_1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.110",__FILE__,__LINE__);
-	if(groupA0.getVar("var_1",NcGroup::All) != var_1)                throw NcException("NcException","Error in test 6.111",__FILE__,__LINE__);
-
-	if(!groupA0.getVar("varA_2").isNull())                           throw NcException("NcException","Error in test 6.112",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA_2",NcGroup::Current).isNull())          throw NcException("NcException","Error in test 6.113",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA_2",NcGroup::Parents).isNull())          throw NcException("NcException","Error in test 6.114",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA_2",NcGroup::Children).isNull())         throw NcException("NcException","Error in test 6.115",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA_2",NcGroup::ParentsAndCurrent).isNull())throw NcException("NcException","Error in test 6.116",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.117",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA_2",NcGroup::All).isNull())              throw NcException("NcException","Error in test 6.118",__FILE__,__LINE__);
-
-	if(groupA0.getVar("varA0_2") != varA0_2)                             throw NcException("NcException","Error in test 6.119",__FILE__,__LINE__);
-	if(groupA0.getVar("varA0_2",NcGroup::Current) != varA0_2)            throw NcException("NcException","Error in test 6.120",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA0_2",NcGroup::Parents).isNull())             throw NcException("NcException","Error in test 6.121",__FILE__,__LINE__);
-	if(!groupA0.getVar("varA0_2",NcGroup::Children).isNull())            throw NcException("NcException","Error in test 6.122",__FILE__,__LINE__);
-	if(groupA0.getVar("varA0_2",NcGroup::ParentsAndCurrent) != varA0_2) throw NcException("NcException","Error in test 6.123",__FILE__,__LINE__);
-	if(groupA0.getVar("varA0_2",NcGroup::ChildrenAndCurrent) != varA0_2)throw NcException("NcException","Error in test 6.124",__FILE__,__LINE__);
-	if(groupA0.getVar("varA0_2",NcGroup::All) != varA0_2)                throw NcException("NcException","Error in test 6.125",__FILE__,__LINE__);
-
-	if(!groupA0.getVar("varB_3").isNull())                             throw NcException("NcException","Error in test 6.126",__FILE__,__LINE__);
-	if(!groupA0.getVar("varB_3",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 6.127",__FILE__,__LINE__);
-	if(!groupA0.getVar("varB_3",NcGroup::Parents).isNull())            throw NcException("NcException","Error in test 6.128",__FILE__,__LINE__);
-	if(!groupA0.getVar("varB_3",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 6.129",__FILE__,__LINE__);
-	if(!groupA0.getVar("varB_3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 6.130",__FILE__,__LINE__);
-	if(!groupA0.getVar("varB_3",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.131",__FILE__,__LINE__);
-	if(!groupA0.getVar("varB_3",NcGroup::All).isNull())                throw NcException("NcException","Error in test 6.132",__FILE__,__LINE__);
-
-	if(!groupA0.getVar("varC_5").isNull())                             throw NcException("NcException","Error in test 6.133",__FILE__,__LINE__);
-	if(!groupA0.getVar("varC_5",NcGroup::Current).isNull())            throw NcException("NcException","Error in test 6.134",__FILE__,__LINE__);
-	if(!groupA0.getVar("varC_5",NcGroup::Parents).isNull())            throw NcException("NcException","Error in test 6.135",__FILE__,__LINE__);
-	if(!groupA0.getVar("varC_5",NcGroup::Children).isNull())           throw NcException("NcException","Error in test 6.136",__FILE__,__LINE__);
-	if(!groupA0.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull()) throw NcException("NcException","Error in test 6.137",__FILE__,__LINE__);
-	if(!groupA0.getVar("varC_5",NcGroup::ChildrenAndCurrent).isNull())throw NcException("NcException","Error in test 6.138",__FILE__,__LINE__);
-	if(!groupA0.getVar("varC_5",NcGroup::All).isNull())                throw NcException("NcException","Error in test 6.139",__FILE__,__LINE__);
+	if(ncFile.getVar("var_1") != var_1)                            throw NcException("Error in test 6.1",__FILE__,__LINE__);
+	if(ncFile.getVar("var_1",NcGroup::Current) != var_1)           throw NcException("Error in test 6.2",__FILE__,__LINE__);
+	if(!ncFile.getVar("var_1",NcGroup::Parents).isNull())          throw NcException("Error in test 6.3",__FILE__,__LINE__);
+	if(!ncFile.getVar("var_1",NcGroup::Children).isNull())         throw NcException("Error in test 6.4",__FILE__,__LINE__);
+	if(ncFile.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1) throw NcException("Error in test 6.5",__FILE__,__LINE__);
+	if(ncFile.getVar("var_1",NcGroup::ChildrenAndCurrent)!= var_1) throw NcException("Error in test 6.6",__FILE__,__LINE__);
+	if(ncFile.getVar("var_1",NcGroup::All) != var_1)               throw NcException("Error in test 6.7",__FILE__,__LINE__);
+
+	if(!ncFile.getVar("varA_2").isNull())                           throw NcException("Error in test 6.8",__FILE__,__LINE__);
+	if(!ncFile.getVar("varA_2",NcGroup::Current).isNull())          throw NcException("Error in test 6.9",__FILE__,__LINE__);
+	if(!ncFile.getVar("varA_2",NcGroup::Parents).isNull())          throw NcException("Error in test 6.10",__FILE__,__LINE__);
+	if(ncFile.getVar("varA_2",NcGroup::Children) != varA_2)         throw NcException("Error in test 6.11",__FILE__,__LINE__);
+	if(!ncFile.getVar("varA_2",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.12",__FILE__,__LINE__);
+	if(ncFile.getVar("varA_2",NcGroup::ChildrenAndCurrent)!= varA_2)throw NcException("Error in test 6.13",__FILE__,__LINE__);
+	if(ncFile.getVar("varA_2",NcGroup::All) != varA_2)              throw NcException("Error in test 6.14",__FILE__,__LINE__);
+
+	if(!ncFile.getVar("varA0_2").isNull())                             throw NcException("Error in test 6.15",__FILE__,__LINE__);
+	if(!ncFile.getVar("varA0_2",NcGroup::Current).isNull())            throw NcException("Error in test 6.16",__FILE__,__LINE__);
+	if(!ncFile.getVar("varA0_2",NcGroup::Parents).isNull())            throw NcException("Error in test 6.17",__FILE__,__LINE__);
+	if(ncFile.getVar("varA0_2",NcGroup::Children) != varA0_2)          throw NcException("Error in test 6.18",__FILE__,__LINE__);
+	if(!ncFile.getVar("varA0_2",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 6.19",__FILE__,__LINE__);
+	if(ncFile.getVar("varA0_2",NcGroup::ChildrenAndCurrent)!= varA0_2)throw NcException("Error in test 6.20",__FILE__,__LINE__);
+	if(ncFile.getVar("varA0_2",NcGroup::All) != varA0_2)               throw NcException("Error in test 6.21",__FILE__,__LINE__);
+
+	if(!ncFile.getVar("varB_3").isNull())                            throw NcException("Error in test 6.22",__FILE__,__LINE__);
+	if(!ncFile.getVar("varB_3",NcGroup::Current).isNull())           throw NcException("Error in test 6.23",__FILE__,__LINE__);
+	if(!ncFile.getVar("varB_3",NcGroup::Parents).isNull())           throw NcException("Error in test 6.24",__FILE__,__LINE__);
+	if(ncFile.getVar("varB_3",NcGroup::Children) != varB_3)          throw NcException("Error in test 6.25",__FILE__,__LINE__);
+	if(!ncFile.getVar("varB_3",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.26",__FILE__,__LINE__);
+	if(ncFile.getVar("varB_3",NcGroup::ChildrenAndCurrent)!= varB_3)throw NcException("Error in test 6.27",__FILE__,__LINE__);
+	if(ncFile.getVar("varB_3",NcGroup::All) != varB_3)               throw NcException("Error in test 6.28",__FILE__,__LINE__);
+
+	if(!ncFile.getVar("varC_5").isNull())                            throw NcException("Error in test 6.29",__FILE__,__LINE__);
+	if(!ncFile.getVar("varC_5",NcGroup::Current).isNull())           throw NcException("Error in test 6.30",__FILE__,__LINE__);
+	if(!ncFile.getVar("varC_5",NcGroup::Parents).isNull())           throw NcException("Error in test 6.31",__FILE__,__LINE__);
+	if(ncFile.getVar("varC_5",NcGroup::Children) != varC_5)          throw NcException("Error in test 6.32",__FILE__,__LINE__);
+	if(!ncFile.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.33",__FILE__,__LINE__);
+	if(ncFile.getVar("varC_5",NcGroup::ChildrenAndCurrent)!= varC_5)throw NcException("Error in test 6.34",__FILE__,__LINE__);
+	if(ncFile.getVar("varC_5",NcGroup::All) != varC_5)               throw NcException("Error in test 6.35",__FILE__,__LINE__);
+
+
+	if(!groupA.getVar("var_1").isNull())                            throw NcException("Error in test 6.36",__FILE__,__LINE__);
+	if(!groupA.getVar("var_1",NcGroup::Current).isNull())           throw NcException("Error in test 6.37",__FILE__,__LINE__);
+	if(groupA.getVar("var_1",NcGroup::Parents) != var_1)            throw NcException("Error in test 6.38",__FILE__,__LINE__);
+	if(!groupA.getVar("var_1",NcGroup::Children).isNull())          throw NcException("Error in test 6.38",__FILE__,__LINE__);
+	if(groupA.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1)  throw NcException("Error in test 6.39",__FILE__,__LINE__);
+	if(!groupA.getVar("var_1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.40",__FILE__,__LINE__);
+	if(groupA.getVar("var_1",NcGroup::All) != var_1)                throw NcException("Error in test 6.41",__FILE__,__LINE__);
+
+	if(groupA.getVar("varA_2") != varA_2)                           throw NcException("Error in test 6.42",__FILE__,__LINE__);
+	if(groupA.getVar("varA_2",NcGroup::Current) != varA_2)          throw NcException("Error in test 6.43",__FILE__,__LINE__);
+	if(!groupA.getVar("varA_2",NcGroup::Parents).isNull())          throw NcException("Error in test 6.44",__FILE__,__LINE__);
+	if(!groupA.getVar("varA_2",NcGroup::Children).isNull())         throw NcException("Error in test 6.45",__FILE__,__LINE__);
+	if(groupA.getVar("varA_2",NcGroup::ParentsAndCurrent) != varA_2)throw NcException("Error in test 6.46",__FILE__,__LINE__);
+	if(groupA.getVar("varA_2",NcGroup::ChildrenAndCurrent)!= varA_2)throw NcException("Error in test 6.47",__FILE__,__LINE__);
+	if(groupA.getVar("varA_2",NcGroup::All) != varA_2)              throw NcException("Error in test 6.48",__FILE__,__LINE__);
+
+	if(!groupA.getVar("varA0_2").isNull())                             throw NcException("Error in test 6.49",__FILE__,__LINE__);
+	if(!groupA.getVar("varA0_2",NcGroup::Current).isNull())            throw NcException("Error in test 6.50",__FILE__,__LINE__);
+	if(!groupA.getVar("varA0_2",NcGroup::Parents).isNull())            throw NcException("Error in test 6.51",__FILE__,__LINE__);
+	if(!groupA.getVar("varA0_2",NcGroup::Children).isNull())           throw NcException("Error in test 6.52",__FILE__,__LINE__);
+	if(!groupA.getVar("varA0_2",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 6.53",__FILE__,__LINE__);
+	if(!groupA.getVar("varA0_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.54",__FILE__,__LINE__);
+	if(!groupA.getVar("varA0_2",NcGroup::All).isNull())                throw NcException("Error in test 6.55",__FILE__,__LINE__);
+
+	if(!groupA.getVar("varB_3").isNull())                            throw NcException("Error in test 6.56",__FILE__,__LINE__);
+	if(!groupA.getVar("varB_3",NcGroup::Current).isNull())           throw NcException("Error in test 6.57",__FILE__,__LINE__);
+	if(!groupA.getVar("varB_3",NcGroup::Parents).isNull())           throw NcException("Error in test 6.58",__FILE__,__LINE__);
+	if(groupA.getVar("varB_3",NcGroup::Children) != varB_3)          throw NcException("Error in test 6.59",__FILE__,__LINE__);
+	if(!groupA.getVar("varB_3",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.60",__FILE__,__LINE__);
+	if(groupA.getVar("varB_3",NcGroup::ChildrenAndCurrent)!= varB_3)throw NcException("Error in test 6.61",__FILE__,__LINE__);
+	if(groupA.getVar("varB_3",NcGroup::All) != varB_3)               throw NcException("Error in test 6.62",__FILE__,__LINE__);
+
+	if(!groupA.getVar("varC_5").isNull())                            throw NcException("Error in test 6.63",__FILE__,__LINE__);
+	if(!groupA.getVar("varC_5",NcGroup::Current).isNull())           throw NcException("Error in test 6.64",__FILE__,__LINE__);
+	if(!groupA.getVar("varC_5",NcGroup::Parents).isNull())           throw NcException("Error in test 6.65",__FILE__,__LINE__);
+	if(groupA.getVar("varC_5",NcGroup::Children) != varC_5)          throw NcException("Error in test 6.66",__FILE__,__LINE__);
+	if(!groupA.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.67",__FILE__,__LINE__);
+	if(groupA.getVar("varC_5",NcGroup::ChildrenAndCurrent)!= varC_5)throw NcException("Error in test 6.68",__FILE__,__LINE__);
+	if(groupA.getVar("varC_5",NcGroup::All) != varC_5)               throw NcException("Error in test 6.69",__FILE__,__LINE__);
+
+	if(!groupB.getVar("var_1").isNull())                            throw NcException("Error in test 6.70",__FILE__,__LINE__);
+	if(!groupB.getVar("var_1",NcGroup::Current).isNull())           throw NcException("Error in test 6.71",__FILE__,__LINE__);
+	if(groupB.getVar("var_1",NcGroup::Parents) != var_1)            throw NcException("Error in test 6.72",__FILE__,__LINE__);
+	if(!groupB.getVar("var_1",NcGroup::Children).isNull())          throw NcException("Error in test 6.73",__FILE__,__LINE__);
+	if(groupB.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1)  throw NcException("Error in test 6.74",__FILE__,__LINE__);
+	if(!groupB.getVar("var_1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.75",__FILE__,__LINE__);
+	if(groupB.getVar("var_1",NcGroup::All) != var_1)                throw NcException("Error in test 6.76",__FILE__,__LINE__);
+
+	if(!groupB.getVar("varA_2").isNull())                            throw NcException("Error in test 6.77",__FILE__,__LINE__);
+	if(!groupB.getVar("varA_2",NcGroup::Current).isNull())           throw NcException("Error in test 6.78",__FILE__,__LINE__);
+	if(groupB.getVar("varA_2",NcGroup::Parents) != varA_2)           throw NcException("Error in test 6.79",__FILE__,__LINE__);
+	if(!groupB.getVar("varA_2",NcGroup::Children).isNull())          throw NcException("Error in test 6.80",__FILE__,__LINE__);
+	if(groupB.getVar("varA_2",NcGroup::ParentsAndCurrent) != varA_2) throw NcException("Error in test 6.81",__FILE__,__LINE__);
+	if(!groupB.getVar("varA_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.82",__FILE__,__LINE__);
+	if(groupB.getVar("varA_2",NcGroup::All) != varA_2)               throw NcException("Error in test 6.83",__FILE__,__LINE__);
+
+	if(!groupB.getVar("varA0_2").isNull())                             throw NcException("Error in test 6.84",__FILE__,__LINE__);
+	if(!groupB.getVar("varA0_2",NcGroup::Current).isNull())            throw NcException("Error in test 6.85",__FILE__,__LINE__);
+	if(!groupB.getVar("varA0_2",NcGroup::Parents).isNull())            throw NcException("Error in test 6.86",__FILE__,__LINE__);
+	if(!groupB.getVar("varA0_2",NcGroup::Children).isNull())           throw NcException("Error in test 6.87",__FILE__,__LINE__);
+	if(!groupB.getVar("varA0_2",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 6.88",__FILE__,__LINE__);
+	if(!groupB.getVar("varA0_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.89",__FILE__,__LINE__);
+	if(!groupB.getVar("varA0_2",NcGroup::All).isNull())                throw NcException("Error in test 6.90",__FILE__,__LINE__);
+
+	if(groupB.getVar("varB_3") != varB_3)                            throw NcException("Error in test 6.91",__FILE__,__LINE__);
+	if(groupB.getVar("varB_3",NcGroup::Current) != varB_3)           throw NcException("Error in test 6.92",__FILE__,__LINE__);
+	if(!groupB.getVar("varB_3",NcGroup::Parents).isNull())           throw NcException("Error in test 6.93",__FILE__,__LINE__);
+	if(!groupB.getVar("varB_3",NcGroup::Children).isNull())          throw NcException("Error in test 6.94",__FILE__,__LINE__);
+	if(groupB.getVar("varB_3",NcGroup::ParentsAndCurrent) != varB_3)throw NcException("Error in test 6.95",__FILE__,__LINE__);
+	if(groupB.getVar("varB_3",NcGroup::ChildrenAndCurrent)!= varB_3)throw NcException("Error in test 6.96",__FILE__,__LINE__);
+	if(groupB.getVar("varB_3",NcGroup::All) != varB_3)               throw NcException("Error in test 6.97",__FILE__,__LINE__);
+
+	if(!groupB.getVar("varC_5").isNull())                            throw NcException("Error in test 6.98",__FILE__,__LINE__);
+	if(!groupB.getVar("varC_5",NcGroup::Current).isNull())           throw NcException("Error in test 6.99",__FILE__,__LINE__);
+	if(!groupB.getVar("varC_5",NcGroup::Parents).isNull())           throw NcException("Error in test 6.100",__FILE__,__LINE__);
+	if(!groupB.getVar("varC_5",NcGroup::Children).isNull())          throw NcException("Error in test 6.101",__FILE__,__LINE__);
+	if(!groupB.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.102",__FILE__,__LINE__);
+	if(!groupB.getVar("varC_5",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.103",__FILE__,__LINE__);
+	if(!groupB.getVar("varC_5",NcGroup::All).isNull())               throw NcException("Error in test 6.104",__FILE__,__LINE__);
+
+	if(!groupA0.getVar("var_1").isNull())                            throw NcException("Error in test 6.105",__FILE__,__LINE__);
+	if(!groupA0.getVar("var_1",NcGroup::Current).isNull())           throw NcException("Error in test 6.106",__FILE__,__LINE__);
+	if(groupA0.getVar("var_1",NcGroup::Parents) != var_1)            throw NcException("Error in test 6.107",__FILE__,__LINE__);
+	if(!groupA0.getVar("var_1",NcGroup::Children).isNull())          throw NcException("Error in test 6.108",__FILE__,__LINE__);
+	if(groupA0.getVar("var_1",NcGroup::ParentsAndCurrent) != var_1)  throw NcException("Error in test 6.109",__FILE__,__LINE__);
+	if(!groupA0.getVar("var_1",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.110",__FILE__,__LINE__);
+	if(groupA0.getVar("var_1",NcGroup::All) != var_1)                throw NcException("Error in test 6.111",__FILE__,__LINE__);
+
+	if(!groupA0.getVar("varA_2").isNull())                           throw NcException("Error in test 6.112",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA_2",NcGroup::Current).isNull())          throw NcException("Error in test 6.113",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA_2",NcGroup::Parents).isNull())          throw NcException("Error in test 6.114",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA_2",NcGroup::Children).isNull())         throw NcException("Error in test 6.115",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA_2",NcGroup::ParentsAndCurrent).isNull())throw NcException("Error in test 6.116",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA_2",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.117",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA_2",NcGroup::All).isNull())              throw NcException("Error in test 6.118",__FILE__,__LINE__);
+
+	if(groupA0.getVar("varA0_2") != varA0_2)                             throw NcException("Error in test 6.119",__FILE__,__LINE__);
+	if(groupA0.getVar("varA0_2",NcGroup::Current) != varA0_2)            throw NcException("Error in test 6.120",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA0_2",NcGroup::Parents).isNull())             throw NcException("Error in test 6.121",__FILE__,__LINE__);
+	if(!groupA0.getVar("varA0_2",NcGroup::Children).isNull())            throw NcException("Error in test 6.122",__FILE__,__LINE__);
+	if(groupA0.getVar("varA0_2",NcGroup::ParentsAndCurrent) != varA0_2) throw NcException("Error in test 6.123",__FILE__,__LINE__);
+	if(groupA0.getVar("varA0_2",NcGroup::ChildrenAndCurrent) != varA0_2)throw NcException("Error in test 6.124",__FILE__,__LINE__);
+	if(groupA0.getVar("varA0_2",NcGroup::All) != varA0_2)                throw NcException("Error in test 6.125",__FILE__,__LINE__);
+
+	if(!groupA0.getVar("varB_3").isNull())                             throw NcException("Error in test 6.126",__FILE__,__LINE__);
+	if(!groupA0.getVar("varB_3",NcGroup::Current).isNull())            throw NcException("Error in test 6.127",__FILE__,__LINE__);
+	if(!groupA0.getVar("varB_3",NcGroup::Parents).isNull())            throw NcException("Error in test 6.128",__FILE__,__LINE__);
+	if(!groupA0.getVar("varB_3",NcGroup::Children).isNull())           throw NcException("Error in test 6.129",__FILE__,__LINE__);
+	if(!groupA0.getVar("varB_3",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 6.130",__FILE__,__LINE__);
+	if(!groupA0.getVar("varB_3",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.131",__FILE__,__LINE__);
+	if(!groupA0.getVar("varB_3",NcGroup::All).isNull())                throw NcException("Error in test 6.132",__FILE__,__LINE__);
+
+	if(!groupA0.getVar("varC_5").isNull())                             throw NcException("Error in test 6.133",__FILE__,__LINE__);
+	if(!groupA0.getVar("varC_5",NcGroup::Current).isNull())            throw NcException("Error in test 6.134",__FILE__,__LINE__);
+	if(!groupA0.getVar("varC_5",NcGroup::Parents).isNull())            throw NcException("Error in test 6.135",__FILE__,__LINE__);
+	if(!groupA0.getVar("varC_5",NcGroup::Children).isNull())           throw NcException("Error in test 6.136",__FILE__,__LINE__);
+	if(!groupA0.getVar("varC_5",NcGroup::ParentsAndCurrent).isNull()) throw NcException("Error in test 6.137",__FILE__,__LINE__);
+	if(!groupA0.getVar("varC_5",NcGroup::ChildrenAndCurrent).isNull())throw NcException("Error in test 6.138",__FILE__,__LINE__);
+	if(!groupA0.getVar("varC_5",NcGroup::All).isNull())                throw NcException("Error in test 6.139",__FILE__,__LINE__);
 
 	cout <<"    -----------   passed\n";
 
@@ -427,370 +431,370 @@ int main()
 	  set<NcVar>::iterator iter;
 
 	  groupSet = ncFile.getVars("var_1");
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.1",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.2",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.1",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.2",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.3",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.3",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.4",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.4",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.5",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.5",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.6",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.6",__FILE__,__LINE__);
 
 	  groupSet = ncFile.getVars("var_1",NcGroup::Current);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.7",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.8",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.7",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.8",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.9",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.9",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.10",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.10",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.11",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.11",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.12",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.12",__FILE__,__LINE__);
 
 	  groupSet = ncFile.getVars("var_1",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.13",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.13",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.14",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.14",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.15",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.15",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.16",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.16",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.17",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.17",__FILE__,__LINE__);
 
 	  groupSet = ncFile.getVars("var_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.18",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.18",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1",NcGroup::Children);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.19",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.20",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.19",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("Error in test 7.20",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2",NcGroup::Children);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.21",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.22",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.21",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("Error in test 7.22",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3",NcGroup::Children);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.23",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.24",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.23",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("Error in test 7.24",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5",NcGroup::Children);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.25",__FILE__,__LINE__);
-	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.26",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.25",__FILE__,__LINE__);
+	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("Error in test 7.26",__FILE__,__LINE__);
 
 	  groupSet = ncFile.getVars("var_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.27",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.28",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.27",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.28",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.29",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.29",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.30",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.30",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.31",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.31",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.32",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.32",__FILE__,__LINE__);
 
 	  groupSet = ncFile.getVars("var_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.33",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.34",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.33",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.34",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.35",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.36",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.35",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("Error in test 7.36",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.37",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.38",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.37",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("Error in test 7.38",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.39",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.40",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.39",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("Error in test 7.40",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.41",__FILE__,__LINE__);
-	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.42",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.41",__FILE__,__LINE__);
+	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("Error in test 7.42",__FILE__,__LINE__);
 
 	  groupSet = ncFile.getVars("var_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.43",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.44",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.43",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.44",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.45",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.46",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.45",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("Error in test 7.46",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varA0_2",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.47",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.48",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.47",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("Error in test 7.48",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varB_3",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.49",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.50",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.49",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("Error in test 7.50",__FILE__,__LINE__);
 	  groupSet = ncFile.getVars("varC_5",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.51",__FILE__,__LINE__);
-	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.52",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.51",__FILE__,__LINE__);
+	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("Error in test 7.52",__FILE__,__LINE__);
 
 	  //////////////////
 
 	  groupSet = groupA.getVars("var_1");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.53",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.53",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1");
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.54",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.55",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.54",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.55",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.56",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.56",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.57",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.57",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.58",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.58",__FILE__,__LINE__);
 
 	  groupSet = groupA.getVars("var_1",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.59",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.59",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1",NcGroup::Current);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.60",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.61",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.60",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.61",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.62",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.62",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.63",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.63",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.64",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.64",__FILE__,__LINE__);
 
 	  groupSet = groupA.getVars("var_1",NcGroup::Parents);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.65",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.66",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.65",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.66",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.67",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.67",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.68",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.68",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.69",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.69",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.70",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.70",__FILE__,__LINE__);
 
 	  groupSet = groupA.getVars("var_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.71",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.71",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.72",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.72",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.73",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.73",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3",NcGroup::Children);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.74",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.75",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.74",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("Error in test 7.75",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5",NcGroup::Children);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.76",__FILE__,__LINE__);
-	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.77",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.76",__FILE__,__LINE__);
+	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("Error in test 7.77",__FILE__,__LINE__);
 
 	  groupSet = groupA.getVars("var_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.78",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.79",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.78",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.79",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.80",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.82",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.80",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.82",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.83",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.83",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.84",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.84",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.85",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.85",__FILE__,__LINE__);
 
 	  groupSet = groupA.getVars("var_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.86",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.86",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.87",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.88",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.87",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("Error in test 7.88",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.89",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.89",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.90",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.91",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.90",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("Error in test 7.91",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.92",__FILE__,__LINE__);
-	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.93",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.92",__FILE__,__LINE__);
+	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("Error in test 7.93",__FILE__,__LINE__);
 
 	  groupSet = groupA.getVars("var_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.94",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.95",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.94",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.95",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.96",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.97",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.96",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())   throw NcException("Error in test 7.97",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varA0_2",NcGroup::All);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.98",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.98",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varB_3",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.99",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.100",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.99",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())   throw NcException("Error in test 7.100",__FILE__,__LINE__);
 	  groupSet = groupA.getVars("varC_5",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.101",__FILE__,__LINE__);
-	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("NcException","Error in test 7.102",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.101",__FILE__,__LINE__);
+	  iter=groupSet.find(varC_5);  if( iter == groupSet.end())   throw NcException("Error in test 7.102",__FILE__,__LINE__);
 
 	  /////////////
 
 	  groupSet = groupA0.getVars("var_1");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.103",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.103",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.104",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.104",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2");
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.105",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.106",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.105",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())    throw NcException("Error in test 7.106",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.107",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.107",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.108",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.108",__FILE__,__LINE__);
 
 	  groupSet = groupA0.getVars("var_1",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.109",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.109",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.110",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.110",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2",NcGroup::Current);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.111",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.112",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.111",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())    throw NcException("Error in test 7.112",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.113",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.113",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.114",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.114",__FILE__,__LINE__);
 
 	  groupSet = groupA0.getVars("var_1",NcGroup::Parents);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.115",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.116",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.115",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.116",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.117",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.117",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.118",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.118",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.119",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.119",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.120",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.120",__FILE__,__LINE__);
 
 	  groupSet = groupA0.getVars("var_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.121",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.121",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.122",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.122",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.123",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.123",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.124",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.124",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.125",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.125",__FILE__,__LINE__);
 
 	  groupSet = groupA0.getVars("var_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.126",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.127",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.126",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.127",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.128",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.128",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.129",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.130",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.129",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())    throw NcException("Error in test 7.130",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.131",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.131",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.132",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.132",__FILE__,__LINE__);
 
 	  groupSet = groupA0.getVars("var_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.133",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.133",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.134",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.134",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.135",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.136",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.135",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("Error in test 7.136",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.137",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.137",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.138",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.138",__FILE__,__LINE__);
 
 	  groupSet = groupA0.getVars("var_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.139",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.140",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.139",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.140",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA_1",NcGroup::All);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.141",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.141",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varA0_2",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.142",__FILE__,__LINE__);
-	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.143",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.142",__FILE__,__LINE__);
+	  iter=groupSet.find(varA0_2);  if( iter == groupSet.end())  throw NcException("Error in test 7.143",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varB_3",NcGroup::All);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.144",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.144",__FILE__,__LINE__);
 	  groupSet = groupA0.getVars("varC_5",NcGroup::All);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.145",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.145",__FILE__,__LINE__);
 
 	  /////////////
 
 	  /////////////
 
 	  groupSet = groupB.getVars("var_1");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.146",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.146",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.147",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.147",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.148",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.148",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3");
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.149",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.150",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.149",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())    throw NcException("Error in test 7.150",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5");
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.151",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.151",__FILE__,__LINE__);
 
 	  groupSet = groupB.getVars("var_1",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.152",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.152",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.153",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.153",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.154",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.154",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3",NcGroup::Current);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.155",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.156",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.155",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())    throw NcException("Error in test 7.156",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5",NcGroup::Current);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.157",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.157",__FILE__,__LINE__);
 
 	  groupSet = groupB.getVars("var_1",NcGroup::Parents);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.158",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.159",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.158",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.159",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1",NcGroup::Parents);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.160",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.161",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.160",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.161",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.162",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.162",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.163",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.163",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5",NcGroup::Parents);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.164",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.164",__FILE__,__LINE__);
 
 	  groupSet = groupB.getVars("var_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.165",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.165",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.166",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.166",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.167",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.167",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.168",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.168",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5",NcGroup::Children);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.169",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.169",__FILE__,__LINE__);
 
 	  groupSet = groupB.getVars("var_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.170",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.171",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.170",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.171",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.172",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.173",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.172",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.173",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.174",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.174",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.175",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.176",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.175",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())    throw NcException("Error in test 7.176",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5",NcGroup::ParentsAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.177",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.177",__FILE__,__LINE__);
 
 	  groupSet = groupB.getVars("var_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.178",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.178",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.179",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.179",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.180",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.180",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.181",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.182",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.181",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())  throw NcException("Error in test 7.182",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5",NcGroup::ChildrenAndCurrent);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.183",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.183",__FILE__,__LINE__);
 
 	  groupSet = groupB.getVars("var_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.184",__FILE__,__LINE__);
-	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("NcException","Error in test 7.185",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.184",__FILE__,__LINE__);
+	  iter=groupSet.find(var_1);  if( iter == groupSet.end())    throw NcException("Error in test 7.185",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA_1",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.186",__FILE__,__LINE__);
-	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.187",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.186",__FILE__,__LINE__);
+	  iter=groupSet.find(varA_1);  if( iter == groupSet.end())  throw NcException("Error in test 7.187",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varA0_2",NcGroup::All);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.188",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.188",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varB_3",NcGroup::All);
-	  if(groupSet.size() != 1)                                   throw NcException("NcException","Error in test 7.189",__FILE__,__LINE__);
-	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())  throw NcException("NcException","Error in test 7.190",__FILE__,__LINE__);
+	  if(groupSet.size() != 1)                                   throw NcException("Error in test 7.189",__FILE__,__LINE__);
+	  iter=groupSet.find(varB_3);  if( iter == groupSet.end())  throw NcException("Error in test 7.190",__FILE__,__LINE__);
 	  groupSet = groupB.getVars("varC_5",NcGroup::All);
-	  if(groupSet.size() != 0)                                   throw NcException("NcException","Error in test 7.191",__FILE__,__LINE__);
+	  if(groupSet.size() != 0)                                   throw NcException("Error in test 7.191",__FILE__,__LINE__);
 
 	  cout <<"    -----------   passed\n";
 	}
@@ -809,5 +813,6 @@ int main()
     {
       cout << "unknown error"<<endl;
       e.what();
+      return e.errorCode();
     }
 }
diff --git a/cxx4/test_var2.cpp b/cxx4/test_var2.cpp
index 6370eb0..e68f917 100644
--- a/cxx4/test_var2.cpp
+++ b/cxx4/test_var2.cpp
@@ -19,12 +19,12 @@ int main()
   try
     {
       NcFile ncFile("firstFile.cdf",NcFile::replace);
-      
+
       NcGroup groupA(ncFile.addGroup("groupA"));
       NcGroup groupA0(ncFile.addGroup("groupA0"));
       NcGroup groupB(groupA.addGroup("groupB"));
       NcGroup groupC(groupA.addGroup("groupC"));
-    
+
       NcDim dim1 = ncFile.addDim("dim1",10);
       NcDim dim2 = ncFile.addDim("dim2");
       NcDim dim3 = ncFile.addDim("dim3",13);
@@ -57,7 +57,7 @@ int main()
       NcVar varC_3  = groupC.addVar("varC_3",  ncByte,dim1);
       NcVar varC_4  = groupC.addVar("varC_4",  ncByte,dim1);
       NcVar varC_5  = groupC.addVar("varC_5",  ncByte,dim1);
-      
+
 
       vector<short>  a1(10),b1(10);
       vector<int>  a2(10),b2(10);
@@ -77,7 +77,7 @@ int main()
       initializeVector(a7);
       initializeVector(a8);
       initializeVector(a9);
-      for(int  i=0; i<a1.size(); i++) {
+      for(size_t  i=0; i<a1.size(); i++) {
 	a1[i] *= 1;
 	a2[i] *= 2;
 	a3[i] *= 3;
@@ -85,8 +85,8 @@ int main()
 	a5[i] *= 5;
 	a6[i] *= 6;
 	a7[i] *= 7;
-	a8[i] *= 0.8;
-	a9[i] *= 9;
+	a8[i] *= 8;
+	a9[i] *= .9;
       }
 
       bool fillMode;
@@ -99,24 +99,24 @@ int main()
       var_2.setCompression(false,true,9);
 
       // put variables of different type into the same variable type: requires conversion.
-      var_1.putVar(&a1[0]);  
-      var_2.putVar(&a2[0]);  
-      var_3.putVar(&a3[0]);  
-      var_4.putVar(&a4[0]);  
-      var_5.putVar(&a5[0]);  
-      var_6.putVar(&a6[0]);  
-      var_7.putVar(&a7[0]);  
-      var_8.putVar(&a8[0]);  
-      var_9.putVar(&a9[0]);  
+      var_1.putVar(&a1[0]);
+      var_2.putVar(&a2[0]);
+      var_3.putVar(&a3[0]);
+      var_4.putVar(&a4[0]);
+      var_5.putVar(&a5[0]);
+      var_6.putVar(&a6[0]);
+      var_7.putVar(&a7[0]);
+      var_8.putVar(&a8[0]);
+      var_9.putVar(&a9[0]);
 
       // get variable out
       vector<size_t> index(1);index[0]=5;
       vector<size_t> index2(1);index2[0]=4;
-      var_1.getVar(&b1[0]);  
-      //      var_2.getVar(&b2[0]);  
-      //      var_2.getVar(index,&b2[0]);  
-      var_2.getVar(index,index2,&b2[0]);  
-      for(int  i=0; i<b2.size(); i++) {
+      var_1.getVar(&b1[0]);
+      //      var_2.getVar(&b2[0]);
+      //      var_2.getVar(index,&b2[0]);
+      var_2.getVar(index,index2,&b2[0]);
+      for(size_t  i=0; i<b2.size(); i++) {
 	cout << "i ="<<i<<" vector="<<b2[i]<<endl;
       }
 
@@ -147,7 +147,7 @@ int main()
 
       const string b("abc");
       //      NcVarAtt att4  = var_2.putAtt("att4",ncChar,size_t(2), b.c_str());
-      const char* c(b.c_str());
+      //const char* c(b.c_str());
       //NcVarAtt att12 = var_2.putAtt("att12",ncString,size_t(1), &c);
       vector<short>  a1x(10);
       initializeVector(a1x);
@@ -157,14 +157,14 @@ int main()
 
 
 
-      var_3.getVar(&b3[0]);  
-      var_4.getVar(&b4[0]);  
-      var_5.getVar(&b5[0]);  
-      var_6.getVar(&b6[0]);  
-      var_7.getVar(&b7[0]);  
-      var_8.getVar(&b8[0]);  
-      var_9.getVar(&b9[0]);  
-      
+      var_3.getVar(&b3[0]);
+      var_4.getVar(&b4[0]);
+      var_5.getVar(&b5[0]);
+      var_6.getVar(&b6[0]);
+      var_7.getVar(&b7[0]);
+      var_8.getVar(&b8[0]);
+      var_9.getVar(&b9[0]);
+
       /*
 	if(a1 != b1)  throw NcException("NcException","Error in test 1.1",__FILE__,__LINE__);
 	if(a2 != b2)  throw NcException("NcException","Error in test 1.2",__FILE__,__LINE__);
@@ -188,5 +188,6 @@ int main()
     {
       cout << "unknown error"<<endl;
       e.what();
+      return e.errorCode();
     }
 }
diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
new file mode 100644
index 0000000..af89092
--- /dev/null
+++ b/docs/CMakeLists.txt
@@ -0,0 +1,31 @@
+######
+# Build doxygen documentation if need be.
+######
+
+IF(NCXX_ENABLE_DOXYGEN)
+
+  FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*)
+  FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+
+  ##
+  # Set some configuration variables so that they
+  # are redundant with autotools.
+  ##
+  SET(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}/..)
+  SET(abs_builddir ${CMAKE_CURRENT_BINARY_DIR})
+
+  ##
+  # Create general doxyfiles
+  ##
+  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
+    ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+
+  ##
+  # Generate User Documentation
+  ##
+  ADD_CUSTOM_TARGET(doc_all ALL
+    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    COMMENT "Generating CXX4 API Documentation" VERBATIM)
+
+ENDIF(NCXX_ENABLE_DOXYGEN)
diff --git a/docs/Doxyfile.developer b/docs/Doxyfile.developer
new file mode 100755
index 0000000..8f47412
--- /dev/null
+++ b/docs/Doxyfile.developer
@@ -0,0 +1,2333 @@
+# Doxyfile 1.8.6
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single 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.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME           = netCDF-CXX4
+
+# 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         = 4.3.0
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          = "The netCDF C++ libraries"
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO           = ./docs/unidata_logo_cmyk.png
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. 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       =
+
+# 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 causes
+# performance problems for the file system.
+# The default value is: NO.
+
+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.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES 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.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES 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.
+# The default value is: YES.
+
+REPEAT_BRIEF           = YES
+
+# 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 and the.
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# 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.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC    = YES
+
+# 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.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB  = YES
+
+# If the FULL_PATH_NAMES tag is set to YES 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
+# The default value is: YES.
+
+FULL_PATH_NAMES        = NO
+
+# 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.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH        =
+
+# 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 list of 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.
+# The default value is: NO.
+
+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-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF      = YES
+
+# 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 Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF           = YES
+
+# 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 behavior. 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 behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = YES
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+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.
+# The default value is: NO.
+
+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.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE               = 8
+
+# This tag can be used to specify a number of aliases that act 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                =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              =
+
+# 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.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+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. 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 For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT       = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# 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);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT    = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) 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.
+# The default value is: NO.
+
+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 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.
+# The default value is: YES.
+
+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.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# Set the SUBGROUPING tag to YES 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.
+# The default value is: YES.
+
+SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT tag 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.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_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 respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE        = YES
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+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. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+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 only methods in the interface are
+# included.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES   = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO 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.
+# The default value is: NO.
+
+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 these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+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 these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+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 these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+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 then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS          = YES
+
+# 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.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC  = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = YES
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES 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.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS        = YES
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = YES
+
+# 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 group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES       = YES
+
+# 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 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.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = 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.
+# The default value is: YES.
+
+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.
+# The default value is: YES.
+
+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.
+# The default value is: YES.
+
+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.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have 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 value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES  = 28
+
+# 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.
+# The default value is: YES.
+
+SHOW_USED_FILES        = YES
+
+# 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 value 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 value 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. For an example see the documentation.
+
+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. To 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.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE            =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES         =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS               = YES
+
+# If the WARN_IF_UNDOCUMENTED tag 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.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If the WARN_IF_DOC_ERROR tag 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.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+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)
+# The default value is: $file:$line: $text.
+
+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 standard
+# error (stderr).
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is 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.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT                  =
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+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 patterns (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, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.f90 \
+                         *.f \
+                         *.vhd \
+                         *.vhdl \
+                         *.md \
+                         *.doc
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# 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.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS       = YES
+
+# 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
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */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           =
+
+# 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       = *
+
+# 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.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be 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.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+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 information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE = mainpage.md
+
+#---------------------------------------------------------------------------
+# 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 that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES         = YES
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+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.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES 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.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = 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.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set the YES 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.
+# See also: Section \class.
+# The default value is: YES.
+
+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.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX     = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+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 a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+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.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+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).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER            =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+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 left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET        =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES       =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE    = 349
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT    = 91
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP         = 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS  = YES
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# 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 (see: http://developer.apple.com/tools/xcode/), 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET        = NO
+
+# This tag determines the name of the docset 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.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# 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.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP      = NO
+
+# 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.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE               =
+
+# 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.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION           =
+
+# 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).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI           = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING     =
+
+# 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+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.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# 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.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX          = NO
+
+# 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 YES, 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
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW      = YES
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# 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.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH         = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. 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.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavours of web server based searching depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools. See
+# the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+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.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+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 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+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. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER           =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). 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.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS         = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX           = YES
+
+# 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE        = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES     = NO
+
+# If the LATEX_SOURCE_CODE tag 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE      = YES
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
+#---------------------------------------------------------------------------
+# 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 too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+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.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+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 some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+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.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+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. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+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 value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+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.
+# The default value is: NO.
+
+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.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT             = xml
+
+# 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.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://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.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+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.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+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.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+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 only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set 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.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+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.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH           =
+
+# 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.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+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 e.g.
+# 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.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+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 that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to 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.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. 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. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have an 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. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE       =
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+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.
+# The default value is: YES.
+
+EXTERNAL_GROUPS        = YES
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+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            =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_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.
+# The default value is: YES.
+
+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 (see:
+# http://www.graphviz.org/), 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 value is: NO.
+
+HAVE_DOT               = YES
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS        = 4
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You 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.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           =
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE           = 8
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH tag is 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 CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH tag is 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK               = YES
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS     = YES
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH          = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH tag is 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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH             = YES
+
+# If the CALLER_GRAPH tag is 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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH           = YES
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH tag is 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag 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.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS           =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_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.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH    = 5
+
+# 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).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT        = YES
+
+# 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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS      = YES
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP            = YES
diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in
new file mode 100644
index 0000000..55d8ae9
--- /dev/null
+++ b/docs/Doxyfile.in
@@ -0,0 +1,2373 @@
+# Doxyfile 1.8.3, mixed with 1.8.6
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single 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.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME           = NetCDF-C++
+
+# 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         = @PACKAGE_VERSION@
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
+
+PROJECT_LOGO           = @abs_top_srcdir@/docs/netcdf-50x50.png
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. 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       =
+
+# 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 causes
+# performance problems for the file system.
+# The default value is: NO.
+
+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.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES 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.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES 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.
+# The default value is: YES.
+
+REPEAT_BRIEF           = YES
+
+# 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 and 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.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC    = YES
+
+# 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.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB  = YES
+
+# If the FULL_PATH_NAMES tag is set to YES 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
+# The default value is: YES.
+
+FULL_PATH_NAMES        = NO
+
+# 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.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH        =
+
+# 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 list of 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.
+# The default value is: NO.
+
+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-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF      = YES
+
+# 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 Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF           = YES
+
+# 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 behavior. 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 behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = YES
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+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.
+# The default value is: NO.
+
+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.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE               = 4
+
+# This tag can be used to specify a number of aliases that act 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                =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              =
+
+# 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.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+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. 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 For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING      =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT       = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# 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);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) 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.
+# The default value is: NO.
+
+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 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.
+# The default value is: YES.
+
+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.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC   = YES
+
+# Set the SUBGROUPING tag to YES 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.
+# The default value is: YES.
+
+SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = YES
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = YES
+
+# When TYPEDEF_HIDES_STRUCT tag 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.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_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 respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC         = NO
+
+# 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. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES  = NO
+
+# 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 only methods in the interface are
+# included.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO 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.
+# The default value is: NO.
+
+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 these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+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 these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+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 these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+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 then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS          = @BUILD_INTERNAL_DOCS@
+
+# 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.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES       = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC  = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = YES
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES 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.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS        = YES
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = YES
+
+# 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 group names will
+# appear in their defined order.
+# The default value is: NO.
+
+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 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.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = 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.
+# The default value is: YES.
+
+GENERATE_TODOLIST      = @SHOW_DOXYGEN_TAG_LIST@
+
+# 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.
+# The default value is: YES.
+
+GENERATE_TESTLIST      = @SHOW_DOXYGEN_TAG_LIST@
+
+# 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.
+# The default value is: YES.
+
+GENERATE_BUGLIST       = @SHOW_DOXYGEN_TAG_LIST@
+
+# 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.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS       =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have 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 value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+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.
+# The default value is: YES.
+
+SHOW_USED_FILES        = YES
+
+# 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 value 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 value 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. For an example see the documentation.
+
+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. To 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.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE            = @abs_top_srcdir@/docs/DoxygenLayout.xml
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES         =
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET                  = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS               = NO
+
+# If the WARN_IF_UNDOCUMENTED tag 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.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED   = NO
+
+# If the WARN_IF_DOC_ERROR tag 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.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR      = NO
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+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)
+# The default value is: $file:$line: $text.
+
+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 standard
+# error (stderr).
+
+WARN_LOGFILE           =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is 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.
+# Note: If this tag is empty the current directory is searched.
+
+INPUT = \
+    @abs_top_srcdir@/docs/mainpage.md \
+    @abs_top_srcdir@/cxx4/ncAtt.h   \
+    @abs_top_srcdir@/cxx4/ncByte.h  \
+    @abs_top_srcdir@/cxx4/ncChar.h  \
+    @abs_top_srcdir@/cxx4/ncCheck.h \
+    @abs_top_srcdir@/cxx4/ncCompoundType.h \
+    @abs_top_srcdir@/cxx4/ncDim.h \
+    @abs_top_srcdir@/cxx4/ncDouble.h \
+    @abs_top_srcdir@/cxx4/ncEnumType.h \
+    @abs_top_srcdir@/cxx4/ncException.h \
+    @abs_top_srcdir@/cxx4/ncFile.h \
+    @abs_top_srcdir@/cxx4/ncFloat.h \
+    @abs_top_srcdir@/cxx4/ncGroup.h \
+    @abs_top_srcdir@/cxx4/ncGroupAtt.h \
+    @abs_top_srcdir@/cxx4/ncInt.h \
+    @abs_top_srcdir@/cxx4/ncInt64.h \
+    @abs_top_srcdir@/cxx4/ncOpaqueType.h \
+    @abs_top_srcdir@/cxx4/ncShort.h \
+    @abs_top_srcdir@/cxx4/ncString.h \
+    @abs_top_srcdir@/cxx4/ncType.h \
+    @abs_top_srcdir@/cxx4/ncUbyte.h \
+    @abs_top_srcdir@/cxx4/ncUint.h \
+    @abs_top_srcdir@/cxx4/ncUint64.h \
+    @abs_top_srcdir@/cxx4/ncUshort.h \
+    @abs_top_srcdir@/cxx4/ncVar.h \
+    @abs_top_srcdir@/cxx4/ncVarAtt.h \
+    @abs_top_srcdir@/cxx4/ncVlenType.h \
+    @abs_top_srcdir@/cxx4/test_utilities.h \
+    @abs_top_srcdir@/cxx4/ncAtt.cpp   \
+    @abs_top_srcdir@/cxx4/ncByte.cpp  \
+    @abs_top_srcdir@/cxx4/ncChar.cpp  \
+    @abs_top_srcdir@/cxx4/ncCheck.cpp \
+    @abs_top_srcdir@/cxx4/ncCompoundType.cpp \
+    @abs_top_srcdir@/cxx4/ncDim.cpp \
+    @abs_top_srcdir@/cxx4/ncDouble.cpp \
+    @abs_top_srcdir@/cxx4/ncEnumType.cpp \
+    @abs_top_srcdir@/cxx4/ncException.cpp \
+    @abs_top_srcdir@/cxx4/ncFile.cpp \
+    @abs_top_srcdir@/cxx4/ncFloat.cpp \
+    @abs_top_srcdir@/cxx4/ncGroup.cpp \
+    @abs_top_srcdir@/cxx4/ncGroupAtt.cpp \
+    @abs_top_srcdir@/cxx4/ncInt.cpp \
+    @abs_top_srcdir@/cxx4/ncInt64.cpp \
+    @abs_top_srcdir@/cxx4/ncOpaqueType.cpp \
+    @abs_top_srcdir@/cxx4/ncShort.cpp \
+    @abs_top_srcdir@/cxx4/ncString.cpp \
+    @abs_top_srcdir@/cxx4/ncType.cpp \
+    @abs_top_srcdir@/cxx4/ncUbyte.cpp \
+    @abs_top_srcdir@/cxx4/ncUint.cpp \
+    @abs_top_srcdir@/cxx4/ncUint64.cpp \
+    @abs_top_srcdir@/cxx4/ncUshort.cpp \
+    @abs_top_srcdir@/cxx4/ncVar.cpp \
+    @abs_top_srcdir@/cxx4/ncVarAtt.cpp \
+    @abs_top_srcdir@/cxx4/ncVlenType.cpp \
+    @abs_top_srcdir@/COPYRIGHT \
+    @abs_top_srcdir@/cxx4/example1.cpp \
+    @abs_top_srcdir@/examples/pres_temp_4D_rd.cpp \
+    @abs_top_srcdir@/examples/pres_temp_4D_wr.cpp \
+    @abs_top_srcdir@/examples/sfc_pres_temp_rd.cpp \
+    @abs_top_srcdir@/examples/sfc_pres_temp_wr.cpp \
+    @abs_top_srcdir@/examples/simple_xy_rd.cpp \
+    @abs_top_srcdir@/examples/simple_xy_wr.cpp \
+    @abs_top_srcdir@/examples/simple_xy_wr_formats.cpp \
+    @abs_top_srcdir@/RELEASE_NOTES.md
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+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 patterns (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, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
+
+FILE_PATTERNS          =
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE              = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# 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.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+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
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */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           = @abs_top_srcdir@/examples
+
+# 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       =
+
+# 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.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be 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.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+
+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 information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS        =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE = mainpage.md
+
+#---------------------------------------------------------------------------
+# 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 that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# 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.
+# The default value is: NO.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES 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.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = 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.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set the YES 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.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS       = YES
+
+# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
+# cost of reduced performance. This can be particularly helpful with template
+# rich C++ code for which doxygen's built-in parser lacks the necessary type
+# information.
+# Note: The availability of this option depends on whether or not doxygen was
+# compiled with the --with-libclang option.
+# The default value is: NO.
+
+# CLANG_ASSISTED_PARSING = NO
+
+# If clang assisted parsing is enabled you can provide the compiler with command
+# line options that you would normally use when invoking the compiler. Note that
+# the include paths will already be set by doxygen for the files and directories
+# specified with INPUT and INCLUDE_PATH.
+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
+# CLANG_OPTIONS          =
+
+#---------------------------------------------------------------------------
+# 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.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX     = NO
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+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 a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX          =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
+
+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.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+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).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER            = @DOXYGEN_HEADER_FILE@
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER            = @abs_top_srcdir@/docs/footer.html
+
+# 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 left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET        =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  = @DOXYGEN_CSS_FILE@
+
+# 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
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES       =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP         = NO
+
+# 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# 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 (see: http://developer.apple.com/tools/xcode/), 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET        = NO
+
+# This tag determines the name of the docset 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.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# 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.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP      = NO
+
+# 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.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE               =
+
+# 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.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION           =
+
+# 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).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI           = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING     =
+
+# 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+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.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE               =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME   =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS  =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS  =
+
+# 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.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION           =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX          = NO
+
+# 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 YES, 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 (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# 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.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH         = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. 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.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE           = @DOXYGEN_SEARCHENGINE@
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavours of web server based searching depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools. See
+# the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = @DOXYGEN_SERVER_BASED_SEARCH@
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX         = @NC_ENABLE_DOXYGEN_PDF_OUTPUT@
+
+# 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.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT           = latex_main
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+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 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+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. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER           =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). 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.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS         = YES
+
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX           = YES
+
+# 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE        = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES     = NO
+
+# If the LATEX_SOURCE_CODE tag 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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE      = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
+#---------------------------------------------------------------------------
+# 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 too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+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.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+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 some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+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.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE    =
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE    =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN           = YES
+
+# 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. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+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 value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS              = YES
+
+#---------------------------------------------------------------------------
+# 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.
+# The default value is: NO.
+
+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.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT             = xml
+
+# 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.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://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.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+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.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+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.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+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 only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set 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.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+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.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH           =
+
+# 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.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+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 e.g.
+# 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.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED             = USE_NETCDF4
+
+# 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 that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED      =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to 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.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. 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. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have an 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               = html/guide.tag=./html_guide "html/tutorial.tag = ./html_tutorial"
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+# GENERATE_TAGFILE       = html/main.tag
+
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
+
+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.
+# The default value is: YES.
+
+EXTERNAL_GROUPS        = NO
+
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = NO
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+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            =
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_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.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# 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 (see:
+# http://www.graphviz.org/), 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 value is: NO.
+
+HAVE_DOT               = @HAVE_DOT@
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS        = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You 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.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH           =
+
+# If the CLASS_GRAPH tag is 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 CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH tag is 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK               = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH          = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH tag is 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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH tag is 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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH tag is 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.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag 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.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS           =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_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.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+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.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP            = YES
diff --git a/docs/DoxygenLayout.xml b/docs/DoxygenLayout.xml
new file mode 100644
index 0000000..0706b11
--- /dev/null
+++ b/docs/DoxygenLayout.xml
@@ -0,0 +1,184 @@
+<doxygenlayout version="1.0">
+  <!-- Navigation index tabs for HTML output -->
+  <navindex>
+    <tab type="mainpage" visible="yes" title="NetCDF Documentation"/>
+    <tab type="pages" visible="yes" title="Navigation" intro=""/>
+    <tab type="modules" visible="yes" title="NetCDF Functions" intro="Functions are organized according to the netCDF data model."/>
+    <tab type="namespaces" visible="no" title="">
+      <tab type="namespaces" visible="yes" title="" intro=""/>
+      <tab type="namespacemembers" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="classes" visible="no" title="">
+      <tab type="classes" visible="yes" title="" intro=""/>
+      <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
+      <tab type="hierarchy" visible="yes" title="" intro=""/>
+      <tab type="classmembers" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="files" visible="yes" title="">
+      <tab type="files" visible="yes" title="Source Files" intro=""/>
+      <tab type="globals" visible="yes" title="" intro=""/>
+    </tab>
+    <tab type="examples" visible="yes" title="" intro=""/>
+  </navindex>
+
+  <!-- Layout definition for a class page -->
+  <class>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <inheritancegraph visible="$CLASS_GRAPH"/>
+    <collaborationgraph visible="$COLLABORATION_GRAPH"/>
+    <allmemberslink visible="yes"/>
+    <memberdecl>
+      <nestedclasses visible="yes" title=""/>
+      <publictypes title=""/>
+      <publicslots title=""/>
+      <signals title=""/>
+      <publicmethods title=""/>
+      <publicstaticmethods title=""/>
+      <publicattributes title=""/>
+      <publicstaticattributes title=""/>
+      <protectedtypes title=""/>
+      <protectedslots title=""/>
+      <protectedmethods title=""/>
+      <protectedstaticmethods title=""/>
+      <protectedattributes title=""/>
+      <protectedstaticattributes title=""/>
+      <packagetypes title=""/>
+      <packagemethods title=""/>
+      <packagestaticmethods title=""/>
+      <packageattributes title=""/>
+      <packagestaticattributes title=""/>
+      <properties title=""/>
+      <events title=""/>
+      <privatetypes title=""/>
+      <privateslots title=""/>
+      <privatemethods title=""/>
+      <privatestaticmethods title=""/>
+      <privateattributes title=""/>
+      <privatestaticattributes title=""/>
+      <friends title=""/>
+      <related title="" subtitle=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <typedefs title=""/>
+      <enums title=""/>
+      <constructors title=""/>
+      <functions title=""/>
+      <related title=""/>
+      <variables title=""/>
+      <properties title=""/>
+      <events title=""/>
+    </memberdef>
+    <usedfiles visible="$SHOW_USED_FILES"/>
+    <authorsection visible="yes"/>
+  </class>
+
+  <!-- Layout definition for a namespace page -->
+  <namespace>
+    <briefdescription visible="yes"/>
+    <memberdecl>
+      <nestednamespaces visible="yes" title=""/>
+      <classes visible="yes" title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </namespace>
+
+  <!-- Layout definition for a file page -->
+  <file>
+    <briefdescription visible="yes"/>
+    <includes visible="$SHOW_INCLUDE_FILES"/>
+    <includegraph visible="$INCLUDE_GRAPH"/>
+    <includedbygraph visible="$INCLUDED_BY_GRAPH"/>
+    <sourcelink visible="yes"/>
+    <memberdecl>
+      <classes visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <functions title=""/>
+      <variables title=""/>
+    </memberdef>
+    <authorsection/>
+  </file>
+
+  <!-- Layout definition for a group page -->
+  <group>
+    <briefdescription visible="yes"/>
+    <groupgraph visible="$GROUP_GRAPHS"/>
+    <memberdecl>
+      <classes visible="yes" title=""/>
+      <namespaces visible="yes" title=""/>
+      <dirs visible="yes" title=""/>
+      <nestedgroups visible="yes" title=""/>
+      <files visible="yes" title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+      <membergroups visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+    <memberdef>
+      <pagedocs/>
+      <inlineclasses title=""/>
+      <defines title=""/>
+      <typedefs title=""/>
+      <enums title=""/>
+      <enumvalues title=""/>
+      <functions title=""/>
+      <variables title=""/>
+      <signals title=""/>
+      <publicslots title=""/>
+      <protectedslots title=""/>
+      <privateslots title=""/>
+      <events title=""/>
+      <properties title=""/>
+      <friends title=""/>
+    </memberdef>
+    <authorsection visible="yes"/>
+  </group>
+
+  <!-- Layout definition for a directory page -->
+  <directory>
+    <briefdescription visible="yes"/>
+    <directorygraph visible="yes"/>
+    <memberdecl>
+      <dirs visible="yes"/>
+      <files visible="yes"/>
+    </memberdecl>
+    <detaileddescription title=""/>
+  </directory>
+</doxygenlayout>
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 0000000..733cade
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1,22 @@
+## Automake file, partof Unidata's netCDF-CXX4 package.
+# Copyright 2005-2016.
+
+# These files are included in the dist.
+
+EXTRA_DIST = CMakeLists.txt Doxyfile.in Doxyfile.developer DoxygenLayout.xml \
+Makefile.am footer.html mainpage.md netcdf-50x50.png
+
+# Turn off parallel builds in this directory.
+.NOTPARALLEL:
+
+if BUILD_DOCS
+
+all-local: doxyfile.stamp
+clean-local: rm -rf $(top_builddir)/docs/html
+
+endif
+
+doxyfile.stamp:
+	$(DOXYGEN) Doxyfile
+
+CLEANFILES = doxyfile.stamp html
diff --git a/docs/Makefile.in b/docs/Makefile.in
new file mode 100644
index 0000000..008c5b9
--- /dev/null
+++ b/docs/Makefile.in
@@ -0,0 +1,466 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Copyright 2005-2016.
+
+# These files are included in the dist.
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = docs
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(srcdir)/Doxyfile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(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)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = Doxyfile
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@
+DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@
+DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+HAS_DAP = @HAS_DAP@
+HAS_NC2 = @HAS_NC2@
+HAS_NC4 = @HAS_NC4@
+HAVE_DOT = @HAVE_DOT@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NC_LIBS = @NC_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+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@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+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_DIST = CMakeLists.txt Doxyfile.in Doxyfile.developer DoxygenLayout.xml \
+Makefile.am footer.html mainpage.md netcdf-50x50.png
+
+CLEANFILES = doxyfile.stamp html
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 docs/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign docs/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+ at BUILD_DOCS_FALSE@all-local:
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+	-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 BUILD_DOCS_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-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 all-local check check-am clean clean-generic \
+	clean-libtool clean-local cscopelist-am ctags-am distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am
+
+
+# Turn off parallel builds in this directory.
+.NOTPARALLEL:
+
+ at BUILD_DOCS_TRUE@all-local: doxyfile.stamp
+ at BUILD_DOCS_TRUE@clean-local: rm -rf $(top_builddir)/docs/html
+
+doxyfile.stamp:
+	$(DOXYGEN) Doxyfile
+
+# 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/docs/footer.html b/docs/footer.html
new file mode 100755
index 0000000..e51a0f1
--- /dev/null
+++ b/docs/footer.html
@@ -0,0 +1,10 @@
+<hr size="2"/>
+<address style="text-align: center;">
+<a href="http://www.unidata.ucar.edu/software/netcdf/">Return to the Main Unidata NetCDF page.</a><br>
+<img src="http://www.unidata.ucar.edu/images/logos/uniLogo.png">
+
+<address style="text-align: right;"><small>
+Generated on $datetime for $projectname. NetCDF is
+a <a href="http://www.unidata.ucar.edu/">Unidata</a> library.</small></address>
+</body>
+</html>
diff --git a/docs/mainpage.md b/docs/mainpage.md
new file mode 100644
index 0000000..bfd7e73
--- /dev/null
+++ b/docs/mainpage.md
@@ -0,0 +1,31 @@
+# netCDF C++ Interface Guide {#cxx_interface_guide}
+
+# netCDF C++ Interface Guide
+
+## Introduction
+
+Lynton Appel, of the Culham Centre for Fusion Energy (CCFE) in Oxfordshire, has developed and contributed a netCDF-4 C++ library that depends on an installed netCDF-4 C library. The netCDF-4 C++ API was developed for use in managing fusion research data from CCFE's innovative MAST (Mega Amp Spherical Tokamak) experiment.
+
+Appel's C++ implementation is a complete read/write interface for netCDF-4, but can also be used as an alternative to the older netCDF-3 C++ interface, to write classic-format netCDF-3 files as well as netCDF-4 classic model files. The new API is implemented as a layer over the netCDF-4 C interface, which means bug fixes and performance enhancements in the C interface will be immediately available to C++ developers as well. It replaces a previous partial netCDF-4 C++ interface developed  [...]
+
+The new API makes use of standard C++ features such as namespaces, exceptions, and templates, none of which were included in the first netCDF-3 C++ API developed in the mid-90's. The earlier netCDF-3 C++ API is still supported and available in the source distribution, but devvelopers who are thinking of eventually upgrading to use of the enhanced data model should consider using Lynton's new API.
+
+We're grateful for Appel's development and CCFE's contribution of the new open-source code for the netCDF-4 C++ API, and hope C++ developers in the netCDF community will find it useful! Feedback is appreciated, and should be directed to <Lynton.Appel at ccfe.ac.uk>.
+
+## Installation
+
+Installing the C++ interface requires the additional flag --enable-netcdf-4 to be used during the configure stage of the installation, for example enter
+
+ ./configure --enable-cxx-4 [plus other options]
+
+To build the C++ interface guide, change to the `docs` directory of the distribution and enter
+
+  doxygen Doxyfile.developer
+
+Alternatively, you can build the documentation using the `--enable-doxygen` flag when using `configure`, or `-DNCXX_ENABLE_DOXYGEN=ON` when using `cmake`.
+
+By default, HTML documentation will be installed in cxx4/doc/html; other options may be specified according to the settings contained in the file "Doxyfile" (details of alternative settings are documented at http://www.stack.nl/~dimitri/doxygen). Note that as a prerequisite for generating the documentation, the system will need to have doxygen (http://www.stack.nl/~dimitri/doxygen) and Graphviz (http://www.graphviz.org)installed.
+
+Examples of usage.
+
+Examples codes can be found by selecting the "Examples" tab.
diff --git a/docs/netcdf-50x50.png b/docs/netcdf-50x50.png
new file mode 100644
index 0000000..09ded48
Binary files /dev/null and b/docs/netcdf-50x50.png differ
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 0000000..cf56798
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,16 @@
+################################################
+# CMakeLists.txt: CMake Configuration file
+# for the netcdf-cxx4 `examples` directory.
+################################################
+
+IF(NCXX_ENABLE_TESTS)
+
+  add_bin_test(examples simple_xy_wr)
+  add_bin_test(examples sfc_pres_temp_wr)
+  add_bin_test(examples pres_temp_4D_wr)
+  add_bin_test(examples pres_temp_4D_rd)
+  add_bin_test(examples simple_xy_rd)
+  add_bin_test(examples sfc_pres_temp_rd)
+  add_bin_test(examples simple_xy_wr_formats)
+
+ENDIF()
\ No newline at end of file
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 4936c96..8b9df5e 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1,5 +1,5 @@
 ## This is a automake file, part of Unidata's netCDF package.
-# Copyright 2006, see the COPYRIGHT file for more information.  
+# Copyright 2006, see the COPYRIGHT file for more information.
 
 # This file builds CXX4 examples.
 
@@ -34,5 +34,4 @@ TESTS = $(TESTPROGRAMS) #do_comps.sh
 # Cleaning up files created during the process.
 CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc		\
 tmp-test.cdl tmp-ref.cdl simple_xy_classic.nc simple_xy_classic64.nc	\
-simple_xy_nc4.nc simple_xy_nc4cm.nc
-
+simple_xy_nc4.nc simple_xy_nc4cm.nc simple_xy_nc4classic.nc
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 62beac8..f98bbe4 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -14,7 +14,7 @@
 
 @SET_MAKE@
 
-# Copyright 2006, see the COPYRIGHT file for more information.  
+# Copyright 2006, see the COPYRIGHT file for more information.
 
 # This file builds CXX4 examples.
 VPATH = @srcdir@
@@ -426,6 +426,11 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOT = @DOT@
+DOXYGEN = @DOXYGEN@
+DOXYGEN_CSS_FILE = @DOXYGEN_CSS_FILE@
+DOXYGEN_HEADER_FILE = @DOXYGEN_HEADER_FILE@
+DOXYGEN_SEARCHENGINE = @DOXYGEN_SEARCHENGINE@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -438,6 +443,7 @@ GREP = @GREP@
 HAS_DAP = @HAS_DAP@
 HAS_NC2 = @HAS_NC2@
 HAS_NC4 = @HAS_NC4@
+HAVE_DOT = @HAVE_DOT@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -559,7 +565,7 @@ simple_xy_wr_formats_SOURCES = simple_xy_wr_formats.cpp
 # Cleaning up files created during the process.
 CLEANFILES = simple_xy.nc sfc_pres_temp.nc pres_temp_4D.nc		\
 tmp-test.cdl tmp-ref.cdl simple_xy_classic.nc simple_xy_classic64.nc	\
-simple_xy_nc4.nc simple_xy_nc4cm.nc
+simple_xy_nc4.nc simple_xy_nc4cm.nc simple_xy_nc4classic.nc
 
 all: all-am
 
diff --git a/examples/simple_xy_wr_formats.cpp b/examples/simple_xy_wr_formats.cpp
index a334551..b2dd48c 100644
--- a/examples/simple_xy_wr_formats.cpp
+++ b/examples/simple_xy_wr_formats.cpp
@@ -62,8 +62,8 @@ int create_file(string filename, NcFile::FileFormat format) {
    
       // In the classic model, must explicitly leave define mode
       // before writing data.  Need a method that calls nc_enddef().
-//       if(format != NcFile::nc4)
-// 	  dataFile.
+      if(format != NcFile::nc4)
+	  dataFile.enddef();
 
       // Write the data to the file. Although netCDF supports
       // reading and writing subsets of data, in this case we write all
@@ -90,20 +90,17 @@ int main()
 	return ret;
     cout << "*** SUCCESS creating nc4 file" << endl;
 
-// The following three tests don't work yet.  Uncomment when can write
-// files of nc4classic, classic, and classic64 formats.
-
-//     if(ret = create_file("simple_xy_nc4classic.nc", NcFile::nc4classic))
-// 	return ret;
-//     cout << "*** SUCCESS creating nc4classic file" << endl;
+    if(ret = create_file("simple_xy_nc4classic.nc", NcFile::nc4classic))
+	return ret;
+    cout << "*** SUCCESS creating nc4classic file" << endl;
 
-//     if(ret = create_file("simple_xy_classic.nc", NcFile::classic))
-// 	return ret;
-//     cout << "*** SUCCESS creating classic file" << endl;
+    if(ret = create_file("simple_xy_classic.nc", NcFile::classic))
+ 	return ret;
+    cout << "*** SUCCESS creating classic file" << endl;
 
-//     if(ret = create_file("simple_xy_classic64.nc", NcFile::classic64))
-// 	return ret;
-//     cout << "*** SUCCESS creating classic64 file" << endl;
+    if(ret = create_file("simple_xy_classic64.nc", NcFile::classic64))
+ 	return ret;
+    cout << "*** SUCCESS creating classic64 file" << endl;
 
     return 0;
 }
diff --git a/libnetcdf-cxx.settings.in b/libnetcdf-cxx.settings.in
new file mode 100644
index 0000000..528d3d7
--- /dev/null
+++ b/libnetcdf-cxx.settings.in
@@ -0,0 +1,23 @@
+# NetCDF C Configuration Summary
+==============================
+
+# General
+-------
+NetCDF Version:		@PACKAGE_VERSION@
+Configured On:		@CONFIG_DATE@
+Host System:		@host_cpu at -@host_vendor at -@host_os@
+Build Directory: 	@abs_top_builddir@
+Install Prefix:         @prefix@
+
+# Compiling Options
+-----------------
+C Compiler:		@CC_VERSION@
+CFLAGS:			@CFLAGS@
+CPPFLAGS:		@CXXFLAGS@
+LDFLAGS:		@LDFLAGS@
+AM_CFLAGS:		@AM_CFLAGS@
+AM_CPPFLAGS:		@AM_CPPFLAGS@
+AM_LDFLAGS:		@AM_LDFLAGS@
+Shared Library:		@enable_shared@
+Static Library:		@enable_static@
+Extra libraries:	@LIBS@
\ No newline at end of file
diff --git a/ltmain.sh b/ltmain.sh
index 9ae038c..a356aca 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4.2
+#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4.2
+VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1"
 TIMESTAMP=""
 package_revision=1.3337
 
@@ -5851,10 +5851,9 @@ func_mode_link ()
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
       # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      # -stdlib=*            select c++ std lib with clang
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-stdlib=*)
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
         func_quote_for_eval "$arg"
 	arg="$func_quote_for_eval_result"
         func_append compile_command " $arg"
@@ -6125,7 +6124,10 @@ func_mode_link ()
 	case $pass in
 	dlopen) libs="$dlfiles" ;;
 	dlpreopen) libs="$dlprefiles" ;;
-	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
 	esac
       fi
       if test "$linkmode,$pass" = "lib,dlpreopen"; then
@@ -6445,19 +6447,19 @@ func_mode_link ()
 	    # It is a libtool convenience library, so add in its objects.
 	    func_append convenience " $ladir/$objdir/$old_library"
 	    func_append old_convenience " $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      if $opt_preserve_dup_deps ; then
+		case "$tmp_libs " in
+		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+		esac
+	      fi
+	      func_append tmp_libs " $deplib"
+	    done
 	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
 	    func_fatal_error "\`$lib' is not a convenience library"
 	  fi
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    deplibs="$deplib $deplibs"
-	    if $opt_preserve_dup_deps ; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $deplib"
-	  done
 	  continue
 	fi # $pass = conv
 
@@ -7350,6 +7352,9 @@ func_mode_link ()
 	    revision="$number_minor"
 	    lt_irix_increment=no
 	    ;;
+	  *)
+	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+	    ;;
 	  esac
 	  ;;
 	no)
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 44e0ecf..d7c043f 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1312,7 +1312,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -1324,9 +1324,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	    LD="${LD-ld} -m elf_i386_fbsd"
 	    ;;
 	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*)
+	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
+	  powerpc64-*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -1345,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
+	  powerpcle-*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -1688,7 +1701,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+	test undefined != "$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
@@ -2512,17 +2526,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -2639,7 +2642,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -2684,6 +2687,18 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-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
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -3243,10 +3258,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3285,11 +3296,11 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   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
@@ -4037,7 +4048,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -4101,7 +4112,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4336,7 +4347,7 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -4578,6 +4589,9 @@ m4_if([$1], [CXX], [
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -4640,6 +4654,9 @@ dnl Note also adjust exclude_expsyms for C++ above.
   openbsd*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -4861,7 +4878,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -5038,6 +5055,7 @@ _LT_EOF
 	if test "$aix_use_runtimelinking" = yes; then
 	  shared_flag="$shared_flag "'${wl}-G'
 	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
@@ -5342,7 +5360,7 @@ _LT_EOF
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       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
@@ -6222,9 +6240,6 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
@@ -6386,7 +6401,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
diff --git a/missing b/missing
index cdea514..db98974 100755
--- a/missing
+++ b/missing
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
@@ -160,7 +160,7 @@ give_advice ()
       ;;
    autom4te*)
       echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
+      echo "the 'autom4te' program to be rebuilt."
       program_details 'autom4te'
       ;;
     bison*|yacc*)
diff --git a/ncxx4-config.in b/ncxx4-config.in
index c089628..deb5740 100644
--- a/ncxx4-config.in
+++ b/ncxx4-config.in
@@ -5,7 +5,7 @@
 
 prefix=@prefix@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
+libdir=@libdir@
 includedir=${prefix}/include
 
 cc="@CC@"
@@ -13,7 +13,7 @@ cxx="@CXX@"
 fc="@FC@"
 cflags=" -I${includedir} @CPPFLAGS@" 
 fflags="@FFLAGS@ @MOD_FLAG@${includedir}"
-libs="-L${libdir} @NC_LIBS@"
+libs="-L${libdir} @NC_LIBS@ -lnetcdf"
 flibs="-L${libdir} @NC_FLIBS@"
 has_dap="@HAS_DAP@"
 has_nc2="@HAS_NC2@"
diff --git a/netcdf-cxx4.pc.in b/netcdf-cxx4.pc.in
index 1817491..314d543 100644
--- a/netcdf-cxx4.pc.in
+++ b/netcdf-cxx4.pc.in
@@ -10,4 +10,4 @@ Description: NetCDF C++ Client Library
 Version: @PACKAGE_VERSION@
 Libs: -L${libdir} @NC_LIBS@
 Cflags: -I${includedir}
-
+Requires: netcdf
diff --git a/test-driver b/test-driver
index 32bf39e..d306056 100755
--- a/test-driver
+++ b/test-driver
@@ -1,7 +1,7 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2012-06-27.10; # UTC
+scriptversion=2013-07-13.22; # UTC
 
 # Copyright (C) 2011-2013 Free Software Foundation, Inc.
 #
@@ -44,13 +44,12 @@ print_usage ()
 Usage:
   test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
               [--expect-failure={yes|no}] [--color-tests={yes|no}]
-              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
 The '--test-name', '--log-file' and '--trs-file' options are mandatory.
 END
 }
 
-# TODO: better error handling in option parsing (in particular, ensure
-# TODO: $log_file, $trs_file and $test_name are defined).
 test_name= # Used for reporting.
 log_file=  # Where to save the output of the test script.
 trs_file=  # Where to save the metadata of the test run.
@@ -69,10 +68,23 @@ while test $# -gt 0; do
   --enable-hard-errors) enable_hard_errors=$2; shift;;
   --) shift; break;;
   -*) usage_error "invalid option: '$1'";;
+   *) break;;
   esac
   shift
 done
 
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
 if test $color_tests = yes; then
   # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
   red='' # Red.

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/netcdf-cxx.git



More information about the Pkg-grass-devel mailing list